diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..59d9a3a --- /dev/null +++ b/.editorconfig @@ -0,0 +1,16 @@ +# Editor configuration, see https://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.ts] +quote_type = single + +[*.md] +max_line_length = off +trim_trailing_whitespace = false diff --git a/.github/workflows/update-documentation.yml b/.github/workflows/deploy-docs.yml similarity index 68% rename from .github/workflows/update-documentation.yml rename to .github/workflows/deploy-docs.yml index 52d9e5e..a98c94f 100644 --- a/.github/workflows/update-documentation.yml +++ b/.github/workflows/deploy-docs.yml @@ -1,4 +1,4 @@ -name: Update Documentation +name: Deploy Documentation on: push: branches: @@ -6,7 +6,7 @@ on: jobs: publish: - name: Publishing Documentation + name: Deploying Documentation runs-on: ubuntu-latest steps: - uses: docker://node:18-alpine @@ -16,14 +16,14 @@ jobs: - name: Building Application run: | - export NODE_OPTIONS=--openssl-legacy-provider npm ci + npm run db:prod npm run build - cp ./build/index.html ./build/404.html + cp ./dist/igdb-docs/browser/index.html ./dist/igdb-docs/browser/404.html - name: Publishing uses: JamesIves/github-pages-deploy-action@4.1.1 with: branch: documentation - folder: ./build + folder: ./dist/igdb-docs/browser target-folder: ./docs diff --git a/.gitignore b/.gitignore index 40f4083..bd5b181 100644 --- a/.gitignore +++ b/.gitignore @@ -1,26 +1,47 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. +# See http://help.github.com/ignore-files/ for more about ignoring files. -# dependencies +.vscode + +# Compiled output +/dist +/tmp +/out-tsc +/bazel-out + +# Node /node_modules -/.pnp -.pnp.js +npm-debug.log +yarn-error.log -# testing -/coverage +# IDEs and editors +.idea/ +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace -# production -/build +# Visual Studio Code +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +.history/* -# misc -.DS_Store -.env.local -.env.development.local -.env.test.local -.env.production.local +# Miscellaneous +/.angular/cache +.sass-cache/ +/connect.lock +/coverage +/libpeerconnection.log +testem.log +/typings -npm-debug.log* -yarn-debug.log* -yarn-error.log* +# System files +.DS_Store +Thumbs.db -public/database.json -public/images \ No newline at end of file +src/assets/database.json +logs diff --git a/README.md b/README.md index 0de5620..53a02d7 100644 --- a/README.md +++ b/README.md @@ -1,82 +1,27 @@ -# Getting Started with Create React App +# IgdbDocs -This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). +This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 17.0.3. -## Available Scripts +## Development server -In the project directory, you can run: +Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The application will automatically reload if you change any of the source files. -### `npm start` +## Code scaffolding -Runs the app in the development mode.\ -Open [http://localhost:3000](http://localhost:3000) to view it in the browser. +Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`. -The page will reload if you make edits.\ -You will also see any lint errors in the console. +## Build -### `npm test` +Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. -Launches the test runner in the interactive watch mode.\ -See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information. +## Running unit tests -### `npm run build` +Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io). -Builds the app for production to the `build` folder.\ -It correctly bundles React in production mode and optimizes the build for the best performance. +## Running end-to-end tests -The build is minified and the filenames include the hashes.\ -Your app is ready to be deployed! +Run `ng e2e` to execute the end-to-end tests via a platform of your choice. To use this command, you need to first add a package that implements end-to-end testing capabilities. -See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. +## Further help -### `npm run watch:templates` - -Building the non-production database from the templates and will watch for further changes in the files. If a change is detected, the whole database is built again. - -### `npm run export:templates` - -Exporting a non-production database from the templates one time. The json file will be indented. - -### `npm run export:templates:production` - -Exporting the production database from the templates one time. The json file will be compressed, the whitespaces will be removed. - -### `npm run eject` - -**Note: this is a one-way operation. Once you `eject`, you can’t go back!** - -If you aren’t satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project. - -Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own. - -You don’t have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it. - -## Learn More - -You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started). - -To learn React, check out the [React documentation](https://reactjs.org/). - -### Code Splitting - -This section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting) - -### Analyzing the Bundle Size - -This section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size) - -### Making a Progressive Web App - -This section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app) - -### Advanced Configuration - -This section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration) - -### Deployment - -This section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment) - -### `npm run build` fails to minify - -This section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify) +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page. diff --git a/angular.json b/angular.json new file mode 100644 index 0000000..c693190 --- /dev/null +++ b/angular.json @@ -0,0 +1,109 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "version": 1, + "newProjectRoot": "projects", + "projects": { + "igdb-docs": { + "projectType": "application", + "schematics": { + "@schematics/angular:component": { + "style": "scss" + } + }, + "root": "", + "sourceRoot": "src", + "prefix": "app", + "architect": { + "build": { + "builder": "@angular-devkit/build-angular:application", + "options": { + "outputPath": "dist/igdb-docs", + "index": "src/index.html", + "browser": "src/main.ts", + "polyfills": [ + "zone.js" + ], + "tsConfig": "tsconfig.app.json", + "inlineStyleLanguage": "scss", + "assets": [ + "src/favicon.ico", + "src/assets", + "src/manifest.webmanifest" + ], + "styles": [ + "node_modules/@fortawesome/fontawesome-free/css/all.min.css", + "node_modules/highlight.js/styles/atom-one-dark.css", + "src/styles.scss" + ], + "scripts": [ + "node_modules/@popperjs/core/dist/umd/popper.min.js", + "node_modules/bootstrap/dist/js/bootstrap.min.js" + ] + }, + "configurations": { + "production": { + "budgets": [ + { + "type": "initial", + "maximumWarning": "1mb", + "maximumError": "1.5mb" + }, + { + "type": "anyComponentStyle", + "maximumWarning": "2kb", + "maximumError": "4kb" + } + ], + "outputHashing": "all", + "serviceWorker": "ngsw-config.json" + }, + "development": { + "optimization": false, + "extractLicenses": false, + "sourceMap": true + } + }, + "defaultConfiguration": "production" + }, + "serve": { + "builder": "@angular-devkit/build-angular:dev-server", + "configurations": { + "production": { + "buildTarget": "igdb-docs:build:production" + }, + "development": { + "buildTarget": "igdb-docs:build:development" + } + }, + "defaultConfiguration": "development" + }, + "extract-i18n": { + "builder": "@angular-devkit/build-angular:extract-i18n", + "options": { + "buildTarget": "igdb-docs:build" + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "polyfills": [ + "zone.js", + "zone.js/testing" + ], + "tsConfig": "tsconfig.spec.json", + "inlineStyleLanguage": "scss", + "assets": [ + "src/favicon.ico", + "src/assets", + "src/manifest.webmanifest" + ], + "styles": [ + "src/styles.scss" + ], + "scripts": [] + } + } + } + } + } +} diff --git a/db/assets/mustache/blockquote.mustache b/db/assets/mustache/blockquote.mustache new file mode 100644 index 0000000..2cabc63 --- /dev/null +++ b/db/assets/mustache/blockquote.mustache @@ -0,0 +1,11 @@ +
+
+

+ + + + {{title}} +

+ {{{quote}}} +
+
diff --git a/db/assets/mustache/image.mustache b/db/assets/mustache/image.mustache new file mode 100644 index 0000000..bea0964 --- /dev/null +++ b/db/assets/mustache/image.mustache @@ -0,0 +1,4 @@ +
+ +
{{text}}
+
diff --git a/db/assets/mustache/link.mustache b/db/assets/mustache/link.mustache new file mode 100644 index 0000000..574d8f6 --- /dev/null +++ b/db/assets/mustache/link.mustache @@ -0,0 +1,6 @@ + + {{{text}}}{{^local}} {{/local}} diff --git a/db/assets/mustache/tabset.mustache b/db/assets/mustache/tabset.mustache new file mode 100644 index 0000000..19d3d67 --- /dev/null +++ b/db/assets/mustache/tabset.mustache @@ -0,0 +1,18 @@ +{{name}} + + +
+{{#tabs}} +
+ {{{ content }}} +
+{{/tabs}} +
diff --git a/src/assets/templates/01-introduction.md b/db/assets/templates/01-introduction.md similarity index 60% rename from src/assets/templates/01-introduction.md rename to db/assets/templates/01-introduction.md index 69a54f0..27e34cb 100644 --- a/src/assets/templates/01-introduction.md +++ b/db/assets/templates/01-introduction.md @@ -17,11 +17,7 @@ The documentation contains a lot of copy-paste example codes. In most cases, the ![Click the link on the homescreen to set your tokens](images/set-token-link.png) -Clicking the link will open the window where you can see additional information about this feature and two fields where you can store your tokens. - -![The window where the tokens can be stored](images/set-token-dialog.png) - -> If you chose to save the tokens these will be stored only in your browser locally! If the tokens are not saved the data will be erased when your browser is closed. +> If you chose to save the tokens these will be stored only in your browser locally! Find out the details there! After your tokens are set the example codes will contain your tokens which are ready to copy. @@ -29,54 +25,44 @@ After your tokens are set the example codes will contain your tokens which are r If you want to delete your tokens you can click the Delete the tokens button anytime. +## Installing the application + +The documentation is available as a progressive web app (PWA). This means you can install the documentation as an application on your device. Even on PC! + +Check out [this article](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Guides/Installing) how to do so. + ## Setting up your project The project has multiple PHP files which are in the `src` folder of the repository: - - **IGDB.php**: the IGDB wrapper itself + - **IGDB.php**: the wrapper class + - **IGDBQueryBuilder.php**: the query builder + - **IGDBConstants.php**: global constants for the package + - **IGDBUtils.php**: utility and helper methods + - **class.igdb.php**: entry point of the package - **IGDBEndpointException.php**: an exception thrown by the IGDB wrapper endpoint methods - **IGDBInvalidParameterException.php**: an exception thrown by the Query Builder configuring methods - - **IGDBQueryBuilder.php**: the Query Builder - - **IGDBUtil.php**: utility and helper methods - -These files can be imported one-by-one but it is highly recommended to import the `class.igdb.php` file which handles all the imports for you. - -```php - -``` -After the import, you are ready to use the wrapper. - ->:warning If you decide to import the files separately, make sure to check the source code since the exception classes are imported in the respective files where they are needed with hardcoded paths. The files has to be in the same folder to make it work! +> Feel free to update the entry point file according to your file structure. Make sure to check each file as all of them includes the required files. ## Instantiating the wrapper The wrapper will need your `client_id` and [generated](https://api-docs.igdb.com/#authentication) `access_token`. ```php - +$igdb = new IGDB("{client_id}", "{access_token}"); ``` > The wrapper itself does not validate your tokens. If your credentials are invalid you will get an `IGDBEndpointException` from the [endpoint methods](#endpoints) when you are sending your queries. ## Building Queries -There is a helper class to build apicalypse queries called [`IGDBQueryBuilder`](#igdb-query-builder). With this class you can easily build parameterized queries. +There is a helper class to build apicalypse queries called [`IGDBQueryBuilder`](#the-query-builder). With this class you can easily build parameterized queries. The parameters in the example below are valid, so the `$query` variable will hold the valid apicalypse string. +### Example {.tabset} +#### Source ```php fields("id, name") ->limit(1) ->build(); + + echo $query; } catch (IGDBInvalidParameterException $e) { // Invalid argument passed to one of the methods echo $e->getMessage(); @@ -92,27 +80,42 @@ There is a helper class to build apicalypse queries called [`IGDBQueryBuilder`]( ?> ``` -The parameters in the above example are valid, so the `$query` variable will hold the valid apicalypse string. - +#### Result ```text -fields id,name; search "uncharted 4"; limit 1; +fields id,name; +search "uncharted 4"; +limit 1; ``` +### {-} -> For more details on the Query Builder refer to the [IGDB Query Builder section](#igdb-query-builder) of this documentation. +> For more details on the Query Builder refer to the [Query Builder section](#the-query-builder) of this documentation. ## Sending Queries to IGDB -When your `$igdb` object is created you can send your queries to the IGDB database right away. There are multiple [endpoint methods](#endpoints) which will allow you to fetch data from the respective [IGDB Endpoint](https://api-docs.igdb.com/#endpoints). These endpoint methods in the wrapper will accept [apicalypse](https://api-docs.igdb.com/#apicalypse-1) formatted query strings. +When your `$igdb` object is created you can send your queries to the IGDB API right away. There are multiple [endpoint methods](#endpoints) which will allow you to fetch data from the respective [IGDB Endpoint](https://api-docs.igdb.com/#endpoints). These endpoint methods in the wrapper will accept + - [apicalypse](https://api-docs.igdb.com/#apicalypse-1) formatted query string + - configured [`IGDBQueryBuilder`](#the-query-builder) instance +## Example {.tabset} +### Source ```php search("uncharted 4") + ->fields("id, name") + ->limit(1); try { + // either an apicalypse query string $result = $igdb->game('search "uncharted 4"; fields id,name; limit 1;'); + // or an IGDBQueryBuilder instance + $result = $igdb->game($builder); + // or an apicalypse query string built from the query builder + $result = $igdb->game($builder->build()); } catch (IGDBEndpointException $e) { // Something went wrong, we have an error echo $e->getMessage(); @@ -121,7 +124,7 @@ When your `$igdb` object is created you can send your queries to the IGDB databa ?> ``` -Since the query is valid we have the `$result` array containing our matched records. +### Result ```text array (size=1) @@ -130,12 +133,13 @@ array (size=1) public 'id' => int 7331 public 'name' => string 'Uncharted 4: A Thief's End' (length=26) ``` +## {-} -> For more details on the IGDB Wrapper refer to the [IGDB Wrapper section](#igdb-wrapper) of this documentation. +> For more details on the IGDB Wrapper refer to [The Wrapper section](#the-wrapper) of this documentation. ## Handling errors There are two main type of errors which could occur when using the wrapper: - - **"local" errors**: when using the [Query Builder](#igdb-query-builder) to build your queries you may pass invalid parameters to the [configuring methods](#configuring-methods). These methods could throw `IGDBInvalidParameterException` if an invalid parameter or invalid type of parameter is passed. Head to the [Handling Builder Errors](#handling-builder-errors) section to find out more. + - **"local" errors**: when using the [Query Builder](#the-query-builder) to build your queries you may pass invalid parameters to the [configuring methods](#configuring-methods). These methods could throw `IGDBInvalidParameterException` if an invalid parameter or invalid type of parameter is passed. Head to the [Handling Builder Errors](#handling-builder-errors) section to find out more. - - **"remote" errors**: when a query is sent to the IGDB API, but for some reason the query fails. This happens only, when a non-successful response code is recieved from the API. In this case the [endpoint methods](#endpoints) will throw an `IGDBEndpointException`. Head to the [Handling Request Errors](#handling-request-errors) section to find out more. \ No newline at end of file + - **"remote" errors**: when a query is sent to the IGDB API, but for some reason the query fails. This happens only, when a non-successful response code is recieved from the API. In this case the [endpoint methods](#endpoints) will throw an `IGDBEndpointException`. Head to the [Handling Request Errors](#handling-request-errors) section to find out more. diff --git a/src/assets/templates/02-query-builder.md b/db/assets/templates/02-the-query-builder.md similarity index 79% rename from src/assets/templates/02-query-builder.md rename to db/assets/templates/02-the-query-builder.md index 240aa94..ecd7c38 100644 --- a/src/assets/templates/02-query-builder.md +++ b/db/assets/templates/02-the-query-builder.md @@ -3,24 +3,18 @@ overview: Everything about the Query Builder. Configuring and building your quer icon: fa-hammer --- -# IGDB Query Builder +# The Query Builder -This class is a helper class to help you construct your queries. If you have used this wrapper's eariler versions you were able to send queries by passing an `$options` array directly to the endpoint methods. This possibility got removed and these endpoint methods are accepting only [apicalypse](https://api-docs.igdb.com/#apicalypse-1) formatted query strings. +This class is a helper class to help you construct your queries. ->:tip Using the Builder class is optional as you can pass your own queries to the endpoint methods. +> Using the Builder class is optional as you can pass your own queries to the endpoint methods. ## Instantiating the Builder To instantiate the Builder simply use the `new` keyword. ```php - +$builer = new IGDBQueryBuiler(); ``` Now the `$builder` object will expose every configuring methods to set up your query before [building it](#building-the-query). @@ -29,17 +23,15 @@ Now the `$builder` object will expose every configuring methods to set up your q There are two ways to configure the builder. -### Builder approach +### Builder methods -The Builder is using a builder pattern to configure itself with the [configuring methods](#configuring-methods) before parsing the properties to a query string. When every parameter is set, calling the [`build()`](#building-the-query) method will start processing the parameters and will return the query string itself. +The Builder is using a builder pattern to configure itself with the [configuring methods](#configuring-methods) before parsing the properties to a query string. When every parameter is set, calling the [`build()`](#building-the-query) method will start processing the parameters and will return the apycalipse query string. ->:warning When using the builder approach, you must enclose your configuring methods in try...catch blocks. Read more on this in the [Handling Builder Errors](#handling-builder-errors) section. +>:warning When using the builder approach, you should enclose your configuring methods in try...catch blocks. Read more on this in the [Handling Builder Errors](#handling-builder-errors) section. ```php search("uncharted 4") ->fields("id, name") ->limit(1) - // make sure to call the build method to parse the query string + // the build method will return the query string ->build(); } catch (IGDBInvaliParameterException $e) { // invalid value passed to a method @@ -57,17 +49,19 @@ The Builder is using a builder pattern to configure itself with the [configuring ?> ``` -### Traditional approach +### Options array -To support the traditional approach of configuring the queries - the `$options` array - there is a method called [`options()`](#options). Passing your `$options` array to this method will process your parameters and will set up the builder. +The query builder can be parameterised using an options array. This array has to be an associative array containing `key => value` pairs where the keys are the property you wish to set and the value is the value to set said property to. ->:warning Using the Builder this way is not recommended as this functionality may will be removed in future versions. Use the [builder approach](#builder-approach) instead. +```php +$options = array('property' => 'value'); +``` + +After created the `$builder` instance this options array can be passed to the [`options`](#options) method. ```php options($options)->build(); + $query = $builder + // pass your $options to the options method + ->options($options) + // then build the query + ->build(); } catch (IGDBInvaliParameterException $e) { // invalid key or value found in the $options array echo $e->getMessage(); @@ -92,6 +88,8 @@ To support the traditional approach of configuring the queries - the `$options` When an invalid parameter is passed to any of the [configuring methods](#configuring-methods), an `IGDBInvaliParameterException` is thrown. To properly handle these errors, at least the configuring methods should be enclosed in a try...catch block. Calling the `getMessage()` method of the exception object will return the error message. +## Example {.tabset} +### Source ```php ``` -The script above will produce this output: - +### Result ```text Invalid type of parameter for fields! String or array of strings are expected, integer passed! ``` +## {-} -It is important to keep in mind, that this validation is happening "locally" on your server. The query builder can only validate the type of variables you pass, or it can validate against a list of predefined values that the API expects. For example, if the example above is altered like this: +It is important to keep in mind, that this validation is happening "locally" on your server. The query builder can only validate the type of variables you pass, or it can validate against a list of predefined values that the API expects. For example, if the example above is altered like below, the builder will not throw an exception as the method got a string, which is valid. +## Example {.tabset} +### Source ```php ``` -The builder will not throw an exception as the method got a string, which is valid. The output of the script will be: - +### Result ```text fields nonexistingfield; search "uncharted"; ``` +## {-} + The field `nonexistingfield` does not exist on the `game` endpoint which will cause an error on the IGDB API. These errors has to be handled separately. Read more on this in the [Handling Request Errors](#handling-request-errors) section. ## Configuring Methods @@ -160,7 +161,7 @@ The Builder class has its own configuring methods to set the parameters before b public function count(boolean $count = true) throws IGDBInvalidArgumentException: IGDBQueryBuilder ``` -This method will accept a boolean value. This parameter is processed **in case of a multiquery build only**. If this value is `true` the response from IGDB will contain the number of records matching the filters. If `false` the records will be returned. +This method will accept a boolean value. This parameter is used **in case of a multiquery build only**. If this value is `true` the response from IGDB will contain the number of records matching the filters. If `false` the records will be returned. > If the method is called without parameters, the value will be set to `true`. @@ -171,12 +172,11 @@ This method will accept a boolean value. This parameter is processed **in case o **Returns**: `IGDBQueryBuilder` instance +### Example {.tabset} +#### Source ```php count(false) // building the query - $query = $builder->build(true); + $query = $builder->build_multiquery(); } catch (IGDBInvaliParameterException $e) { // invalid key or value found in the $options array echo $e->getMessage(); @@ -204,7 +204,7 @@ This method will accept a boolean value. This parameter is processed **in case o ?> ``` -The value of `$query`: +#### Result ```text query games/count "Number of games" { @@ -212,6 +212,8 @@ query games/count "Number of games" { }; ``` +### {-} + ### Custom Where ```php public function custom_where(string $custom_where): IGDBQueryBuilder @@ -227,12 +229,12 @@ This method will add a [where statement](#where) to your query, but will not val ```php "(platforms = [6,48] & genres = 13) | (platforms = [130,48] & genres = 12)" ); - // builder approach + // with builder method $builder->custom_where("(platforms = [6,48] & genres = 13) | (platforms = [130,48] & genres = 12)"); ?> @@ -243,46 +245,61 @@ This method will add a [where statement](#where) to your query, but will not val public function endpoint(string $endpoint) throws IGDBInvalidArgumentException: IGDBQueryBuilder ``` -This method will set the endpoint to send your **multiquery** against. This parameter is processed **in case of a multiquery build only**. When setting this value make sure to use the name of the endpoint instead of it's request path. (for example `game` instead of `games` and so on). +This method will set the endpoint to send your **multiquery** against. This parameter is used **in case of a multiquery build only**. When setting this value make sure to use the name of the endpoint instead of it's request path. (for example `game` instead of `games` and so on). >:warning In case of a multiquery build this parameter is mandatory! If this is missing from the configuration the build will throw an `IGDBInvalidParameterException`! Refer to the [build method](#building-the-query) for details. **Parameters**: - `$endpoint`: the name of the endpoint to send the query against. Make sure to use the name of the endpoint instead of it's request path! The list of endpoints for this parameter: - age_rating + - age_rating_content_description - alternative_name - artwork - - character_mug_shot - character + - character_mug_shot - collection + - collection_membership + - collection_membership_type + - collection_relation + - collection_relation_type + - collection_type + - company - company_logo - company_website - - company - cover + - event + - event_logo + - event_network - external_game - franchise - - game_engine_logo + - game - game_engine + - game_engine_logo + - game_localization - game_mode - - game_version_feature_value - - game_version_feature - game_version + - game_version_feature + - game_version_feature_value - game_video - - game - genre - involved_company - keyword + - language_support + - language_support_type + - language - multiplayer_mode - - multiquery + - network_type + - platform - platform_family - platform_logo + - platform_version - platform_version_company - platform_version_release_date - - platform_version - platform_website - - platform - player_perspective + - region - release_date + - release_date_status - screenshot - search - theme @@ -290,6 +307,8 @@ This method will set the endpoint to send your **multiquery** against. This para **Returns**: `IGDBQueryBuilder` instance +### Example {.tabset} +#### Source ```php where("id = 25076"); // building the query - $query = $builder->build(true); + $query = $builder->build_multiquery(); } catch (IGDBInvaliParameterException $e) { // invalid key or value found in the $options array echo $e->getMessage(); @@ -317,7 +336,7 @@ This method will set the endpoint to send your **multiquery** against. This para ?> ``` -The value of `$query`: +#### Result ```text query games "Game with ID 25076" { @@ -326,6 +345,8 @@ query games "Game with ID 25076" { }; ``` +### {-} + ### Exclude ```php public function exclude(string | array $exclude) throws IGDBInvalidArgumentException: IGDBQueryBuilder @@ -341,20 +362,20 @@ Exclude is a complement to the regular fields which allows you to request all fi ```php "name,slug" ); - // traditional approach, as an array + // with options array, as an array $options = array( "exclude" => array("name", "slug") ); - // builder approach, as a string + // with builder method, as a string $builder->exclude("name,slug"); - // builder approach, as an array + // with builder method, as an array $builder->exclude(array("name", "slug")); ?> @@ -379,20 +400,20 @@ Fields are properties of an entity. For example, a Game field would be genres or ```php "id,name" ); - // traditional approach, as an array + // with options array, as an array $options = array( "fields" => array("id", "name") ); - // builder approach, as a string + // with builder method, as a string $builder->fields("id,name"); - // builder approach, as an array + // with builder method, as an array $builder->fields(array("id", "name")); ?> @@ -403,7 +424,7 @@ Fields are properties of an entity. For example, a Game field would be genres or public function id(array | int $id) throws IGDBInvalidArgumentException: IGDBQueryBuilder ``` -This is kind of a traditional thing. Since the IGDB team introduced the apicalypse query there is no separate ID field. This method simply adds a [where](#where) statement to your query. +This is a legacy thing. Since the IGDB team introduced the apicalypse query there is no separate ID field. This method simply adds a [where](#where) statement to your query. ```php 1 ); - // traditional approach, multiple id's + // with options array, multiple id's $options = array( "id" => array(1,2,3) ); - // builder approach, single id + // with builder method, single id $builder->id(1); - // builder approach, multiple id's + // with builder method, multiple id's $builder->id(array(1,2,3)); ?> @@ -461,12 +482,12 @@ The maximum number of results in a single query. This value must be a number bet ```php array( "limit" => 20 ); - // builder approach + // with builder method $builder->limit(20); ?> @@ -477,7 +498,7 @@ The maximum number of results in a single query. This value must be a number bet public function name(string $name) throws IGDBInvalidArgumentException: IGDBQueryBuilder ``` -This method will set a name for the query. This parameter is processed **in case of a multiquery build only**. +This method will set a name for the query. This parameter is used **in case of a multiquery build only**. >:warning In case of a multiquery build this parameter is **mandatory**! If this is missing from the configuration the build will throw an `IGDBInvalidParameterException`! Refer to the [build method](#building-the-query) for details. @@ -486,6 +507,8 @@ This method will set a name for the query. This parameter is processed **in case **Returns**: `IGDBQueryBuilder` instance +### Example {.tabset} +#### Source ```php where("id = 25076"); // building the query - $query = $builder->build(true); + $query = $builder->build_multiquery(); } catch (IGDBInvaliParameterException $e) { // invalid key or value found in the $options array echo $e->getMessage(); @@ -513,7 +536,7 @@ This method will set a name for the query. This parameter is processed **in case ?> ``` -The value of `$query`: +#### Result ```text query games "Game with ID 25076" { @@ -521,6 +544,7 @@ query games "Game with ID 25076" { where id = 25076; }; ``` +### {-} ### Offset ```php @@ -539,12 +563,12 @@ This will start the result list at the provided value and will give [`limit`](#l ```php 5 ); - // builder approach + // with builder method $builder->offset(5); ?> @@ -555,9 +579,7 @@ This will start the result list at the provided value and will give [`limit`](#l public function options(array $options) throws IGDBInvalidArgumentException: IGDBQueryBuilder ``` ->:warning Using the Builder this way is not recommended as this functionality may be removed in future versions. Use the [builder approach](#builder-approach) instead. - -With this method you can parse your `$options` array instead of using the [builder approach](#builder-approach). If a non-valid key or value is in the array, an `IGDBInvalidParameterException` will be thrown. +With this method you can parse your `$options` array instead of using the [builder methods](#builder-methods). If a non-valid key or value is in the array, an `IGDBInvalidParameterException` will be thrown. Passing your `$options` array to this method will configure the builder with the parameters in it. @@ -585,7 +607,7 @@ Passing your `$options` array to this method will configure the builder with the // configuring the builder with an options array $builder->options($options); - // still have to call the build method to building the query + // still have to call the build method to build the query $query = $builder->build(); } catch (IGDBInvaliParameterException $e) { // invalid key or value found in the $options array @@ -597,6 +619,8 @@ Passing your `$options` array to this method will configure the builder with the >:warning Calling this method **will not reset** the configuration. Stacking the `options()` calls will add each parameter to the builder, overwriting the old values with the new ones. To clear the previous configuration items use the [reset method](#reset). +### Example {.tabset} +#### Source ```php ``` -The query: +#### Result ```text fields id,name; search "overwritten uncharted"; limit 1; ``` +### {-} ### Reset ```php @@ -642,6 +667,8 @@ This method will reset every configuration to the default values. **Returns**: `IGDBQueryBuilder` instance +### Example {.tabset} +#### Source ```php ``` -The code above will return the `$options2` array's configuration, as it got reset with the `reset()` method. +### Result ```text fields cover,slug; search "star wars"; limit 1; ``` +## {-} + +The example above will return the `$options2` array's configuration, as it got reset with the `reset()` method. ### Search ```php @@ -700,12 +730,12 @@ Search based on name, results are sorted by similarity to the given search strin ```php "uncharted 4" ); - // builder approach + // with builder method $builder->search("uncharted 4"); ?> @@ -728,12 +758,12 @@ Sorting (ordering) is used to order results by a specific field. The parameter c ```php "release_dates.date desc", ); - // traditional approach as an array + // with options array as an array $options = array( "sort" => array( "field" => "release_dates.date", @@ -741,10 +771,10 @@ Sorting (ordering) is used to order results by a specific field. The parameter c ) ); - // builder approach as a string + // with builder method as a string $builder->sort("release_dates.date desc"); - // builder approach as an array + // with builder method as an array $builder->sort( array( "field" => "release_dates.date", @@ -769,7 +799,7 @@ The where parameter can be either an apicalypse formatted string or an array wit The where filters will be concatenated with **AND** operators (`&`). ->:tip Multiple filter parameters can be applied to the same query. Check the examples below. +> Multiple filter parameters can be applied to the same query. Check the examples below. **Parameters**: - `$where`: either an apicalypse formatted string or an array with specific keys @@ -779,12 +809,12 @@ The where filters will be concatenated with **AND** operators (`&`). ```php "release_dates.platform = 8" ); - // traditional approach, single criteria as an array + // with options array, single criteria as an array $options = array( "where" => array( "field" => "release_dates.platform", @@ -793,7 +823,7 @@ The where filters will be concatenated with **AND** operators (`&`). ) ); - // traditional approach, multiple criteria as a string + // with options array, multiple criteria as a string $options = array( "where" => array( "release_dates.platform = 8", @@ -801,7 +831,7 @@ The where filters will be concatenated with **AND** operators (`&`). ); ); - // traditional approach, multiple criteria as an array + // with options array, multiple criteria as an array $options = array( "where" => array( array( @@ -817,10 +847,10 @@ The where filters will be concatenated with **AND** operators (`&`). ) ); - // builder approach, single criteria as a string + // with builder method, single criteria as a string $builder->where("release_dates.platform = 8"); - // builder approach, single criteria as an array + // with builder method, single criteria as an array $builder->where( array( "field" => "release_dates.platform", @@ -829,12 +859,12 @@ The where filters will be concatenated with **AND** operators (`&`). ) ); - // builder approach, multiple criteria as a string + // with builder method, multiple criteria as a string $builder ->where("release_dates.platform = 8") ->where("total_rating >= 70"); - // builder approach, multiple criteria as an array + // with builder method, multiple criteria as an array $builder ->where( array( @@ -855,12 +885,9 @@ The where filters will be concatenated with **AND** operators (`&`). > This method is trying to validate your input against some rules and will throw an `IGDBInvalidArgumentException` in case of any issues. If you need more flexibility or custom where statements with complex conditions in you queries use the [Custom Where](#custom-where) method instead. -## Building the Query -```php -public function build(boolean $multiquery = false) throws IGDBInvalidParameterException: mixed -``` +## Building the query -When the Builder object is configured properly the final step is to build the query to an apicalypse query string. The syntax of the query depends on which endpoint the query is executed against. The multiquery endpoint requires a few additional information and a slightly different syntax. +When the builder object is configured properly the final step is to build the query to an apicalypse query string. The syntax of the query depends on which endpoint the query is executed against. The multiquery endpoint requires a few additional information and a slightly different syntax. A [`game`](#game) endpoint query: ```text @@ -876,21 +903,17 @@ query games "Main Game" { }; ``` -The build method accepts one `boolean` parameter. Using this parameter the build method decides which syntax to return. If a multiquery is required, a few extra fields has to be set for the builder: - - [`name`](#name): the name of the query choosen by the user - - [`endpoint`](#endpoint): the endpoint to send the query against - - [`count`](#count) [optional]: whether the records or their count is required. By default the value of this parameter is `false`. - ->:warning In case of a multiquery request the properties [name](#name) and [endpoint](#endpoint) are **mandatory**! If any of these are missing from the configuration, an `IGDBInvalidParameterException` will be thrown. - -**Parameters**: - - `$multiquery`: if `true`, a multiquery will be returned, an endpoint query otherwise. The default value of this parameter is `false`. +### Apicalypse +```php +public function build(): string +``` - >:warning If a non-boolean parameter is passed to the build method, an `IGDBInavlidParameterException` is thrown! +For endpoint methods a simple apicalypse string is required. This string can be parsed using the build method. -**Returns**: the apicalypse query string +**Returns:** the apicalypse query string -An endpoint query example: +### Example {.tabset} +#### Source ```php ``` -The value of `$query`: +#### Result ```text fields id,name; @@ -923,8 +946,24 @@ search "uncharted 4"; limit 1; ``` -A multiquery example: +### {-} + +### Multiquery +```php +public function build_multiquery() throws IGDBInvalidParameterException: string +``` + +If a multiquery is required, a few extra fields has to be set for the builder: + - [`name`](#name): the name of the query choosen by you + - [`endpoint`](#endpoint): the endpoint to send the query against + - [`count`](#count) [optional]: whether the records or their count is required. By default the value of this parameter is `false`. + +>:warning In case of a multiquery request the properties [name](#name) and [endpoint](#endpoint) are **mandatory**! If any of these are missing from the configuration, an `IGDBInvalidParameterException` will be thrown. + +**Returns**: the apicalypse query string formatted for multiquery requests +### Example {.tabset} +#### Source ```php name("Game with ID of 25076") ->endpoint("game") ->fields("id,name") - ->where("id = 25076") - // note the true parameter - ->build(true); + ->where("id = 25076"); + + echo $builder->build_multiquery(); + } catch (IGDBInvaliParameterException $e) { // invalid key or value found in the $options array echo $e->getMessage(); @@ -951,11 +991,13 @@ A multiquery example: ?> ``` -The value of `$query`: +#### Result ```text query games "Game with ID of 25076" { fields id,name; where id = 25076; }; -``` \ No newline at end of file +``` + +### {-} diff --git a/db/assets/templates/03-the-wrapper.md b/db/assets/templates/03-the-wrapper.md new file mode 100644 index 0000000..dcb1742 --- /dev/null +++ b/db/assets/templates/03-the-wrapper.md @@ -0,0 +1,3279 @@ +--- +overview: The main wrapper. Methods, endpoints, properties, configurations. Sending your queries to the IGDB API. +icon: fa-gift +--- + +# The Wrapper + +This is the most important part of the wrapper, the `IGDB` class which does the heavy lifting: communicating with the IGDB API. + +As mentioned in the [Introduction](#getting-started), to have access to IGDB's database you have to register a Twitch Account and have your own `client_id` and `access_token`. + +> You can add your tokens to the documentation to replace them in the exmple codes. Click the logo in the top left corner to get back to the main page and save your tokens. + +## Instantiating the wrapper + +After importing the dependencies you can instantiate the class with the `new` keyword by passing your tokens to the constructor. + +```php + +``` + +>:info The wrapper itself does not validate your tokens. If your credentials are invalid, you will get an error from the IGDB API after executing a query. + +## Public Methods + +These methods are exposed from the `IGDB` object. + +### Get Request Info +```php +public function get_request_info() +``` + +After a query is executed, the latest request information will be stored and can be retrieved using this method. + +> The new version of the IGDB API (v4) will return a http response code `429` when you exceed the limit of requests on the database (4 requests per second at the time of writing this documentation). + +### Example {.tabset} +#### Source +```php +game('fields id,name; search "uncharted 4"; limit 1;'); + + // getting the details of the latest query + $request_info = $igdb->get_request_info(); + + // showing the details + var_dump($request_info); + } catch (IGDBEndpointException $e) { + echo $e->getMessage(); + } + +?> +``` + +#### Result + +```text +array (size=37) + 'url' => string 'https://api.igdb.com/v4/games' (length=29) + 'content_type' => string 'application/json;charset=utf-8' (length=30) + 'http_code' => int 200 + 'header_size' => int 870 + 'request_size' => int 224 + 'filetime' => int -1 + 'ssl_verify_result' => int 20 + 'redirect_count' => int 0 + 'total_time' => float 0.748895 + 'namelookup_time' => float 0.000705 + 'connect_time' => float 0.048049 + 'pretransfer_time' => float 0.088656 + 'size_upload' => float 46 + 'size_download' => float 73 + 'speed_download' => float 97 + 'speed_upload' => float 61 + 'download_content_length' => float 73 + 'upload_content_length' => float 46 + 'starttransfer_time' => float 0.088661 + 'redirect_time' => float 0 + 'redirect_url' => string '' (length=0) + 'primary_ip' => string '104.22.65.239' (length=13) + 'certinfo' => + array (size=0) + empty + 'primary_port' => int 443 + 'local_ip' => string '192.168.1.99' (length=12) + 'local_port' => int 58813 + 'http_version' => int 3 + 'protocol' => int 2 + 'ssl_verifyresult' => int 0 + 'scheme' => string 'HTTPS' (length=5) + 'appconnect_time_us' => int 88535 + 'connect_time_us' => int 48049 + 'namelookup_time_us' => int 705 + 'pretransfer_time_us' => int 88656 + 'redirect_time_us' => int 0 + 'starttransfer_time_us' => int 88661 + 'total_time_us' => int 748895 +``` + +### {-} + +Details of the query can be fetched from the output of the `get_request_info()` method (for example, the HTTP Response code from `http_code`). + +### Construct URL +```php +public function construct_url(string $endpoint, boolean $count = false) throws IGDBInvalidParameterException: string +``` + +The method will construct the full URL for the request and will return the constructed URL as a string. If an invalid endpoint name passed to `$endpoint` an `IGDBInvalidParameterException` will be thrown. + +**Parameters**: + - `$endpoint`: the endpoint to use (the name of the endpoint, not the path to it!). Possible values: + - age_rating + - age_rating_content_description + - alternative_name + - artwork + - character + - character_mug_shot + - collection + - collection_membership + - collection_membership_type + - collection_relation + - collection_relation_type + - collection_type + - company + - company_logo + - company_website + - cover + - event + - event_logo + - event_network + - external_game + - franchise + - game + - game_engine + - game_engine_logo + - game_localization + - game_mode + - game_version + - game_version_feature + - game_version_feature_value + - game_video + - genre + - involved_company + - keyword + - language_support + - language_support_type + - language + - multiplayer_mode + - network_type + - platform + - platform_family + - platform_logo + - platform_version + - platform_version_company + - platform_version_release_date + - platform_website + - player_perspective + - region + - release_date + - release_date_status + - screenshot + - search + - theme + - website + - `$count`: if the count endpoint is required or the simple endpoint + +**Returns**: the full constructed URL to the IGDB Endpoint as a string. + +### Example {.tabset} +#### Source +```php +construct_url("game"); + + // constructing an url to get counts + $count_url = $igdb->construct_url("game", true); + + // showing the results + echo "url: " . $url; + echo "count url: " . $count_url; + } catch (IGDBInvalidParameterException $e) { + // an invalid parameter passed to the construct_url method + echo $e->getMessage(); + } + +?> +``` + +#### Result + +```text +url: https://api.igdb.com/v4/games +count url: https://api.igdb.com/v4/games/count +``` + +### {-} + +### Close CURL Session +```php +public function curl_close(): void +``` + +You can close the CURL session handler manually if you need to. + +**Parameters**: - + +**Returns**: - + +> The curl handler will be [reinitialized](#reinitialize-curl-session) automatically when a new request is sent to the IGDB API with any of the endpoint methods. + +### Reinitialize CURL Session +```php +public function curl_reinit() : void +``` + +After you closed the CURL session manually with [curl_close()](#close-curl-session) you can manually reinitialize the curl handler. + +**Parameters**: - + +**Returns**: - + +> Before sending a request with an endpoint method, the wrapper will check the status of the curl handler. If it is closed, it will reinitialize it automatically. + +## Handling Request Errors + +Your query may fail on the IGDB side. In this case the API will send back a non-successful response code indicating that something went wrong. When this happens an `IGDBEndpointException` can be caught to extract information about the issue. To catch these errors you have to enclose your [endpoint](#endpoints) method calls in a try...catch block. + +## Example {.tabset} +### Source +```php +game($query); + } catch (IGDBEndpointException $e) { + // since the query contains a non-existing field, an error occurs + // printing the response code and the error message + echo "Response code: " . $e->getResponseCode(); + echo "Message: " . $e->getMessage(); + } + +?> +``` + +### Result + +```text +Response code: 400 +Message: Invalid Field +``` + +## {-} + +Since the query above is not valid, as there is no field called `nonexistingfield` on the game endpoint, the API will send a response with an error message and a non-successful response code. + +You can also get some additional information about this request using the [`get_request_info()`](#get-request-info) method. + +## Endpoints + +Every endpoint method is named after the IGDB API endpoints using snake-casing naming convention. Also, each endpoint method has a `count` counterpart which handles counting the matched entities. + +These methods will return **an array of objects** decoded from IGDB response. Please refer to the [return values section](#return-values) for more details about the return values of these methods. + +`IGDBEndpointException` is thrown if a non-successful response code is recieved from the IGDB API. To find out how to handle request errors, head to the [Handle Request Errors](#handling-request-errors) section. + +>:success To build your queries, give [IGDB Query Builder](#the-query-builder) a try! + +For the endpoint specific fields that the API returns please refer to the IGDB documentation's respective paragraph. Each endpoint has a direct link! + +### Age Rating +```php +public function age_rating(string $query | IGDBQueryBuilder $builder) throws IGDBEndpointException: mixed +``` + +Fetching records from IGDB API using the [Age Rating](https://api-docs.igdb.com/#age-rating) endpoint. + +**Endpoint Description**: Age Rating according to various rating organisations + +**Endpoint URL**: `https://api.igdb.com/v4/age-rating` + +**Parameters**: + - `$query`: an apicalypse formatted query string or a configured IGDBQueryBuilder instance + +**Returns**: an array of objects decoded from the IGDB API response. + +```php +age_rating($query); + +?> +``` + +### Age Rating Count +```php +public function age_rating_count(string $query = "" | IGDBQueryBuilder $builder) throws IGDBEndpointException: integer +``` + +Fetching the number of records from IGDB API using the [Age Rating](https://api-docs.igdb.com/#age_rating) endpoint. This method will return the record count matching the filter query. If the number of all records are required the method can be called without a filter query. + +**Endpoint Description**: Age Rating according to various rating organisations + +**Endpoint URL**: `https://api.igdb.com/v4/age_rating/count` + +**Parameters**: + - `$query` [optional]: an apicalypse formatted query string or a configured IGDBQueryBuilder instance. If called with an empty string, or without parameter then all records will be counted. + +**Returns**: the number of records matching the filter query + +```php +age_rating_count($query); + + // count all records + $igdb->age_rating_count(); + +?> +``` + +### Age Rating Content Description +```php +public function age_rating_content_description(string $query | IGDBQueryBuilder $builder) throws IGDBEndpointException: mixed +``` + +Fetching records from IGDB API using the [Age Rating Content Description](https://api-docs.igdb.com/#age-rating-content-description) endpoint. + +**Endpoint Description**: Age Rating Descriptors + +**Endpoint URL**: `https://api.igdb.com/v4/age-rating-content-description` + +**Parameters**: + - `$query`: an apicalypse formatted query string or a configured IGDBQueryBuilder instance + +**Returns**: an array of objects decoded from the IGDB API response. + +```php +age_rating_content_description($query); + +?> +``` + +### Age Rating Content Description Count +```php +public function age_rating_content_description_count(string $query = "" | IGDBQueryBuilder $builder) throws IGDBEndpointException: integer +``` + +Fetching the number of records from IGDB API using the [Age Rating Content Description](https://api-docs.igdb.com/#age_rating_content_description) endpoint. This method will return the record count matching the filter query. If the number of all records are required the method can be called without a filter query. + +**Endpoint Description**: Age Rating Descriptors + +**Endpoint URL**: `https://api.igdb.com/v4/age_rating_content_description/count` + +**Parameters**: + - `$query` [optional]: an apicalypse formatted query string or a configured IGDBQueryBuilder instance. If called with an empty string, or without parameter then all records will be counted. + +**Returns**: the number of records matching the filter query + +```php +age_rating_content_description_count($query); + + // count all records + $igdb->age_rating_content_description_count(); + +?> +``` + +### Alternative Name +```php +public function alternative_name(string $query | IGDBQueryBuilder $builder) throws IGDBEndpointException: mixed +``` + +Fetching records from IGDB API using the [Alternative Name](https://api-docs.igdb.com/#alternative-name) endpoint. + +**Endpoint Description**: Alternative and international game titles + +**Endpoint URL**: `https://api.igdb.com/v4/alternative-name` + +**Parameters**: + - `$query`: an apicalypse formatted query string or a configured IGDBQueryBuilder instance + +**Returns**: an array of objects decoded from the IGDB API response. + +```php +alternative_name($query); + +?> +``` + +### Alternative Name Count +```php +public function alternative_name_count(string $query = "" | IGDBQueryBuilder $builder) throws IGDBEndpointException: integer +``` + +Fetching the number of records from IGDB API using the [Alternative Name](https://api-docs.igdb.com/#alternative_name) endpoint. This method will return the record count matching the filter query. If the number of all records are required the method can be called without a filter query. + +**Endpoint Description**: Alternative and international game titles + +**Endpoint URL**: `https://api.igdb.com/v4/alternative_name/count` + +**Parameters**: + - `$query` [optional]: an apicalypse formatted query string or a configured IGDBQueryBuilder instance. If called with an empty string, or without parameter then all records will be counted. + +**Returns**: the number of records matching the filter query + +```php +alternative_name_count($query); + + // count all records + $igdb->alternative_name_count(); + +?> +``` + +### Artwork +```php +public function artwork(string $query | IGDBQueryBuilder $builder) throws IGDBEndpointException: mixed +``` + +Fetching records from IGDB API using the [Artwork](https://api-docs.igdb.com/#artwork) endpoint. + +**Endpoint Description**: official artworks (resolution and aspect ratio may vary) + +**Endpoint URL**: `https://api.igdb.com/v4/artwork` + +**Parameters**: + - `$query`: an apicalypse formatted query string or a configured IGDBQueryBuilder instance + +**Returns**: an array of objects decoded from the IGDB API response. + +```php +artwork($query); + +?> +``` + +### Artwork Count +```php +public function artwork_count(string $query = "" | IGDBQueryBuilder $builder) throws IGDBEndpointException: integer +``` + +Fetching the number of records from IGDB API using the [Artwork](https://api-docs.igdb.com/#artwork) endpoint. This method will return the record count matching the filter query. If the number of all records are required the method can be called without a filter query. + +**Endpoint Description**: official artworks (resolution and aspect ratio may vary) + +**Endpoint URL**: `https://api.igdb.com/v4/artwork/count` + +**Parameters**: + - `$query` [optional]: an apicalypse formatted query string or a configured IGDBQueryBuilder instance. If called with an empty string, or without parameter then all records will be counted. + +**Returns**: the number of records matching the filter query + +```php +artwork_count($query); + + // count all records + $igdb->artwork_count(); + +?> +``` + +### Character +```php +public function character(string $query | IGDBQueryBuilder $builder) throws IGDBEndpointException: mixed +``` + +Fetching records from IGDB API using the [Character](https://api-docs.igdb.com/#character) endpoint. + +**Endpoint Description**: Video game characters + +**Endpoint URL**: `https://api.igdb.com/v4/character` + +**Parameters**: + - `$query`: an apicalypse formatted query string or a configured IGDBQueryBuilder instance + +**Returns**: an array of objects decoded from the IGDB API response. + +```php +character($query); + +?> +``` + +### Character Count +```php +public function character_count(string $query = "" | IGDBQueryBuilder $builder) throws IGDBEndpointException: integer +``` + +Fetching the number of records from IGDB API using the [Character](https://api-docs.igdb.com/#character) endpoint. This method will return the record count matching the filter query. If the number of all records are required the method can be called without a filter query. + +**Endpoint Description**: Video game characters + +**Endpoint URL**: `https://api.igdb.com/v4/character/count` + +**Parameters**: + - `$query` [optional]: an apicalypse formatted query string or a configured IGDBQueryBuilder instance. If called with an empty string, or without parameter then all records will be counted. + +**Returns**: the number of records matching the filter query + +```php +character_count($query); + + // count all records + $igdb->character_count(); + +?> +``` + +### Character Mug Shot +```php +public function character_mug_shot(string $query | IGDBQueryBuilder $builder) throws IGDBEndpointException: mixed +``` + +Fetching records from IGDB API using the [Character Mug Shot](https://api-docs.igdb.com/#character-mug-shot) endpoint. + +**Endpoint Description**: Images depicting game characters + +**Endpoint URL**: `https://api.igdb.com/v4/character-mug-shot` + +**Parameters**: + - `$query`: an apicalypse formatted query string or a configured IGDBQueryBuilder instance + +**Returns**: an array of objects decoded from the IGDB API response. + +```php +character_mug_shot($query); + +?> +``` + +### Character Mug Shot Count +```php +public function character_mug_shot_count(string $query = "" | IGDBQueryBuilder $builder) throws IGDBEndpointException: integer +``` + +Fetching the number of records from IGDB API using the [Character Mug Shot](https://api-docs.igdb.com/#character_mug_shot) endpoint. This method will return the record count matching the filter query. If the number of all records are required the method can be called without a filter query. + +**Endpoint Description**: Images depicting game characters + +**Endpoint URL**: `https://api.igdb.com/v4/character_mug_shot/count` + +**Parameters**: + - `$query` [optional]: an apicalypse formatted query string or a configured IGDBQueryBuilder instance. If called with an empty string, or without parameter then all records will be counted. + +**Returns**: the number of records matching the filter query + +```php +character_mug_shot_count($query); + + // count all records + $igdb->character_mug_shot_count(); + +?> +``` + +### Collection +```php +public function collection(string $query | IGDBQueryBuilder $builder) throws IGDBEndpointException: mixed +``` + +Fetching records from IGDB API using the [Collection](https://api-docs.igdb.com/#collection) endpoint. + +**Endpoint Description**: Collection, AKA Series + +**Endpoint URL**: `https://api.igdb.com/v4/collection` + +**Parameters**: + - `$query`: an apicalypse formatted query string or a configured IGDBQueryBuilder instance + +**Returns**: an array of objects decoded from the IGDB API response. + +```php +collection($query); + +?> +``` + +### Collection Count +```php +public function collection_count(string $query = "" | IGDBQueryBuilder $builder) throws IGDBEndpointException: integer +``` + +Fetching the number of records from IGDB API using the [Collection](https://api-docs.igdb.com/#collection) endpoint. This method will return the record count matching the filter query. If the number of all records are required the method can be called without a filter query. + +**Endpoint Description**: Collection, AKA Series + +**Endpoint URL**: `https://api.igdb.com/v4/collection/count` + +**Parameters**: + - `$query` [optional]: an apicalypse formatted query string or a configured IGDBQueryBuilder instance. If called with an empty string, or without parameter then all records will be counted. + +**Returns**: the number of records matching the filter query + +```php +collection_count($query); + + // count all records + $igdb->collection_count(); + +?> +``` + +### Collection Membership +```php +public function collection_membership(string $query | IGDBQueryBuilder $builder) throws IGDBEndpointException: mixed +``` + +Fetching records from IGDB API using the [Collection Membership](https://api-docs.igdb.com/#collection-membership) endpoint. + +**Endpoint Description**: The Collection Memberships. + +**Endpoint URL**: `https://api.igdb.com/v4/collection-membership` + +**Parameters**: + - `$query`: an apicalypse formatted query string or a configured IGDBQueryBuilder instance + +**Returns**: an array of objects decoded from the IGDB API response. + +```php +collection_membership($query); + +?> +``` + +### Collection Membership Count +```php +public function collection_membership_count(string $query = "" | IGDBQueryBuilder $builder) throws IGDBEndpointException: integer +``` + +Fetching the number of records from IGDB API using the [Collection Membership](https://api-docs.igdb.com/#collection_membership) endpoint. This method will return the record count matching the filter query. If the number of all records are required the method can be called without a filter query. + +**Endpoint Description**: The Collection Memberships. + +**Endpoint URL**: `https://api.igdb.com/v4/collection_membership/count` + +**Parameters**: + - `$query` [optional]: an apicalypse formatted query string or a configured IGDBQueryBuilder instance. If called with an empty string, or without parameter then all records will be counted. + +**Returns**: the number of records matching the filter query + +```php +collection_membership_count($query); + + // count all records + $igdb->collection_membership_count(); + +?> +``` + +### Collection Membership Type +```php +public function collection_membership_type(string $query | IGDBQueryBuilder $builder) throws IGDBEndpointException: mixed +``` + +Fetching records from IGDB API using the [Collection Membership Type](https://api-docs.igdb.com/#collection-membership-type) endpoint. + +**Endpoint Description**: Enums for collection membership types. + +**Endpoint URL**: `https://api.igdb.com/v4/collection-membership-type` + +**Parameters**: + - `$query`: an apicalypse formatted query string or a configured IGDBQueryBuilder instance + +**Returns**: an array of objects decoded from the IGDB API response. + +```php +collection_membership_type($query); + +?> +``` + +### Collection Membership Type Count +```php +public function collection_membership_type_count(string $query = "" | IGDBQueryBuilder $builder) throws IGDBEndpointException: integer +``` + +Fetching the number of records from IGDB API using the [Collection Membership Type](https://api-docs.igdb.com/#collection_membership_type) endpoint. This method will return the record count matching the filter query. If the number of all records are required the method can be called without a filter query. + +**Endpoint Description**: Enums for collection membership types. + +**Endpoint URL**: `https://api.igdb.com/v4/collection_membership_type/count` + +**Parameters**: + - `$query` [optional]: an apicalypse formatted query string or a configured IGDBQueryBuilder instance. If called with an empty string, or without parameter then all records will be counted. + +**Returns**: the number of records matching the filter query + +```php +collection_membership_type_count($query); + + // count all records + $igdb->collection_membership_type_count(); + +?> +``` + +### Collection Relation +```php +public function collection_relation(string $query | IGDBQueryBuilder $builder) throws IGDBEndpointException: mixed +``` + +Fetching records from IGDB API using the [Collection Relation](https://api-docs.igdb.com/#collection-relation) endpoint. + +**Endpoint Description**: Describes Relationship between Collections. + +**Endpoint URL**: `https://api.igdb.com/v4/collection-relation` + +**Parameters**: + - `$query`: an apicalypse formatted query string or a configured IGDBQueryBuilder instance + +**Returns**: an array of objects decoded from the IGDB API response. + +```php +collection_relation($query); + +?> +``` + +### Collection Relation Count +```php +public function collection_relation_count(string $query = "" | IGDBQueryBuilder $builder) throws IGDBEndpointException: integer +``` + +Fetching the number of records from IGDB API using the [Collection Relation](https://api-docs.igdb.com/#collection_relation) endpoint. This method will return the record count matching the filter query. If the number of all records are required the method can be called without a filter query. + +**Endpoint Description**: Describes Relationship between Collections. + +**Endpoint URL**: `https://api.igdb.com/v4/collection_relation/count` + +**Parameters**: + - `$query` [optional]: an apicalypse formatted query string or a configured IGDBQueryBuilder instance. If called with an empty string, or without parameter then all records will be counted. + +**Returns**: the number of records matching the filter query + +```php +collection_relation_count($query); + + // count all records + $igdb->collection_relation_count(); + +?> +``` + +### Collection Relation Type +```php +public function collection_relation_type(string $query | IGDBQueryBuilder $builder) throws IGDBEndpointException: mixed +``` + +Fetching records from IGDB API using the [Collection Relation Type](https://api-docs.igdb.com/#collection-relation-type) endpoint. + +**Endpoint Description**: Collection Relation Types + +**Endpoint URL**: `https://api.igdb.com/v4/collection-relation-type` + +**Parameters**: + - `$query`: an apicalypse formatted query string or a configured IGDBQueryBuilder instance + +**Returns**: an array of objects decoded from the IGDB API response. + +```php +collection_relation_type($query); + +?> +``` + +### Collection Relation Type Count +```php +public function collection_relation_type_count(string $query = "" | IGDBQueryBuilder $builder) throws IGDBEndpointException: integer +``` + +Fetching the number of records from IGDB API using the [Collection Relation Type](https://api-docs.igdb.com/#collection_relation_type) endpoint. This method will return the record count matching the filter query. If the number of all records are required the method can be called without a filter query. + +**Endpoint Description**: Collection Relation Types + +**Endpoint URL**: `https://api.igdb.com/v4/collection_relation_type/count` + +**Parameters**: + - `$query` [optional]: an apicalypse formatted query string or a configured IGDBQueryBuilder instance. If called with an empty string, or without parameter then all records will be counted. + +**Returns**: the number of records matching the filter query + +```php +collection_relation_type_count($query); + + // count all records + $igdb->collection_relation_type_count(); + +?> +``` + +### Collection Type +```php +public function collection_type(string $query | IGDBQueryBuilder $builder) throws IGDBEndpointException: mixed +``` + +Fetching records from IGDB API using the [Collection Type](https://api-docs.igdb.com/#collection-type) endpoint. + +**Endpoint Description**: Enums for collection types. + +**Endpoint URL**: `https://api.igdb.com/v4/collection-type` + +**Parameters**: + - `$query`: an apicalypse formatted query string or a configured IGDBQueryBuilder instance + +**Returns**: an array of objects decoded from the IGDB API response. + +```php +collection_type($query); + +?> +``` + +### Collection Type Count +```php +public function collection_type_count(string $query = "" | IGDBQueryBuilder $builder) throws IGDBEndpointException: integer +``` + +Fetching the number of records from IGDB API using the [Collection Type](https://api-docs.igdb.com/#collection_type) endpoint. This method will return the record count matching the filter query. If the number of all records are required the method can be called without a filter query. + +**Endpoint Description**: Enums for collection types. + +**Endpoint URL**: `https://api.igdb.com/v4/collection_type/count` + +**Parameters**: + - `$query` [optional]: an apicalypse formatted query string or a configured IGDBQueryBuilder instance. If called with an empty string, or without parameter then all records will be counted. + +**Returns**: the number of records matching the filter query + +```php +collection_type_count($query); + + // count all records + $igdb->collection_type_count(); + +?> +``` + +### Company +```php +public function company(string $query | IGDBQueryBuilder $builder) throws IGDBEndpointException: mixed +``` + +Fetching records from IGDB API using the [Company](https://api-docs.igdb.com/#company) endpoint. + +**Endpoint Description**: Video game companies. Both publishers & developers + +**Endpoint URL**: `https://api.igdb.com/v4/company` + +**Parameters**: + - `$query`: an apicalypse formatted query string or a configured IGDBQueryBuilder instance + +**Returns**: an array of objects decoded from the IGDB API response. + +```php +company($query); + +?> +``` + +### Company Count +```php +public function company_count(string $query = "" | IGDBQueryBuilder $builder) throws IGDBEndpointException: integer +``` + +Fetching the number of records from IGDB API using the [Company](https://api-docs.igdb.com/#company) endpoint. This method will return the record count matching the filter query. If the number of all records are required the method can be called without a filter query. + +**Endpoint Description**: Video game companies. Both publishers & developers + +**Endpoint URL**: `https://api.igdb.com/v4/company/count` + +**Parameters**: + - `$query` [optional]: an apicalypse formatted query string or a configured IGDBQueryBuilder instance. If called with an empty string, or without parameter then all records will be counted. + +**Returns**: the number of records matching the filter query + +```php +company_count($query); + + // count all records + $igdb->company_count(); + +?> +``` + +### Company Logo +```php +public function company_logo(string $query | IGDBQueryBuilder $builder) throws IGDBEndpointException: mixed +``` + +Fetching records from IGDB API using the [Company Logo](https://api-docs.igdb.com/#company-logo) endpoint. + +**Endpoint Description**: The logos of developers and publishers + +**Endpoint URL**: `https://api.igdb.com/v4/company-logo` + +**Parameters**: + - `$query`: an apicalypse formatted query string or a configured IGDBQueryBuilder instance + +**Returns**: an array of objects decoded from the IGDB API response. + +```php +company_logo($query); + +?> +``` + +### Company Logo Count +```php +public function company_logo_count(string $query = "" | IGDBQueryBuilder $builder) throws IGDBEndpointException: integer +``` + +Fetching the number of records from IGDB API using the [Company Logo](https://api-docs.igdb.com/#company_logo) endpoint. This method will return the record count matching the filter query. If the number of all records are required the method can be called without a filter query. + +**Endpoint Description**: The logos of developers and publishers + +**Endpoint URL**: `https://api.igdb.com/v4/company_logo/count` + +**Parameters**: + - `$query` [optional]: an apicalypse formatted query string or a configured IGDBQueryBuilder instance. If called with an empty string, or without parameter then all records will be counted. + +**Returns**: the number of records matching the filter query + +```php +company_logo_count($query); + + // count all records + $igdb->company_logo_count(); + +?> +``` + +### Company Website +```php +public function company_website(string $query | IGDBQueryBuilder $builder) throws IGDBEndpointException: mixed +``` + +Fetching records from IGDB API using the [Company Website](https://api-docs.igdb.com/#company-website) endpoint. + +**Endpoint Description**: Company Website + +**Endpoint URL**: `https://api.igdb.com/v4/company-website` + +**Parameters**: + - `$query`: an apicalypse formatted query string or a configured IGDBQueryBuilder instance + +**Returns**: an array of objects decoded from the IGDB API response. + +```php +company_website($query); + +?> +``` + +### Company Website Count +```php +public function company_website_count(string $query = "" | IGDBQueryBuilder $builder) throws IGDBEndpointException: integer +``` + +Fetching the number of records from IGDB API using the [Company Website](https://api-docs.igdb.com/#company_website) endpoint. This method will return the record count matching the filter query. If the number of all records are required the method can be called without a filter query. + +**Endpoint Description**: Company Website + +**Endpoint URL**: `https://api.igdb.com/v4/company_website/count` + +**Parameters**: + - `$query` [optional]: an apicalypse formatted query string or a configured IGDBQueryBuilder instance. If called with an empty string, or without parameter then all records will be counted. + +**Returns**: the number of records matching the filter query + +```php +company_website_count($query); + + // count all records + $igdb->company_website_count(); + +?> +``` + +### Cover +```php +public function cover(string $query | IGDBQueryBuilder $builder) throws IGDBEndpointException: mixed +``` + +Fetching records from IGDB API using the [Cover](https://api-docs.igdb.com/#cover) endpoint. + +**Endpoint Description**: The cover art of games + +**Endpoint URL**: `https://api.igdb.com/v4/cover` + +**Parameters**: + - `$query`: an apicalypse formatted query string or a configured IGDBQueryBuilder instance + +**Returns**: an array of objects decoded from the IGDB API response. + +```php +cover($query); + +?> +``` + +### Cover Count +```php +public function cover_count(string $query = "" | IGDBQueryBuilder $builder) throws IGDBEndpointException: integer +``` + +Fetching the number of records from IGDB API using the [Cover](https://api-docs.igdb.com/#cover) endpoint. This method will return the record count matching the filter query. If the number of all records are required the method can be called without a filter query. + +**Endpoint Description**: The cover art of games + +**Endpoint URL**: `https://api.igdb.com/v4/cover/count` + +**Parameters**: + - `$query` [optional]: an apicalypse formatted query string or a configured IGDBQueryBuilder instance. If called with an empty string, or without parameter then all records will be counted. + +**Returns**: the number of records matching the filter query + +```php +cover_count($query); + + // count all records + $igdb->cover_count(); + +?> +``` + +### Event +```php +public function event(string $query | IGDBQueryBuilder $builder) throws IGDBEndpointException: mixed +``` + +Fetching records from IGDB API using the [Event](https://api-docs.igdb.com/#event) endpoint. + +**Endpoint Description**: Gaming event like GamesCom, Tokyo Game Show, PAX or GSL + +**Endpoint URL**: `https://api.igdb.com/v4/event` + +**Parameters**: + - `$query`: an apicalypse formatted query string or a configured IGDBQueryBuilder instance + +**Returns**: an array of objects decoded from the IGDB API response. + +```php +event($query); + +?> +``` + +### Event Count +```php +public function event_count(string $query = "" | IGDBQueryBuilder $builder) throws IGDBEndpointException: integer +``` + +Fetching the number of records from IGDB API using the [Event](https://api-docs.igdb.com/#event) endpoint. This method will return the record count matching the filter query. If the number of all records are required the method can be called without a filter query. + +**Endpoint Description**: Gaming event like GamesCom, Tokyo Game Show, PAX or GSL + +**Endpoint URL**: `https://api.igdb.com/v4/event/count` + +**Parameters**: + - `$query` [optional]: an apicalypse formatted query string or a configured IGDBQueryBuilder instance. If called with an empty string, or without parameter then all records will be counted. + +**Returns**: the number of records matching the filter query + +```php +event_count($query); + + // count all records + $igdb->event_count(); + +?> +``` + +### Event Logo +```php +public function event_logo(string $query | IGDBQueryBuilder $builder) throws IGDBEndpointException: mixed +``` + +Fetching records from IGDB API using the [Event Logo](https://api-docs.igdb.com/#event-logo) endpoint. + +**Endpoint Description**: Logo for the event + +**Endpoint URL**: `https://api.igdb.com/v4/event-logo` + +**Parameters**: + - `$query`: an apicalypse formatted query string or a configured IGDBQueryBuilder instance + +**Returns**: an array of objects decoded from the IGDB API response. + +```php +event_logo($query); + +?> +``` + +### Event Logo Count +```php +public function event_logo_count(string $query = "" | IGDBQueryBuilder $builder) throws IGDBEndpointException: integer +``` + +Fetching the number of records from IGDB API using the [Event Logo](https://api-docs.igdb.com/#event_logo) endpoint. This method will return the record count matching the filter query. If the number of all records are required the method can be called without a filter query. + +**Endpoint Description**: Logo for the event + +**Endpoint URL**: `https://api.igdb.com/v4/event_logo/count` + +**Parameters**: + - `$query` [optional]: an apicalypse formatted query string or a configured IGDBQueryBuilder instance. If called with an empty string, or without parameter then all records will be counted. + +**Returns**: the number of records matching the filter query + +```php +event_logo_count($query); + + // count all records + $igdb->event_logo_count(); + +?> +``` + +### Event Network +```php +public function event_network(string $query | IGDBQueryBuilder $builder) throws IGDBEndpointException: mixed +``` + +Fetching records from IGDB API using the [Event Network](https://api-docs.igdb.com/#event-network) endpoint. + +**Endpoint Description**: Urls related to the event like twitter, facebook and youtube + +**Endpoint URL**: `https://api.igdb.com/v4/event-network` + +**Parameters**: + - `$query`: an apicalypse formatted query string or a configured IGDBQueryBuilder instance + +**Returns**: an array of objects decoded from the IGDB API response. + +```php +event_network($query); + +?> +``` + +### Event Network Count +```php +public function event_network_count(string $query = "" | IGDBQueryBuilder $builder) throws IGDBEndpointException: integer +``` + +Fetching the number of records from IGDB API using the [Event Network](https://api-docs.igdb.com/#event_network) endpoint. This method will return the record count matching the filter query. If the number of all records are required the method can be called without a filter query. + +**Endpoint Description**: Urls related to the event like twitter, facebook and youtube + +**Endpoint URL**: `https://api.igdb.com/v4/event_network/count` + +**Parameters**: + - `$query` [optional]: an apicalypse formatted query string or a configured IGDBQueryBuilder instance. If called with an empty string, or without parameter then all records will be counted. + +**Returns**: the number of records matching the filter query + +```php +event_network_count($query); + + // count all records + $igdb->event_network_count(); + +?> +``` + +### External Game +```php +public function external_game(string $query | IGDBQueryBuilder $builder) throws IGDBEndpointException: mixed +``` + +Fetching records from IGDB API using the [External Game](https://api-docs.igdb.com/#external-game) endpoint. + +**Endpoint Description**: Game IDs on other services + +**Endpoint URL**: `https://api.igdb.com/v4/external-game` + +**Parameters**: + - `$query`: an apicalypse formatted query string or a configured IGDBQueryBuilder instance + +**Returns**: an array of objects decoded from the IGDB API response. + +```php +external_game($query); + +?> +``` + +### External Game Count +```php +public function external_game_count(string $query = "" | IGDBQueryBuilder $builder) throws IGDBEndpointException: integer +``` + +Fetching the number of records from IGDB API using the [External Game](https://api-docs.igdb.com/#external_game) endpoint. This method will return the record count matching the filter query. If the number of all records are required the method can be called without a filter query. + +**Endpoint Description**: Game IDs on other services + +**Endpoint URL**: `https://api.igdb.com/v4/external_game/count` + +**Parameters**: + - `$query` [optional]: an apicalypse formatted query string or a configured IGDBQueryBuilder instance. If called with an empty string, or without parameter then all records will be counted. + +**Returns**: the number of records matching the filter query + +```php +external_game_count($query); + + // count all records + $igdb->external_game_count(); + +?> +``` + +### Franchise +```php +public function franchise(string $query | IGDBQueryBuilder $builder) throws IGDBEndpointException: mixed +``` + +Fetching records from IGDB API using the [Franchise](https://api-docs.igdb.com/#franchise) endpoint. + +**Endpoint Description**: A list of video game franchises such as Star Wars. + +**Endpoint URL**: `https://api.igdb.com/v4/franchise` + +**Parameters**: + - `$query`: an apicalypse formatted query string or a configured IGDBQueryBuilder instance + +**Returns**: an array of objects decoded from the IGDB API response. + +```php +franchise($query); + +?> +``` + +### Franchise Count +```php +public function franchise_count(string $query = "" | IGDBQueryBuilder $builder) throws IGDBEndpointException: integer +``` + +Fetching the number of records from IGDB API using the [Franchise](https://api-docs.igdb.com/#franchise) endpoint. This method will return the record count matching the filter query. If the number of all records are required the method can be called without a filter query. + +**Endpoint Description**: A list of video game franchises such as Star Wars. + +**Endpoint URL**: `https://api.igdb.com/v4/franchise/count` + +**Parameters**: + - `$query` [optional]: an apicalypse formatted query string or a configured IGDBQueryBuilder instance. If called with an empty string, or without parameter then all records will be counted. + +**Returns**: the number of records matching the filter query + +```php +franchise_count($query); + + // count all records + $igdb->franchise_count(); + +?> +``` + +### Game +```php +public function game(string $query | IGDBQueryBuilder $builder) throws IGDBEndpointException: mixed +``` + +Fetching records from IGDB API using the [Game](https://api-docs.igdb.com/#game) endpoint. + +**Endpoint Description**: Video Games! + +**Endpoint URL**: `https://api.igdb.com/v4/game` + +**Parameters**: + - `$query`: an apicalypse formatted query string or a configured IGDBQueryBuilder instance + +**Returns**: an array of objects decoded from the IGDB API response. + +```php +game($query); + +?> +``` + +### Game Count +```php +public function game_count(string $query = "" | IGDBQueryBuilder $builder) throws IGDBEndpointException: integer +``` + +Fetching the number of records from IGDB API using the [Game](https://api-docs.igdb.com/#game) endpoint. This method will return the record count matching the filter query. If the number of all records are required the method can be called without a filter query. + +**Endpoint Description**: Video Games! + +**Endpoint URL**: `https://api.igdb.com/v4/game/count` + +**Parameters**: + - `$query` [optional]: an apicalypse formatted query string or a configured IGDBQueryBuilder instance. If called with an empty string, or without parameter then all records will be counted. + +**Returns**: the number of records matching the filter query + +```php +game_count($query); + + // count all records + $igdb->game_count(); + +?> +``` + +### Game Engine +```php +public function game_engine(string $query | IGDBQueryBuilder $builder) throws IGDBEndpointException: mixed +``` + +Fetching records from IGDB API using the [Game Engine](https://api-docs.igdb.com/#game-engine) endpoint. + +**Endpoint Description**: Video game engines such as unreal engine. + +**Endpoint URL**: `https://api.igdb.com/v4/game-engine` + +**Parameters**: + - `$query`: an apicalypse formatted query string or a configured IGDBQueryBuilder instance + +**Returns**: an array of objects decoded from the IGDB API response. + +```php +game_engine($query); + +?> +``` + +### Game Engine Count +```php +public function game_engine_count(string $query = "" | IGDBQueryBuilder $builder) throws IGDBEndpointException: integer +``` + +Fetching the number of records from IGDB API using the [Game Engine](https://api-docs.igdb.com/#game_engine) endpoint. This method will return the record count matching the filter query. If the number of all records are required the method can be called without a filter query. + +**Endpoint Description**: Video game engines such as unreal engine. + +**Endpoint URL**: `https://api.igdb.com/v4/game_engine/count` + +**Parameters**: + - `$query` [optional]: an apicalypse formatted query string or a configured IGDBQueryBuilder instance. If called with an empty string, or without parameter then all records will be counted. + +**Returns**: the number of records matching the filter query + +```php +game_engine_count($query); + + // count all records + $igdb->game_engine_count(); + +?> +``` + +### Game Engine Logo +```php +public function game_engine_logo(string $query | IGDBQueryBuilder $builder) throws IGDBEndpointException: mixed +``` + +Fetching records from IGDB API using the [Game Engine Logo](https://api-docs.igdb.com/#game-engine-logo) endpoint. + +**Endpoint Description**: The logos of game engines + +**Endpoint URL**: `https://api.igdb.com/v4/game-engine-logo` + +**Parameters**: + - `$query`: an apicalypse formatted query string or a configured IGDBQueryBuilder instance + +**Returns**: an array of objects decoded from the IGDB API response. + +```php +game_engine_logo($query); + +?> +``` + +### Game Engine Logo Count +```php +public function game_engine_logo_count(string $query = "" | IGDBQueryBuilder $builder) throws IGDBEndpointException: integer +``` + +Fetching the number of records from IGDB API using the [Game Engine Logo](https://api-docs.igdb.com/#game_engine_logo) endpoint. This method will return the record count matching the filter query. If the number of all records are required the method can be called without a filter query. + +**Endpoint Description**: The logos of game engines + +**Endpoint URL**: `https://api.igdb.com/v4/game_engine_logo/count` + +**Parameters**: + - `$query` [optional]: an apicalypse formatted query string or a configured IGDBQueryBuilder instance. If called with an empty string, or without parameter then all records will be counted. + +**Returns**: the number of records matching the filter query + +```php +game_engine_logo_count($query); + + // count all records + $igdb->game_engine_logo_count(); + +?> +``` + +### Game Localization +```php +public function game_localization(string $query | IGDBQueryBuilder $builder) throws IGDBEndpointException: mixed +``` + +Fetching records from IGDB API using the [Game Localization](https://api-docs.igdb.com/#game-localization) endpoint. + +**Endpoint Description**: Game localization for a game + +**Endpoint URL**: `https://api.igdb.com/v4/game-localization` + +**Parameters**: + - `$query`: an apicalypse formatted query string or a configured IGDBQueryBuilder instance + +**Returns**: an array of objects decoded from the IGDB API response. + +```php +game_localization($query); + +?> +``` + +### Game Localization Count +```php +public function game_localization_count(string $query = "" | IGDBQueryBuilder $builder) throws IGDBEndpointException: integer +``` + +Fetching the number of records from IGDB API using the [Game Localization](https://api-docs.igdb.com/#game_localization) endpoint. This method will return the record count matching the filter query. If the number of all records are required the method can be called without a filter query. + +**Endpoint Description**: Game localization for a game + +**Endpoint URL**: `https://api.igdb.com/v4/game_localization/count` + +**Parameters**: + - `$query` [optional]: an apicalypse formatted query string or a configured IGDBQueryBuilder instance. If called with an empty string, or without parameter then all records will be counted. + +**Returns**: the number of records matching the filter query + +```php +game_localization_count($query); + + // count all records + $igdb->game_localization_count(); + +?> +``` + +### Game Mode +```php +public function game_mode(string $query | IGDBQueryBuilder $builder) throws IGDBEndpointException: mixed +``` + +Fetching records from IGDB API using the [Game Mode](https://api-docs.igdb.com/#game-mode) endpoint. + +**Endpoint Description**: Single player, Multiplayer etc + +**Endpoint URL**: `https://api.igdb.com/v4/game-mode` + +**Parameters**: + - `$query`: an apicalypse formatted query string or a configured IGDBQueryBuilder instance + +**Returns**: an array of objects decoded from the IGDB API response. + +```php +game_mode($query); + +?> +``` + +### Game Mode Count +```php +public function game_mode_count(string $query = "" | IGDBQueryBuilder $builder) throws IGDBEndpointException: integer +``` + +Fetching the number of records from IGDB API using the [Game Mode](https://api-docs.igdb.com/#game_mode) endpoint. This method will return the record count matching the filter query. If the number of all records are required the method can be called without a filter query. + +**Endpoint Description**: Single player, Multiplayer etc + +**Endpoint URL**: `https://api.igdb.com/v4/game_mode/count` + +**Parameters**: + - `$query` [optional]: an apicalypse formatted query string or a configured IGDBQueryBuilder instance. If called with an empty string, or without parameter then all records will be counted. + +**Returns**: the number of records matching the filter query + +```php +game_mode_count($query); + + // count all records + $igdb->game_mode_count(); + +?> +``` + +### Game Version +```php +public function game_version(string $query | IGDBQueryBuilder $builder) throws IGDBEndpointException: mixed +``` + +Fetching records from IGDB API using the [Game Version](https://api-docs.igdb.com/#game-version) endpoint. + +**Endpoint Description**: Details about game editions and versions. + +**Endpoint URL**: `https://api.igdb.com/v4/game-version` + +**Parameters**: + - `$query`: an apicalypse formatted query string or a configured IGDBQueryBuilder instance + +**Returns**: an array of objects decoded from the IGDB API response. + +```php +game_version($query); + +?> +``` + +### Game Version Count +```php +public function game_version_count(string $query = "" | IGDBQueryBuilder $builder) throws IGDBEndpointException: integer +``` + +Fetching the number of records from IGDB API using the [Game Version](https://api-docs.igdb.com/#game_version) endpoint. This method will return the record count matching the filter query. If the number of all records are required the method can be called without a filter query. + +**Endpoint Description**: Details about game editions and versions. + +**Endpoint URL**: `https://api.igdb.com/v4/game_version/count` + +**Parameters**: + - `$query` [optional]: an apicalypse formatted query string or a configured IGDBQueryBuilder instance. If called with an empty string, or without parameter then all records will be counted. + +**Returns**: the number of records matching the filter query + +```php +game_version_count($query); + + // count all records + $igdb->game_version_count(); + +?> +``` + +### Game Version Feature +```php +public function game_version_feature(string $query | IGDBQueryBuilder $builder) throws IGDBEndpointException: mixed +``` + +Fetching records from IGDB API using the [Game Version Feature](https://api-docs.igdb.com/#game-version-feature) endpoint. + +**Endpoint Description**: Features and descriptions of what makes each version/edition different from the main game + +**Endpoint URL**: `https://api.igdb.com/v4/game-version-feature` + +**Parameters**: + - `$query`: an apicalypse formatted query string or a configured IGDBQueryBuilder instance + +**Returns**: an array of objects decoded from the IGDB API response. + +```php +game_version_feature($query); + +?> +``` + +### Game Version Feature Count +```php +public function game_version_feature_count(string $query = "" | IGDBQueryBuilder $builder) throws IGDBEndpointException: integer +``` + +Fetching the number of records from IGDB API using the [Game Version Feature](https://api-docs.igdb.com/#game_version_feature) endpoint. This method will return the record count matching the filter query. If the number of all records are required the method can be called without a filter query. + +**Endpoint Description**: Features and descriptions of what makes each version/edition different from the main game + +**Endpoint URL**: `https://api.igdb.com/v4/game_version_feature/count` + +**Parameters**: + - `$query` [optional]: an apicalypse formatted query string or a configured IGDBQueryBuilder instance. If called with an empty string, or without parameter then all records will be counted. + +**Returns**: the number of records matching the filter query + +```php +game_version_feature_count($query); + + // count all records + $igdb->game_version_feature_count(); + +?> +``` + +### Game Version Feature Value +```php +public function game_version_feature_value(string $query | IGDBQueryBuilder $builder) throws IGDBEndpointException: mixed +``` + +Fetching records from IGDB API using the [Game Version Feature Value](https://api-docs.igdb.com/#game-version-feature-value) endpoint. + +**Endpoint Description**: The bool/text value of the feature + +**Endpoint URL**: `https://api.igdb.com/v4/game-version-feature-value` + +**Parameters**: + - `$query`: an apicalypse formatted query string or a configured IGDBQueryBuilder instance + +**Returns**: an array of objects decoded from the IGDB API response. + +```php +game_version_feature_value($query); + +?> +``` + +### Game Version Feature Value Count +```php +public function game_version_feature_value_count(string $query = "" | IGDBQueryBuilder $builder) throws IGDBEndpointException: integer +``` + +Fetching the number of records from IGDB API using the [Game Version Feature Value](https://api-docs.igdb.com/#game_version_feature_value) endpoint. This method will return the record count matching the filter query. If the number of all records are required the method can be called without a filter query. + +**Endpoint Description**: The bool/text value of the feature + +**Endpoint URL**: `https://api.igdb.com/v4/game_version_feature_value/count` + +**Parameters**: + - `$query` [optional]: an apicalypse formatted query string or a configured IGDBQueryBuilder instance. If called with an empty string, or without parameter then all records will be counted. + +**Returns**: the number of records matching the filter query + +```php +game_version_feature_value_count($query); + + // count all records + $igdb->game_version_feature_value_count(); + +?> +``` + +### Game Video +```php +public function game_video(string $query | IGDBQueryBuilder $builder) throws IGDBEndpointException: mixed +``` + +Fetching records from IGDB API using the [Game Video](https://api-docs.igdb.com/#game-video) endpoint. + +**Endpoint Description**: A video associated with a game + +**Endpoint URL**: `https://api.igdb.com/v4/game-video` + +**Parameters**: + - `$query`: an apicalypse formatted query string or a configured IGDBQueryBuilder instance + +**Returns**: an array of objects decoded from the IGDB API response. + +```php +game_video($query); + +?> +``` + +### Game Video Count +```php +public function game_video_count(string $query = "" | IGDBQueryBuilder $builder) throws IGDBEndpointException: integer +``` + +Fetching the number of records from IGDB API using the [Game Video](https://api-docs.igdb.com/#game_video) endpoint. This method will return the record count matching the filter query. If the number of all records are required the method can be called without a filter query. + +**Endpoint Description**: A video associated with a game + +**Endpoint URL**: `https://api.igdb.com/v4/game_video/count` + +**Parameters**: + - `$query` [optional]: an apicalypse formatted query string or a configured IGDBQueryBuilder instance. If called with an empty string, or without parameter then all records will be counted. + +**Returns**: the number of records matching the filter query + +```php +game_video_count($query); + + // count all records + $igdb->game_video_count(); + +?> +``` + +### Genre +```php +public function genre(string $query | IGDBQueryBuilder $builder) throws IGDBEndpointException: mixed +``` + +Fetching records from IGDB API using the [Genre](https://api-docs.igdb.com/#genre) endpoint. + +**Endpoint Description**: Genres of video game + +**Endpoint URL**: `https://api.igdb.com/v4/genre` + +**Parameters**: + - `$query`: an apicalypse formatted query string or a configured IGDBQueryBuilder instance + +**Returns**: an array of objects decoded from the IGDB API response. + +```php +genre($query); + +?> +``` + +### Genre Count +```php +public function genre_count(string $query = "" | IGDBQueryBuilder $builder) throws IGDBEndpointException: integer +``` + +Fetching the number of records from IGDB API using the [Genre](https://api-docs.igdb.com/#genre) endpoint. This method will return the record count matching the filter query. If the number of all records are required the method can be called without a filter query. + +**Endpoint Description**: Genres of video game + +**Endpoint URL**: `https://api.igdb.com/v4/genre/count` + +**Parameters**: + - `$query` [optional]: an apicalypse formatted query string or a configured IGDBQueryBuilder instance. If called with an empty string, or without parameter then all records will be counted. + +**Returns**: the number of records matching the filter query + +```php +genre_count($query); + + // count all records + $igdb->genre_count(); + +?> +``` + +### Involved Company +```php +public function involved_company(string $query | IGDBQueryBuilder $builder) throws IGDBEndpointException: mixed +``` + +Fetching records from IGDB API using the [Involved Company](https://api-docs.igdb.com/#involved-company) endpoint. + +**Endpoint URL**: `https://api.igdb.com/v4/involved-company` + +**Parameters**: + - `$query`: an apicalypse formatted query string or a configured IGDBQueryBuilder instance + +**Returns**: an array of objects decoded from the IGDB API response. + +```php +involved_company($query); + +?> +``` + +### Involved Company Count +```php +public function involved_company_count(string $query = "" | IGDBQueryBuilder $builder) throws IGDBEndpointException: integer +``` + +Fetching the number of records from IGDB API using the [Involved Company](https://api-docs.igdb.com/#involved_company) endpoint. This method will return the record count matching the filter query. If the number of all records are required the method can be called without a filter query. + +**Endpoint URL**: `https://api.igdb.com/v4/involved_company/count` + +**Parameters**: + - `$query` [optional]: an apicalypse formatted query string or a configured IGDBQueryBuilder instance. If called with an empty string, or without parameter then all records will be counted. + +**Returns**: the number of records matching the filter query + +```php +involved_company_count($query); + + // count all records + $igdb->involved_company_count(); + +?> +``` + +### Keyword +```php +public function keyword(string $query | IGDBQueryBuilder $builder) throws IGDBEndpointException: mixed +``` + +Fetching records from IGDB API using the [Keyword](https://api-docs.igdb.com/#keyword) endpoint. + +**Endpoint Description**: Keywords are words or phrases that get tagged to a game such as "world war 2" or "steampunk". + +**Endpoint URL**: `https://api.igdb.com/v4/keyword` + +**Parameters**: + - `$query`: an apicalypse formatted query string or a configured IGDBQueryBuilder instance + +**Returns**: an array of objects decoded from the IGDB API response. + +```php +keyword($query); + +?> +``` + +### Keyword Count +```php +public function keyword_count(string $query = "" | IGDBQueryBuilder $builder) throws IGDBEndpointException: integer +``` + +Fetching the number of records from IGDB API using the [Keyword](https://api-docs.igdb.com/#keyword) endpoint. This method will return the record count matching the filter query. If the number of all records are required the method can be called without a filter query. + +**Endpoint Description**: Keywords are words or phrases that get tagged to a game such as "world war 2" or "steampunk". + +**Endpoint URL**: `https://api.igdb.com/v4/keyword/count` + +**Parameters**: + - `$query` [optional]: an apicalypse formatted query string or a configured IGDBQueryBuilder instance. If called with an empty string, or without parameter then all records will be counted. + +**Returns**: the number of records matching the filter query + +```php +keyword_count($query); + + // count all records + $igdb->keyword_count(); + +?> +``` + +### Language Support +```php +public function language_support(string $query | IGDBQueryBuilder $builder) throws IGDBEndpointException: mixed +``` + +Fetching records from IGDB API using the [Language Support](https://api-docs.igdb.com/#language-support) endpoint. + +**Endpoint Description**: Games can be played with different languages for voice acting, subtitles, or the interface language. + +**Endpoint URL**: `https://api.igdb.com/v4/language-support` + +**Parameters**: + - `$query`: an apicalypse formatted query string or a configured IGDBQueryBuilder instance + +**Returns**: an array of objects decoded from the IGDB API response. + +```php +language_support($query); + +?> +``` + +### Language Support Count +```php +public function language_support_count(string $query = "" | IGDBQueryBuilder $builder) throws IGDBEndpointException: integer +``` + +Fetching the number of records from IGDB API using the [Language Support](https://api-docs.igdb.com/#language_support) endpoint. This method will return the record count matching the filter query. If the number of all records are required the method can be called without a filter query. + +**Endpoint Description**: Games can be played with different languages for voice acting, subtitles, or the interface language. + +**Endpoint URL**: `https://api.igdb.com/v4/language_support/count` + +**Parameters**: + - `$query` [optional]: an apicalypse formatted query string or a configured IGDBQueryBuilder instance. If called with an empty string, or without parameter then all records will be counted. + +**Returns**: the number of records matching the filter query + +```php +language_support_count($query); + + // count all records + $igdb->language_support_count(); + +?> +``` + +### Language Support Type +```php +public function language_support_type(string $query | IGDBQueryBuilder $builder) throws IGDBEndpointException: mixed +``` + +Fetching records from IGDB API using the [Language Support Type](https://api-docs.igdb.com/#language-support-type) endpoint. + +**Endpoint Description**: Language Support Types contains the identifiers for the support types that Language Support uses. + +**Endpoint URL**: `https://api.igdb.com/v4/language-support-type` + +**Parameters**: + - `$query`: an apicalypse formatted query string or a configured IGDBQueryBuilder instance + +**Returns**: an array of objects decoded from the IGDB API response. + +```php +language_support_type($query); + +?> +``` + +### Language Support Type Count +```php +public function language_support_type_count(string $query = "" | IGDBQueryBuilder $builder) throws IGDBEndpointException: integer +``` + +Fetching the number of records from IGDB API using the [Language Support Type](https://api-docs.igdb.com/#language_support_type) endpoint. This method will return the record count matching the filter query. If the number of all records are required the method can be called without a filter query. + +**Endpoint Description**: Language Support Types contains the identifiers for the support types that Language Support uses. + +**Endpoint URL**: `https://api.igdb.com/v4/language_support_type/count` + +**Parameters**: + - `$query` [optional]: an apicalypse formatted query string or a configured IGDBQueryBuilder instance. If called with an empty string, or without parameter then all records will be counted. + +**Returns**: the number of records matching the filter query + +```php +language_support_type_count($query); + + // count all records + $igdb->language_support_type_count(); + +?> +``` + +### Language +```php +public function language(string $query | IGDBQueryBuilder $builder) throws IGDBEndpointException: mixed +``` + +Fetching records from IGDB API using the [Language](https://api-docs.igdb.com/#language) endpoint. + +**Endpoint Description**: Languages that are used in the Language Support endpoint. + +**Endpoint URL**: `https://api.igdb.com/v4/language` + +**Parameters**: + - `$query`: an apicalypse formatted query string or a configured IGDBQueryBuilder instance + +**Returns**: an array of objects decoded from the IGDB API response. + +```php +language($query); + +?> +``` + +### Language Count +```php +public function language_count(string $query = "" | IGDBQueryBuilder $builder) throws IGDBEndpointException: integer +``` + +Fetching the number of records from IGDB API using the [Language](https://api-docs.igdb.com/#language) endpoint. This method will return the record count matching the filter query. If the number of all records are required the method can be called without a filter query. + +**Endpoint Description**: Languages that are used in the Language Support endpoint. + +**Endpoint URL**: `https://api.igdb.com/v4/language/count` + +**Parameters**: + - `$query` [optional]: an apicalypse formatted query string or a configured IGDBQueryBuilder instance. If called with an empty string, or without parameter then all records will be counted. + +**Returns**: the number of records matching the filter query + +```php +language_count($query); + + // count all records + $igdb->language_count(); + +?> +``` + +### Multiplayer Mode +```php +public function multiplayer_mode(string $query | IGDBQueryBuilder $builder) throws IGDBEndpointException: mixed +``` + +Fetching records from IGDB API using the [Multiplayer Mode](https://api-docs.igdb.com/#multiplayer-mode) endpoint. + +**Endpoint Description**: Data about the supported multiplayer types + +**Endpoint URL**: `https://api.igdb.com/v4/multiplayer-mode` + +**Parameters**: + - `$query`: an apicalypse formatted query string or a configured IGDBQueryBuilder instance + +**Returns**: an array of objects decoded from the IGDB API response. + +```php +multiplayer_mode($query); + +?> +``` + +### Multiplayer Mode Count +```php +public function multiplayer_mode_count(string $query = "" | IGDBQueryBuilder $builder) throws IGDBEndpointException: integer +``` + +Fetching the number of records from IGDB API using the [Multiplayer Mode](https://api-docs.igdb.com/#multiplayer_mode) endpoint. This method will return the record count matching the filter query. If the number of all records are required the method can be called without a filter query. + +**Endpoint Description**: Data about the supported multiplayer types + +**Endpoint URL**: `https://api.igdb.com/v4/multiplayer_mode/count` + +**Parameters**: + - `$query` [optional]: an apicalypse formatted query string or a configured IGDBQueryBuilder instance. If called with an empty string, or without parameter then all records will be counted. + +**Returns**: the number of records matching the filter query + +```php +multiplayer_mode_count($query); + + // count all records + $igdb->multiplayer_mode_count(); + +?> +``` + +### Network Type +```php +public function network_type(string $query | IGDBQueryBuilder $builder) throws IGDBEndpointException: mixed +``` + +Fetching records from IGDB API using the [Network Type](https://api-docs.igdb.com/#network-type) endpoint. + +**Endpoint Description**: Social networks related to the event like twitter, facebook and youtube + +**Endpoint URL**: `https://api.igdb.com/v4/network-type` + +**Parameters**: + - `$query`: an apicalypse formatted query string or a configured IGDBQueryBuilder instance + +**Returns**: an array of objects decoded from the IGDB API response. + +```php +network_type($query); + +?> +``` + +### Network Type Count +```php +public function network_type_count(string $query = "" | IGDBQueryBuilder $builder) throws IGDBEndpointException: integer +``` + +Fetching the number of records from IGDB API using the [Network Type](https://api-docs.igdb.com/#network_type) endpoint. This method will return the record count matching the filter query. If the number of all records are required the method can be called without a filter query. + +**Endpoint Description**: Social networks related to the event like twitter, facebook and youtube + +**Endpoint URL**: `https://api.igdb.com/v4/network_type/count` + +**Parameters**: + - `$query` [optional]: an apicalypse formatted query string or a configured IGDBQueryBuilder instance. If called with an empty string, or without parameter then all records will be counted. + +**Returns**: the number of records matching the filter query + +```php +network_type_count($query); + + // count all records + $igdb->network_type_count(); + +?> +``` + +### Platform +```php +public function platform(string $query | IGDBQueryBuilder $builder) throws IGDBEndpointException: mixed +``` + +Fetching records from IGDB API using the [Platform](https://api-docs.igdb.com/#platform) endpoint. + +**Endpoint Description**: The hardware used to run the game or game delivery network + +**Endpoint URL**: `https://api.igdb.com/v4/platform` + +**Parameters**: + - `$query`: an apicalypse formatted query string or a configured IGDBQueryBuilder instance + +**Returns**: an array of objects decoded from the IGDB API response. + +```php +platform($query); + +?> +``` + +### Platform Count +```php +public function platform_count(string $query = "" | IGDBQueryBuilder $builder) throws IGDBEndpointException: integer +``` + +Fetching the number of records from IGDB API using the [Platform](https://api-docs.igdb.com/#platform) endpoint. This method will return the record count matching the filter query. If the number of all records are required the method can be called without a filter query. + +**Endpoint Description**: The hardware used to run the game or game delivery network + +**Endpoint URL**: `https://api.igdb.com/v4/platform/count` + +**Parameters**: + - `$query` [optional]: an apicalypse formatted query string or a configured IGDBQueryBuilder instance. If called with an empty string, or without parameter then all records will be counted. + +**Returns**: the number of records matching the filter query + +```php +platform_count($query); + + // count all records + $igdb->platform_count(); + +?> +``` + +### Platform Family +```php +public function platform_family(string $query | IGDBQueryBuilder $builder) throws IGDBEndpointException: mixed +``` + +Fetching records from IGDB API using the [Platform Family](https://api-docs.igdb.com/#platform-family) endpoint. + +**Endpoint Description**: A collection of closely related platforms + +**Endpoint URL**: `https://api.igdb.com/v4/platform-family` + +**Parameters**: + - `$query`: an apicalypse formatted query string or a configured IGDBQueryBuilder instance + +**Returns**: an array of objects decoded from the IGDB API response. + +```php +platform_family($query); + +?> +``` + +### Platform Family Count +```php +public function platform_family_count(string $query = "" | IGDBQueryBuilder $builder) throws IGDBEndpointException: integer +``` + +Fetching the number of records from IGDB API using the [Platform Family](https://api-docs.igdb.com/#platform_family) endpoint. This method will return the record count matching the filter query. If the number of all records are required the method can be called without a filter query. + +**Endpoint Description**: A collection of closely related platforms + +**Endpoint URL**: `https://api.igdb.com/v4/platform_family/count` + +**Parameters**: + - `$query` [optional]: an apicalypse formatted query string or a configured IGDBQueryBuilder instance. If called with an empty string, or without parameter then all records will be counted. + +**Returns**: the number of records matching the filter query + +```php +platform_family_count($query); + + // count all records + $igdb->platform_family_count(); + +?> +``` + +### Platform Logo +```php +public function platform_logo(string $query | IGDBQueryBuilder $builder) throws IGDBEndpointException: mixed +``` + +Fetching records from IGDB API using the [Platform Logo](https://api-docs.igdb.com/#platform-logo) endpoint. + +**Endpoint Description**: Logo for a platform + +**Endpoint URL**: `https://api.igdb.com/v4/platform-logo` + +**Parameters**: + - `$query`: an apicalypse formatted query string or a configured IGDBQueryBuilder instance + +**Returns**: an array of objects decoded from the IGDB API response. + +```php +platform_logo($query); + +?> +``` + +### Platform Logo Count +```php +public function platform_logo_count(string $query = "" | IGDBQueryBuilder $builder) throws IGDBEndpointException: integer +``` + +Fetching the number of records from IGDB API using the [Platform Logo](https://api-docs.igdb.com/#platform_logo) endpoint. This method will return the record count matching the filter query. If the number of all records are required the method can be called without a filter query. + +**Endpoint Description**: Logo for a platform + +**Endpoint URL**: `https://api.igdb.com/v4/platform_logo/count` + +**Parameters**: + - `$query` [optional]: an apicalypse formatted query string or a configured IGDBQueryBuilder instance. If called with an empty string, or without parameter then all records will be counted. + +**Returns**: the number of records matching the filter query + +```php +platform_logo_count($query); + + // count all records + $igdb->platform_logo_count(); + +?> +``` + +### Platform Version +```php +public function platform_version(string $query | IGDBQueryBuilder $builder) throws IGDBEndpointException: mixed +``` + +Fetching records from IGDB API using the [Platform Version](https://api-docs.igdb.com/#platform-version) endpoint. + +**Endpoint URL**: `https://api.igdb.com/v4/platform-version` + +**Parameters**: + - `$query`: an apicalypse formatted query string or a configured IGDBQueryBuilder instance + +**Returns**: an array of objects decoded from the IGDB API response. + +```php +platform_version($query); + +?> +``` + +### Platform Version Count +```php +public function platform_version_count(string $query = "" | IGDBQueryBuilder $builder) throws IGDBEndpointException: integer +``` + +Fetching the number of records from IGDB API using the [Platform Version](https://api-docs.igdb.com/#platform_version) endpoint. This method will return the record count matching the filter query. If the number of all records are required the method can be called without a filter query. + +**Endpoint URL**: `https://api.igdb.com/v4/platform_version/count` + +**Parameters**: + - `$query` [optional]: an apicalypse formatted query string or a configured IGDBQueryBuilder instance. If called with an empty string, or without parameter then all records will be counted. + +**Returns**: the number of records matching the filter query + +```php +platform_version_count($query); + + // count all records + $igdb->platform_version_count(); + +?> +``` + +### Platform Version Company +```php +public function platform_version_company(string $query | IGDBQueryBuilder $builder) throws IGDBEndpointException: mixed +``` + +Fetching records from IGDB API using the [Platform Version Company](https://api-docs.igdb.com/#platform-version-company) endpoint. + +**Endpoint Description**: A platform developer + +**Endpoint URL**: `https://api.igdb.com/v4/platform-version-company` + +**Parameters**: + - `$query`: an apicalypse formatted query string or a configured IGDBQueryBuilder instance + +**Returns**: an array of objects decoded from the IGDB API response. + +```php +platform_version_company($query); + +?> +``` + +### Platform Version Company Count +```php +public function platform_version_company_count(string $query = "" | IGDBQueryBuilder $builder) throws IGDBEndpointException: integer +``` + +Fetching the number of records from IGDB API using the [Platform Version Company](https://api-docs.igdb.com/#platform_version_company) endpoint. This method will return the record count matching the filter query. If the number of all records are required the method can be called without a filter query. + +**Endpoint Description**: A platform developer + +**Endpoint URL**: `https://api.igdb.com/v4/platform_version_company/count` + +**Parameters**: + - `$query` [optional]: an apicalypse formatted query string or a configured IGDBQueryBuilder instance. If called with an empty string, or without parameter then all records will be counted. + +**Returns**: the number of records matching the filter query + +```php +platform_version_company_count($query); + + // count all records + $igdb->platform_version_company_count(); + +?> +``` + +### Platform Version Release Date +```php +public function platform_version_release_date(string $query | IGDBQueryBuilder $builder) throws IGDBEndpointException: mixed +``` + +Fetching records from IGDB API using the [Platform Version Release Date](https://api-docs.igdb.com/#platform-version-release-date) endpoint. + +**Endpoint Description**: A handy endpoint that extends platform release dates. Used to dig deeper into release dates, platforms and versions. + +**Endpoint URL**: `https://api.igdb.com/v4/platform-version-release-date` + +**Parameters**: + - `$query`: an apicalypse formatted query string or a configured IGDBQueryBuilder instance + +**Returns**: an array of objects decoded from the IGDB API response. + +```php +platform_version_release_date($query); + +?> +``` + +### Platform Version Release Date Count +```php +public function platform_version_release_date_count(string $query = "" | IGDBQueryBuilder $builder) throws IGDBEndpointException: integer +``` + +Fetching the number of records from IGDB API using the [Platform Version Release Date](https://api-docs.igdb.com/#platform_version_release_date) endpoint. This method will return the record count matching the filter query. If the number of all records are required the method can be called without a filter query. + +**Endpoint Description**: A handy endpoint that extends platform release dates. Used to dig deeper into release dates, platforms and versions. + +**Endpoint URL**: `https://api.igdb.com/v4/platform_version_release_date/count` + +**Parameters**: + - `$query` [optional]: an apicalypse formatted query string or a configured IGDBQueryBuilder instance. If called with an empty string, or without parameter then all records will be counted. + +**Returns**: the number of records matching the filter query + +```php +platform_version_release_date_count($query); + + // count all records + $igdb->platform_version_release_date_count(); + +?> +``` + +### Platform Website +```php +public function platform_website(string $query | IGDBQueryBuilder $builder) throws IGDBEndpointException: mixed +``` + +Fetching records from IGDB API using the [Platform Website](https://api-docs.igdb.com/#platform-website) endpoint. + +**Endpoint Description**: The main website for the platform + +**Endpoint URL**: `https://api.igdb.com/v4/platform-website` + +**Parameters**: + - `$query`: an apicalypse formatted query string or a configured IGDBQueryBuilder instance + +**Returns**: an array of objects decoded from the IGDB API response. + +```php +platform_website($query); + +?> +``` + +### Platform Website Count +```php +public function platform_website_count(string $query = "" | IGDBQueryBuilder $builder) throws IGDBEndpointException: integer +``` + +Fetching the number of records from IGDB API using the [Platform Website](https://api-docs.igdb.com/#platform_website) endpoint. This method will return the record count matching the filter query. If the number of all records are required the method can be called without a filter query. + +**Endpoint Description**: The main website for the platform + +**Endpoint URL**: `https://api.igdb.com/v4/platform_website/count` + +**Parameters**: + - `$query` [optional]: an apicalypse formatted query string or a configured IGDBQueryBuilder instance. If called with an empty string, or without parameter then all records will be counted. + +**Returns**: the number of records matching the filter query + +```php +platform_website_count($query); + + // count all records + $igdb->platform_website_count(); + +?> +``` + +### Player Perspective +```php +public function player_perspective(string $query | IGDBQueryBuilder $builder) throws IGDBEndpointException: mixed +``` + +Fetching records from IGDB API using the [Player Perspective](https://api-docs.igdb.com/#player-perspective) endpoint. + +**Endpoint Description**: Player perspectives describe the view/perspective of the player in a video game. + +**Endpoint URL**: `https://api.igdb.com/v4/player-perspective` + +**Parameters**: + - `$query`: an apicalypse formatted query string or a configured IGDBQueryBuilder instance + +**Returns**: an array of objects decoded from the IGDB API response. + +```php +player_perspective($query); + +?> +``` + +### Player Perspective Count +```php +public function player_perspective_count(string $query = "" | IGDBQueryBuilder $builder) throws IGDBEndpointException: integer +``` + +Fetching the number of records from IGDB API using the [Player Perspective](https://api-docs.igdb.com/#player_perspective) endpoint. This method will return the record count matching the filter query. If the number of all records are required the method can be called without a filter query. + +**Endpoint Description**: Player perspectives describe the view/perspective of the player in a video game. + +**Endpoint URL**: `https://api.igdb.com/v4/player_perspective/count` + +**Parameters**: + - `$query` [optional]: an apicalypse formatted query string or a configured IGDBQueryBuilder instance. If called with an empty string, or without parameter then all records will be counted. + +**Returns**: the number of records matching the filter query + +```php +player_perspective_count($query); + + // count all records + $igdb->player_perspective_count(); + +?> +``` + +### Region +```php +public function region(string $query | IGDBQueryBuilder $builder) throws IGDBEndpointException: mixed +``` + +Fetching records from IGDB API using the [Region](https://api-docs.igdb.com/#region) endpoint. + +**Endpoint Description**: Region for game localization + +**Endpoint URL**: `https://api.igdb.com/v4/region` + +**Parameters**: + - `$query`: an apicalypse formatted query string or a configured IGDBQueryBuilder instance + +**Returns**: an array of objects decoded from the IGDB API response. + +```php +region($query); + +?> +``` + +### Region Count +```php +public function region_count(string $query = "" | IGDBQueryBuilder $builder) throws IGDBEndpointException: integer +``` + +Fetching the number of records from IGDB API using the [Region](https://api-docs.igdb.com/#region) endpoint. This method will return the record count matching the filter query. If the number of all records are required the method can be called without a filter query. + +**Endpoint Description**: Region for game localization + +**Endpoint URL**: `https://api.igdb.com/v4/region/count` + +**Parameters**: + - `$query` [optional]: an apicalypse formatted query string or a configured IGDBQueryBuilder instance. If called with an empty string, or without parameter then all records will be counted. + +**Returns**: the number of records matching the filter query + +```php +region_count($query); + + // count all records + $igdb->region_count(); + +?> +``` + +### Release Date +```php +public function release_date(string $query | IGDBQueryBuilder $builder) throws IGDBEndpointException: mixed +``` + +Fetching records from IGDB API using the [Release Date](https://api-docs.igdb.com/#release-date) endpoint. + +**Endpoint Description**: A handy endpoint that extends game release dates. Used to dig deeper into release dates, platforms and versions. + +**Endpoint URL**: `https://api.igdb.com/v4/release-date` + +**Parameters**: + - `$query`: an apicalypse formatted query string or a configured IGDBQueryBuilder instance + +**Returns**: an array of objects decoded from the IGDB API response. + +```php +release_date($query); + +?> +``` + +### Release Date Count +```php +public function release_date_count(string $query = "" | IGDBQueryBuilder $builder) throws IGDBEndpointException: integer +``` + +Fetching the number of records from IGDB API using the [Release Date](https://api-docs.igdb.com/#release_date) endpoint. This method will return the record count matching the filter query. If the number of all records are required the method can be called without a filter query. + +**Endpoint Description**: A handy endpoint that extends game release dates. Used to dig deeper into release dates, platforms and versions. + +**Endpoint URL**: `https://api.igdb.com/v4/release_date/count` + +**Parameters**: + - `$query` [optional]: an apicalypse formatted query string or a configured IGDBQueryBuilder instance. If called with an empty string, or without parameter then all records will be counted. + +**Returns**: the number of records matching the filter query + +```php +release_date_count($query); + + // count all records + $igdb->release_date_count(); + +?> +``` + +### Release Date Status +```php +public function release_date_status(string $query | IGDBQueryBuilder $builder) throws IGDBEndpointException: mixed +``` + +Fetching records from IGDB API using the [Release Date Status](https://api-docs.igdb.com/#release-date-status) endpoint. + +**Endpoint Description**: An endpoint to provide definition of all of the current release date statuses. + +**Endpoint URL**: `https://api.igdb.com/v4/release-date-status` + +**Parameters**: + - `$query`: an apicalypse formatted query string or a configured IGDBQueryBuilder instance + +**Returns**: an array of objects decoded from the IGDB API response. + +```php +release_date_status($query); + +?> +``` + +### Release Date Status Count +```php +public function release_date_status_count(string $query = "" | IGDBQueryBuilder $builder) throws IGDBEndpointException: integer +``` + +Fetching the number of records from IGDB API using the [Release Date Status](https://api-docs.igdb.com/#release_date_status) endpoint. This method will return the record count matching the filter query. If the number of all records are required the method can be called without a filter query. + +**Endpoint Description**: An endpoint to provide definition of all of the current release date statuses. + +**Endpoint URL**: `https://api.igdb.com/v4/release_date_status/count` + +**Parameters**: + - `$query` [optional]: an apicalypse formatted query string or a configured IGDBQueryBuilder instance. If called with an empty string, or without parameter then all records will be counted. + +**Returns**: the number of records matching the filter query + +```php +release_date_status_count($query); + + // count all records + $igdb->release_date_status_count(); + +?> +``` + +### Screenshot +```php +public function screenshot(string $query | IGDBQueryBuilder $builder) throws IGDBEndpointException: mixed +``` + +Fetching records from IGDB API using the [Screenshot](https://api-docs.igdb.com/#screenshot) endpoint. + +**Endpoint Description**: Screenshots of games + +**Endpoint URL**: `https://api.igdb.com/v4/screenshot` + +**Parameters**: + - `$query`: an apicalypse formatted query string or a configured IGDBQueryBuilder instance + +**Returns**: an array of objects decoded from the IGDB API response. + +```php +screenshot($query); + +?> +``` + +### Screenshot Count +```php +public function screenshot_count(string $query = "" | IGDBQueryBuilder $builder) throws IGDBEndpointException: integer +``` + +Fetching the number of records from IGDB API using the [Screenshot](https://api-docs.igdb.com/#screenshot) endpoint. This method will return the record count matching the filter query. If the number of all records are required the method can be called without a filter query. + +**Endpoint Description**: Screenshots of games + +**Endpoint URL**: `https://api.igdb.com/v4/screenshot/count` + +**Parameters**: + - `$query` [optional]: an apicalypse formatted query string or a configured IGDBQueryBuilder instance. If called with an empty string, or without parameter then all records will be counted. + +**Returns**: the number of records matching the filter query + +```php +screenshot_count($query); + + // count all records + $igdb->screenshot_count(); + +?> +``` + +### Search +```php +public function search(string $query | IGDBQueryBuilder $builder) throws IGDBEndpointException: mixed +``` + +Fetching records from IGDB API using the [Search](https://api-docs.igdb.com/#search) endpoint. + +**Endpoint URL**: `https://api.igdb.com/v4/search` + +**Parameters**: + - `$query`: an apicalypse formatted query string or a configured IGDBQueryBuilder instance + +**Returns**: an array of objects decoded from the IGDB API response. + +```php +search($query); + +?> +``` + +### Search Count +```php +public function search_count(string $query = "" | IGDBQueryBuilder $builder) throws IGDBEndpointException: integer +``` + +Fetching the number of records from IGDB API using the [Search](https://api-docs.igdb.com/#search) endpoint. This method will return the record count matching the filter query. If the number of all records are required the method can be called without a filter query. + +**Endpoint URL**: `https://api.igdb.com/v4/search/count` + +**Parameters**: + - `$query` [optional]: an apicalypse formatted query string or a configured IGDBQueryBuilder instance. If called with an empty string, or without parameter then all records will be counted. + +**Returns**: the number of records matching the filter query + +```php +search_count($query); + + // count all records + $igdb->search_count(); + +?> +``` + +### Theme +```php +public function theme(string $query | IGDBQueryBuilder $builder) throws IGDBEndpointException: mixed +``` + +Fetching records from IGDB API using the [Theme](https://api-docs.igdb.com/#theme) endpoint. + +**Endpoint Description**: Video game themes + +**Endpoint URL**: `https://api.igdb.com/v4/theme` + +**Parameters**: + - `$query`: an apicalypse formatted query string or a configured IGDBQueryBuilder instance + +**Returns**: an array of objects decoded from the IGDB API response. + +```php +theme($query); + +?> +``` + +### Theme Count +```php +public function theme_count(string $query = "" | IGDBQueryBuilder $builder) throws IGDBEndpointException: integer +``` + +Fetching the number of records from IGDB API using the [Theme](https://api-docs.igdb.com/#theme) endpoint. This method will return the record count matching the filter query. If the number of all records are required the method can be called without a filter query. + +**Endpoint Description**: Video game themes + +**Endpoint URL**: `https://api.igdb.com/v4/theme/count` + +**Parameters**: + - `$query` [optional]: an apicalypse formatted query string or a configured IGDBQueryBuilder instance. If called with an empty string, or without parameter then all records will be counted. + +**Returns**: the number of records matching the filter query + +```php +theme_count($query); + + // count all records + $igdb->theme_count(); + +?> +``` + +### Website +```php +public function website(string $query | IGDBQueryBuilder $builder) throws IGDBEndpointException: mixed +``` + +Fetching records from IGDB API using the [Website](https://api-docs.igdb.com/#website) endpoint. + +**Endpoint Description**: A website url, usually associated with a game + +**Endpoint URL**: `https://api.igdb.com/v4/website` + +**Parameters**: + - `$query`: an apicalypse formatted query string or a configured IGDBQueryBuilder instance + +**Returns**: an array of objects decoded from the IGDB API response. + +```php +website($query); + +?> +``` + +### Website Count +```php +public function website_count(string $query = "" | IGDBQueryBuilder $builder) throws IGDBEndpointException: integer +``` + +Fetching the number of records from IGDB API using the [Website](https://api-docs.igdb.com/#website) endpoint. This method will return the record count matching the filter query. If the number of all records are required the method can be called without a filter query. + +**Endpoint Description**: A website url, usually associated with a game + +**Endpoint URL**: `https://api.igdb.com/v4/website/count` + +**Parameters**: + - `$query` [optional]: an apicalypse formatted query string or a configured IGDBQueryBuilder instance. If called with an empty string, or without parameter then all records will be counted. + +**Returns**: the number of records matching the filter query + +```php +website_count($query); + + // count all records + $igdb->website_count(); + +?> +``` + +## MultiQuery +```php +public function multiquery(array $queries) throws IGDBEndpointException, IGDBInvalidParameterException: mixed +``` + +This method executes a query against the `multiquery` endpoint. With this functionality one is able to execute multiple queries in a single request. + +> :warning If you are using the [Query Builder](#the-query-builder) to construct your queries, the parameters [`name`](#name) and [`endpoint`](#endpoint) are **mandatory**! There is also a third optional parameter [`count`](#count). If any of the mandatory parameters are missing for the multiquery, an `IGDBInvalidParameterException` is thrown! Please refer to the [`build`](#building-the-query) method for more information! + +**Parameters** + - `$queries`: an array of apicalypse formatted multiquery query strings. + +**Returns**: the response from the IGDB endpoint. The result object can vary depending on your query. + +## Example {.tabset} +### Source +```php +name("Main Game") + ->endpoint("game") + ->fields("id,name") + ->where("id = 25076") + // make sure to call the build_multiquery method instead of build + ->build_multiquery(); + + // building the bundle query + $bundle = $bundle_builder + ->name("Bundles") + ->endpoint("game") + ->fields("id,name,version_parent,category") + ->where("version_parent = 25076") + ->where("category = 0") + // make sure to call the build_multiquery method instead of build + ->build_multiquery(); + + // the query can be passed as a string too + + // $main = "query games \"Main Game\" { + // fields id,name; + // where id = 25076; + // };"; + + // $bundle = "query games \"Bundles\" { + // fields id,name,version_parent,category; + // where version_parent = 25076 & category = 0; + // };"; + + var_dump( + // passing the queries to the multiquery method + $igdb->multiquery( + // either the parsed queries + array($main, $bundle) + + // or the builder objects directly + // array($main_builder, $bundle_builder) + ) + ); + } catch (IGDBInvaliParameterException $e) { + // a builder property is invalid + echo $e->getMessage(); + } catch (IGDBEndpointException $e) { + // something went wront with the query + echo $e->getMessage(); + } +?> +``` +### Result + +```text +array (size=2) + 0 => + object(stdClass)[4] + public 'name' => string 'Main Game' (length=9) + public 'result' => + array (size=1) + 0 => + object(stdClass)[5] + public 'id' => int 25076 + public 'name' => string 'Red Dead Redemption 2' (length=21) + 1 => + object(stdClass)[6] + public 'name' => string 'Bundles' (length=7) + public 'result' => + array (size=3) + 0 => + object(stdClass)[7] + public 'id' => int 103207 + public 'category' => int 0 + public 'name' => string 'Red Dead Redemption 2: Collector's Box' (length=38) + public 'version_parent' => int 25076 + 1 => + object(stdClass)[8] + public 'id' => int 103206 + public 'category' => int 0 + public 'name' => string 'Red dead Redemption 2: Ultimate Edition' (length=39) + public 'version_parent' => int 25076 + 2 => + object(stdClass)[9] + public 'id' => int 103205 + public 'category' => int 0 + public 'name' => string 'Red Dead Redemption 2: Special Edition' (length=38) + public 'version_parent' => int 25076 +``` + +## {-} + +## Return Values + +There are 2 types of endpoint methods returning 2 different type of results. + +### Entity requests + +In case of a successful request every endpoint method will return **an array of objects** decoded from the response. + +### Example {.tabset} +#### Source +```php +game("fields id,name; where id = (1,2);"); + +?> +``` + +#### Result + +```text +array (size=2) + 0 => + object(stdClass)[2] + public 'id' => int 1 + public 'name' => string 'Thief II: The Metal Age' (length=23) + 1 => + object(stdClass)[3] + public 'id' => int 2 + public 'name' => string 'Thief: The Dark Project' (length=23) +``` + +### {-} + +The result object's properties will vary depending on the provided field list in the `$query`. From the example result above you can see, the result holds an array, containing two elements. Every element of the result array is an object, containing properties with name of the fields from the `fields` parameter. + +### Count requests + +Every endpoint method has a count counterpart. These methods will return the number of matched records. + +### Example {.tabset} +#### With filter +```php +game_count("where id = (1,2);"); + +?> +``` + +#### Without filter + +```php +game_count(); + +?> +``` + +### {-} + +This query with filter will return the number `2` since the query matches only 2 games. In this query there is no point to add field list but the number of records can be filtered using a where statement. To count every records call the method without a filter query. diff --git a/src/assets/templates/04-igdb-util.md b/db/assets/templates/04-igdb-util.md similarity index 51% rename from src/assets/templates/04-igdb-util.md rename to db/assets/templates/04-igdb-util.md index cd956f8..ca6f9f4 100644 --- a/src/assets/templates/04-igdb-util.md +++ b/db/assets/templates/04-igdb-util.md @@ -3,7 +3,7 @@ overview: Utility tools for making the job easier with the IGDB API icon: fa-tools --- -# IGDB Utils +# Utilities A utility class to help with some tasks. @@ -24,6 +24,8 @@ A helper method to generate your `access_token`. This method will send a post re If a non-successful response is recieved from Twitch, an `Exception` is thrown. +## Example {.tabset} +### Source ```php ``` -The output of the method will contain your new `access_token`: +### Result ```text object(stdClass)[1] @@ -48,6 +50,9 @@ object(stdClass)[1] public 'token_type' => string 'bearer' (length=6) ``` +## {-} + +The output of the method will contain your new `access_token`: ## Image URL ```php @@ -82,6 +87,8 @@ Get the URL of a specific sized image for a record. If an invalid second parameter is passed, an `IGDBInvalidParameterException` will be thrown. +## Example {.tabset} +### Source ```php ``` -The script above will produce the output below: +### Result ```text array (size=1) @@ -182,4 +189,224 @@ array (size=1) 720p version: https://images.igdb.com/igdb/image/upload/t_720p/ar4v3.jpg ``` -On the last line you can see the 720p version of the image which is a valid url. \ No newline at end of file +## {-} + +On the last line of the result you can see the 720p version of the image which is a valid url. + +## Webhooks + +There are multiple helper methods to work with webhooks. + +### Create a webhook +```php +public static function create_webhook(string $client_id, string $access_token, string $endpoint, string $method, string $url, string $secret) throws IGDBInvalidParameterException, Exception: mixed +``` + +This method will create a webhook. + +**Parameters:** + - `$client_id`: your client id + - `$access_token`: your generated access token + - `$endpoint`: the name of the endpoint where you expect new data from (it's name, not the url!) + - `$method`: the type of method. Can be: + - `create`: sends new items from the API + - `delete`: sends deleted items from the API + - `update`: sends updated items from the API + - `$url`: your url where you expect the data to be sent + - `$secret`: the password for your webhook + +**Returns:** the details of the created webhook + +The method will throw `IGDBInvalidParameterException` if: + - `$endpoint` is invalid + - `$method` is invalid + +The method will throw `Exception` if non-successful response code is recieved from IGDB API. + +### Example {.tabset} +#### Source + +```php + +``` + +#### Result + +```text +object(stdClass)[1] + public 'id' => int 9034 + public 'url' => string 'http://my-url.com/my-endpoint' (length=29) + public 'category' => int 625691411 + public 'sub_category' => int 0 + public 'active' => boolean true + public 'number_of_retries' => int 0 + public 'api_key' => string 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' (length=30) + public 'secret' => string 'very secret password' (length=20) + public 'created_at' => int 1705802392 + public 'updated_at' => int 1705802392 +``` +### {-} + +### Get a webhook +```php +public static function get_webhook(string $client_id, string $access_token, string $id): mixed +``` + +Get a single webhook by its ID. + +**Parameters:** + - `$client_id`: your client id + - `$access_token`: your generated access token + - `$id`: the ID of the webhook + +**Returns:** details of the requested webhook + +### Example {.tabset} +#### Source + +```php + +``` + +#### Result + +```text +object(stdClass)[1] + public 'id' => int 9034 + public 'url' => string 'http://my-url.com/my-endpoint' (length=29) + public 'category' => int 625691411 + public 'sub_category' => int 0 + public 'active' => boolean true + public 'number_of_retries' => int 0 + public 'api_key' => string 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' (length=30) + public 'secret' => string 'very secret password' (length=20) + public 'created_at' => int 1705802392 + public 'updated_at' => int 1705802392 +``` + +### {-} + +### Get all webhooks +```php +public static function get_webhooks(string $client_id, string $access_token): array +``` + +Get all registered webhooks. + +**Parameters:** + - `$client_id`: your client id + - `$access_token`: your generated access token + +**Returns:** details of all registered webhooks + +### Example {.tabset} +#### Source +```php + + +``` + +#### Result + +```text +array (size=2) + 0 => + object(stdClass)[2] + public 'id' => int 9034 + public 'url' => string 'http://my-url.com/my-endpoint' (length=29) + public 'category' => int 625691411 + public 'sub_category' => int 0 + public 'active' => boolean true + public 'number_of_retries' => int 0 + public 'api_key' => string 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' (length=30) + public 'secret' => string 'very secret password' (length=20) + public 'created_at' => int 1705802392 + public 'updated_at' => int 1705802392 + 1 => + object(stdClass)[4] + public 'id' => int 9035 + public 'url' => string 'http://my-url.com/my-other-endpoint' (length=35) + public 'category' => int 625691411 + public 'sub_category' => int 2 + public 'active' => boolean true + public 'number_of_retries' => int 0 + public 'api_key' => string 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' (length=30) + public 'secret' => string 'very secret password' (length=20) + public 'created_at' => int 1705803591 + public 'updated_at' => int 1705803745 +``` +### {-} + +### Delete a webhook +```php +public static function delete_webhook($client_id, $access_token, $id) +``` + +Delete a webhook by its ID. + +**Parameters:** + - `$client_id`: your client id + - `$access_token`: your generated access token + - `$endpoint`: the name of the endpoint where you expect new data from (it's name, not the url!) + - `$method`: the type of method. Can be: + - `create`: sends new items from the API + - `delete`: sends deleted items from the API + - `update`: sends updated items from the API + - `$url`: your url where you expect the data to be sent + - `$secret`: the password for your webhook + +**Returns:** the details of the deleted webhook + +### Example {.tabset} +#### Source + +```php + +``` + +#### Result + +```text +object(stdClass)[1] + public 'id' => int 9034 + public 'url' => string 'http://my-url.com/my-endpoint' (length=29) + public 'category' => int 625691411 + public 'sub_category' => int 0 + public 'active' => boolean true + public 'number_of_retries' => int 0 + public 'api_key' => string 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' (length=30) + public 'secret' => string 'very secret password' (length=20) + public 'created_at' => int 1705802392 + public 'updated_at' => int 1705802392 +``` +### {-} diff --git a/src/assets/templates/05-examples.md b/db/assets/templates/05-examples.md similarity index 92% rename from src/assets/templates/05-examples.md rename to db/assets/templates/05-examples.md index c0717e2..1ae4b70 100644 --- a/src/assets/templates/05-examples.md +++ b/db/assets/templates/05-examples.md @@ -1,5 +1,5 @@ --- -overview: Working examples, covering most of the functionalities of the wrapper +overview: Working examples, covering most of the functionalities of the wrapper and the additional classes icon: fa-code --- @@ -7,7 +7,7 @@ icon: fa-code The examples in this section will try to cover most of the use cases of the wrapper. ->:tip To see your own tokens in the example codes set them up on the home page as described in [Using the documentation section](#using-the-documentation)! +> To see your own tokens in the example codes set them up on the home page as described in [Using the documentation section](#using-the-documentation)! ## Basic Example @@ -15,7 +15,8 @@ A basic example to send your apicalypse query to the IGDB API. > Make sure to place your [endpoint method](#endpoints) calls in a try...catch block to be able to catch errors! -**Code** +## Example {.tabset} +### Source ```php ``` -**Result** +### Result ```text array (size=5) @@ -74,13 +75,16 @@ array (size=5) public 'name' => string 'Uncharted 4: A Thief's End' (length=26) ``` +## {-} + ## Using the Query Builder -An example to see how to use the [IGDB Query Builder](#igdb-query-builder) to build the query strings. +An example to see how to use the [IGDB Query Builder](#the-query-builder) to build the query strings. > Make sure to place your [query builder configuration](#configuring-methods) and [endpoint method](#endpoints) calls in a try...catch block to be able to catch errors! -**Code** +## Example {.tabset} +### Source ```php ``` -**Result** +### Result ```text array (size=5) @@ -155,13 +159,16 @@ array (size=5) public 'name' => string 'Uncharted 4: A Thief's End' (length=26) ``` +## {-} + ## Query Builder with Options -The [IGDB Query Builder](#igdb-query-builder) still supports the legacy `$options` array to parameterize the query. +The [IGDB Query Builder](#the-query-builder) still supports the legacy `$options` array to parameterize the query. ->:warning Using the Builder this way is not recommended as this functionality may be removed in future versions. Use the [builder approach](#builder-approach) instead. +>:warning Using the Builder this way is not recommended as this functionality may be removed in future versions. Use the [builder approach](#builder-methods) instead. -**Code** +## Example {.tabset} +### Source ```php ``` -**Result** +### Result ```text array (size=5) @@ -240,6 +247,7 @@ array (size=5) public 'cover' => int 81917 public 'name' => string 'Uncharted 4: A Thief's End' (length=26) ``` +## {-} ## Counting Results @@ -247,7 +255,8 @@ An example to count the matched records. > When `true` is passed as the second parameter, the return value will be an object with a single property called `count`. For more details on the return values of the endpoint methods please refer to the [return values section](#return-values). -**Code** +## Example {.tabset} +### Source ```php ``` -**Result** +### Result ```text object(stdClass)[3] public 'count' => int 8081 ``` +## {-} + ## Expander Some fields are actually ids pointing to other endpoints. The expander feature is a convenient way to go into these other endpoints and access more information from them in the same query, instead of having to do multiple queries. -**Code** +## Example {.tabset} +### Source ```php ``` -**Result** +### Result ```text array (size=2) @@ -391,13 +403,16 @@ array (size=2) public 'url' => string 'https://www.igdb.com/themes/stealth' (length=35) ``` +## {-} + ## MultiQuery -Using multiquery multiple queries can be executed against the IGDB database using a single query. The multiquery method expects an array of multiquery query strings. +Using multiquery multiple queries can be executed against the IGDB database using a single query. The multiquery method expects an array of multiquery query strings or `IGDBQueryBuilder` instances. >:info Using the [`build`](#building-the-query) method with a boolean `true` parameter, a query will be returned with a multiquery syntax. -**Code** +## Example {.tabset} +### Source ```php multiquery( - array( - $main->build(true), - $bundle->build(true) - ) + // either the builder objects in an array + array($main, $bundle) + + // or the query strings built from then + // array( + // $main->build_multiquery(), + // $bundle->build_multiquery() + // ) ) ); } catch (IGDBInvaliParameterException $e) { @@ -448,7 +467,7 @@ Using multiquery multiple queries can be executed against the IGDB database usin ?> ``` -**Result** +### Result ```text array (size=2) @@ -484,4 +503,5 @@ array (size=2) public 'category' => int 0 public 'name' => string 'Red dead Redemption 2: Ultimate Edition' (length=39) public 'version_parent' => int 25076 -``` \ No newline at end of file +``` +## {-} diff --git a/src/assets/templates/06-change-logs.md b/db/assets/templates/06-change-logs.md similarity index 82% rename from src/assets/templates/06-change-logs.md rename to db/assets/templates/06-change-logs.md index f71ff1f..f07be39 100644 --- a/src/assets/templates/06-change-logs.md +++ b/db/assets/templates/06-change-logs.md @@ -5,6 +5,22 @@ icon: fa-clipboard-list # Change Log +## v5.0.0 - March 03, 2024 + +Major version! May break your project! Make sure to check the new features + + - IGDBUtils [webhook](#webhooks) support + - [IGDBQueryBuilder](#the-query-builder) updates: + - building standard and multiquery query strings is now separated to their respective methods: + - [`build`](#apicalypse): standard apicalypse query + - [`build_multiquery`](#multiquery): multiquery query string + - [Wrapper](#the-wrapper) updates: + - synchronised API endpoints from IGDB, every available endpoint has its wrapper endpoint method counterpart + - endpoint methods - and multiquery - now accept both an apicalypse query string or a configured IGDBQueryBuilder instance(s) + - every endpoint method has its count counterpart. Count parameter is no longer available for the endpoint methods + - multiple constant values are moved to a dedicated file `IGDBConstants.php`. + - the documentation is completely rewritten in Angular and [it can be installed on multiple devices as a PWA](#installing-the-application)! + ## v4.3.2 - October 26, 2023 - Added new endpoint methods to the wrapper - [collection_membership](#collection-membership) @@ -52,8 +68,8 @@ icon: fa-clipboard-list ## v4.1.0 - May 15, 2021 - The wrapper got a brand new documentation! - - Introduced the [IGDBQueryBuilder](#igdb-query-builder) class - - Introduced the [IGDB Utils](#igdb-utils) class + - Introduced the [IGDBQueryBuilder](#the-query-builder) class + - Introduced the [IGDB Utils](#utilities) class - Introduced `IGDBEndpointException` and `IGDBInvalidParameterException` classes - The wrapper [endpoint methods](#endpoints) no longer accepts `$options`, only [apicalypse query strings](https://api-docs.igdb.com/#apicalypse-1) @@ -84,7 +100,7 @@ icon: fa-clipboard-list ## v2.0.1 - January 27, 2020 - Minor changes / fixes in the Readme - - Added method [`_construct_url`](#constructing-urls) + - Added method [`_construct_url`](#construct-url) - Updated every endpoint method to construct the endpoint url's different ## v2.0.0 - December 04, 2019 diff --git a/src/assets/templates/images/.gitkeep b/db/assets/templates/images/.gitkeep similarity index 100% rename from src/assets/templates/images/.gitkeep rename to db/assets/templates/images/.gitkeep diff --git a/db/assets/templates/images/example-code-with-token.png b/db/assets/templates/images/example-code-with-token.png new file mode 100644 index 0000000..c66e04e Binary files /dev/null and b/db/assets/templates/images/example-code-with-token.png differ diff --git a/docs/images/set-token-dialog.png b/db/assets/templates/images/set-token-dialog.png similarity index 100% rename from docs/images/set-token-dialog.png rename to db/assets/templates/images/set-token-dialog.png diff --git a/db/assets/templates/images/set-token-link.png b/db/assets/templates/images/set-token-link.png new file mode 100644 index 0000000..78ace13 Binary files /dev/null and b/db/assets/templates/images/set-token-link.png differ diff --git a/db/nodemon.json b/db/nodemon.json new file mode 100644 index 0000000..6721ded --- /dev/null +++ b/db/nodemon.json @@ -0,0 +1,8 @@ +{ + "verbose": true, + "ignore": ["*.test.js", "**/fixtures/**", "./export/*"], + "execMap": { + "rb": "ruby", + "pde": "processing --sketch={{pwd}} --run" + } +} diff --git a/db/src/abstract/FileProcessor.ts b/db/src/abstract/FileProcessor.ts new file mode 100644 index 0000000..9390090 --- /dev/null +++ b/db/src/abstract/FileProcessor.ts @@ -0,0 +1,8 @@ +import Logger from '../lib/Logger'; +import Document from '../model/Document'; +import File from '../model/File'; + +export default abstract class FileProcessor { + protected logger = Logger.getLogger(FileProcessor.name); + public abstract process(files: File[]): Document; +} diff --git a/db/src/abstract/FileReader.ts b/db/src/abstract/FileReader.ts new file mode 100644 index 0000000..c459b73 --- /dev/null +++ b/db/src/abstract/FileReader.ts @@ -0,0 +1,17 @@ +import Logger from "../lib/Logger"; +import File from "../model/File"; + +export default abstract class FileReader { + protected logger = Logger.getLogger(FileReader.name); + private path: string; + + public constructor(path: string) { + this.path = path; + } + + public getPath(): string { + return this.path; + } + + public abstract read(): File[]; +} diff --git a/db/src/abstract/FileWriter.ts b/db/src/abstract/FileWriter.ts new file mode 100644 index 0000000..f849908 --- /dev/null +++ b/db/src/abstract/FileWriter.ts @@ -0,0 +1,38 @@ +import Path from 'path'; +import Logger from "../lib/Logger"; +import Document from "../model/Document"; + +export default abstract class FileWriter { + protected logger = Logger.getLogger(FileWriter.name); + private path: string; + private filename: string; + private extension: string; + + public constructor(path: string, filename: string, extension: string) { + this.path = path; + this.filename = filename; + this.extension = extension; + } + + public getPath(): string { + return this.path; + } + + public getFilename(): string { + return this.filename; + } + + public getExtension(): string { + return this.extension; + } + + public getFilenameWithExtension(): string { + return [this.filename, this.extension].join('.'); + } + + public getAbsolutePath(): string { + return Path.join(this.getPath(), this.getFilenameWithExtension()); + } + + public abstract write(document: Document): Promise +} diff --git a/db/src/constant.ts b/db/src/constant.ts new file mode 100644 index 0000000..2acf8d6 --- /dev/null +++ b/db/src/constant.ts @@ -0,0 +1,4 @@ +export const IMAGE_REGEXP = new RegExp('!\\[(.*?)\\]\\((.*?)\\)', 'gi'); +export const LINK_REGEXP = new RegExp('\\[(.*?)\\]\\((.*?)\\)', 'gi'); +export const HEADING_REGEXP = new RegExp('^(\#{1,6})(.*)$'); +export const TABSET_REGEXP = new RegExp('^\#{1,6}(.*)(\{.tabset\}|\{-\})$', 'm'); diff --git a/db/src/index.ts b/db/src/index.ts new file mode 100644 index 0000000..4b0c175 --- /dev/null +++ b/db/src/index.ts @@ -0,0 +1,56 @@ +import { Option, program } from 'commander'; +import Fs from 'fs'; +import Path from 'path'; +import FileWriter from "./abstract/FileWriter"; +import Builder from "./lib/Builder"; +import Logger from './lib/Logger'; +import Processor from "./lib/Processor"; +import Reader from "./lib/Reader"; +import RxdbWriter from "./lib/RxdbWriter"; + +program + .addOption(new Option('-p, --production', 'Generate production ready database file').default(false)) + .addOption(new Option('-f, --filename ', 'Override output filename')) + .addOption(new Option('-w, --watch', 'Executing the script in dev mode, restart when changes detected').default(false)) + .addOption(new Option('-o, --output ', 'Output of the script').choices(['rxdb']).default('rxdb')); +program.parse(process.argv); + +const { output, watch, filename } = program.opts(); +export const templatePath = Path.join(__dirname, '..', 'assets', 'templates'); +export const mustachePath = Path.join(__dirname, '..', 'assets', 'mustache'); +export const exportPath = Path.join(__dirname, '..', '..', 'src', 'assets'); +export const databaseName = filename || 'database'; +const logger = Logger.getLogger(__filename); +const reader = new Reader(templatePath); +const processor = new Processor(); +let writer: FileWriter; + +logger.info('Building database'); +logger.debug({ output, watch, filename, templatePath, mustachePath, exportPath, databaseName }); + +switch(output) { + case 'rxdb': + writer = new RxdbWriter(exportPath, databaseName); + break; + default: + throw new Error(`Invalid output format: ${output}!`); +} +const builder = new Builder(reader, processor, writer); +builder.build(); + +if(watch) { + console.log(`\nWatching for changes in ${templatePath}\n`); + let fsWait: NodeJS.Timeout | null = null; + Fs.watch(templatePath, (event, filename) => { + if (filename) { + if (fsWait) return; + + fsWait = setTimeout(() => { + fsWait = null; + }, 100); + + console.log(`${Path.join(templatePath, filename)} ${event}d!`); + builder.build(); + } + }); +} diff --git a/db/src/interface/IMarkdownAttributes.ts b/db/src/interface/IMarkdownAttributes.ts new file mode 100644 index 0000000..b5b898e --- /dev/null +++ b/db/src/interface/IMarkdownAttributes.ts @@ -0,0 +1,4 @@ +export interface IMarkdownAttributes { + icon: string; + overview: string; +} diff --git a/db/src/lib/Builder.ts b/db/src/lib/Builder.ts new file mode 100644 index 0000000..1229b63 --- /dev/null +++ b/db/src/lib/Builder.ts @@ -0,0 +1,59 @@ +import Fs from 'fs'; +import FileProcessor from "../abstract/FileProcessor"; +import FileReader from "../abstract/FileReader"; +import FileWriter from "../abstract/FileWriter"; +import Logger from "./Logger"; + +export default class Builder { + protected logger = Logger.getLogger(Builder.name); + private reader: FileReader; + private processor: FileProcessor; + private writer: FileWriter; + + public constructor(reader: FileReader, processor: FileProcessor, writer: FileWriter) { + this.reader = reader; + this.processor = processor; + this.writer = writer; + } + + public async build(): Promise { + const files = this.reader.read(); + const processed = this.processor.process(files); + await this.writer.write(processed); + + const file = this.writer.getAbsolutePath(); + + if (Fs.statSync(this.writer.getAbsolutePath()).isFile()) { + console.log(`${this.writer.getExtension().toUpperCase()} exported succesfully!`); + console.log(`File: ${this.writer.getAbsolutePath()}`); + console.log(`Size: ${this.calculateFileSize(this.writer.getAbsolutePath())}\n`); + } else { + throw new Error('no file is exported!') + } + } + + protected calculateFileSize(file: string): string { + const units = ["kilobyte", "megabyte", "gigabyte"]; + const stat = Fs.statSync(file); + const { size } = stat; + + if(stat.isFile()) { + if(size < 1024) { + return `${size} byte${size > 1 ? "s" : ""}`; + } else { + for(let i=0; i 1 ? "s" : ""}`; + } + } + + return `${size} byte${size > 1 ? "s" : ""}`; + } + } + + throw new Error(`Cannot find ${file}!`); + } +} diff --git a/db/src/lib/FileHandler.ts b/db/src/lib/FileHandler.ts new file mode 100644 index 0000000..40af9ef --- /dev/null +++ b/db/src/lib/FileHandler.ts @@ -0,0 +1,17 @@ +import Fs from 'fs'; +import Logger from './Logger'; + +export default class FileHandler { + private static logger = Logger.getLogger(FileHandler.name); + public static readFile(path: string): string { + return Fs.readFileSync(path, { encoding: 'utf-8' }); + } + + public static writeFile(path: string, data: string): void { + Fs.writeFileSync(path, data, { encoding: 'utf-8'}); + } + + public static readDir(path: string): string[] { + return Fs.readdirSync(path, { encoding: 'utf-8' }); + } +} diff --git a/db/src/lib/Logger.ts b/db/src/lib/Logger.ts new file mode 100644 index 0000000..9e45e10 --- /dev/null +++ b/db/src/lib/Logger.ts @@ -0,0 +1,38 @@ +import Log4js, { Appender, Configuration } from 'log4js'; + +const isProduction = () => process.argv.includes('-p') || process.argv.includes('-production'); + +const consoleAppender: Appender = { + type: 'stdout', + layout: { + type: 'pattern', + pattern: '%d{yyyy-MM-dd hh:mm:ss,SSS} [%[%p%]] (%f{1}:%l:%o) - %m', + }, +} + +const fileAppender: Appender = { + type: 'dateFile', + filename: 'logs/database.log', + pattern: '.yyyy-MM-dd', + compress: true, + numBackups: 5, + keepFileExt: true, + layout: { + type: 'pattern', + pattern: '%d{yyyy-MM-dd hh:mm:ss,SSS} [%p] (%f{1}:%l:%o) - %m', + }, +} + +const configuration: Configuration = { + appenders: { consoleAppender, fileAppender }, + + categories: { + default: { + appenders: ['consoleAppender', 'fileAppender'], + enableCallStack: true, + level: isProduction() ? 'info' : 'debug', + } + } +}; + +export default Log4js.configure(configuration); diff --git a/db/src/lib/MustacheHandler.ts b/db/src/lib/MustacheHandler.ts new file mode 100644 index 0000000..fc3b928 --- /dev/null +++ b/db/src/lib/MustacheHandler.ts @@ -0,0 +1,14 @@ +import Mustache from 'mustache'; +import Path from 'path'; +import { mustachePath } from '..'; +import FileHandler from './FileHandler'; +import Logger from './Logger'; + +export default class MustacheHandler { + protected logger = Logger.getLogger(MustacheHandler.name); + public static render(template: string, context: Object): string { + const content = FileHandler.readFile(Path.join(mustachePath, `${template}.mustache`)); + + return Mustache.render(content, context); + } +} diff --git a/db/src/lib/Processor.ts b/db/src/lib/Processor.ts new file mode 100644 index 0000000..0646339 --- /dev/null +++ b/db/src/lib/Processor.ts @@ -0,0 +1,148 @@ +import FrontMatter from 'front-matter'; +import FileProcessor from "../abstract/FileProcessor"; +import { HEADING_REGEXP } from "../constant"; +import { IMarkdownAttributes } from "../interface/IMarkdownAttributes"; +import Document from "../model/Document"; +import File from '../model/File'; +import Paragraph from "../model/Paragraph"; +import Section from "../model/Section"; +import Topic from "../model/Topic"; +import StringR from "./StringR"; + +export default class Processor extends FileProcessor { + private slugs: string[] = []; + + public process(files: File[]): Document { + const document = new Document(); + const paragraphs: Paragraph[] = []; + const attributeMap: {[key: number]: IMarkdownAttributes} = {}; + let paragraphId = 0; + + for (const file of files) { + const { attributes, body } = FrontMatter(file.getContent()); + let tabset = false; + + for (const line of body.split('\n').map((line: string) => line.trimEnd())) { + const match = line.match(HEADING_REGEXP); + + if (line.endsWith('{.tabset}')) tabset = true; + + if (match && !tabset) { + const id = paragraphId++; + const paragraph = new Paragraph(id, match[2].trim(), match[1].length); + paragraph.setDate(file.getDate()); + paragraphs.push(paragraph); + attributeMap[id] = attributes; + } else { + if (line.endsWith('{-}')) tabset = false; + paragraphs[paragraphs.length - 1].addLine(line); + } + } + } + + this.mapParents(paragraphs); + + for (const paragraph of paragraphs) { + if (paragraph.getLevel() === 1) { + const { icon, overview } = attributeMap[paragraph.getId()]; + const topic = new Topic(paragraph.getId(), icon, overview, paragraph.getTitle(), paragraph.getContent(), paragraph.getDate()); + + this.makeSlugUnique(topic); + document.addTopic(topic); + } else { + const topic = document.getLastTopic(); + const section = new Section(paragraph.getId(), topic.getId(), paragraph.getParents(), paragraph.getLevel(), paragraph.getTitle(), paragraph.getContent()); + + this.makeSlugUnique(section); + topic.addSection(section); + } + } + + this.validateAnchors(document); + return document; + } + + private validateAnchors(document: Document): void { + this.logger.info('Validating anchors'); + const slugs: string[] = []; + + for (const topic of document.getTopics()) { + slugs.push(topic.getSlug()); + + for (const section of topic.getSections()) { + slugs.push(section.getSlug()); + } + } + + for (const topic of document.getTopics()) { + const links = topic.getLinks(); + + this.logger.info(`${topic.getTitle()}: ${links.length} link${links.length > 1 ? 's' : ''}`); + for (const link of links) { + const [match, title, href] = link; + + if (href.startsWith('#')) { + if (slugs.includes(href.substring(1))) { + this.logger.info(` ${match} | VALID`); + } else { + this.logger.error(` ${match} | INVALID`); + } + } else { + this.logger.info(` ${match} | EXTERNAL`) + } + } + for (const section of topic.getSections()) { + const route: string[] = [topic.getTitle()] + .concat(document.getSectionsById(section.getParents()).map((section: Section) => section.getTitle())) + .concat([ section.getTitle() ]); + const links = section.getLinks(); + + this.logger.info(`${route.join(' > ')}: ${links.length} link${links.length > 1 ? 's' : ''}`); + for (const link of links) { + const [match, title, href] = link; + + if (href.startsWith('#')) { + if (slugs.includes(href.substring(1))) { + this.logger.info(` ${match} | VALID`); + } else { + this.logger.error(` ${match} | INVALID`); + } + } else { + this.logger.info(` ${match} | EXTERNAL`) + } + } + } + } + } + + private makeSlugUnique(item: Topic | Section): void { + let counter = 2; + const originalSlug = item.getSlug(); + while (this.slugs.includes(item.getSlug())) { + item.setSlug(`${originalSlug}-${StringR.romanize(counter++).toLowerCase()}`); + } + + this.slugs.push(item.getSlug()); + } + + private mapParents(paragraphs: Paragraph[]): void { + for (let i = 0; i < paragraphs.length; i++) { + const paragraph = paragraphs[i]; + let level = paragraph.getLevel(); + + if(level > 2) { + for(let j = i-1; j >= 0; j--) { + const compare = paragraphs[j]; + + if (level === 2) { + break; + } else if (compare.getLevel() === level - 1) { + paragraph.addParent(compare.getId()); + level = compare.getLevel(); + } + } + } + } + } + +} diff --git a/db/src/lib/Reader.ts b/db/src/lib/Reader.ts new file mode 100644 index 0000000..79aac7c --- /dev/null +++ b/db/src/lib/Reader.ts @@ -0,0 +1,24 @@ +import ChildProcess from 'child_process'; +import Path from 'path'; +import FileReader from '../abstract/FileReader'; +import File from '../model/File'; +import FileHandler from './FileHandler'; + +export default class Reader extends FileReader { + public constructor(path: string) { + super(path); + } + + public read(): File[] { + return FileHandler + .readDir(this.getPath()) + .filter((filename: string) => filename.endsWith('.md')) + .map((filename: string) => { + const content = FileHandler.readFile(Path.join(this.getPath(), filename)); + const path = Path.join(this.getPath(), filename); + const timestamp = ChildProcess.execSync(`git log --format=%ct "${path}"`, { encoding: 'utf-8'}).trim().split('\n')[0]; + + return new File(this.getPath(), filename, content, parseInt(timestamp, 10) || null); + }); + } +} diff --git a/db/src/lib/RxdbWriter.ts b/db/src/lib/RxdbWriter.ts new file mode 100644 index 0000000..2d78440 --- /dev/null +++ b/db/src/lib/RxdbWriter.ts @@ -0,0 +1,400 @@ +import { program } from 'commander'; +import HtmlMinifier from 'html-minifier'; +import Md5 from 'md5'; +import Path from 'path'; +import { RxCollection, RxDatabase, RxJsonSchema, addRxPlugin, createRxDatabase } from 'rxdb'; +import { RxDBJsonDumpPlugin } from 'rxdb/plugins/json-dump'; +import { getRxStorageMemory } from 'rxdb/plugins/storage-memory'; +import FileWriter from "../abstract/FileWriter"; +import Document from "../model/Document"; + +const base64img = require('base64-img'); + +export default class RxdbWriter extends FileWriter { + private marked: Marked; + private htmlMinifierOptions: HtmlMinifier.Options; + + public constructor(path: string, filename: string) { + super(path, filename, 'json'); + const markedExtension: MarkedExtension = { + async: false, + breaks: true, + gfm: true, + renderer: { + link: this.link, + image: this.image, + blockquote: this.blockquote, + } + }; + + this.marked = new Marked(markedExtension); + + this.htmlMinifierOptions = { + collapseWhitespace: true, + collapseInlineTagWhitespace: true, + conservativeCollapse: true, + removeEmptyAttributes: true, + removeRedundantAttributes: true, + }; + } + + public async write(document: Document): Promise { + let order = 1; + addRxPlugin(RxDBJsonDumpPlugin); + + this.processTabsets(document); + + const rxdb: IGDBWrapperDatabase = await createRxDatabase({ + name: 'igdbwdb', + storage: getRxStorageMemory(), + }); + + const collections = await rxdb.addCollections({ + topics: { + schema: this.getTopicJsonSchema(), + }, + sections: { + schema: this.getSectionJsonSchema() + } + }); + + for (const topic of document.getTopics()) { + const topicId = this.generateId(topic.getId(), topic.getSlug()); + const topicDocument = { + id: topicId, + order: order++, + icon: topic.getIcon(), + slug: topic.getSlug(), + overview: topic.getOverview(), + date: topic.getDate(), + title: topic.getTitle(), + stripped: this.toStripped(topic.getBody()), + html: program.opts().production ? HtmlMinifier.minify(this.toHtml(topic.getBody()), this.htmlMinifierOptions) : this.toHtml(topic.getBody()), + }; + + await collections.topics.insert(topicDocument); + + for (const section of topic.getSections()) { + const sectionDocument = { + id: this.generateId(section.getId(), section.getSlug()), + order: order++, + topicId, + parents: section.getParents().map( + (parentId: number) => { + const s: Section | undefined = topic.getSections().find((section: Section) => section.getId() === parentId); + return s ? this.generateId(s.getId(), s.getSlug()) : null; + } + ), + slug: section.getSlug(), + level: section.getLevel(), + title: section.getTitle(), + html: program.opts().production ? HtmlMinifier.minify(this.toHtml(section.getBody()), this.htmlMinifierOptions) : this.toHtml(section.getBody()), + stripped: this.toStripped(section.getBody()), + }; + + const tabsets = section.getTabsets(); + + if (tabsets) { + for (const tabset of tabsets) { + + const context = { + id: tabset.getId(), + name: tabset.getName(), + tabs: tabset.getTabs().map((tab: Tab) => ({ id: tab.getId(), title: tab.getTitle(), content: this.toHtml(tab.getContent()), active: tab.getActive() })), + }; + + sectionDocument.html = sectionDocument.html.replace(`[.tabset#${tabset.getId()}]`, MustacheHandler.render('tabset', context)); + } + } + + await collections.sections.insert(sectionDocument); + } + } + + FileHandler.writeFile( + this.getAbsolutePath(), + program.opts().production ? JSON.stringify(await rxdb.exportJSON()) : JSON.stringify(await rxdb.exportJSON(), null, 2), + ); + + await rxdb.remove(); + } + + private processTabsets(document: Document): void { + for (const topic of document.getTopics()) { + for (const section of topic.getSections()) { + let tabsetCounter = 0; + while (section.hasTabset()) { + const match = section.getBody().match(TABSET_REGEXP); + const tabsetName = match![1].trim(); + const tabsetId = Md5(`${topic.getId()}-${section.getId()}-${tabsetName}-${tabsetCounter++}`).substring(0, 10); + const tabset = section.addTabset(tabsetId, tabsetName); + + let start = 0; + let end = 0; + let lineCounter = 0; + let tabIdCounter = 0; + const body = section.getBody().split('\n').map((line: string) => line.trimEnd()); + let tab; + for (const line of body) { + if (line.includes('#') && line.includes(tabset.getName()) && line.includes('{.tabset}')) { + start = lineCounter; + continue; + } + + if (line.includes('#') && line.includes('{-}')) { + end = lineCounter; + break; + } + + const headingMatcher = line.match(HEADING_REGEXP); + + if (headingMatcher) { + const tabTitle = headingMatcher[2].trim(); + const tabId = Md5(`${tabsetId}-${tabIdCounter++}-${tabTitle}`).substring(0, 10); + + tab = tabset.addTab(tabId, tabTitle); + } else { + if (tab) { + tab.addContentLine(line); + } + } + + lineCounter++; + } + + body.splice(start, end - start + 2, `[.tabset#${tabset.getId()}]`); + section.setBody(body.join('\n')); + } + } + } + } + + private toHtml(markdown: string): string { + return this.marked.parse(markdown) as string; + } + + private toStripped(markdown: string): string { + return RemoveMarkdown(markdown, { gfm: true }) + } + + private link(href: string, title: string | null | undefined, text: string): string { + const context = { + local: href.startsWith('#'), + href, + title: text.replace(/(<([^>]+)>)/gi, ''), + text, + }; + + return MustacheHandler.render('link', context); + } + + private image(href: string, title: string | null, text: string): string { + const context = { + src: base64img.base64Sync(Path.join(templatePath, href)), + text, + }; + + return MustacheHandler.render('image', context); + } + + private blockquote(quote: string): string { + const getSeverity = (content: string): string => { + const [severity, ...rest] = content.split(' '); + return severity.startsWith(':') ? severity.substring(1) : 'info'; + }; + + const getTitle = (severity: string): string => { + switch(severity.toLowerCase()) { + case 'warning': + return 'Warning'; + break; + case 'success': + return 'Tip'; + break; + case 'danger': + return 'Danger'; + break; + default: + return 'Info' + break; + } + } + + const getIcon = (severity: string): string => { + switch(severity.toLowerCase()) { + case 'warning': + return 'fa-bullhorn'; + break; + case 'success': + return 'fa-thumbs-up'; + break; + case 'danger': + return 'fa-triangle-exclamation'; + break; + default: + return 'fa-circle-info' + break; + } + } + + if (quote.startsWith('

')) { + quote = quote.trim().substring(3, quote.length - 5); + } + + const severity = getSeverity(quote); + const [first, ...rest] = quote.split(' '); + + const context = { + severity, + icon: getIcon(severity), + title: getTitle(severity), + quote: first.startsWith(':') ? rest.join(' ') : quote, + }; + + return MustacheHandler.render('blockquote', context); + } + + private generateId(id: number, slug: string): string { + return Md5(`${id}|${slug}`).substring(0,10); + } + + private getSectionJsonSchema(): RxJsonSchema { + return { + version: 0, + primaryKey: 'id', + type: 'object', + properties: { + id: { + type: 'string', + maxLength: 10, + }, + order: { + type: 'number', + }, + slug: { + type: 'string', + }, + title: { + type: 'string', + }, + stripped: { + type: 'string', + }, + html: { + type: 'string', + }, + topicId: { + type: 'string', + }, + parents: { + type: 'array', + items: { + type: 'number', + } + }, + level: { + type: 'number', + } + } + }; + } + + private getTopicJsonSchema(): RxJsonSchema { + return { + version: 0, + primaryKey: 'id', + type: 'object', + properties: { + id: { + type: 'string', + maxLength: 10, + }, + order: { + type: 'number', + }, + icon: { + type: 'string', + }, + slug: { + type: 'string', + }, + overview: { + type: 'string', + }, + date: { + type: ['number', 'null'], + }, + title: { + type: 'string', + }, + stripped: { + type: 'string', + }, + html: { + type: 'string', + }, + } + }; + } +} + +export type TopicCollectionMethods = { + count: () => Promise; +} + +export type TopicCollection = RxCollection; + +import { Marked, MarkedExtension } from "marked"; +import RemoveMarkdown from "remove-markdown"; +import { RxDocument } from "rxdb"; +import { templatePath } from ".."; +import { HEADING_REGEXP, TABSET_REGEXP } from '../constant'; +import Section from "../model/Section"; +import { Tab } from '../model/Tab'; +import FileHandler from './FileHandler'; +import MustacheHandler from './MustacheHandler'; + +export type TopicDocumentType = { + id: string; + order: number; + icon: string; + slug: string; + overview: string; + date: number | null; + title: string; + stripped: string; + html: string; +} + +export type TopicDocumentMethods = {}; + +export type TopicDocument = RxDocument; + +export type SectionCollectionMethods = { + count: () => Promise; +} + +export type SectionCollection = RxCollection; + +export type SectionDocumentType = { + id: string; + order: number; + topicId: string; + parents: string[]; + slug: string; + level: number; + title: string; + html: string; + stripped: string; +} + +export type SectionDocumentMethods = {}; + +export type SectionDocument = RxDocument; + +export type DocumentationDatabaseCollections = { + topics: TopicCollection, + sections: SectionCollection, +} + +export type IGDBWrapperDatabase = RxDatabase; diff --git a/db/src/lib/StringR.ts b/db/src/lib/StringR.ts new file mode 100644 index 0000000..5e8bc33 --- /dev/null +++ b/db/src/lib/StringR.ts @@ -0,0 +1,41 @@ +import Slug from 'slug'; +import Logger from './Logger'; + +export default class StringR { + private static logger = Logger.getLogger(StringR.name); + public static capitalize(string: string): string { + return string.charAt(0).toUpperCase() + string.substring(1); + } + + public static toSlug(string: string): string { + return Slug(string); + } + + public static romanize(num: number): string { + const roman: {[key: string]: number} = { + M: 1000, + CM: 900, + D: 500, + CD: 400, + C: 100, + XC: 90, + L: 50, + XL: 40, + X: 10, + IX: 9, + V: 5, + IV: 4, + I: 1 + }; + + let str = ''; + + for (const i of Object.keys(roman)) { + const q = Math.floor(num / roman[i]); + num -= q * roman[i]; + str += i.repeat(q); + } + + return str; + } +} diff --git a/db/src/model/Document.ts b/db/src/model/Document.ts new file mode 100644 index 0000000..791511f --- /dev/null +++ b/db/src/model/Document.ts @@ -0,0 +1,33 @@ +import Section from "./Section"; +import Topic from "./Topic"; + +export default class Document { + private topics: Topic[] = []; + + public addTopic(topic: Topic): void { + this.topics.push(topic); + } + + public getTopics(): Topic[] { + return this.topics; + } + + public getLastTopic(): Topic { + return this.topics[this.topics.length - 1]; + } + + public getSectionsById(ids: number[]): Section[] { + const sections: Section[] = []; + + for (const topic of this.topics) { + const section = topic.getSections().find((section: Section) => ids.includes(section.getId())); + + if (section) { + const index = ids.findIndex((id: number) => id === section.getId()); + sections[index] = section; + } + } + + return sections; + } +} diff --git a/db/src/model/File.ts b/db/src/model/File.ts new file mode 100644 index 0000000..2f55e75 --- /dev/null +++ b/db/src/model/File.ts @@ -0,0 +1,35 @@ +import Path from 'path'; + +export default class File { + private path: string; + private filename: string; + private content: string; + private date: number | null; + + public constructor(path: string, filename: string, content: string, date: number | null) { + this.path = path; + this.filename = filename; + this.content = content; + this.date = date; + } + + public getPath(): string { + return this.path; + } + + public getFilename(): string { + return this.filename; + } + + public getContent(): string { + return this.content; + } + + public getDate(): number | null { + return this.date; + } + + public getAbsolutePath(): string { + return Path.resolve(Path.join(this.path, this.filename)); + } +} diff --git a/db/src/model/Paragraph.ts b/db/src/model/Paragraph.ts new file mode 100644 index 0000000..4383c3a --- /dev/null +++ b/db/src/model/Paragraph.ts @@ -0,0 +1,55 @@ +export default class Paragraph { + private id: number; + private title: string; + private level: number; + private parents: number[] = []; + private content = ''; + private date: number | null; + + public constructor(id: number, title: string, level: number) { + this.id = id; + this.title = title; + this.level = level; + this.date = null; + } + + public getId(): number { + return this.id; + } + + public getTitle(): string { + return this.title; + } + + public getLevel(): number { + return this.level; + } + + public getContent(): string { + return this.content.trim(); + } + + public addLine(content: string): void { + this.content += `${content}\n`; + } + + public getDate(): number | null { + return this.date; + } + + public setDate(date: number | null): void { + this.date = date; + } + + public addParent(parentId: number): void { + this.parents.unshift(parentId); + } + + public getParents(): number[] { + return this.parents; + } + + public getParent(): number { + return this.parents[0]; + } +} diff --git a/db/src/model/Section.ts b/db/src/model/Section.ts new file mode 100644 index 0000000..4eb904e --- /dev/null +++ b/db/src/model/Section.ts @@ -0,0 +1,89 @@ +import { LINK_REGEXP, TABSET_REGEXP } from "../constant"; +import StringR from "../lib/StringR"; +import { Tabset } from "./Tabset"; + +export default class Section { + private id: number; + private topicId: number; + private parents: number[]; + private slug: string; + private level: number; + private title: string; + private body: string; + private tabsets: Tabset[] = []; + + constructor(id: number, topicId: number, parents: number[], level: number, title: string, body: string) { + this.id = id; + this.topicId = topicId; + this.parents = parents; + this.slug = StringR.toSlug(title); + this.level = level; + this.title = title; + this.body = body; + } + + public getId(): number { + return this.id; + } + + public getTopicId(): number { + return this.topicId; + } + + public getParents(): number[] { + return this.parents; + } + + public getSlug(): string { + return this.slug; + } + + public setSlug(newSlug: string): void { + this.slug = newSlug; + } + + public getLevel(): number { + return this.level; + } + + public getTitle(): string { + return this.title; + } + + public getBody(): string { + return this.body; + } + + public setBody(body: string): void { + this.body = body; + } + + public hasLinks(): boolean { + return !!this.body.match(LINK_REGEXP); + } + + public getLinks(): string[][] { + const result: string[][] = []; + let match; + while(match = LINK_REGEXP.exec(this.body)) { + result.push(match.splice(0, 3)); + } + + return result; + } + + public hasTabset(): boolean { + return !!this.body.match(TABSET_REGEXP); + } + + public addTabset(id: string, name: string): Tabset { + const tabset = new Tabset(id, name); + this.tabsets.push(tabset); + + return tabset; + } + + public getTabsets(): Tabset[] { + return this.tabsets; + } +} diff --git a/db/src/model/Tab.ts b/db/src/model/Tab.ts new file mode 100644 index 0000000..b5a99f0 --- /dev/null +++ b/db/src/model/Tab.ts @@ -0,0 +1,37 @@ +export class Tab { + private id: string; + private title: string; + private active: boolean; + private content: string; + + public constructor(id: string, title: string, active: boolean = false) { + this.id = id; + this.title = title; + this.active = active; + this.content = ''; + } + + public getId(): string { + return this.id; + } + + public getTitle(): string { + return this.title; + } + + public getContent(): string { + return this.content; + } + + public addContentLine(line: string): void { + this.content += line + '\n'; + } + + public setActive(active: boolean): void { + this.active = active; + } + + public getActive(): boolean { + return this.active; + } +} diff --git a/db/src/model/Tabset.ts b/db/src/model/Tabset.ts new file mode 100644 index 0000000..c832c2c --- /dev/null +++ b/db/src/model/Tabset.ts @@ -0,0 +1,34 @@ +import { Tab } from './Tab'; + +export class Tabset { + private id: string; + private name: string; + private tabs: Tab[] = []; + + public constructor(id: string, name: string) { + this.id = id; + this.name = name; + } + + public getId(): string { + return this.id; + } + + public getName(): string { + return this.name; + } + + public addTab(id: string, title: string): Tab { + const tab = new Tab(id, title, this.tabs.length === 0); + this.tabs.push(tab); + return tab; + } + + public getTab(tabId: string): Tab | null { + return this.tabs.find((tab: Tab) => tab.getId() === tabId) || null; + } + + public getTabs(): Tab[] { + return this.tabs; + } +} diff --git a/db/src/model/Topic.ts b/db/src/model/Topic.ts new file mode 100644 index 0000000..f50cc4c --- /dev/null +++ b/db/src/model/Topic.ts @@ -0,0 +1,78 @@ +import { LINK_REGEXP } from "../constant"; +import StringR from "../lib/StringR"; +import Section from "./Section"; + +export default class Topic { + private id: number; + private icon: string; + private slug: string; + private overview: string; + private date: number | null; + private title: string; + private body: string; + private sections: Section[] = []; + + constructor(id: number, icon: string, overview: string, title: string, body: string, date: number | null) { + this.id = id; + this.icon = icon; + this.slug = StringR.toSlug(title); + this.overview = overview; + this.title = title; + this.body = body; + this.date = date; + } + + public getId(): number { + return this.id; + } + + public getIcon(): string { + return this.icon; + } + + public getOverview(): string { + return this.overview; + } + + public getTitle(): string { + return this.title; + } + + public getBody(): string { + return this.body; + } + + public addSection(section: Section): void { + this.sections.push(section); + } + + public getSections(): Section[] { + return this.sections; + } + + public getSlug(): string { + return this.slug; + } + + public setSlug(newSlug: string): void { + this.slug = newSlug; + } + + public getDate(): number | null { + return this.date; + } + + public hasLinks(): boolean { + return !!this.body.match(LINK_REGEXP); + } + + public getLinks(): string[][] { + const result: string[][] = []; + let match; + while(match = LINK_REGEXP.exec(this.body)) { + result.push(match.splice(0, 3)); + } + + return result; + } +} diff --git a/db/tsconfig.json b/db/tsconfig.json new file mode 100644 index 0000000..e075f97 --- /dev/null +++ b/db/tsconfig.json @@ -0,0 +1,109 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig to read more about this file */ + + /* Projects */ + // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ + + /* Language and Environment */ + "target": "es2016", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + // "jsx": "preserve", /* Specify what JSX code is generated. */ + // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ + // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ + // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ + + /* Modules */ + "module": "commonjs", /* Specify what module code is generated. */ + // "rootDir": "./", /* Specify the root folder within your source files. */ + // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ + // "types": [], /* Specify type package names to be included without being referenced in a source file. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ + // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ + // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ + // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ + // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ + // "resolveJsonModule": true, /* Enable importing .json files. */ + // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ + // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ + + /* JavaScript Support */ + // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ + // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ + + /* Emit */ + // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ + // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ + // "outDir": "./", /* Specify an output folder for all emitted files. */ + // "removeComments": true, /* Disable emitting comments. */ + // "noEmit": true, /* Disable emitting files from a compilation. */ + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ + // "newLine": "crlf", /* Set the newline character for emitting files. */ + // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ + // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ + // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ + // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ + + /* Interop Constraints */ + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ + // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ + // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ + "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ + "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ + + /* Type Checking */ + "strict": true, /* Enable all strict type-checking options. */ + // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ + // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ + // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ + // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ + // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ + // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ + // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ + + /* Completeness */ + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ + "skipLibCheck": true /* Skip type checking all .d.ts files. */ + } +} diff --git a/dbexport.js b/dbexport.js deleted file mode 100644 index e69fd14..0000000 --- a/dbexport.js +++ /dev/null @@ -1,211 +0,0 @@ -const romanize = require("romanize"); -const md5 = require("md5"); -const fs = require("fs"); -const md2json = require("markdown-to-json"); -const path = require("path"); -const jsonmark = require("jsonmark"); -const lokijs = require("lokijs"); -const remark = require("remark"); -const remarkExternalLinks = require("remark-external-links"); -const remarkHtml = require("remark-html"); -const remarkStrip = require("strip-markdown"); -const execSync = require("child_process").execSync; -const remarkGfm = require("remark-gfm"); -const commander = require("commander"); - -// Command Line Arguments -commander - .option("-p, --production", "Build production database (without any whitespaces") - .option("-w, --watch", "Watching file changes in the template folder") - .parse(process.argv); - -// Variables -const TEMPLATE_PATH = path.join(__dirname, "src", "assets", "templates"); -const PUBLIC_PATH = path.join(__dirname, "public"); -const IMAGE_REGEX = new RegExp("!\\[(.*?)\\]\\((.*?)\\)", "gi"); - -// Calculating file size -const calculateFileSize = size => { - const units = ["kilobyte", "megabyte", "gigabyte"]; - - if(size < 1024) { - return `${size} byte${size > 1 ? "s" : ""}`; - } else { - for(let i=0; i 1 ? "s" : ""}`; - } - } - } - - return `${size} byte${size > 1 ? "s" : ""}`; -} - -// Exporting the database -const exportDb = () => { - console.log(`Exporting ${commander.opts().production ? "production " : ""}database`); - const imagesPath = path.join(PUBLIC_PATH, "images"); - const database = new lokijs("DocumentationDB", { env : "BROWSER", persistenceMethod : "memory", serializationMethod : commander.opts().production ? "normal" : "pretty" }); - const templates = database.addCollection("templates"); - - if(fs.existsSync(imagesPath)) { - console.log(`\nClearing existing images in ${imagesPath}`); - fs.rmSync(imagesPath, { recursive: true, force: true }) - } - - console.log(`\nProcessing templates in ${TEMPLATE_PATH}`); - - let documents = []; - const json = JSON.parse( - md2json.parse( - fs.readdirSync(TEMPLATE_PATH).filter(file => file.endsWith(".md")).map(file => path.join(TEMPLATE_PATH, file)), - { - width: 0, - content: true - } - ) - ) - - for(let index in json) { - console.log(`\nTemplate: ${path.join(TEMPLATE_PATH, json[index].basename)}.md`); - - const current = json[index]; - const overview = current.overview; - const icon = current.icon; - const basename = current.basename; - const paragraphs = jsonmark.parse(current.content.trim()).content; - - console.log(` Processing paragraphs in template:`) - for(let title in paragraphs) { - const paragraph = paragraphs[title]; - const level = paragraph.head.match(new RegExp("#", "g")).length; - let slug; - let counter = 1; - - console.log(` ${" ".repeat(level)}[${title}]`); - - do { - slug = (title + (counter > 1 ? `-${romanize(counter)}` : "")).trim() .toLowerCase().replace(new RegExp("( |,|\\.|'|!|\\?|\\)|\\(|\\]|\\[|\\}|\\{)", "g"), "-"); - counter++; - } while(documents.find( paragraph => paragraph.slug == slug) != undefined) - - let toPush = { - id : "", // will be calculated later - slug : slug, - level : level, - parent: null, - parents : [], - title : title.trim(), - date : null, - timestamp : null, - body : { - stripped : remark().use(remarkStrip).processSync(paragraph.body.trim()).contents.trim(), - markdown : paragraph.body.trim(), - html : remark() - .use(remarkExternalLinks, {target : "_blank", rel : "nofollow"}) - .use(remarkHtml) - .use(remarkGfm) // processing tables - .processSync(paragraph.body.trim()) - .contents - .trim() - .replace(new RegExp("<(\/|)t(r|d|h|head|body|able)>\\n<(\/|)t(r|d|h|head|body|able)>", "gm"), "<$1t$2><$3t$4>") // removing newlines from tables for react - .replace(new RegExp("<(\/|)t(r|d|h|head|body|able)>\\n<(\/|)t(r|d|h|head|body|able)>", "gm"), "<$1t$2><$3t$4>") - } - } - - // processing images - const images = (paragraph.body.trim().match(IMAGE_REGEX) || []).length; - - if(images) { - console.log(` ${" ".repeat(level)}Found ${images} image${images > 1 ? "s" : ""}:`); - let match; - - // while there are images in the template - while(match = IMAGE_REGEX.exec(paragraph.body.trim())) { - const source = path.join(TEMPLATE_PATH, match[2]); - const target = path.join(PUBLIC_PATH, match[2]); - const targetDir = path.parse(target).dir; - - // if the target path does not exist, create it - if(!fs.existsSync(targetDir)) { - fs.mkdirSync(targetDir, { recursive: true }); - } - - fs.copyFileSync(source, target); - console.log(` ${" ".repeat(level)}- ${source} => ${target}`); - } - } - - if(level == 1) { - const time = execSync(`git log --format=%ct "${path.join(TEMPLATE_PATH, basename + ".md")}"`).toString().split("\n")[0].trim(); - toPush.icon = icon; - toPush.overview = overview; - toPush.timestamp = time.length > 0 ? parseInt(time)*1000 : null; - } - - documents.push(toPush) - } - } - - console.log("\nMapping parents, assigning id's"); - documents.map( (paragraph, index) => { - if(paragraph.level > 1) { - let parents = []; - let element = documents[index]; - let level = element.level; - - for(let i=index-1; i>=0; i--) { - if(level == 1) { - break; - } else if(documents[i].level == level - 1) { - parents.push(documents[i].id) - level = documents[i].level; - } - } - - documents[index].parents = parents.reverse(); - documents[index].parent = parents[0]; - } - - // assign id - documents[index].id = md5(documents[index].parents.length == 0 ? documents[index].title : documents[index].parents.concat([documents[index].title]).join("|")).substring(2,9); - }) - - console.log(`\nInjecting paragraphs to database:`) - - documents.forEach(item => { - console.log(` [${item.id}]${" ".repeat(item.level)}${item.title}`); - templates.insert(item) - }); - - console.log("\nSaving database"); - - fs.writeFileSync(path.join(PUBLIC_PATH, "database.json"), database.serialize(), { encoding : "utf-8"}); - - console.log(`\n${commander.opts().production ? "Production " : ""}Database saved: ${path.join(PUBLIC_PATH, "database.json")} (${calculateFileSize(fs.lstatSync(path.join(PUBLIC_PATH, "database.json")).size)})`); -} - -// Exporting the database -exportDb(); - -// Watching for changes if -w or --watch is passed -if(commander.opts().watch) { - console.log(`\nWatching for changes in ${TEMPLATE_PATH}`); - let fsWait = false; - fs.watch(TEMPLATE_PATH, (event, filename) => { - if (filename) { - if (fsWait) return; - - fsWait = setTimeout(() => { - fsWait = false; - }, 100); - - console.log(`${path.join(TEMPLATE_PATH, filename)} ${event}d!`); - - exportDb(); - } - }); -} \ No newline at end of file diff --git a/docs/404.html b/docs/404.html deleted file mode 100644 index 6216dc1..0000000 --- a/docs/404.html +++ /dev/null @@ -1 +0,0 @@ -IGDBWrapper

\ No newline at end of file diff --git a/docs/asset-manifest.json b/docs/asset-manifest.json deleted file mode 100644 index ea8248c..0000000 --- a/docs/asset-manifest.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "files": { - "main.css": "./static/css/main.ab63fdd5.chunk.css", - "main.js": "./static/js/main.7c81bada.chunk.js", - "main.js.map": "./static/js/main.7c81bada.chunk.js.map", - "runtime-main.js": "./static/js/runtime-main.78a02452.js", - "runtime-main.js.map": "./static/js/runtime-main.78a02452.js.map", - "static/css/2.e7ae4ec8.chunk.css": "./static/css/2.e7ae4ec8.chunk.css", - "static/js/2.7f493d95.chunk.js": "./static/js/2.7f493d95.chunk.js", - "static/js/2.7f493d95.chunk.js.map": "./static/js/2.7f493d95.chunk.js.map", - "static/js/3.beeefe27.chunk.js": "./static/js/3.beeefe27.chunk.js", - "static/js/3.beeefe27.chunk.js.map": "./static/js/3.beeefe27.chunk.js.map", - "index.html": "./index.html", - "static/css/2.e7ae4ec8.chunk.css.map": "./static/css/2.e7ae4ec8.chunk.css.map", - "static/css/main.ab63fdd5.chunk.css.map": "./static/css/main.ab63fdd5.chunk.css.map", - "static/js/2.7f493d95.chunk.js.LICENSE.txt": "./static/js/2.7f493d95.chunk.js.LICENSE.txt", - "static/media/all.css": "./static/media/fa-solid-900.46fdbd2d.woff" - }, - "entrypoints": [ - "static/js/runtime-main.78a02452.js", - "static/css/2.e7ae4ec8.chunk.css", - "static/js/2.7f493d95.chunk.js", - "static/css/main.ab63fdd5.chunk.css", - "static/js/main.7c81bada.chunk.js" - ] -} \ No newline at end of file diff --git a/docs/coderdocs-logo.svg b/docs/coderdocs-logo.svg deleted file mode 100644 index f83c613..0000000 --- a/docs/coderdocs-logo.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - site-logo-coderdocs - Created with Sketch. - - - - - - - - - - - \ No newline at end of file diff --git a/docs/database.json b/docs/database.json deleted file mode 100644 index 920bc9f..0000000 --- a/docs/database.json +++ /dev/null @@ -1 +0,0 @@ -{"filename":"DocumentationDB","collections":[{"name":"templates","data":[{"id":"647454e","slug":"getting-started","level":1,"parent":null,"parents":[],"title":"Getting Started","date":null,"timestamp":1669925801000,"body":{"stripped":"Welcome to the IGDB Wrapper documentation! This documentation will cover all of the functionalities of this wrapper with lots of example codes. To personalise these codes you can add your own tokens to this documentation on the main page (click on the logo in the top left corner to go back). This way every code example where the tokens are required will contain your own tokens.\n\nThe wrapper's main purpose is to provide a simple solution to fetch data from IGDB's database using PHP. The wrapper contains endpoint methods for every IGDB API endpoints and even more!\n\nTo have access to IGDB's database you have to register a Twitch Account and have your own client_id and access_token. Refer to the Account Creation and Authentication sections of the IGDB API Documentation for details.","markdown":"Welcome to the IGDB Wrapper documentation! This documentation will cover all of the functionalities of this wrapper with lots of example codes. To personalise these codes you can add your own tokens to this documentation on the main page (click on the logo in the top left corner to go back). This way every code example where the tokens are required will contain your own tokens.\n\nThe wrapper's main purpose is to provide a simple solution to fetch data from IGDB's database using PHP. The wrapper contains endpoint methods for every IGDB API endpoints and even more!\n\nTo have access to IGDB's database you have to register a Twitch Account and have your own `client_id` and `access_token`. Refer to the [Account Creation](https://api-docs.igdb.com/#account-creation) and [Authentication](https://api-docs.igdb.com/#authentication) sections of the [IGDB API Documentation](https://api-docs.igdb.com/) for details.","html":"

Welcome to the IGDB Wrapper documentation! This documentation will cover all of the functionalities of this wrapper with lots of example codes. To personalise these codes you can add your own tokens to this documentation on the main page (click on the logo in the top left corner to go back). This way every code example where the tokens are required will contain your own tokens.

\n

The wrapper's main purpose is to provide a simple solution to fetch data from IGDB's database using PHP. The wrapper contains endpoint methods for every IGDB API endpoints and even more!

\n

To have access to IGDB's database you have to register a Twitch Account and have your own client_id and access_token. Refer to the Account Creation and Authentication sections of the IGDB API Documentation for details.

"},"icon":"fa-map-signs","overview":"A few thoughts about the project and the documentation. Setting up your project.","meta":{"revision":0,"created":1699573929862,"version":0},"$loki":1},{"id":"c6880d4","slug":"using-the-documentation","level":2,"parent":"647454e","parents":["647454e"],"title":"Using the documentation","date":null,"timestamp":null,"body":{"stripped":"The documentation contains a lot of copy-paste example codes. In most cases, the code snippets contains the instantiation of the IGDB class. The constructor of this class will require you to pass your client_id and access_token. If you would like to have example codes with your personal tokens you can provide these on the front page of the documentation. To get back to the main page, just click the logo on the top left corner.\n\nClick the link on the homescreen to set your tokens\n\nClicking the link will open the window where you can see additional information about this feature and two fields where you can store your tokens.\n\nThe window where the tokens can be stored\n\nIf you chose to save the tokens these will be stored only in your browser locally! If the tokens are not saved the data will be erased when your browser is closed.\n\nAfter your tokens are set the example codes will contain your tokens which are ready to copy.\n\nThe tokens are set in the example code\n\nIf you want to delete your tokens you can click the Delete the tokens button anytime.","markdown":"The documentation contains a lot of copy-paste example codes. In most cases, the code snippets contains the instantiation of the `IGDB` class. The constructor of this class will require you to pass your `client_id` and `access_token`. If you would like to have example codes with your personal tokens you can provide these on the front page of the documentation. To get back to the main page, just click the logo on the top left corner.\n\n![Click the link on the homescreen to set your tokens](images/set-token-link.png)\n\nClicking the link will open the window where you can see additional information about this feature and two fields where you can store your tokens.\n\n![The window where the tokens can be stored](images/set-token-dialog.png)\n\n> If you chose to save the tokens these will be stored only in your browser locally! If the tokens are not saved the data will be erased when your browser is closed.\n\nAfter your tokens are set the example codes will contain your tokens which are ready to copy.\n\n![The tokens are set in the example code](images/example-code-with-token.png)\n\nIf you want to delete your tokens you can click the Delete the tokens button anytime.","html":"

The documentation contains a lot of copy-paste example codes. In most cases, the code snippets contains the instantiation of the IGDB class. The constructor of this class will require you to pass your client_id and access_token. If you would like to have example codes with your personal tokens you can provide these on the front page of the documentation. To get back to the main page, just click the logo on the top left corner.

\n

\"Click

\n

Clicking the link will open the window where you can see additional information about this feature and two fields where you can store your tokens.

\n

\"The

\n
\n

If you chose to save the tokens these will be stored only in your browser locally! If the tokens are not saved the data will be erased when your browser is closed.

\n
\n

After your tokens are set the example codes will contain your tokens which are ready to copy.

\n

\"The

\n

If you want to delete your tokens you can click the Delete the tokens button anytime.

"},"meta":{"revision":0,"created":1699573929862,"version":0},"$loki":2},{"id":"2ec46b5","slug":"setting-up-your-project","level":2,"parent":"647454e","parents":["647454e"],"title":"Setting up your project","date":null,"timestamp":null,"body":{"stripped":"The project has multiple PHP files which are in the src folder of the repository:\n\nIGDB.php: the IGDB wrapper itself\n\nIGDBEndpointException.php: an exception thrown by the IGDB wrapper endpoint methods\n\nIGDBInvalidParameterException.php: an exception thrown by the Query Builder configuring methods\n\nIGDBQueryBuilder.php: the Query Builder\n\nIGDBUtil.php: utility and helper methods\n\nThese files can be imported one-by-one but it is highly recommended to import the class.igdb.php file which handles all the imports for you.\n\n\n\nAfter the import, you are ready to use the wrapper.\n\n:warning If you decide to import the files separately, make sure to check the source code since the exception classes are imported in the respective files where they are needed with hardcoded paths. The files has to be in the same folder to make it work!","markdown":"The project has multiple PHP files which are in the `src` folder of the repository:\n - **IGDB.php**: the IGDB wrapper itself\n - **IGDBEndpointException.php**: an exception thrown by the IGDB wrapper endpoint methods\n - **IGDBInvalidParameterException.php**: an exception thrown by the Query Builder configuring methods\n - **IGDBQueryBuilder.php**: the Query Builder\n - **IGDBUtil.php**: utility and helper methods\n\nThese files can be imported one-by-one but it is highly recommended to import the `class.igdb.php` file which handles all the imports for you.\n\n```php\n\n```\n\nAfter the import, you are ready to use the wrapper.\n\n>:warning If you decide to import the files separately, make sure to check the source code since the exception classes are imported in the respective files where they are needed with hardcoded paths. The files has to be in the same folder to make it work!","html":"

The project has multiple PHP files which are in the src folder of the repository:

\n
    \n
  • IGDB.php: the IGDB wrapper itself
  • \n
  • IGDBEndpointException.php: an exception thrown by the IGDB wrapper endpoint methods
  • \n
  • IGDBInvalidParameterException.php: an exception thrown by the Query Builder configuring methods
  • \n
  • IGDBQueryBuilder.php: the Query Builder
  • \n
  • IGDBUtil.php: utility and helper methods
  • \n
\n

These files can be imported one-by-one but it is highly recommended to import the class.igdb.php file which handles all the imports for you.

\n
<?php\n\n    require_once \"class.igdb.php\";\n\n?>\n
\n

After the import, you are ready to use the wrapper.

\n
\n

:warning If you decide to import the files separately, make sure to check the source code since the exception classes are imported in the respective files where they are needed with hardcoded paths. The files has to be in the same folder to make it work!

\n
"},"meta":{"revision":0,"created":1699573929863,"version":0},"$loki":3},{"id":"a1abe44","slug":"instantiating-the-wrapper","level":2,"parent":"647454e","parents":["647454e"],"title":"Instantiating the wrapper","date":null,"timestamp":null,"body":{"stripped":"The wrapper will need your client_id and generated access_token.\n\n\n\nThe wrapper itself does not validate your tokens. If your credentials are invalid you will get an IGDBEndpointException from the endpoint methods when you are sending your queries.","markdown":"The wrapper will need your `client_id` and [generated](https://api-docs.igdb.com/#authentication) `access_token`.\n\n```php\n\n```\n\n> The wrapper itself does not validate your tokens. If your credentials are invalid you will get an `IGDBEndpointException` from the [endpoint methods](#endpoints) when you are sending your queries.","html":"

The wrapper will need your client_id and generated access_token.

\n
<?php\n\n    require_once \"class.igdb.php\";\n\n    $igdb = new IGDB(\"{client_id}\", \"{access_token}\");\n\n?>\n
\n
\n

The wrapper itself does not validate your tokens. If your credentials are invalid you will get an IGDBEndpointException from the endpoint methods when you are sending your queries.

\n
"},"meta":{"revision":0,"created":1699573929863,"version":0},"$loki":4},{"id":"0e8132a","slug":"building-queries","level":2,"parent":"647454e","parents":["647454e"],"title":"Building Queries","date":null,"timestamp":null,"body":{"stripped":"There is a helper class to build apicalypse queries called IGDBQueryBuilder. With this class you can easily build parameterized queries.\n\n\n\nThe parameters in the above example are valid, so the $query variable will hold the valid apicalypse string.\n\n\n\nFor more details on the Query Builder refer to the IGDB Query Builder section of this documentation.","markdown":"There is a helper class to build apicalypse queries called [`IGDBQueryBuilder`](#igdb-query-builder). With this class you can easily build parameterized queries.\n\n```php\nsearch(\"uncharted 4\")\n ->fields(\"id, name\")\n ->limit(1)\n ->build();\n } catch (IGDBInvalidParameterException $e) {\n // Invalid argument passed to one of the methods\n echo $e->getMessage();\n }\n?>\n```\n\nThe parameters in the above example are valid, so the `$query` variable will hold the valid apicalypse string.\n\n```text\nfields id,name; search \"uncharted 4\"; limit 1;\n```\n\n> For more details on the Query Builder refer to the [IGDB Query Builder section](#igdb-query-builder) of this documentation.","html":"

There is a helper class to build apicalypse queries called IGDBQueryBuilder. With this class you can easily build parameterized queries.

\n
<?php\n\n    require_once \"class.igdb.php\";\n\n    $builder = new IGDBQueryBuilder();\n\n    try {\n        $query = $builder\n            ->search(\"uncharted 4\")\n            ->fields(\"id, name\")\n            ->limit(1)\n            ->build();\n    } catch (IGDBInvalidParameterException $e) {\n        // Invalid argument passed to one of the methods\n        echo $e->getMessage();\n    }\n?>\n
\n

The parameters in the above example are valid, so the $query variable will hold the valid apicalypse string.

\n
fields id,name; search \"uncharted 4\"; limit 1;\n
\n
\n

For more details on the Query Builder refer to the IGDB Query Builder section of this documentation.

\n
"},"meta":{"revision":0,"created":1699573929863,"version":0},"$loki":5},{"id":"5842ca1","slug":"sending-queries-to-igdb","level":2,"parent":"647454e","parents":["647454e"],"title":"Sending Queries to IGDB","date":null,"timestamp":null,"body":{"stripped":"When your $igdb object is created you can send your queries to the IGDB database right away. There are multiple endpoint methods which will allow you to fetch data from the respective IGDB Endpoint. These endpoint methods in the wrapper will accept apicalypse formatted query strings.\n\n\n\nSince the query is valid we have the $result array containing our matched records.\n\n\n\nFor more details on the IGDB Wrapper refer to the IGDB Wrapper section of this documentation.","markdown":"When your `$igdb` object is created you can send your queries to the IGDB database right away. There are multiple [endpoint methods](#endpoints) which will allow you to fetch data from the respective [IGDB Endpoint](https://api-docs.igdb.com/#endpoints). These endpoint methods in the wrapper will accept [apicalypse](https://api-docs.igdb.com/#apicalypse-1) formatted query strings.\n\n```php\ngame('search \"uncharted 4\"; fields id,name; limit 1;');\n } catch (IGDBEndpointException $e) {\n // Something went wrong, we have an error\n echo $e->getMessage();\n }\n\n?>\n```\n\nSince the query is valid we have the `$result` array containing our matched records.\n\n```text\narray (size=1)\n 0 =>\n object(stdClass)[2]\n public 'id' => int 7331\n public 'name' => string 'Uncharted 4: A Thief's End' (length=26)\n```\n\n> For more details on the IGDB Wrapper refer to the [IGDB Wrapper section](#igdb-wrapper) of this documentation.","html":"

When your $igdb object is created you can send your queries to the IGDB database right away. There are multiple endpoint methods which will allow you to fetch data from the respective IGDB Endpoint. These endpoint methods in the wrapper will accept apicalypse formatted query strings.

\n
<?php\n\n    require_once \"class.igdb.php\";\n\n    $igdb = new IGDB(\"{client_id}\", \"{access_token}\");\n\n    try {\n        $result = $igdb->game('search \"uncharted 4\"; fields id,name; limit 1;');\n    } catch (IGDBEndpointException $e) {\n        // Something went wrong, we have an error\n        echo $e->getMessage();\n    }\n\n?>\n
\n

Since the query is valid we have the $result array containing our matched records.

\n
array (size=1)\n  0 =>\n    object(stdClass)[2]\n      public 'id' => int 7331\n      public 'name' => string 'Uncharted 4: A Thief's End' (length=26)\n
\n
\n

For more details on the IGDB Wrapper refer to the IGDB Wrapper section of this documentation.

\n
"},"meta":{"revision":0,"created":1699573929863,"version":0},"$loki":6},{"id":"bf08719","slug":"handling-errors","level":2,"parent":"647454e","parents":["647454e"],"title":"Handling errors","date":null,"timestamp":null,"body":{"stripped":"There are two main type of errors which could occur when using the wrapper:\n\n\"local\" errors: when using the Query Builder to build your queries you may pass invalid parameters to the configuring methods. These methods could throw IGDBInvalidParameterException if an invalid parameter or invalid type of parameter is passed. Head to the Handling Builder Errors section to find out more.\n\n\"remote\" errors: when a query is sent to the IGDB API, but for some reason the query fails. This happens only, when a non-successful response code is recieved from the API. In this case the endpoint methods will throw an IGDBEndpointException. Head to the Handling Request Errors section to find out more.","markdown":"There are two main type of errors which could occur when using the wrapper:\n - **\"local\" errors**: when using the [Query Builder](#igdb-query-builder) to build your queries you may pass invalid parameters to the [configuring methods](#configuring-methods). These methods could throw `IGDBInvalidParameterException` if an invalid parameter or invalid type of parameter is passed. Head to the [Handling Builder Errors](#handling-builder-errors) section to find out more.\n\n - **\"remote\" errors**: when a query is sent to the IGDB API, but for some reason the query fails. This happens only, when a non-successful response code is recieved from the API. In this case the [endpoint methods](#endpoints) will throw an `IGDBEndpointException`. Head to the [Handling Request Errors](#handling-request-errors) section to find out more.","html":"

There are two main type of errors which could occur when using the wrapper:

\n
    \n
  • \n

    \"local\" errors: when using the Query Builder to build your queries you may pass invalid parameters to the configuring methods. These methods could throw IGDBInvalidParameterException if an invalid parameter or invalid type of parameter is passed. Head to the Handling Builder Errors section to find out more.

    \n
  • \n
  • \n

    \"remote\" errors: when a query is sent to the IGDB API, but for some reason the query fails. This happens only, when a non-successful response code is recieved from the API. In this case the endpoint methods will throw an IGDBEndpointException. Head to the Handling Request Errors section to find out more.

    \n
  • \n
"},"meta":{"revision":0,"created":1699573929863,"version":0},"$loki":7},{"id":"1bc2dc4","slug":"igdb-query-builder","level":1,"parent":null,"parents":[],"title":"IGDB Query Builder","date":null,"timestamp":1650388071000,"body":{"stripped":"This class is a helper class to help you construct your queries. If you have used this wrapper's eariler versions you were able to send queries by passing an $options array directly to the endpoint methods. This possibility got removed and these endpoint methods are accepting only apicalypse formatted query strings.\n\n:tip Using the Builder class is optional as you can pass your own queries to the endpoint methods.","markdown":"This class is a helper class to help you construct your queries. If you have used this wrapper's eariler versions you were able to send queries by passing an `$options` array directly to the endpoint methods. This possibility got removed and these endpoint methods are accepting only [apicalypse](https://api-docs.igdb.com/#apicalypse-1) formatted query strings.\n\n>:tip Using the Builder class is optional as you can pass your own queries to the endpoint methods.","html":"

This class is a helper class to help you construct your queries. If you have used this wrapper's eariler versions you were able to send queries by passing an $options array directly to the endpoint methods. This possibility got removed and these endpoint methods are accepting only apicalypse formatted query strings.

\n
\n

:tip Using the Builder class is optional as you can pass your own queries to the endpoint methods.

\n
"},"icon":"fa-hammer","overview":"Everything about the Query Builder. Configuring and building your queries.","meta":{"revision":0,"created":1699573929863,"version":0},"$loki":8},{"id":"b249413","slug":"instantiating-the-builder","level":2,"parent":"1bc2dc4","parents":["1bc2dc4"],"title":"Instantiating the Builder","date":null,"timestamp":null,"body":{"stripped":"To instantiate the Builder simply use the new keyword.\n\n\n\nNow the $builder object will expose every configuring methods to set up your query before building it.","markdown":"To instantiate the Builder simply use the `new` keyword.\n\n```php\n\n```\n\nNow the `$builder` object will expose every configuring methods to set up your query before [building it](#building-the-query).","html":"

To instantiate the Builder simply use the new keyword.

\n
<?php\n\n    require_once \"class.igdb.php\";\n\n    $builer = new IGDBQueryBuiler();\n\n?>\n
\n

Now the $builder object will expose every configuring methods to set up your query before building it.

"},"meta":{"revision":0,"created":1699573929863,"version":0},"$loki":9},{"id":"3da3bbd","slug":"configuring-the-builder","level":2,"parent":"1bc2dc4","parents":["1bc2dc4"],"title":"Configuring the Builder","date":null,"timestamp":null,"body":{"stripped":"There are two ways to configure the builder.","markdown":"There are two ways to configure the builder.","html":"

There are two ways to configure the builder.

"},"meta":{"revision":0,"created":1699573929863,"version":0},"$loki":10},{"id":"6488c7b","slug":"builder-approach","level":3,"parent":"1bc2dc4","parents":["1bc2dc4","3da3bbd"],"title":"Builder approach","date":null,"timestamp":null,"body":{"stripped":"The Builder is using a builder pattern to configure itself with the configuring methods before parsing the properties to a query string. When every parameter is set, calling the build() method will start processing the parameters and will return the query string itself.\n\n:warning When using the builder approach, you must enclose your configuring methods in try...catch blocks. Read more on this in the Handling Builder Errors section.","markdown":"The Builder is using a builder pattern to configure itself with the [configuring methods](#configuring-methods) before parsing the properties to a query string. When every parameter is set, calling the [`build()`](#building-the-query) method will start processing the parameters and will return the query string itself.\n\n>:warning When using the builder approach, you must enclose your configuring methods in try...catch blocks. Read more on this in the [Handling Builder Errors](#handling-builder-errors) section.\n\n```php\nsearch(\"uncharted 4\")\n ->fields(\"id, name\")\n ->limit(1)\n // make sure to call the build method to parse the query string\n ->build();\n } catch (IGDBInvaliParameterException $e) {\n // invalid value passed to a method\n echo $e->getMessage();\n }\n\n?>\n```","html":"

The Builder is using a builder pattern to configure itself with the configuring methods before parsing the properties to a query string. When every parameter is set, calling the build() method will start processing the parameters and will return the query string itself.

\n
\n

:warning When using the builder approach, you must enclose your configuring methods in try...catch blocks. Read more on this in the Handling Builder Errors section.

\n
\n
<?php\n\n    require_once \"class.igdb.php\";\n\n    $builder = new IGDBQueryBuilder();\n\n    try {\n        $query = $builder\n            ->search(\"uncharted 4\")\n            ->fields(\"id, name\")\n            ->limit(1)\n             // make sure to call the build method to parse the query string\n            ->build();\n    } catch (IGDBInvaliParameterException $e) {\n        // invalid value passed to a method\n        echo $e->getMessage();\n    }\n\n?>\n
"},"meta":{"revision":0,"created":1699573929863,"version":0},"$loki":11},{"id":"0364192","slug":"traditional-approach","level":3,"parent":"1bc2dc4","parents":["1bc2dc4","3da3bbd"],"title":"Traditional approach","date":null,"timestamp":null,"body":{"stripped":"To support the traditional approach of configuring the queries - the $options array - there is a method called options(). Passing your $options array to this method will process your parameters and will set up the builder.\n\n:warning Using the Builder this way is not recommended as this functionality may will be removed in future versions. Use the builder approach instead.","markdown":"To support the traditional approach of configuring the queries - the `$options` array - there is a method called [`options()`](#options). Passing your `$options` array to this method will process your parameters and will set up the builder.\n\n>:warning Using the Builder this way is not recommended as this functionality may will be removed in future versions. Use the [builder approach](#builder-approach) instead.\n\n```php\n \"uncharted 4\",\n \"fields\" => \"id,name\",\n \"limit\" => 1\n );\n\n try {\n // pass your $options to the options method\n // then build the query\n $query = $builder->options($options)->build();\n } catch (IGDBInvaliParameterException $e) {\n // invalid key or value found in the $options array\n echo $e->getMessage();\n }\n\n?>\n```","html":"

To support the traditional approach of configuring the queries - the $options array - there is a method called options(). Passing your $options array to this method will process your parameters and will set up the builder.

\n
\n

:warning Using the Builder this way is not recommended as this functionality may will be removed in future versions. Use the builder approach instead.

\n
\n
<?php\n\n    require_once \"class.igdb.php\";\n\n    $builder = new IGDBQueryBuilder();\n\n    $options = array(\n        \"search\" => \"uncharted 4\",\n        \"fields\" => \"id,name\",\n        \"limit\" => 1\n    );\n\n    try {\n        // pass your $options to the options method\n        // then build the query\n        $query = $builder->options($options)->build();\n    } catch (IGDBInvaliParameterException $e) {\n        // invalid key or value found in the $options array\n        echo $e->getMessage();\n    }\n\n?>\n
"},"meta":{"revision":0,"created":1699573929863,"version":0},"$loki":12},{"id":"36c9e8f","slug":"handling-builder-errors","level":2,"parent":"1bc2dc4","parents":["1bc2dc4"],"title":"Handling Builder Errors","date":null,"timestamp":null,"body":{"stripped":"When an invalid parameter is passed to any of the configuring methods, an IGDBInvaliParameterException is thrown. To properly handle these errors, at least the configuring methods should be enclosed in a try...catch block. Calling the getMessage() method of the exception object will return the error message.\n\n\n\nThe script above will produce this output:\n\n\n\nIt is important to keep in mind, that this validation is happening \"locally\" on your server. The query builder can only validate the type of variables you pass, or it can validate against a list of predefined values that the API expects. For example, if the example above is altered like this:\n\n\n\nThe builder will not throw an exception as the method got a string, which is valid. The output of the script will be:\n\n\n\nThe field nonexistingfield does not exist on the game endpoint which will cause an error on the IGDB API. These errors has to be handled separately. Read more on this in the Handling Request Errors section.","markdown":"When an invalid parameter is passed to any of the [configuring methods](#configuring-methods), an `IGDBInvaliParameterException` is thrown. To properly handle these errors, at least the configuring methods should be enclosed in a try...catch block. Calling the `getMessage()` method of the exception object will return the error message.\n\n```php\nsearch(\"uncharted\")\n // passing an integer to the fields parameter is invalid\n // as this methods expects a string or an array of strings\n ->fields(1)\n ->build();\n\n echo $query;\n } catch (IGDBInvalidParameterException $e) {\n // catching the exception, printing the error message\n echo $e->getMessage();\n }\n\n?>\n```\n\nThe script above will produce this output:\n\n```text\nInvalid type of parameter for fields! String or array of strings are expected, integer passed!\n```\n\nIt is important to keep in mind, that this validation is happening \"locally\" on your server. The query builder can only validate the type of variables you pass, or it can validate against a list of predefined values that the API expects. For example, if the example above is altered like this:\n\n```php\nsearch(\"uncharted\")\n // passing a field name that doesnt exist on the game endpoint\n ->fields(\"nonexistingfield\")\n ->build();\n\n // no exception thrown, printing the query string\n echo $query;\n } catch (IGDBInvalidParameterException $e) {\n echo $e->getMessage();\n }\n\n?>\n```\n\nThe builder will not throw an exception as the method got a string, which is valid. The output of the script will be:\n\n```text\nfields nonexistingfield; search \"uncharted\";\n```\n\nThe field `nonexistingfield` does not exist on the `game` endpoint which will cause an error on the IGDB API. These errors has to be handled separately. Read more on this in the [Handling Request Errors](#handling-request-errors) section.","html":"

When an invalid parameter is passed to any of the configuring methods, an IGDBInvaliParameterException is thrown. To properly handle these errors, at least the configuring methods should be enclosed in a try...catch block. Calling the getMessage() method of the exception object will return the error message.

\n
<?php\n\n    $builder = new IGDBQueryBuilder();\n\n    try {\n        $query = $builder\n            ->search(\"uncharted\")\n            // passing an integer to the fields parameter is invalid\n            // as this methods expects a string or an array of strings\n            ->fields(1)\n            ->build();\n\n        echo $query;\n    } catch (IGDBInvalidParameterException $e) {\n        // catching the exception, printing the error message\n        echo $e->getMessage();\n    }\n\n?>\n
\n

The script above will produce this output:

\n
Invalid type of parameter for fields! String or array of strings are expected, integer passed!\n
\n

It is important to keep in mind, that this validation is happening \"locally\" on your server. The query builder can only validate the type of variables you pass, or it can validate against a list of predefined values that the API expects. For example, if the example above is altered like this:

\n
<?php\n\n    $builder = new IGDBQueryBuilder();\n\n    try {\n        $query = $builder\n            ->search(\"uncharted\")\n            // passing a field name that doesnt exist on the game endpoint\n            ->fields(\"nonexistingfield\")\n            ->build();\n\n        // no exception thrown, printing the query string\n        echo $query;\n    } catch (IGDBInvalidParameterException $e) {\n        echo $e->getMessage();\n    }\n\n?>\n
\n

The builder will not throw an exception as the method got a string, which is valid. The output of the script will be:

\n
fields nonexistingfield; search \"uncharted\";\n
\n

The field nonexistingfield does not exist on the game endpoint which will cause an error on the IGDB API. These errors has to be handled separately. Read more on this in the Handling Request Errors section.

"},"meta":{"revision":0,"created":1699573929863,"version":0},"$loki":13},{"id":"502391f","slug":"configuring-methods","level":2,"parent":"1bc2dc4","parents":["1bc2dc4"],"title":"Configuring Methods","date":null,"timestamp":null,"body":{"stripped":"The Builder class has its own configuring methods to set the parameters before building the query string. If any of these methods recieves an invalid argument they will throw an IGDBInvalidArgumentException. Make sure to set these parameters in a try...catch block.","markdown":"The Builder class has its own configuring methods to set the parameters before building the query string. If any of these methods recieves an invalid argument they will throw an `IGDBInvalidArgumentException`. Make sure to set these parameters in a try...catch block.","html":"

The Builder class has its own configuring methods to set the parameters before building the query string. If any of these methods recieves an invalid argument they will throw an IGDBInvalidArgumentException. Make sure to set these parameters in a try...catch block.

"},"meta":{"revision":0,"created":1699573929863,"version":0},"$loki":14},{"id":"62d1440","slug":"count","level":3,"parent":"1bc2dc4","parents":["1bc2dc4","502391f"],"title":"Count","date":null,"timestamp":null,"body":{"stripped":"This method will accept a boolean value. This parameter is processed in case of a multiquery build only. If this value is true the response from IGDB will contain the number of records matching the filters. If false the records will be returned.\n\nIf the method is called without parameters, the value will be set to true.\n\nDefault value: by default this value is false, the queries will return the records instead of their count.\n\nParameters:\n\n$count: true if a record count is required, false otherwise.\n\nReturns: IGDBQueryBuilder instance\n\n\n\nThe value of $query:","markdown":"```php\npublic function count(boolean $count = true) throws IGDBInvalidArgumentException: IGDBQueryBuilder\n```\n\nThis method will accept a boolean value. This parameter is processed **in case of a multiquery build only**. If this value is `true` the response from IGDB will contain the number of records matching the filters. If `false` the records will be returned.\n\n> If the method is called without parameters, the value will be set to `true`.\n\n**Default value**: by default this value is `false`, the queries will return the records instead of their count.\n\n**Parameters**:\n - `$count`: `true` if a record count is required, `false` otherwise.\n\n**Returns**: `IGDBQueryBuilder` instance\n\n```php\nname(\"Number of games\")\n ->endpoint(\"game\")\n // the default value of count is false\n // to retrieve the count of the matched records, set it to true\n // ->count(true) has the same result\n ->count();\n\n // if you wish to remove the count parameter for any reason later on\n // you can call the count method with a false parameter\n // ->count(false)\n\n // building the query\n $query = $builder->build(true);\n } catch (IGDBInvaliParameterException $e) {\n // invalid key or value found in the $options array\n echo $e->getMessage();\n }\n\n?>\n```\n\nThe value of `$query`:\n\n```text\nquery games/count \"Number of games\" {\n fields *;\n};\n```","html":"
public function count(boolean $count = true) throws IGDBInvalidArgumentException: IGDBQueryBuilder\n
\n

This method will accept a boolean value. This parameter is processed in case of a multiquery build only. If this value is true the response from IGDB will contain the number of records matching the filters. If false the records will be returned.

\n
\n

If the method is called without parameters, the value will be set to true.

\n
\n

Default value: by default this value is false, the queries will return the records instead of their count.

\n

Parameters:

\n
    \n
  • $count: true if a record count is required, false otherwise.
  • \n
\n

Returns: IGDBQueryBuilder instance

\n
<?php\n\n    // importing the wrapper\n    require_once \"class.igdb.php\";\n\n    // instantiate the query builder\n    $builder = new IGDBQueryBuilder();\n\n    try {\n        // Configuring the query\n        $builder\n            ->name(\"Number of games\")\n            ->endpoint(\"game\")\n            // the default value of count is false\n            // to retrieve the count of the matched records, set it to true\n            // ->count(true) has the same result\n            ->count();\n\n            // if you wish to remove the count parameter for any reason later on\n            // you can call the count method with a false parameter\n            // ->count(false)\n\n        // building the query\n        $query = $builder->build(true);\n    } catch (IGDBInvaliParameterException $e) {\n        // invalid key or value found in the $options array\n        echo $e->getMessage();\n    }\n\n?>\n
\n

The value of $query:

\n
query games/count \"Number of games\" {\n  fields *;\n};\n
"},"meta":{"revision":0,"created":1699573929863,"version":0},"$loki":15},{"id":"81d2aed","slug":"custom-where","level":3,"parent":"1bc2dc4","parents":["1bc2dc4","502391f"],"title":"Custom Where","date":null,"timestamp":null,"body":{"stripped":"This method will add a where statement to your query, but will not validate your input or throw any exceptions.\n\nParameters:\n\n$custom_where: an apicalypse string with a custom where statement\n\nReturns: IGDBQueryBuilder instance","markdown":"```php\npublic function custom_where(string $custom_where): IGDBQueryBuilder\n```\n\nThis method will add a [where statement](#where) to your query, but will not validate your input or throw any exceptions.\n\n**Parameters**:\n - `$custom_where`: an apicalypse string with a custom where statement\n\n**Returns**: `IGDBQueryBuilder` instance\n\n```php\n \"(platforms = [6,48] & genres = 13) | (platforms = [130,48] & genres = 12)\"\n );\n\n // builder approach\n $builder->custom_where(\"(platforms = [6,48] & genres = 13) | (platforms = [130,48] & genres = 12)\");\n\n?>\n```","html":"
public function custom_where(string $custom_where): IGDBQueryBuilder\n
\n

This method will add a where statement to your query, but will not validate your input or throw any exceptions.

\n

Parameters:

\n
    \n
  • $custom_where: an apicalypse string with a custom where statement
  • \n
\n

Returns: IGDBQueryBuilder instance

\n
<?php\n\n    // traditional approach\n    $options = array(\n        \"custom_where\" => \"(platforms = [6,48] & genres = 13) | (platforms = [130,48] & genres = 12)\"\n    );\n\n    // builder approach\n    $builder->custom_where(\"(platforms = [6,48] & genres = 13) | (platforms = [130,48] & genres = 12)\");\n\n?>\n
"},"meta":{"revision":0,"created":1699573929863,"version":0},"$loki":16},{"id":"8bff07a","slug":"endpoint","level":3,"parent":"1bc2dc4","parents":["1bc2dc4","502391f"],"title":"Endpoint","date":null,"timestamp":null,"body":{"stripped":"This method will set the endpoint to send your multiquery against. This parameter is processed in case of a multiquery build only. When setting this value make sure to use the name of the endpoint instead of it's request path. (for example game instead of games and so on).\n\n:warning In case of a multiquery build this parameter is mandatory! If this is missing from the configuration the build will throw an IGDBInvalidParameterException! Refer to the build method for details.\n\nParameters:\n\n$endpoint: the name of the endpoint to send the query against. Make sure to use the name of the endpoint instead of it's request path! The list of endpoints for this parameter:\n\nage_rating\n\nalternative_name\n\nartwork\n\ncharacter_mug_shot\n\ncharacter\n\ncollection\n\ncompany_logo\n\ncompany_website\n\ncompany\n\ncover\n\nexternal_game\n\nfranchise\n\ngame_engine_logo\n\ngame_engine\n\ngame_mode\n\ngame_version_feature_value\n\ngame_version_feature\n\ngame_version\n\ngame_video\n\ngame\n\ngenre\n\ninvolved_company\n\nkeyword\n\nmultiplayer_mode\n\nmultiquery\n\nplatform_family\n\nplatform_logo\n\nplatform_version_company\n\nplatform_version_release_date\n\nplatform_version\n\nplatform_website\n\nplatform\n\nplayer_perspective\n\nrelease_date\n\nscreenshot\n\nsearch\n\ntheme\n\nwebsite\n\nReturns: IGDBQueryBuilder instance\n\n\n\nThe value of $query:","markdown":"```php\npublic function endpoint(string $endpoint) throws IGDBInvalidArgumentException: IGDBQueryBuilder\n```\n\nThis method will set the endpoint to send your **multiquery** against. This parameter is processed **in case of a multiquery build only**. When setting this value make sure to use the name of the endpoint instead of it's request path. (for example `game` instead of `games` and so on).\n\n>:warning In case of a multiquery build this parameter is mandatory! If this is missing from the configuration the build will throw an `IGDBInvalidParameterException`! Refer to the [build method](#building-the-query) for details.\n\n**Parameters**:\n - `$endpoint`: the name of the endpoint to send the query against. Make sure to use the name of the endpoint instead of it's request path! The list of endpoints for this parameter:\n - age_rating\n - alternative_name\n - artwork\n - character_mug_shot\n - character\n - collection\n - company_logo\n - company_website\n - company\n - cover\n - external_game\n - franchise\n - game_engine_logo\n - game_engine\n - game_mode\n - game_version_feature_value\n - game_version_feature\n - game_version\n - game_video\n - game\n - genre\n - involved_company\n - keyword\n - multiplayer_mode\n - multiquery\n - platform_family\n - platform_logo\n - platform_version_company\n - platform_version_release_date\n - platform_version\n - platform_website\n - platform\n - player_perspective\n - release_date\n - screenshot\n - search\n - theme\n - website\n\n**Returns**: `IGDBQueryBuilder` instance\n\n```php\nname(\"Game with ID of 25076\")\n ->endpoint(\"game\")\n ->fields(\"id,name\")\n ->where(\"id = 25076\");\n\n // building the query\n $query = $builder->build(true);\n } catch (IGDBInvaliParameterException $e) {\n // invalid key or value found in the $options array\n echo $e->getMessage();\n }\n\n?>\n```\n\nThe value of `$query`:\n\n```text\nquery games \"Game with ID 25076\" {\n fields id,name;\n where id = 25076;\n};\n```","html":"
public function endpoint(string $endpoint) throws IGDBInvalidArgumentException: IGDBQueryBuilder\n
\n

This method will set the endpoint to send your multiquery against. This parameter is processed in case of a multiquery build only. When setting this value make sure to use the name of the endpoint instead of it's request path. (for example game instead of games and so on).

\n
\n

:warning In case of a multiquery build this parameter is mandatory! If this is missing from the configuration the build will throw an IGDBInvalidParameterException! Refer to the build method for details.

\n
\n

Parameters:

\n
    \n
  • $endpoint: the name of the endpoint to send the query against. Make sure to use the name of the endpoint instead of it's request path! The list of endpoints for this parameter:\n
      \n
    • age_rating
    • \n
    • alternative_name
    • \n
    • artwork
    • \n
    • character_mug_shot
    • \n
    • character
    • \n
    • collection
    • \n
    • company_logo
    • \n
    • company_website
    • \n
    • company
    • \n
    • cover
    • \n
    • external_game
    • \n
    • franchise
    • \n
    • game_engine_logo
    • \n
    • game_engine
    • \n
    • game_mode
    • \n
    • game_version_feature_value
    • \n
    • game_version_feature
    • \n
    • game_version
    • \n
    • game_video
    • \n
    • game
    • \n
    • genre
    • \n
    • involved_company
    • \n
    • keyword
    • \n
    • multiplayer_mode
    • \n
    • multiquery
    • \n
    • platform_family
    • \n
    • platform_logo
    • \n
    • platform_version_company
    • \n
    • platform_version_release_date
    • \n
    • platform_version
    • \n
    • platform_website
    • \n
    • platform
    • \n
    • player_perspective
    • \n
    • release_date
    • \n
    • screenshot
    • \n
    • search
    • \n
    • theme
    • \n
    • website
    • \n
    \n
  • \n
\n

Returns: IGDBQueryBuilder instance

\n
<?php\n\n    // importing the wrapper\n    require_once \"class.igdb.php\";\n\n    // instantiate the query builder\n    $builder = new IGDBQueryBuilder();\n\n    try {\n        // configuring the query\n        $builder\n            ->name(\"Game with ID of 25076\")\n            ->endpoint(\"game\")\n            ->fields(\"id,name\")\n            ->where(\"id = 25076\");\n\n        // building the query\n        $query = $builder->build(true);\n    } catch (IGDBInvaliParameterException $e) {\n        // invalid key or value found in the $options array\n        echo $e->getMessage();\n    }\n\n?>\n
\n

The value of $query:

\n
query games \"Game with ID 25076\" {\n  fields id,name;\n  where id = 25076;\n};\n
"},"meta":{"revision":0,"created":1699573929863,"version":0},"$loki":17},{"id":"140e5d5","slug":"exclude","level":3,"parent":"1bc2dc4","parents":["1bc2dc4","502391f"],"title":"Exclude","date":null,"timestamp":null,"body":{"stripped":"Exclude is a complement to the regular fields which allows you to request all fields with the exception of any numbers of fields specified with exclude.\n\nParameters:\n\n$exclude: the list of the fields to exclude. This can be either a comma separated list of field names or an array of field names.\n\nReturns: IGDBQueryBuilder instance","markdown":"```php\npublic function exclude(string | array $exclude) throws IGDBInvalidArgumentException: IGDBQueryBuilder\n```\n\nExclude is a complement to the regular fields which allows you to request all fields with the exception of any numbers of fields specified with exclude.\n\n**Parameters**:\n - `$exclude`: the list of the fields to exclude. This can be either a comma separated list of field names or an array of field names.\n\n**Returns**: `IGDBQueryBuilder` instance\n\n```php\n \"name,slug\"\n );\n\n // traditional approach, as an array\n $options = array(\n \"exclude\" => array(\"name\", \"slug\")\n );\n\n // builder approach, as a string\n $builder->exclude(\"name,slug\");\n\n // builder approach, as an array\n $builder->exclude(array(\"name\", \"slug\"));\n\n?>\n```","html":"
public function exclude(string | array $exclude) throws IGDBInvalidArgumentException: IGDBQueryBuilder\n
\n

Exclude is a complement to the regular fields which allows you to request all fields with the exception of any numbers of fields specified with exclude.

\n

Parameters:

\n
    \n
  • $exclude: the list of the fields to exclude. This can be either a comma separated list of field names or an array of field names.
  • \n
\n

Returns: IGDBQueryBuilder instance

\n
<?php\n\n    // traditional approach, as a string\n    $options = array(\n        \"exclude\" => \"name,slug\"\n    );\n\n    // traditional approach, as an array\n    $options = array(\n        \"exclude\" => array(\"name\", \"slug\")\n    );\n\n    // builder approach, as a string\n    $builder->exclude(\"name,slug\");\n\n    // builder approach, as an array\n    $builder->exclude(array(\"name\", \"slug\"));\n\n?>\n
"},"meta":{"revision":0,"created":1699573929863,"version":0},"$loki":18},{"id":"3045e49","slug":"fields","level":3,"parent":"1bc2dc4","parents":["1bc2dc4","502391f"],"title":"Fields","date":null,"timestamp":null,"body":{"stripped":"You can tell which fields you want to get in the result with this parameter.\n\nFields are properties of an entity. For example, a Game field would be genres or release_dates. Some fields have properties of their own, for example, the genres field has the property name.\n\nDefault value: by default every field (\\*) will be requested from the endpoint.\n\nParameters:\n\n$fields: the list of the required fields. This can be either a comma separated list of field names, or an array of field names.\n\nReturns: IGDBQueryBuilder instance","markdown":"```php\npublic function fields(string | array $fields) throws IGDBInvalidArgumentException: IGDBQueryBuilder\n```\n\nYou can tell which fields you want to get in the result with this parameter.\n\nFields are properties of an entity. For example, a Game field would be genres or release_dates. Some fields have properties of their own, for example, the genres field has the property name.\n\n**Default value**: by default every field (`*`) will be requested from the endpoint.\n\n**Parameters**:\n - `$fields`: the list of the required fields. This can be either a comma separated list of field names, or an array of field names.\n\n**Returns**: `IGDBQueryBuilder` instance\n\n```php\n \"id,name\"\n );\n\n // traditional approach, as an array\n $options = array(\n \"fields\" => array(\"id\", \"name\")\n );\n\n // builder approach, as a string\n $builder->fields(\"id,name\");\n\n // builder approach, as an array\n $builder->fields(array(\"id\", \"name\"));\n\n?>\n```","html":"
public function fields(string | array $fields) throws IGDBInvalidArgumentException: IGDBQueryBuilder\n
\n

You can tell which fields you want to get in the result with this parameter.

\n

Fields are properties of an entity. For example, a Game field would be genres or release_dates. Some fields have properties of their own, for example, the genres field has the property name.

\n

Default value: by default every field (*) will be requested from the endpoint.

\n

Parameters:

\n
    \n
  • $fields: the list of the required fields. This can be either a comma separated list of field names, or an array of field names.
  • \n
\n

Returns: IGDBQueryBuilder instance

\n
<?php\n\n    // traditional approach, as a string\n    $options = array(\n        \"fields\" => \"id,name\"\n    );\n\n    // traditional approach, as an array\n    $options = array(\n        \"fields\" => array(\"id\", \"name\")\n    );\n\n    // builder approach, as a string\n    $builder->fields(\"id,name\");\n\n    // builder approach, as an array\n    $builder->fields(array(\"id\", \"name\"));\n\n?>\n
"},"meta":{"revision":0,"created":1699573929863,"version":0},"$loki":19},{"id":"4188856","slug":"id","level":3,"parent":"1bc2dc4","parents":["1bc2dc4","502391f"],"title":"ID","date":null,"timestamp":null,"body":{"stripped":"This is kind of a traditional thing. Since the IGDB team introduced the apicalypse query there is no separate ID field. This method simply adds a where statement to your query.\n\n\n\nParameters:\n\n$id: one (integer) or more (array of integers) record ID's.\n\nReturns: IGDBQueryBuilder instance","markdown":"```php\npublic function id(array | int $id) throws IGDBInvalidArgumentException: IGDBQueryBuilder\n```\n\nThis is kind of a traditional thing. Since the IGDB team introduced the apicalypse query there is no separate ID field. This method simply adds a [where](#where) statement to your query.\n\n```php\nid(1);\n // where id = 1;\n\n $builder->id(array(1,2,3));\n // where id = (1,2,3);\n\n?>\n```\n\n**Parameters**:\n - `$id`: one (integer) or more (array of integers) record ID's.\n\n**Returns**: `IGDBQueryBuilder` instance\n\n```php\n 1\n );\n\n // traditional approach, multiple id's\n $options = array(\n \"id\" => array(1,2,3)\n );\n\n // builder approach, single id\n $builder->id(1);\n\n // builder approach, multiple id's\n $builder->id(array(1,2,3));\n\n?>\n```","html":"
public function id(array | int $id) throws IGDBInvalidArgumentException: IGDBQueryBuilder\n
\n

This is kind of a traditional thing. Since the IGDB team introduced the apicalypse query there is no separate ID field. This method simply adds a where statement to your query.

\n
<?php\n\n    $builder->id(1);\n    // where id = 1;\n\n    $builder->id(array(1,2,3));\n    // where id = (1,2,3);\n\n?>\n
\n

Parameters:

\n
    \n
  • $id: one (integer) or more (array of integers) record ID's.
  • \n
\n

Returns: IGDBQueryBuilder instance

\n
<?php\n\n    // traditional approach, single id\n    $options = array(\n        \"id\" => 1\n    );\n\n    // traditional approach, multiple id's\n    $options = array(\n        \"id\" => array(1,2,3)\n    );\n\n    // builder approach, single id\n    $builder->id(1);\n\n    // builder approach, multiple id's\n    $builder->id(array(1,2,3));\n\n?>\n
"},"meta":{"revision":0,"created":1699573929863,"version":0},"$loki":20},{"id":"16826a6","slug":"limit","level":3,"parent":"1bc2dc4","parents":["1bc2dc4","502391f"],"title":"Limit","date":null,"timestamp":null,"body":{"stripped":"The maximum number of results in a single query. This value must be a number between 1 and 500.\n\nDefault value: by default the IGDB API will return 10 results.\n\nParameters:\n\n$limit: a number between 1 and 500\n\nReturns: IGDBQueryBuilder instance","markdown":"```php\npublic function limit(int $limit) throws IGDBInvalidArgumentException: IGDBQueryBuilder\n```\n\nThe maximum number of results in a single query. This value must be a number between `1` and `500`.\n\n**Default value**: by default the IGDB API will return `10` results.\n\n**Parameters**:\n - `$limit`: a number between 1 and 500\n\n**Returns**: `IGDBQueryBuilder` instance\n\n```php\n array(\n \"limit\" => 20\n );\n\n // builder approach\n $builder->limit(20);\n\n?>\n```","html":"
public function limit(int $limit) throws IGDBInvalidArgumentException: IGDBQueryBuilder\n
\n

The maximum number of results in a single query. This value must be a number between 1 and 500.

\n

Default value: by default the IGDB API will return 10 results.

\n

Parameters:

\n
    \n
  • $limit: a number between 1 and 500
  • \n
\n

Returns: IGDBQueryBuilder instance

\n
<?php\n\n    // traditional approach\n    $options => array(\n        \"limit\" => 20\n    );\n\n    // builder approach\n    $builder->limit(20);\n\n?>\n
"},"meta":{"revision":0,"created":1699573929863,"version":0},"$loki":21},{"id":"d3a8245","slug":"name","level":3,"parent":"1bc2dc4","parents":["1bc2dc4","502391f"],"title":"Name","date":null,"timestamp":null,"body":{"stripped":"This method will set a name for the query. This parameter is processed in case of a multiquery build only.\n\n:warning In case of a multiquery build this parameter is mandatory! If this is missing from the configuration the build will throw an IGDBInvalidParameterException! Refer to the build method for details.\n\nParameters:\n\n$name: the name of the query\n\nReturns: IGDBQueryBuilder instance\n\n\n\nThe value of $query:","markdown":"```php\npublic function name(string $name) throws IGDBInvalidArgumentException: IGDBQueryBuilder\n```\n\nThis method will set a name for the query. This parameter is processed **in case of a multiquery build only**.\n\n>:warning In case of a multiquery build this parameter is **mandatory**! If this is missing from the configuration the build will throw an `IGDBInvalidParameterException`! Refer to the [build method](#building-the-query) for details.\n\n**Parameters**:\n - `$name`: the name of the query\n\n**Returns**: `IGDBQueryBuilder` instance\n\n```php\nname(\"Game with ID of 25076\")\n ->endpoint(\"game\")\n ->fields(\"id,name\")\n ->where(\"id = 25076\");\n\n // building the query\n $query = $builder->build(true);\n } catch (IGDBInvaliParameterException $e) {\n // invalid key or value found in the $options array\n echo $e->getMessage();\n }\n\n?>\n```\n\nThe value of `$query`:\n\n```text\nquery games \"Game with ID 25076\" {\n fields id,name;\n where id = 25076;\n};\n```","html":"
public function name(string $name) throws IGDBInvalidArgumentException: IGDBQueryBuilder\n
\n

This method will set a name for the query. This parameter is processed in case of a multiquery build only.

\n
\n

:warning In case of a multiquery build this parameter is mandatory! If this is missing from the configuration the build will throw an IGDBInvalidParameterException! Refer to the build method for details.

\n
\n

Parameters:

\n
    \n
  • $name: the name of the query
  • \n
\n

Returns: IGDBQueryBuilder instance

\n
<?php\n\n    // importing the wrapper\n    require_once \"class.igdb.php\";\n\n    // instantiate the query builder\n    $builder = new IGDBQueryBuilder();\n\n    try {\n        // configuring the query\n        $builder\n            ->name(\"Game with ID of 25076\")\n            ->endpoint(\"game\")\n            ->fields(\"id,name\")\n            ->where(\"id = 25076\");\n\n        // building the query\n        $query = $builder->build(true);\n    } catch (IGDBInvaliParameterException $e) {\n        // invalid key or value found in the $options array\n        echo $e->getMessage();\n    }\n\n?>\n
\n

The value of $query:

\n
query games \"Game with ID 25076\" {\n  fields id,name;\n  where id = 25076;\n};\n
"},"meta":{"revision":0,"created":1699573929863,"version":0},"$loki":22},{"id":"00cc049","slug":"offset","level":3,"parent":"1bc2dc4","parents":["1bc2dc4","502391f"],"title":"Offset","date":null,"timestamp":null,"body":{"stripped":"This will start the result list at the provided value and will give limit number of results. This value must be 0 or greater.\n\nDefault value: the IGDB API will use 0 as a default offset value.\n\nParameters:\n\n$offset: a number which can be 0 or greater.\n\nReturns: IGDBQueryBuilder instance","markdown":"```php\npublic function offset(int $offset) throws IGDBInvalidArgumentException: IGDBQueryBuilder\n```\n\nThis will start the result list at the provided value and will give [`limit`](#limit) number of results. This value must be `0` or greater.\n\n**Default value**: the IGDB API will use `0` as a default offset value.\n\n**Parameters**:\n - `$offset`: a number which can be `0` or greater.\n\n**Returns**: `IGDBQueryBuilder` instance\n\n```php\n 5\n );\n\n // builder approach\n $builder->offset(5);\n\n?>\n```","html":"
public function offset(int $offset) throws IGDBInvalidArgumentException: IGDBQueryBuilder\n
\n

This will start the result list at the provided value and will give limit number of results. This value must be 0 or greater.

\n

Default value: the IGDB API will use 0 as a default offset value.

\n

Parameters:

\n
    \n
  • $offset: a number which can be 0 or greater.
  • \n
\n

Returns: IGDBQueryBuilder instance

\n
<?php\n\n    // traditional approach\n    $options = array(\n        \"offset\" => 5\n    );\n\n    // builder approach\n    $builder->offset(5);\n\n?>\n
"},"meta":{"revision":0,"created":1699573929863,"version":0},"$loki":23},{"id":"9c7d4f3","slug":"options","level":3,"parent":"1bc2dc4","parents":["1bc2dc4","502391f"],"title":"Options","date":null,"timestamp":null,"body":{"stripped":":warning Using the Builder this way is not recommended as this functionality may be removed in future versions. Use the builder approach instead.\n\nWith this method you can parse your $options array instead of using the builder approach. If a non-valid key or value is in the array, an IGDBInvalidParameterException will be thrown.\n\nPassing your $options array to this method will configure the builder with the parameters in it.\n\nParameters:\n\n$options: the options array with your configuration in it\n\nReturns: IGDBQueryBuilder instance\n\n\n\n:warning Calling this method will not reset the configuration. Stacking the options() calls will add each parameter to the builder, overwriting the old values with the new ones. To clear the previous configuration items use the reset method.\n\n\n\nThe query:","markdown":"```php\npublic function options(array $options) throws IGDBInvalidArgumentException: IGDBQueryBuilder\n```\n\n>:warning Using the Builder this way is not recommended as this functionality may be removed in future versions. Use the [builder approach](#builder-approach) instead.\n\nWith this method you can parse your `$options` array instead of using the [builder approach](#builder-approach). If a non-valid key or value is in the array, an `IGDBInvalidParameterException` will be thrown.\n\nPassing your `$options` array to this method will configure the builder with the parameters in it.\n\n**Parameters**:\n - `$options`: the options array with your configuration in it\n\n**Returns**: `IGDBQueryBuilder` instance\n\n```php\n \"uncharted 4\",\n \"fields\" => \"id,name\",\n \"limit\" => 1\n );\n\n try {\n // configuring the builder with an options array\n $builder->options($options);\n\n // still have to call the build method to building the query\n $query = $builder->build();\n } catch (IGDBInvaliParameterException $e) {\n // invalid key or value found in the $options array\n echo $e->getMessage();\n }\n\n?>\n```\n\n>:warning Calling this method **will not reset** the configuration. Stacking the `options()` calls will add each parameter to the builder, overwriting the old values with the new ones. To clear the previous configuration items use the [reset method](#reset).\n\n```php\noptions(array(\"search\" => \"uncharted\"))\n ->options(array(\"fields\" => \"id,name\"))\n // this call will overwrite the search parameter!\n ->options(array(\"search\" => \"overwritten uncharted\"))\n ->options(array(\"limit\" => 1));\n\n // building the query\n $query = $builder->build();\n } catch (IGDBInvaliParameterException $e) {\n // invalid key or value found in the $options array\n echo $e->getMessage();\n }\n\n?>\n```\n\nThe query:\n\n```text\nfields id,name; search \"overwritten uncharted\"; limit 1;\n```","html":"
public function options(array $options) throws IGDBInvalidArgumentException: IGDBQueryBuilder\n
\n
\n

:warning Using the Builder this way is not recommended as this functionality may be removed in future versions. Use the builder approach instead.

\n
\n

With this method you can parse your $options array instead of using the builder approach. If a non-valid key or value is in the array, an IGDBInvalidParameterException will be thrown.

\n

Passing your $options array to this method will configure the builder with the parameters in it.

\n

Parameters:

\n
    \n
  • $options: the options array with your configuration in it
  • \n
\n

Returns: IGDBQueryBuilder instance

\n
<?php\n\n    require_once \"class.igdb.php\";\n\n    // instantiate the query builder\n    $builder = new IGDBQueryBuilder();\n\n    // setting up the options array\n    $options = array(\n        \"search\" => \"uncharted 4\",\n        \"fields\" => \"id,name\",\n        \"limit\" => 1\n    );\n\n    try {\n        // configuring the builder with an options array\n        $builder->options($options);\n\n        // still have to call the build method to building the query\n        $query = $builder->build();\n    } catch (IGDBInvaliParameterException $e) {\n        // invalid key or value found in the $options array\n        echo $e->getMessage();\n    }\n\n?>\n
\n
\n

:warning Calling this method will not reset the configuration. Stacking the options() calls will add each parameter to the builder, overwriting the old values with the new ones. To clear the previous configuration items use the reset method.

\n
\n
<?php\n\n    // importing the wrapper\n    require_once \"class.igdb.php\";\n\n    // instantiate the query builder\n    $builder = new IGDBQueryBuilder();\n\n    try {\n        // stacking the options calls will add each parameter as this not resets the configuration\n        $builder\n            ->options(array(\"search\" => \"uncharted\"))\n            ->options(array(\"fields\" => \"id,name\"))\n            // this call will overwrite the search parameter!\n            ->options(array(\"search\" => \"overwritten uncharted\"))\n            ->options(array(\"limit\" => 1));\n\n        // building the query\n        $query = $builder->build();\n    } catch (IGDBInvaliParameterException $e) {\n        // invalid key or value found in the $options array\n        echo $e->getMessage();\n    }\n\n?>\n
\n

The query:

\n
fields id,name; search \"overwritten uncharted\"; limit 1;\n
"},"meta":{"revision":0,"created":1699573929863,"version":0},"$loki":24},{"id":"5b09832","slug":"reset","level":3,"parent":"1bc2dc4","parents":["1bc2dc4","502391f"],"title":"Reset","date":null,"timestamp":null,"body":{"stripped":"This method will reset every configuration to the default values.\n\nParameters: -\n\nReturns: IGDBQueryBuilder instance\n\n\n\nThe code above will return the $options2 array's configuration, as it got reset with the reset() method.","markdown":"```php\npublic function reset(): IGDBQueryBuilder\n```\n\nThis method will reset every configuration to the default values.\n\n**Parameters**: -\n\n**Returns**: `IGDBQueryBuilder` instance\n\n```php\n \"uncharted 4\",\n \"fields\" => \"id,name\",\n \"limit\" => 2\n );\n\n // setting upt he options2 array\n $options2 = array(\n \"search\" => \"star wars\",\n \"fields\" => \"cover,slug\",\n \"limit\" => 1\n );\n\n try {\n // configuring the builder with options1, reset the values then pass options2\n $builder->options($options1)->reset()->options($options2);\n\n // building the query\n $query = $builder->build();\n } catch (IGDBInvaliParameterException $e) {\n // invalid key or value found in the $options array\n echo $e->getMessage();\n }\n\n?>\n```\n\nThe code above will return the `$options2` array's configuration, as it got reset with the `reset()` method.\n\n```text\nfields cover,slug; search \"star wars\"; limit 1;\n```","html":"
public function reset(): IGDBQueryBuilder\n
\n

This method will reset every configuration to the default values.

\n

Parameters: -

\n

Returns: IGDBQueryBuilder instance

\n
<?php\n\n    // importing the wrapper\n    require_once \"class.igdb.php\";\n\n    // instantiate the query builder\n    $builder = new IGDBQueryBuilder();\n\n    // setting up the options1 array\n    $options1 = array(\n        \"search\" => \"uncharted 4\",\n        \"fields\" => \"id,name\",\n        \"limit\" => 2\n    );\n\n    // setting upt he options2 array\n    $options2 = array(\n        \"search\" => \"star wars\",\n        \"fields\" => \"cover,slug\",\n        \"limit\" => 1\n    );\n\n    try {\n        // configuring the builder with options1, reset the values then pass options2\n        $builder->options($options1)->reset()->options($options2);\n\n        // building the query\n        $query = $builder->build();\n    } catch (IGDBInvaliParameterException $e) {\n        // invalid key or value found in the $options array\n        echo $e->getMessage();\n    }\n\n?>\n
\n

The code above will return the $options2 array's configuration, as it got reset with the reset() method.

\n
fields cover,slug; search \"star wars\"; limit 1;\n
"},"meta":{"revision":0,"created":1699573929863,"version":0},"$loki":25},{"id":"9b526d4","slug":"search","level":3,"parent":"1bc2dc4","parents":["1bc2dc4","502391f"],"title":"Search","date":null,"timestamp":null,"body":{"stripped":"Search based on name, results are sorted by similarity to the given search string.\n\nParameters:\n\n$search: the search string\n\nReturns: IGDBQueryBuilder instance","markdown":"```php\npublic function search(string $search) throws IGDBInvalidArgumentException: IGDBQueryBuilder\n```\n\nSearch based on name, results are sorted by similarity to the given search string.\n\n**Parameters**:\n - `$search`: the search string\n\n**Returns**: `IGDBQueryBuilder` instance\n\n```php\n \"uncharted 4\"\n );\n\n // builder approach\n $builder->search(\"uncharted 4\");\n\n?>\n```","html":"
public function search(string $search) throws IGDBInvalidArgumentException: IGDBQueryBuilder\n
\n

Search based on name, results are sorted by similarity to the given search string.

\n

Parameters:

\n
    \n
  • $search: the search string
  • \n
\n

Returns: IGDBQueryBuilder instance

\n
<?php\n\n    // traditional approach\n    $options = array(\n        \"search\" => \"uncharted 4\"\n    );\n\n    // builder approach\n    $builder->search(\"uncharted 4\");\n\n?>\n
"},"meta":{"revision":0,"created":1699573929863,"version":0},"$loki":26},{"id":"71fc60c","slug":"sort","level":3,"parent":"1bc2dc4","parents":["1bc2dc4","502391f"],"title":"Sort","date":null,"timestamp":null,"body":{"stripped":"Sorting (ordering) is used to order results by a specific field. The parameter can be either an apicalypse formatted sort string or an array with specific key-value pairs. If you provide the Order parameter as an array, you must have two values in it with the following keys:\n\nfield: The field you want to do the ordering by\n\ndirection: The direction of the ordering. It must be either asc for ascending or desc for descending ordering.\n\nParameters:\n\n$sort: either an apicalypse sort string or an array with specific key-value pairs.\n\nReturns: IGDBQueryBuilder instance","markdown":"```php\npublic function sort(string | array $sort) throws IGDBInvalidArgumentException: IGDBQueryBuilder\n```\n\nSorting (ordering) is used to order results by a specific field. The parameter can be either an apicalypse formatted sort string or an array with specific key-value pairs. If you provide the Order parameter as an array, you must have two values in it with the following keys:\n - `field`: The field you want to do the ordering by\n - `direction`: The direction of the ordering. It must be either `asc` for ascending or `desc` for descending ordering.\n\n**Parameters**:\n - `$sort`: either an apicalypse sort string or an array with specific key-value pairs.\n\n**Returns**: `IGDBQueryBuilder` instance\n\n```php\n \"release_dates.date desc\",\n );\n\n // traditional approach as an array\n $options = array(\n \"sort\" => array(\n \"field\" => \"release_dates.date\",\n \"direction\" => \"desc\"\n )\n );\n\n // builder approach as a string\n $builder->sort(\"release_dates.date desc\");\n\n // builder approach as an array\n $builder->sort(\n array(\n \"field\" => \"release_dates.date\",\n \"direction\" => \"desc\"\n )\n );\n\n?>\n```","html":"
public function sort(string | array $sort) throws IGDBInvalidArgumentException: IGDBQueryBuilder\n
\n

Sorting (ordering) is used to order results by a specific field. The parameter can be either an apicalypse formatted sort string or an array with specific key-value pairs. If you provide the Order parameter as an array, you must have two values in it with the following keys:

\n
    \n
  • field: The field you want to do the ordering by
  • \n
  • direction: The direction of the ordering. It must be either asc for ascending or desc for descending ordering.
  • \n
\n

Parameters:

\n
    \n
  • $sort: either an apicalypse sort string or an array with specific key-value pairs.
  • \n
\n

Returns: IGDBQueryBuilder instance

\n
<?php\n\n    // traditional approach as a string\n    $options = array(\n        \"sort\" => \"release_dates.date desc\",\n    );\n\n    // traditional approach as an array\n    $options = array(\n        \"sort\" => array(\n            \"field\" => \"release_dates.date\",\n            \"direction\" => \"desc\"\n        )\n    );\n\n    // builder approach as a string\n    $builder->sort(\"release_dates.date desc\");\n\n    // builder approach as an array\n    $builder->sort(\n        array(\n            \"field\" => \"release_dates.date\",\n            \"direction\" => \"desc\"\n        )\n    );\n\n?>\n
"},"meta":{"revision":0,"created":1699573929863,"version":0},"$loki":27},{"id":"97f826b","slug":"where","level":3,"parent":"1bc2dc4","parents":["1bc2dc4","502391f"],"title":"Where","date":null,"timestamp":null,"body":{"stripped":"Filters are used to swift through results to get what you want. You can exclude and include results based on their properties. For example you could remove all Games where the rating was below 80 (where rating >= 80).\n\nThe where parameter can be either an apicalypse formatted string or an array with specific key-value pairs. If you provide the where parameters as an array, you must have three fix keys in it:\n\nfield: The name of the field you want to apply the filter to.\n\npostfix: The postfix you want to use with the filter. Refer to the Available Postfixes section of the IGDB Filters Documentation for available postfixes.\n\nvalue: The value of the filter.\n\nThe where filters will be concatenated with AND operators (&).\n\n:tip Multiple filter parameters can be applied to the same query. Check the examples below.\n\nParameters:\n\n$where: either an apicalypse formatted string or an array with specific keys\n\nReturns: IGDBQueryBuilder instance\n\n\n\nThis method is trying to validate your input against some rules and will throw an IGDBInvalidArgumentException in case of any issues. If you need more flexibility or custom where statements with complex conditions in you queries use the Custom Where method instead.","markdown":"```php\npublic function where(string | array $where) throws IGDBInvalidArgumentException: IGDBQueryBuilder\n```\n\nFilters are used to swift through results to get what you want. You can exclude and include results based on their properties. For example you could remove all Games where the rating was below 80 `(where rating >= 80)`.\n\nThe where parameter can be either an apicalypse formatted string or an array with specific key-value pairs. If you provide the where parameters as an array, you must have three fix keys in it:\n - `field`: The name of the field you want to apply the filter to.\n - `postfix`: The postfix you want to use with the filter. Refer to the [Available Postfixes](https://api-docs.igdb.com/#filters) section of the IGDB Filters Documentation for available postfixes.\n - `value`: The value of the filter.\n\nThe where filters will be concatenated with **AND** operators (`&`).\n\n>:tip Multiple filter parameters can be applied to the same query. Check the examples below.\n\n**Parameters**:\n - `$where`: either an apicalypse formatted string or an array with specific keys\n\n**Returns**: `IGDBQueryBuilder` instance\n\n```php\n \"release_dates.platform = 8\"\n );\n\n // traditional approach, single criteria as an array\n $options = array(\n \"where\" => array(\n \"field\" => \"release_dates.platform\",\n \"postfix\" => \"=\",\n \"value\" => 8\n )\n );\n\n // traditional approach, multiple criteria as a string\n $options = array(\n \"where\" => array(\n \"release_dates.platform = 8\",\n \"total_rating >= 70\"\n );\n );\n\n // traditional approach, multiple criteria as an array\n $options = array(\n \"where\" => array(\n array(\n \"field\" => \"release_dates.platform\",\n \"postfix\" => \"=\",\n \"value\" => 8\n ),\n array(\n \"field\" => \"total_rating\",\n \"postfix\" => \">=\",\n \"value\" => 70\n )\n )\n );\n\n // builder approach, single criteria as a string\n $builder->where(\"release_dates.platform = 8\");\n\n // builder approach, single criteria as an array\n $builder->where(\n array(\n \"field\" => \"release_dates.platform\",\n \"postfix\" => \"=\",\n \"value\" => 8\n )\n );\n\n // builder approach, multiple criteria as a string\n $builder\n ->where(\"release_dates.platform = 8\")\n ->where(\"total_rating >= 70\");\n\n // builder approach, multiple criteria as an array\n $builder\n ->where(\n array(\n \"field\" => \"release_dates.platform\",\n \"postfix\" => \"=\",\n \"value\" => 8\n )\n )\n ->where(\n array(\n \"field\" => \"total_rating\",\n \"postfix\" => \">=\",\n \"value\" => 70\n )\n );\n?>\n```\n\n> This method is trying to validate your input against some rules and will throw an `IGDBInvalidArgumentException` in case of any issues. If you need more flexibility or custom where statements with complex conditions in you queries use the [Custom Where](#custom-where) method instead.","html":"
public function where(string | array $where) throws IGDBInvalidArgumentException: IGDBQueryBuilder\n
\n

Filters are used to swift through results to get what you want. You can exclude and include results based on their properties. For example you could remove all Games where the rating was below 80 (where rating >= 80).

\n

The where parameter can be either an apicalypse formatted string or an array with specific key-value pairs. If you provide the where parameters as an array, you must have three fix keys in it:

\n
    \n
  • field: The name of the field you want to apply the filter to.
  • \n
  • postfix: The postfix you want to use with the filter. Refer to the Available Postfixes section of the IGDB Filters Documentation for available postfixes.
  • \n
  • value: The value of the filter.
  • \n
\n

The where filters will be concatenated with AND operators (&).

\n
\n

:tip Multiple filter parameters can be applied to the same query. Check the examples below.

\n
\n

Parameters:

\n
    \n
  • $where: either an apicalypse formatted string or an array with specific keys
  • \n
\n

Returns: IGDBQueryBuilder instance

\n
<?php\n\n    // traditional approach, single criteria as a string\n    $options = array(\n        \"where\" => \"release_dates.platform = 8\"\n    );\n\n    // traditional approach, single criteria as an array\n    $options = array(\n        \"where\" => array(\n            \"field\" => \"release_dates.platform\",\n            \"postfix\" => \"=\",\n            \"value\" => 8\n        )\n    );\n\n    // traditional approach, multiple criteria as a string\n    $options = array(\n        \"where\" => array(\n            \"release_dates.platform = 8\",\n            \"total_rating >= 70\"\n        );\n    );\n\n    // traditional approach, multiple criteria as an array\n    $options = array(\n        \"where\" => array(\n            array(\n                \"field\" => \"release_dates.platform\",\n                \"postfix\" => \"=\",\n                \"value\" => 8\n            ),\n            array(\n                \"field\" => \"total_rating\",\n                \"postfix\" => \">=\",\n                \"value\" => 70\n            )\n        )\n    );\n\n    // builder approach, single criteria as a string\n    $builder->where(\"release_dates.platform = 8\");\n\n    // builder approach, single criteria as an array\n    $builder->where(\n        array(\n            \"field\" => \"release_dates.platform\",\n            \"postfix\" => \"=\",\n            \"value\" => 8\n        )\n    );\n\n    // builder approach, multiple criteria as a string\n    $builder\n        ->where(\"release_dates.platform = 8\")\n        ->where(\"total_rating >= 70\");\n\n    // builder approach, multiple criteria as an array\n    $builder\n        ->where(\n            array(\n                \"field\" => \"release_dates.platform\",\n                \"postfix\" => \"=\",\n                \"value\" => 8\n            )\n        )\n        ->where(\n            array(\n                \"field\" => \"total_rating\",\n                \"postfix\" => \">=\",\n                \"value\" => 70\n            )\n        );\n?>\n
\n
\n

This method is trying to validate your input against some rules and will throw an IGDBInvalidArgumentException in case of any issues. If you need more flexibility or custom where statements with complex conditions in you queries use the Custom Where method instead.

\n
"},"meta":{"revision":0,"created":1699573929863,"version":0},"$loki":28},{"id":"ee45e35","slug":"building-the-query","level":2,"parent":"1bc2dc4","parents":["1bc2dc4"],"title":"Building the Query","date":null,"timestamp":null,"body":{"stripped":"When the Builder object is configured properly the final step is to build the query to an apicalypse query string. The syntax of the query depends on which endpoint the query is executed against. The multiquery endpoint requires a few additional information and a slightly different syntax.\n\nA game endpoint query:\n\n\n\nA multiquery to the game game endpoint:\n\n\n\nThe build method accepts one boolean parameter. Using this parameter the build method decides which syntax to return. If a multiquery is required, a few extra fields has to be set for the builder:\n\nname: the name of the query choosen by the user\n\nendpoint: the endpoint to send the query against\n\ncount \\[optional]: whether the records or their count is required. By default the value of this parameter is false.\n\n:warning In case of a multiquery request the properties name and endpoint are mandatory! If any of these are missing from the configuration, an IGDBInvalidParameterException will be thrown.\n\nParameters:\n\n$multiquery: if true, a multiquery will be returned, an endpoint query otherwise. The default value of this parameter is false.\n\n:warning If a non-boolean parameter is passed to the build method, an IGDBInavlidParameterException is thrown!\n\nReturns: the apicalypse query string\n\nAn endpoint query example:\n\n\n\nThe value of $query:\n\n\n\nA multiquery example:\n\n\n\nThe value of $query:","markdown":"```php\npublic function build(boolean $multiquery = false) throws IGDBInvalidParameterException: mixed\n```\n\nWhen the Builder object is configured properly the final step is to build the query to an apicalypse query string. The syntax of the query depends on which endpoint the query is executed against. The multiquery endpoint requires a few additional information and a slightly different syntax.\n\nA [`game`](#game) endpoint query:\n```text\nfields id,name;\nwhere id = 25076;\n```\n\nA [`multiquery`](#multiquery) to the game [`game`](#game) endpoint:\n```text\nquery games \"Main Game\" {\n fields id,name;\n where id = 25076;\n};\n```\n\nThe build method accepts one `boolean` parameter. Using this parameter the build method decides which syntax to return. If a multiquery is required, a few extra fields has to be set for the builder:\n - [`name`](#name): the name of the query choosen by the user\n - [`endpoint`](#endpoint): the endpoint to send the query against\n - [`count`](#count) [optional]: whether the records or their count is required. By default the value of this parameter is `false`.\n\n>:warning In case of a multiquery request the properties [name](#name) and [endpoint](#endpoint) are **mandatory**! If any of these are missing from the configuration, an `IGDBInvalidParameterException` will be thrown.\n\n**Parameters**:\n - `$multiquery`: if `true`, a multiquery will be returned, an endpoint query otherwise. The default value of this parameter is `false`.\n\n >:warning If a non-boolean parameter is passed to the build method, an `IGDBInavlidParameterException` is thrown!\n\n**Returns**: the apicalypse query string\n\nAn endpoint query example:\n```php\nsearch(\"uncharted 4\")\n ->fields(\"id, name\")\n ->limit(1)\n ->build();\n } catch (IGDBInvaliParameterException $e) {\n // invalid value passed to a method\n echo $e->getMessage();\n }\n\n?>\n```\n\nThe value of `$query`:\n\n```text\nfields id,name;\nsearch \"uncharted 4\";\nlimit 1;\n```\n\nA multiquery example:\n\n```php\nname(\"Game with ID of 25076\")\n ->endpoint(\"game\")\n ->fields(\"id,name\")\n ->where(\"id = 25076\")\n // note the true parameter\n ->build(true);\n } catch (IGDBInvaliParameterException $e) {\n // invalid key or value found in the $options array\n echo $e->getMessage();\n }\n\n?>\n```\n\nThe value of `$query`:\n\n```text\nquery games \"Game with ID of 25076\" {\n fields id,name;\n where id = 25076;\n};\n```","html":"
public function build(boolean $multiquery = false) throws IGDBInvalidParameterException: mixed\n
\n

When the Builder object is configured properly the final step is to build the query to an apicalypse query string. The syntax of the query depends on which endpoint the query is executed against. The multiquery endpoint requires a few additional information and a slightly different syntax.

\n

A game endpoint query:

\n
fields id,name;\nwhere id = 25076;\n
\n

A multiquery to the game game endpoint:

\n
query games \"Main Game\" {\n  fields id,name;\n  where id = 25076;\n};\n
\n

The build method accepts one boolean parameter. Using this parameter the build method decides which syntax to return. If a multiquery is required, a few extra fields has to be set for the builder:

\n
    \n
  • name: the name of the query choosen by the user
  • \n
  • endpoint: the endpoint to send the query against
  • \n
  • count [optional]: whether the records or their count is required. By default the value of this parameter is false.
  • \n
\n
\n

:warning In case of a multiquery request the properties name and endpoint are mandatory! If any of these are missing from the configuration, an IGDBInvalidParameterException will be thrown.

\n
\n

Parameters:

\n
    \n
  • $multiquery: if true, a multiquery will be returned, an endpoint query otherwise. The default value of this parameter is false.
  • \n
\n
\n

:warning If a non-boolean parameter is passed to the build method, an IGDBInavlidParameterException is thrown!

\n
\n

Returns: the apicalypse query string

\n

An endpoint query example:

\n
<?php\n\n    // importing the wrapper\n    require_once \"class.igdb.php\";\n\n    // instantiate the query builder\n    $builder = new IGDBQueryBuilder();\n\n    try {\n        // configuring the query\n        $query = $builder\n            ->search(\"uncharted 4\")\n            ->fields(\"id, name\")\n            ->limit(1)\n            ->build();\n    } catch (IGDBInvaliParameterException $e) {\n        // invalid value passed to a method\n        echo $e->getMessage();\n    }\n\n?>\n
\n

The value of $query:

\n
fields id,name;\nsearch \"uncharted 4\";\nlimit 1;\n
\n

A multiquery example:

\n
<?php\n\n    // importing the wrapper\n    require_once \"class.igdb.php\";\n\n    // instantiate the query builder\n    $builder = new IGDBQueryBuilder();\n\n    try {\n        // configuring the query\n        $builder\n            ->name(\"Game with ID of 25076\")\n            ->endpoint(\"game\")\n            ->fields(\"id,name\")\n            ->where(\"id = 25076\")\n            // note the true parameter\n            ->build(true);\n    } catch (IGDBInvaliParameterException $e) {\n        // invalid key or value found in the $options array\n        echo $e->getMessage();\n    }\n\n?>\n
\n

The value of $query:

\n
query games \"Game with ID of 25076\" {\n  fields id,name;\n  where id = 25076;\n};\n
"},"meta":{"revision":0,"created":1699573929863,"version":0},"$loki":29},{"id":"cbf8ecb","slug":"igdb-wrapper","level":1,"parent":null,"parents":[],"title":"IGDB Wrapper","date":null,"timestamp":1698348963000,"body":{"stripped":"This is the most important part of the wrapper, the IGDB class which does the heavy lifting: communicating with the IGDB API.\n\nAs mentioned in the Introduction, to have access to IGDB's database you have to register a Twitch Account and have your own client_id and access_token.\n\n:tip You can add your tokens to the documentation to replace them in the exmple codes. Click the logo in the top left corner to get back to the main page and save your tokens.","markdown":"This is the most important part of the wrapper, the `IGDB` class which does the heavy lifting: communicating with the IGDB API.\n\nAs mentioned in the [Introduction](#getting-started), to have access to IGDB's database you have to register a Twitch Account and have your own `client_id` and `access_token`.\n\n>:tip You can add your tokens to the documentation to replace them in the exmple codes. Click the logo in the top left corner to get back to the main page and save your tokens.","html":"

This is the most important part of the wrapper, the IGDB class which does the heavy lifting: communicating with the IGDB API.

\n

As mentioned in the Introduction, to have access to IGDB's database you have to register a Twitch Account and have your own client_id and access_token.

\n
\n

:tip You can add your tokens to the documentation to replace them in the exmple codes. Click the logo in the top left corner to get back to the main page and save your tokens.

\n
"},"icon":"fa-gift","overview":"The main wrapper. Methods, endpoints, properties, configurations. Sending your queries to the IGDB API.","meta":{"revision":0,"created":1699573929863,"version":0},"$loki":30},{"id":"554c02d","slug":"instantiating-the-wrapper-ii","level":2,"parent":"cbf8ecb","parents":["cbf8ecb"],"title":"Instantiating the wrapper","date":null,"timestamp":null,"body":{"stripped":"After importing the dependencies you can instantiate the class with the new keyword by passing your tokens to the constructor.\n\n\n\n:info The wrapper itself does not validate your tokens. If your credentials are invalid, you will get an error from the IGDB API after executing a query.","markdown":"After importing the dependencies you can instantiate the class with the `new` keyword by passing your tokens to the constructor.\n\n```php\n\n```\n\n>:info The wrapper itself does not validate your tokens. If your credentials are invalid, you will get an error from the IGDB API after executing a query.","html":"

After importing the dependencies you can instantiate the class with the new keyword by passing your tokens to the constructor.

\n
<?php\n\n    require_once \"class.igdb.php\";\n\n    $igdb = new IGDB(\"{client_id}\", \"{access_token}\");\n\n?>\n
\n
\n

:info The wrapper itself does not validate your tokens. If your credentials are invalid, you will get an error from the IGDB API after executing a query.

\n
"},"meta":{"revision":0,"created":1699573929863,"version":0},"$loki":31},{"id":"884a161","slug":"public-methods","level":2,"parent":"cbf8ecb","parents":["cbf8ecb"],"title":"Public Methods","date":null,"timestamp":null,"body":{"stripped":"These methods are exposed from the IGDB object.","markdown":"These methods are exposed from the `IGDB` object.","html":"

These methods are exposed from the IGDB object.

"},"meta":{"revision":0,"created":1699573929863,"version":0},"$loki":32},{"id":"b0b4b38","slug":"get-request-info","level":3,"parent":"cbf8ecb","parents":["cbf8ecb","884a161"],"title":"Get Request Info","date":null,"timestamp":null,"body":{"stripped":"After a query is executed, the latest request information will be stored and can be retrieved using this method.\n\nThe new version of the IGDB API (v4) will return a http response code 429 when you exceed the limit of requests on the database (4 requests per second at the time of writing this documentation).\n\n\n\nDetails of the query can be fetched from the output of the get_request_info() method (for example, the HTTP Response code from http_code).","markdown":"```php\npublic function get_request_info()\n```\n\nAfter a query is executed, the latest request information will be stored and can be retrieved using this method.\n\n> The new version of the IGDB API (v4) will return a http response code `429` when you exceed the limit of requests on the database (4 requests per second at the time of writing this documentation).\n\n```php\ngame('fields id,name; search \"uncharted 4\"; limit 1;');\n\n // getting the details of the latest query\n $request_info = $igdb->get_request_info();\n\n // showing the details\n var_dump($request_info);\n } catch (IGDBEndpointException $e) {\n echo $e->getMessage();\n }\n\n?>\n```\n\nDetails of the query can be fetched from the output of the `get_request_info()` method (for example, the HTTP Response code from `http_code`).\n\n```text\narray (size=37)\n 'url' => string 'https://api.igdb.com/v4/games' (length=29)\n 'content_type' => string 'application/json;charset=utf-8' (length=30)\n 'http_code' => int 200\n 'header_size' => int 870\n 'request_size' => int 224\n 'filetime' => int -1\n 'ssl_verify_result' => int 20\n 'redirect_count' => int 0\n 'total_time' => float 0.748895\n 'namelookup_time' => float 0.000705\n 'connect_time' => float 0.048049\n 'pretransfer_time' => float 0.088656\n 'size_upload' => float 46\n 'size_download' => float 73\n 'speed_download' => float 97\n 'speed_upload' => float 61\n 'download_content_length' => float 73\n 'upload_content_length' => float 46\n 'starttransfer_time' => float 0.088661\n 'redirect_time' => float 0\n 'redirect_url' => string '' (length=0)\n 'primary_ip' => string '104.22.65.239' (length=13)\n 'certinfo' =>\n array (size=0)\n empty\n 'primary_port' => int 443\n 'local_ip' => string '192.168.1.99' (length=12)\n 'local_port' => int 58813\n 'http_version' => int 3\n 'protocol' => int 2\n 'ssl_verifyresult' => int 0\n 'scheme' => string 'HTTPS' (length=5)\n 'appconnect_time_us' => int 88535\n 'connect_time_us' => int 48049\n 'namelookup_time_us' => int 705\n 'pretransfer_time_us' => int 88656\n 'redirect_time_us' => int 0\n 'starttransfer_time_us' => int 88661\n 'total_time_us' => int 748895\n```","html":"
public function get_request_info()\n
\n

After a query is executed, the latest request information will be stored and can be retrieved using this method.

\n
\n

The new version of the IGDB API (v4) will return a http response code 429 when you exceed the limit of requests on the database (4 requests per second at the time of writing this documentation).

\n
\n
<?php\n\n    require_once \"class.igdb.php\";\n\n    $igdb = new IGDB(\"{client_id}\", \"{access_token}\");\n\n    try {\n        $igdb->game('fields id,name; search \"uncharted 4\"; limit 1;');\n\n        // getting the details of the latest query\n        $request_info = $igdb->get_request_info();\n\n        // showing the details\n        var_dump($request_info);\n    } catch (IGDBEndpointException $e) {\n        echo $e->getMessage();\n    }\n\n?>\n
\n

Details of the query can be fetched from the output of the get_request_info() method (for example, the HTTP Response code from http_code).

\n
array (size=37)\n  'url' => string 'https://api.igdb.com/v4/games' (length=29)\n  'content_type' => string 'application/json;charset=utf-8' (length=30)\n  'http_code' => int 200\n  'header_size' => int 870\n  'request_size' => int 224\n  'filetime' => int -1\n  'ssl_verify_result' => int 20\n  'redirect_count' => int 0\n  'total_time' => float 0.748895\n  'namelookup_time' => float 0.000705\n  'connect_time' => float 0.048049\n  'pretransfer_time' => float 0.088656\n  'size_upload' => float 46\n  'size_download' => float 73\n  'speed_download' => float 97\n  'speed_upload' => float 61\n  'download_content_length' => float 73\n  'upload_content_length' => float 46\n  'starttransfer_time' => float 0.088661\n  'redirect_time' => float 0\n  'redirect_url' => string '' (length=0)\n  'primary_ip' => string '104.22.65.239' (length=13)\n  'certinfo' =>\n    array (size=0)\n      empty\n  'primary_port' => int 443\n  'local_ip' => string '192.168.1.99' (length=12)\n  'local_port' => int 58813\n  'http_version' => int 3\n  'protocol' => int 2\n  'ssl_verifyresult' => int 0\n  'scheme' => string 'HTTPS' (length=5)\n  'appconnect_time_us' => int 88535\n  'connect_time_us' => int 48049\n  'namelookup_time_us' => int 705\n  'pretransfer_time_us' => int 88656\n  'redirect_time_us' => int 0\n  'starttransfer_time_us' => int 88661\n  'total_time_us' => int 748895\n
"},"meta":{"revision":0,"created":1699573929863,"version":0},"$loki":33},{"id":"f00c144","slug":"construct-url","level":3,"parent":"cbf8ecb","parents":["cbf8ecb","884a161"],"title":"Construct URL","date":null,"timestamp":null,"body":{"stripped":"The method will construct the full URL for the request and will return the constructed URL as a string. If an invalid endpoint name passed to $endpoint an IGDBInvalidParameterException will be thrown.\n\nParameters:\n\n$endpoint: the endpoint to use (the name of the endpoint, not the path to it!). Possible values:\n\nage_rating\n\nage_rating_content_description\n\nalternative_name\n\nartwork\n\ncharacter\n\ncharacter_mug_shot\n\ncollection\n\ncollection_membership\n\ncollection_membership_type\n\ncollection_relation\n\ncollection_relation_type\n\ncollection_type\n\ncompany\n\ncompany_logo\n\ncompany_website\n\ncover\n\nevent\n\nevent_logo\n\nevent_network\n\nexternal_game\n\nfranchise\n\ngame\n\ngame_engine\n\ngame_engine_logo\n\ngame_localization\n\ngame_mode\n\ngame_version\n\ngame_version_feature\n\ngame_version_feature_value\n\ngame_video\n\ngenre\n\ninvolved_company\n\nkeyword\n\nlanguage\n\nlanguage_support\n\nmultiplayer_mode\n\nplatform\n\nlanguage_support_type\n\nplatform_family\n\nnetwork_type\n\nplatform_logo\n\nplatform_version_company\n\nplatform_version\n\nplatform_website\n\nplatform_version_release_date\n\nplayer_perspective\n\nregion\n\nrelease_date\n\nrelease_date_status\n\nscreenshot\n\nsearch\n\ntheme\n\nwebsite\n\n$count: whether the request should return the number of matches instead of the actual resultset\n\nReturns: the full constructed URL to the IGDB Endpoint as a string.\n\n\n\nOutput:","markdown":"```php\npublic function construct_url(string $endpoint, boolean $count = false) throws IGDBInvalidParameterException: string\n```\n\nThe method will construct the full URL for the request and will return the constructed URL as a string. If an invalid endpoint name passed to `$endpoint` an `IGDBInvalidParameterException` will be thrown.\n\n**Parameters**:\n - `$endpoint`: the endpoint to use (the name of the endpoint, not the path to it!). Possible values:\n - age_rating\n - age_rating_content_description\n - alternative_name\n - artwork\n - character\n - character_mug_shot\n - collection\n - collection_membership\n - collection_membership_type\n - collection_relation\n - collection_relation_type\n - collection_type\n - company\n - company_logo\n - company_website\n - cover\n - event\n - event_logo\n - event_network\n - external_game\n - franchise\n - game\n - game_engine\n - game_engine_logo\n - game_localization\n - game_mode\n - game_version\n - game_version_feature\n - game_version_feature_value\n - game_video\n - genre\n - involved_company\n - keyword\n - language\n - language_support\n - multiplayer_mode\n - platform\n - language_support_type\n - platform_family\n - network_type\n - platform_logo\n - platform_version_company\n - platform_version\n - platform_website\n - platform_version_release_date\n - player_perspective\n - region\n - release_date\n - release_date_status\n - screenshot\n - search\n - theme\n - website\n - `$count`: whether the request should return the number of matches instead of the actual resultset\n\n**Returns**: the full constructed URL to the IGDB Endpoint as a string.\n\n```php\nconstruct_url(\"game\");\n\n // constructing an url to get counts\n $count_url = $igdb->construct_url(\"game\", true);\n\n // showing the results\n echo \"url: \" . $url;\n echo \"count url: \" . $count_url;\n } catch (IGDBInvalidParameterException $e) {\n // an invalid parameter passed to the construct_url method\n echo $e->getMessage();\n }\n\n?>\n```\n\nOutput:\n\n```text\nurl: https://api.igdb.com/v4/games\ncount url: https://api.igdb.com/v4/games/count\n```","html":"
public function construct_url(string $endpoint, boolean $count = false) throws IGDBInvalidParameterException: string\n
\n

The method will construct the full URL for the request and will return the constructed URL as a string. If an invalid endpoint name passed to $endpoint an IGDBInvalidParameterException will be thrown.

\n

Parameters:

\n
    \n
  • $endpoint: the endpoint to use (the name of the endpoint, not the path to it!). Possible values:\n
      \n
    • age_rating
    • \n
    • age_rating_content_description
    • \n
    • alternative_name
    • \n
    • artwork
    • \n
    • character
    • \n
    • character_mug_shot
    • \n
    • collection
    • \n
    • collection_membership
    • \n
    • collection_membership_type
    • \n
    • collection_relation
    • \n
    • collection_relation_type
    • \n
    • collection_type
    • \n
    • company
    • \n
    • company_logo
    • \n
    • company_website
    • \n
    • cover
    • \n
    • event
    • \n
    • event_logo
    • \n
    • event_network
    • \n
    • external_game
    • \n
    • franchise
    • \n
    • game
    • \n
    • game_engine
    • \n
    • game_engine_logo
    • \n
    • game_localization
    • \n
    • game_mode
    • \n
    • game_version
    • \n
    • game_version_feature
    • \n
    • game_version_feature_value
    • \n
    • game_video
    • \n
    • genre
    • \n
    • involved_company
    • \n
    • keyword
    • \n
    • language
    • \n
    • language_support
    • \n
    • multiplayer_mode
    • \n
    • platform
    • \n
    • language_support_type
    • \n
    • platform_family
    • \n
    • network_type
    • \n
    • platform_logo
    • \n
    • platform_version_company
    • \n
    • platform_version
    • \n
    • platform_website
    • \n
    • platform_version_release_date
    • \n
    • player_perspective
    • \n
    • region
    • \n
    • release_date
    • \n
    • release_date_status
    • \n
    • screenshot
    • \n
    • search
    • \n
    • theme
    • \n
    • website
    • \n
    \n
  • \n
  • $count: whether the request should return the number of matches instead of the actual resultset
  • \n
\n

Returns: the full constructed URL to the IGDB Endpoint as a string.

\n
<?php\n\n    // instantiating the wrapper\n    $igdb = new IGDB(\"{client_id}\", \"{access_token}\");\n\n    try {\n        // constructing an url\n        $url = $igdb->construct_url(\"game\");\n\n        // constructing an url to get counts\n        $count_url = $igdb->construct_url(\"game\", true);\n\n        // showing the results\n        echo \"url: \" . $url;\n        echo \"count url: \" . $count_url;\n    } catch (IGDBInvalidParameterException $e) {\n        // an invalid parameter passed to the construct_url method\n        echo $e->getMessage();\n    }\n\n?>\n
\n

Output:

\n
url: https://api.igdb.com/v4/games\ncount url: https://api.igdb.com/v4/games/count\n
"},"meta":{"revision":0,"created":1699573929863,"version":0},"$loki":34},{"id":"5eb5cf1","slug":"close-curl-session","level":3,"parent":"cbf8ecb","parents":["cbf8ecb","884a161"],"title":"Close CURL Session","date":null,"timestamp":null,"body":{"stripped":"You can close the CURL session handler manually if you need to.\n\nParameters: -\n\nReturns: -\n\nThe curl handler will be reinitialized automatically when a new request is sent to the IGDB API with any of the endpoint methods.","markdown":"```php\npublic function curl_close(): void\n```\n\nYou can close the CURL session handler manually if you need to.\n\n**Parameters**: -\n\n**Returns**: -\n\n> The curl handler will be [reinitialized](#reinitialize-curl-session) automatically when a new request is sent to the IGDB API with any of the endpoint methods.","html":"
public function curl_close(): void\n
\n

You can close the CURL session handler manually if you need to.

\n

Parameters: -

\n

Returns: -

\n
\n

The curl handler will be reinitialized automatically when a new request is sent to the IGDB API with any of the endpoint methods.

\n
"},"meta":{"revision":0,"created":1699573929863,"version":0},"$loki":35},{"id":"e10c0ea","slug":"reinitialize-curl-session","level":3,"parent":"cbf8ecb","parents":["cbf8ecb","884a161"],"title":"Reinitialize CURL Session","date":null,"timestamp":null,"body":{"stripped":"After you closed the CURL session manually with curl_close() you can manually reinitialize the curl handler.\n\nParameters: -\n\nReturns: -\n\nBefore sending a request with an endpoint method, the wrapper will check the status of the curl handler. If it is closed, it will reinitialize it automatically.","markdown":"```php\npublic function curl_reinit() : void\n```\n\nAfter you closed the CURL session manually with [curl_close()](#close-curl-session) you can manually reinitialize the curl handler.\n\n**Parameters**: -\n\n**Returns**: -\n\n> Before sending a request with an endpoint method, the wrapper will check the status of the curl handler. If it is closed, it will reinitialize it automatically.","html":"
public function curl_reinit() : void\n
\n

After you closed the CURL session manually with curl_close() you can manually reinitialize the curl handler.

\n

Parameters: -

\n

Returns: -

\n
\n

Before sending a request with an endpoint method, the wrapper will check the status of the curl handler. If it is closed, it will reinitialize it automatically.

\n
"},"meta":{"revision":0,"created":1699573929863,"version":0},"$loki":36},{"id":"9652f37","slug":"handling-request-errors","level":2,"parent":"cbf8ecb","parents":["cbf8ecb"],"title":"Handling Request Errors","date":null,"timestamp":null,"body":{"stripped":"Your query may fail on the IGDB side. In this case the API will send back a non-successful response code indicating that something went wrong. When this happens an IGDBEndpointException can be caught to extract information about the issue. To catch these errors you have to enclose your endpoint method calls in a try...catch block.\n\n\n\nSince the query above is not valid, as there is no field called nonexistingfield on the game endpoint, the API will send a response with an error message and a non-successful response code. The result of the script above is:\n\n\n\nYou can also get some additional information about this request using the get_request_info() method.","markdown":"Your query may fail on the IGDB side. In this case the API will send back a non-successful response code indicating that something went wrong. When this happens an `IGDBEndpointException` can be caught to extract information about the issue. To catch these errors you have to enclose your [endpoint](#endpoints) method calls in a try...catch block.\n\n```php\ngame($query);\n } catch (IGDBEndpointException $e) {\n // since the query contains a non-existing field, an error occured\n // printing the response code and the error message\n echo \"Response code: \" . $e->getResponseCode();\n echo \"Message: \" . $e->getMessage();\n }\n\n?>\n```\n\nSince the query above is not valid, as there is no field called `nonexistingfield` on the game endpoint, the API will send a response with an error message and a non-successful response code. The result of the script above is:\n\n```text\nResponse code: 400\nMessage: Invalid Field\n```\n\nYou can also get some additional information about this request using the [`get_request_info()`](#get-request-info) method.","html":"

Your query may fail on the IGDB side. In this case the API will send back a non-successful response code indicating that something went wrong. When this happens an IGDBEndpointException can be caught to extract information about the issue. To catch these errors you have to enclose your endpoint method calls in a try...catch block.

\n
<?php\n\n    $igdb = new IGDB(\"{client_id}\", \"{access_token}\");\n\n    // your query string with a field that doesn't exist\n    $query = 'search \"uncharted\"; fields nonexistingfield;';\n\n    try {\n        // executing the query\n        $games = $igdb->game($query);\n    } catch (IGDBEndpointException $e) {\n        // since the query contains a non-existing field, an error occured\n        // printing the response code and the error message\n        echo \"Response code: \" . $e->getResponseCode();\n        echo \"Message: \" . $e->getMessage();\n    }\n\n?>\n
\n

Since the query above is not valid, as there is no field called nonexistingfield on the game endpoint, the API will send a response with an error message and a non-successful response code. The result of the script above is:

\n
Response code: 400\nMessage: Invalid Field\n
\n

You can also get some additional information about this request using the get_request_info() method.

"},"meta":{"revision":0,"created":1699573929864,"version":0},"$loki":37},{"id":"29c37ba","slug":"endpoints","level":2,"parent":"cbf8ecb","parents":["cbf8ecb"],"title":"Endpoints","date":null,"timestamp":null,"body":{"stripped":"Every endpoint method is named after the IGDB API endpoints using snake-casing naming convention. These methods are expecting at least one parameter, the $query itself. The second $count parameter is optional, it is false by default.\n\nParameters:\n\n$query: the query itself as an apicalypse string\n\n$count: a boolean value to whether return the records or the count of the records\n\n:tip To build your queries, give IGDB Query Builder a try!\n\nThese methods will return an array of objects decoded from IGDB response JSON when the $count parameter is false. Otherwise, it will execute a count query against the selected endpoint which will return an object with a count property holding the sum of the found items. The count queries can be filtered with where parameters.\n\nIGDBEndpointException is thrown if a non-successful response code is recieved from the IGDB API. To find out how to handle request errors, head to the Handle Request Errors section.\n\nPlease refer to the return values section for more details about the return values of these methods.\n\nFor the endpoint specific fields that the API returns please refer to the IGDB documentation's respective paragraph. Each endpoint has a direct link!","markdown":"Every endpoint method is named after the IGDB API endpoints using snake-casing naming convention. These methods are expecting at least one parameter, the `$query` itself. The second `$count` parameter is optional, it is `false` by default.\n\n**Parameters**:\n - `$query`: the query itself as an apicalypse string\n - `$count`: a `boolean` value to whether return the records or the count of the records\n\n>:tip To build your queries, give [IGDB Query Builder](#igdb-query-builder) a try!\n\nThese methods will return **an array of objects** decoded from IGDB response JSON when the `$count` parameter is false. Otherwise, it will execute a count query against the selected endpoint which will return an object with a `count` property holding the sum of the found items. The count queries can be filtered with [where](#where) parameters.\n\n`IGDBEndpointException` is thrown if a non-successful response code is recieved from the IGDB API. To find out how to handle request errors, head to the [Handle Request Errors](#handling-request-errors) section.\n\nPlease refer to the [return values section](#return-values) for more details about the return values of these methods.\n\nFor the endpoint specific fields that the API returns please refer to the IGDB documentation's respective paragraph. Each endpoint has a direct link!","html":"

Every endpoint method is named after the IGDB API endpoints using snake-casing naming convention. These methods are expecting at least one parameter, the $query itself. The second $count parameter is optional, it is false by default.

\n

Parameters:

\n
    \n
  • $query: the query itself as an apicalypse string
  • \n
  • $count: a boolean value to whether return the records or the count of the records
  • \n
\n
\n

:tip To build your queries, give IGDB Query Builder a try!

\n
\n

These methods will return an array of objects decoded from IGDB response JSON when the $count parameter is false. Otherwise, it will execute a count query against the selected endpoint which will return an object with a count property holding the sum of the found items. The count queries can be filtered with where parameters.

\n

IGDBEndpointException is thrown if a non-successful response code is recieved from the IGDB API. To find out how to handle request errors, head to the Handle Request Errors section.

\n

Please refer to the return values section for more details about the return values of these methods.

\n

For the endpoint specific fields that the API returns please refer to the IGDB documentation's respective paragraph. Each endpoint has a direct link!

"},"meta":{"revision":0,"created":1699573929864,"version":0},"$loki":38},{"id":"dec8c3f","slug":"age-rating","level":3,"parent":"cbf8ecb","parents":["cbf8ecb","29c37ba"],"title":"Age Rating","date":null,"timestamp":null,"body":{"stripped":"Fetching data from IGDB API using the Age Rating endpoint.\n\nEndpoint Description: Age Rating according to various rating organisations\n\nParameters:\n\n$query: an apicalypse formatted query String\n\n$count: whether the request should return the number of matches instead of the actual resultset\n\nReturns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.","markdown":"```php\npublic function age_rating(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n```\n\nFetching data from IGDB API using the [Age Rating](https://api-docs.igdb.com/#age-rating) endpoint.\n\n**Endpoint Description**: Age Rating according to various rating organisations\n\n**Parameters**:\n - `$query`: an apicalypse formatted query String\n - `$count`: whether the request should return the number of matches instead of the actual resultset\n\n**Returns**: either the resultset as an array of objects, or a single object with a count property. Depends on the second `$count` parameter.\n\n```php\nage_rating($query, $count);\n\n?>\n```","html":"
public function age_rating(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n
\n

Fetching data from IGDB API using the Age Rating endpoint.

\n

Endpoint Description: Age Rating according to various rating organisations

\n

Parameters:

\n
    \n
  • $query: an apicalypse formatted query String
  • \n
  • $count: whether the request should return the number of matches instead of the actual resultset
  • \n
\n

Returns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.

\n
<?php\n\n    // Age Rating endpoint method\n    $igdb->age_rating($query, $count);\n\n?>\n
"},"meta":{"revision":0,"created":1699573929864,"version":0},"$loki":39},{"id":"df10452","slug":"age-rating-content-description","level":3,"parent":"cbf8ecb","parents":["cbf8ecb","29c37ba"],"title":"Age Rating Content Description","date":null,"timestamp":null,"body":{"stripped":"Fetching data from IGDB API using the Age Rating Content Description endpoint.\n\nEndpoint Description: Age Rating Descriptors\n\nParameters:\n\n$query: an apicalypse formatted query String\n\n$count: whether the request should return the number of matches instead of the actual resultset\n\nReturns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.","markdown":"```php\npublic function age_rating_content_description(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n```\n\nFetching data from IGDB API using the [Age Rating Content Description](https://api-docs.igdb.com/#age-rating-content-description) endpoint.\n\n**Endpoint Description**: Age Rating Descriptors\n\n**Parameters**:\n - `$query`: an apicalypse formatted query String\n - `$count`: whether the request should return the number of matches instead of the actual resultset\n\n**Returns**: either the resultset as an array of objects, or a single object with a count property. Depends on the second `$count` parameter.\n\n```php\nage_rating_content_description($query, $count);\n\n?>\n```","html":"
public function age_rating_content_description(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n
\n

Fetching data from IGDB API using the Age Rating Content Description endpoint.

\n

Endpoint Description: Age Rating Descriptors

\n

Parameters:

\n
    \n
  • $query: an apicalypse formatted query String
  • \n
  • $count: whether the request should return the number of matches instead of the actual resultset
  • \n
\n

Returns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.

\n
<?php\n\n    // Age Rating Content Description endpoint method\n    $igdb->age_rating_content_description($query, $count);\n\n?>\n
"},"meta":{"revision":0,"created":1699573929864,"version":0},"$loki":40},{"id":"ef28a61","slug":"alternative-name","level":3,"parent":"cbf8ecb","parents":["cbf8ecb","29c37ba"],"title":"Alternative Name","date":null,"timestamp":null,"body":{"stripped":"Fetching data from IGDB API using the Alternative Name endpoint.\n\nEndpoint Description: Alternative and international game titles\n\nParameters:\n\n$query: an apicalypse formatted query String\n\n$count: whether the request should return the number of matches instead of the actual resultset\n\nReturns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.","markdown":"```php\npublic function alternative_name(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n```\n\nFetching data from IGDB API using the [Alternative Name](https://api-docs.igdb.com/#alternative-name) endpoint.\n\n**Endpoint Description**: Alternative and international game titles\n\n**Parameters**:\n - `$query`: an apicalypse formatted query String\n - `$count`: whether the request should return the number of matches instead of the actual resultset\n\n**Returns**: either the resultset as an array of objects, or a single object with a count property. Depends on the second `$count` parameter.\n\n```php\nalternative_name($query, $count);\n\n?>\n```","html":"
public function alternative_name(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n
\n

Fetching data from IGDB API using the Alternative Name endpoint.

\n

Endpoint Description: Alternative and international game titles

\n

Parameters:

\n
    \n
  • $query: an apicalypse formatted query String
  • \n
  • $count: whether the request should return the number of matches instead of the actual resultset
  • \n
\n

Returns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.

\n
<?php\n\n    // Alternative Name endpoint method\n    $igdb->alternative_name($query, $count);\n\n?>\n
"},"meta":{"revision":0,"created":1699573929864,"version":0},"$loki":41},{"id":"bd511a9","slug":"artwork","level":3,"parent":"cbf8ecb","parents":["cbf8ecb","29c37ba"],"title":"Artwork","date":null,"timestamp":null,"body":{"stripped":"Fetching data from IGDB API using the Artwork endpoint.\n\nEndpoint Description: official artworks (resolution and aspect ratio may vary)\n\nParameters:\n\n$query: an apicalypse formatted query String\n\n$count: whether the request should return the number of matches instead of the actual resultset\n\nReturns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.","markdown":"```php\npublic function artwork(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n```\n\nFetching data from IGDB API using the [Artwork](https://api-docs.igdb.com/#artwork) endpoint.\n\n**Endpoint Description**: official artworks (resolution and aspect ratio may vary)\n\n**Parameters**:\n - `$query`: an apicalypse formatted query String\n - `$count`: whether the request should return the number of matches instead of the actual resultset\n\n**Returns**: either the resultset as an array of objects, or a single object with a count property. Depends on the second `$count` parameter.\n\n```php\nartwork($query, $count);\n\n?>\n```","html":"
public function artwork(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n
\n

Fetching data from IGDB API using the Artwork endpoint.

\n

Endpoint Description: official artworks (resolution and aspect ratio may vary)

\n

Parameters:

\n
    \n
  • $query: an apicalypse formatted query String
  • \n
  • $count: whether the request should return the number of matches instead of the actual resultset
  • \n
\n

Returns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.

\n
<?php\n\n    // Artwork endpoint method\n    $igdb->artwork($query, $count);\n\n?>\n
"},"meta":{"revision":0,"created":1699573929864,"version":0},"$loki":42},{"id":"80c438e","slug":"character","level":3,"parent":"cbf8ecb","parents":["cbf8ecb","29c37ba"],"title":"Character","date":null,"timestamp":null,"body":{"stripped":"Fetching data from IGDB API using the Character endpoint.\n\nEndpoint Description: Video game characters\n\nParameters:\n\n$query: an apicalypse formatted query String\n\n$count: whether the request should return the number of matches instead of the actual resultset\n\nReturns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.","markdown":"```php\npublic function character(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n```\n\nFetching data from IGDB API using the [Character](https://api-docs.igdb.com/#character) endpoint.\n\n**Endpoint Description**: Video game characters\n\n**Parameters**:\n - `$query`: an apicalypse formatted query String\n - `$count`: whether the request should return the number of matches instead of the actual resultset\n\n**Returns**: either the resultset as an array of objects, or a single object with a count property. Depends on the second `$count` parameter.\n\n```php\ncharacter($query, $count);\n\n?>\n```","html":"
public function character(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n
\n

Fetching data from IGDB API using the Character endpoint.

\n

Endpoint Description: Video game characters

\n

Parameters:

\n
    \n
  • $query: an apicalypse formatted query String
  • \n
  • $count: whether the request should return the number of matches instead of the actual resultset
  • \n
\n

Returns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.

\n
<?php\n\n    // Character endpoint method\n    $igdb->character($query, $count);\n\n?>\n
"},"meta":{"revision":0,"created":1699573929864,"version":0},"$loki":43},{"id":"58e8450","slug":"character-mug-shot","level":3,"parent":"cbf8ecb","parents":["cbf8ecb","29c37ba"],"title":"Character Mug Shot","date":null,"timestamp":null,"body":{"stripped":"Fetching data from IGDB API using the Character Mug Shot endpoint.\n\nEndpoint Description: Images depicting game characters\n\nParameters:\n\n$query: an apicalypse formatted query String\n\n$count: whether the request should return the number of matches instead of the actual resultset\n\nReturns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.","markdown":"```php\npublic function character_mug_shot(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n```\n\nFetching data from IGDB API using the [Character Mug Shot](https://api-docs.igdb.com/#character-mug-shot) endpoint.\n\n**Endpoint Description**: Images depicting game characters\n\n**Parameters**:\n - `$query`: an apicalypse formatted query String\n - `$count`: whether the request should return the number of matches instead of the actual resultset\n\n**Returns**: either the resultset as an array of objects, or a single object with a count property. Depends on the second `$count` parameter.\n\n```php\ncharacter_mug_shot($query, $count);\n\n?>\n```","html":"
public function character_mug_shot(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n
\n

Fetching data from IGDB API using the Character Mug Shot endpoint.

\n

Endpoint Description: Images depicting game characters

\n

Parameters:

\n
    \n
  • $query: an apicalypse formatted query String
  • \n
  • $count: whether the request should return the number of matches instead of the actual resultset
  • \n
\n

Returns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.

\n
<?php\n\n    // Character Mug Shot endpoint method\n    $igdb->character_mug_shot($query, $count);\n\n?>\n
"},"meta":{"revision":0,"created":1699573929864,"version":0},"$loki":44},{"id":"7e9aa14","slug":"collection","level":3,"parent":"cbf8ecb","parents":["cbf8ecb","29c37ba"],"title":"Collection","date":null,"timestamp":null,"body":{"stripped":"Fetching data from IGDB API using the Collection endpoint.\n\nEndpoint Description: Collection, AKA Series\n\nParameters:\n\n$query: an apicalypse formatted query String\n\n$count: whether the request should return the number of matches instead of the actual resultset\n\nReturns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.","markdown":"```php\npublic function collection(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n```\n\nFetching data from IGDB API using the [Collection](https://api-docs.igdb.com/#collection) endpoint.\n\n**Endpoint Description**: Collection, AKA Series\n\n**Parameters**:\n - `$query`: an apicalypse formatted query String\n - `$count`: whether the request should return the number of matches instead of the actual resultset\n\n**Returns**: either the resultset as an array of objects, or a single object with a count property. Depends on the second `$count` parameter.\n\n```php\ncollection($query, $count);\n\n?>\n```","html":"
public function collection(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n
\n

Fetching data from IGDB API using the Collection endpoint.

\n

Endpoint Description: Collection, AKA Series

\n

Parameters:

\n
    \n
  • $query: an apicalypse formatted query String
  • \n
  • $count: whether the request should return the number of matches instead of the actual resultset
  • \n
\n

Returns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.

\n
<?php\n\n    // Collection endpoint method\n    $igdb->collection($query, $count);\n\n?>\n
"},"meta":{"revision":0,"created":1699573929864,"version":0},"$loki":45},{"id":"6b3a503","slug":"collection-membership","level":3,"parent":"cbf8ecb","parents":["cbf8ecb","29c37ba"],"title":"Collection Membership","date":null,"timestamp":null,"body":{"stripped":"Fetching data from IGDB API using the Collection Membership endpoint.\n\nEndpoint Description: The Collection Memberships.\n\nParameters:\n\n$query: an apicalypse formatted query String\n\n$count: whether the request should return the number of matches instead of the actual resultset\n\nReturns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.","markdown":"```php\npublic function collection_membership(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n```\n\nFetching data from IGDB API using the [Collection Membership](https://api-docs.igdb.com/#collection-membership) endpoint.\n\n**Endpoint Description**: The Collection Memberships.\n\n**Parameters**:\n - `$query`: an apicalypse formatted query String\n - `$count`: whether the request should return the number of matches instead of the actual resultset\n\n**Returns**: either the resultset as an array of objects, or a single object with a count property. Depends on the second `$count` parameter.\n\n```php\ncollection_membership($query, $count);\n\n?>\n```","html":"
public function collection_membership(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n
\n

Fetching data from IGDB API using the Collection Membership endpoint.

\n

Endpoint Description: The Collection Memberships.

\n

Parameters:

\n
    \n
  • $query: an apicalypse formatted query String
  • \n
  • $count: whether the request should return the number of matches instead of the actual resultset
  • \n
\n

Returns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.

\n
<?php\n\n    // Collection Membership endpoint method\n    $igdb->collection_membership($query, $count);\n\n?>\n
"},"meta":{"revision":0,"created":1699573929864,"version":0},"$loki":46},{"id":"7622413","slug":"collection-membership-type","level":3,"parent":"cbf8ecb","parents":["cbf8ecb","29c37ba"],"title":"Collection Membership Type","date":null,"timestamp":null,"body":{"stripped":"Fetching data from IGDB API using the Collection Membership Type endpoint.\n\nEndpoint Description: Enums for collection membership types.\n\nParameters:\n\n$query: an apicalypse formatted query String\n\n$count: whether the request should return the number of matches instead of the actual resultset\n\nReturns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.","markdown":"```php\npublic function collection_membership_type(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n```\n\nFetching data from IGDB API using the [Collection Membership Type](https://api-docs.igdb.com/#collection-membership-type) endpoint.\n\n**Endpoint Description**: Enums for collection membership types.\n\n**Parameters**:\n - `$query`: an apicalypse formatted query String\n - `$count`: whether the request should return the number of matches instead of the actual resultset\n\n**Returns**: either the resultset as an array of objects, or a single object with a count property. Depends on the second `$count` parameter.\n\n```php\ncollection_membership_type($query, $count);\n\n?>\n```","html":"
public function collection_membership_type(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n
\n

Fetching data from IGDB API using the Collection Membership Type endpoint.

\n

Endpoint Description: Enums for collection membership types.

\n

Parameters:

\n
    \n
  • $query: an apicalypse formatted query String
  • \n
  • $count: whether the request should return the number of matches instead of the actual resultset
  • \n
\n

Returns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.

\n
<?php\n\n    // Collection Membership Type endpoint method\n    $igdb->collection_membership_type($query, $count);\n\n?>\n
"},"meta":{"revision":0,"created":1699573929864,"version":0},"$loki":47},{"id":"33962df","slug":"collection-relation","level":3,"parent":"cbf8ecb","parents":["cbf8ecb","29c37ba"],"title":"Collection Relation","date":null,"timestamp":null,"body":{"stripped":"Fetching data from IGDB API using the Collection Relation endpoint.\n\nEndpoint Description: Describes Relationship between Collections.\n\nParameters:\n\n$query: an apicalypse formatted query String\n\n$count: whether the request should return the number of matches instead of the actual resultset\n\nReturns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.","markdown":"```php\npublic function collection_relation(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n```\n\nFetching data from IGDB API using the [Collection Relation](https://api-docs.igdb.com/#collection-relation) endpoint.\n\n**Endpoint Description**: Describes Relationship between Collections.\n\n**Parameters**:\n - `$query`: an apicalypse formatted query String\n - `$count`: whether the request should return the number of matches instead of the actual resultset\n\n**Returns**: either the resultset as an array of objects, or a single object with a count property. Depends on the second `$count` parameter.\n\n```php\ncollection_relation($query, $count);\n\n?>\n```","html":"
public function collection_relation(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n
\n

Fetching data from IGDB API using the Collection Relation endpoint.

\n

Endpoint Description: Describes Relationship between Collections.

\n

Parameters:

\n
    \n
  • $query: an apicalypse formatted query String
  • \n
  • $count: whether the request should return the number of matches instead of the actual resultset
  • \n
\n

Returns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.

\n
<?php\n\n    // Collection Relation endpoint method\n    $igdb->collection_relation($query, $count);\n\n?>\n
"},"meta":{"revision":0,"created":1699573929864,"version":0},"$loki":48},{"id":"70906f1","slug":"collection-relation-type","level":3,"parent":"cbf8ecb","parents":["cbf8ecb","29c37ba"],"title":"Collection Relation Type","date":null,"timestamp":null,"body":{"stripped":"Fetching data from IGDB API using the Collection Relation Type endpoint.\n\nEndpoint Description: Collection Relation Types\n\nParameters:\n\n$query: an apicalypse formatted query String\n\n$count: whether the request should return the number of matches instead of the actual resultset\n\nReturns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.","markdown":"```php\npublic function collection_relation_type(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n```\n\nFetching data from IGDB API using the [Collection Relation Type](https://api-docs.igdb.com/#collection-relation-type) endpoint.\n\n**Endpoint Description**: Collection Relation Types\n\n**Parameters**:\n - `$query`: an apicalypse formatted query String\n - `$count`: whether the request should return the number of matches instead of the actual resultset\n\n**Returns**: either the resultset as an array of objects, or a single object with a count property. Depends on the second `$count` parameter.\n\n```php\ncollection_relation_type($query, $count);\n\n?>\n```","html":"
public function collection_relation_type(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n
\n

Fetching data from IGDB API using the Collection Relation Type endpoint.

\n

Endpoint Description: Collection Relation Types

\n

Parameters:

\n
    \n
  • $query: an apicalypse formatted query String
  • \n
  • $count: whether the request should return the number of matches instead of the actual resultset
  • \n
\n

Returns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.

\n
<?php\n\n    // Collection Relation Type endpoint method\n    $igdb->collection_relation_type($query, $count);\n\n?>\n
"},"meta":{"revision":0,"created":1699573929864,"version":0},"$loki":49},{"id":"8999774","slug":"collection-type","level":3,"parent":"cbf8ecb","parents":["cbf8ecb","29c37ba"],"title":"Collection Type","date":null,"timestamp":null,"body":{"stripped":"Fetching data from IGDB API using the Collection Type endpoint.\n\nEndpoint Description: Enums for collection types.\n\nParameters:\n\n$query: an apicalypse formatted query String\n\n$count: whether the request should return the number of matches instead of the actual resultset\n\nReturns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.","markdown":"```php\npublic function collection_type(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n```\n\nFetching data from IGDB API using the [Collection Type](https://api-docs.igdb.com/#collection-type) endpoint.\n\n**Endpoint Description**: Enums for collection types.\n\n**Parameters**:\n - `$query`: an apicalypse formatted query String\n - `$count`: whether the request should return the number of matches instead of the actual resultset\n\n**Returns**: either the resultset as an array of objects, or a single object with a count property. Depends on the second `$count` parameter.\n\n```php\ncollection_type($query, $count);\n\n?>\n```","html":"
public function collection_type(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n
\n

Fetching data from IGDB API using the Collection Type endpoint.

\n

Endpoint Description: Enums for collection types.

\n

Parameters:

\n
    \n
  • $query: an apicalypse formatted query String
  • \n
  • $count: whether the request should return the number of matches instead of the actual resultset
  • \n
\n

Returns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.

\n
<?php\n\n    // Collection Type endpoint method\n    $igdb->collection_type($query, $count);\n\n?>\n
"},"meta":{"revision":0,"created":1699573929864,"version":0},"$loki":50},{"id":"299fb52","slug":"company","level":3,"parent":"cbf8ecb","parents":["cbf8ecb","29c37ba"],"title":"Company","date":null,"timestamp":null,"body":{"stripped":"Fetching data from IGDB API using the Company endpoint.\n\nEndpoint Description: Video game companies. Both publishers & developers\n\nParameters:\n\n$query: an apicalypse formatted query String\n\n$count: whether the request should return the number of matches instead of the actual resultset\n\nReturns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.","markdown":"```php\npublic function company(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n```\n\nFetching data from IGDB API using the [Company](https://api-docs.igdb.com/#company) endpoint.\n\n**Endpoint Description**: Video game companies. Both publishers & developers\n\n**Parameters**:\n - `$query`: an apicalypse formatted query String\n - `$count`: whether the request should return the number of matches instead of the actual resultset\n\n**Returns**: either the resultset as an array of objects, or a single object with a count property. Depends on the second `$count` parameter.\n\n```php\ncompany($query, $count);\n\n?>\n```","html":"
public function company(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n
\n

Fetching data from IGDB API using the Company endpoint.

\n

Endpoint Description: Video game companies. Both publishers & developers

\n

Parameters:

\n
    \n
  • $query: an apicalypse formatted query String
  • \n
  • $count: whether the request should return the number of matches instead of the actual resultset
  • \n
\n

Returns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.

\n
<?php\n\n    // Company endpoint method\n    $igdb->company($query, $count);\n\n?>\n
"},"meta":{"revision":0,"created":1699573929864,"version":0},"$loki":51},{"id":"4141062","slug":"company-logo","level":3,"parent":"cbf8ecb","parents":["cbf8ecb","29c37ba"],"title":"Company Logo","date":null,"timestamp":null,"body":{"stripped":"Fetching data from IGDB API using the Company Logo endpoint.\n\nEndpoint Description: The logos of developers and publishers\n\nParameters:\n\n$query: an apicalypse formatted query String\n\n$count: whether the request should return the number of matches instead of the actual resultset\n\nReturns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.","markdown":"```php\npublic function company_logo(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n```\n\nFetching data from IGDB API using the [Company Logo](https://api-docs.igdb.com/#company-logo) endpoint.\n\n**Endpoint Description**: The logos of developers and publishers\n\n**Parameters**:\n - `$query`: an apicalypse formatted query String\n - `$count`: whether the request should return the number of matches instead of the actual resultset\n\n**Returns**: either the resultset as an array of objects, or a single object with a count property. Depends on the second `$count` parameter.\n\n```php\ncompany_logo($query, $count);\n\n?>\n```","html":"
public function company_logo(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n
\n

Fetching data from IGDB API using the Company Logo endpoint.

\n

Endpoint Description: The logos of developers and publishers

\n

Parameters:

\n
    \n
  • $query: an apicalypse formatted query String
  • \n
  • $count: whether the request should return the number of matches instead of the actual resultset
  • \n
\n

Returns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.

\n
<?php\n\n    // Company Logo endpoint method\n    $igdb->company_logo($query, $count);\n\n?>\n
"},"meta":{"revision":0,"created":1699573929864,"version":0},"$loki":52},{"id":"a2eec3c","slug":"company-website","level":3,"parent":"cbf8ecb","parents":["cbf8ecb","29c37ba"],"title":"Company Website","date":null,"timestamp":null,"body":{"stripped":"Fetching data from IGDB API using the Company Website endpoint.\n\nEndpoint Description: Company Website\n\nParameters:\n\n$query: an apicalypse formatted query String\n\n$count: whether the request should return the number of matches instead of the actual resultset\n\nReturns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.","markdown":"```php\npublic function company_website(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n```\n\nFetching data from IGDB API using the [Company Website](https://api-docs.igdb.com/#company-website) endpoint.\n\n**Endpoint Description**: Company Website\n\n**Parameters**:\n - `$query`: an apicalypse formatted query String\n - `$count`: whether the request should return the number of matches instead of the actual resultset\n\n**Returns**: either the resultset as an array of objects, or a single object with a count property. Depends on the second `$count` parameter.\n\n```php\ncompany_website($query, $count);\n\n?>\n```","html":"
public function company_website(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n
\n

Fetching data from IGDB API using the Company Website endpoint.

\n

Endpoint Description: Company Website

\n

Parameters:

\n
    \n
  • $query: an apicalypse formatted query String
  • \n
  • $count: whether the request should return the number of matches instead of the actual resultset
  • \n
\n

Returns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.

\n
<?php\n\n    // Company Website endpoint method\n    $igdb->company_website($query, $count);\n\n?>\n
"},"meta":{"revision":0,"created":1699573929864,"version":0},"$loki":53},{"id":"6ddfbfb","slug":"cover","level":3,"parent":"cbf8ecb","parents":["cbf8ecb","29c37ba"],"title":"Cover","date":null,"timestamp":null,"body":{"stripped":"Fetching data from IGDB API using the Cover endpoint.\n\nEndpoint Description: The cover art of games\n\nParameters:\n\n$query: an apicalypse formatted query String\n\n$count: whether the request should return the number of matches instead of the actual resultset\n\nReturns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.","markdown":"```php\npublic function cover(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n```\n\nFetching data from IGDB API using the [Cover](https://api-docs.igdb.com/#cover) endpoint.\n\n**Endpoint Description**: The cover art of games\n\n**Parameters**:\n - `$query`: an apicalypse formatted query String\n - `$count`: whether the request should return the number of matches instead of the actual resultset\n\n**Returns**: either the resultset as an array of objects, or a single object with a count property. Depends on the second `$count` parameter.\n\n```php\ncover($query, $count);\n\n?>\n```","html":"
public function cover(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n
\n

Fetching data from IGDB API using the Cover endpoint.

\n

Endpoint Description: The cover art of games

\n

Parameters:

\n
    \n
  • $query: an apicalypse formatted query String
  • \n
  • $count: whether the request should return the number of matches instead of the actual resultset
  • \n
\n

Returns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.

\n
<?php\n\n    // Cover endpoint method\n    $igdb->cover($query, $count);\n\n?>\n
"},"meta":{"revision":0,"created":1699573929864,"version":0},"$loki":54},{"id":"4cbda9a","slug":"event","level":3,"parent":"cbf8ecb","parents":["cbf8ecb","29c37ba"],"title":"Event","date":null,"timestamp":null,"body":{"stripped":"Fetching data from IGDB API using the Event endpoint.\n\nEndpoint Description: Gaming event like GamesCom, Tokyo Game Show, PAX or GSL\n\nParameters:\n\n$query: an apicalypse formatted query String\n\n$count: whether the request should return the number of matches instead of the actual resultset\n\nReturns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.","markdown":"```php\npublic function event(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n```\n\nFetching data from IGDB API using the [Event](https://api-docs.igdb.com/#event) endpoint.\n\n**Endpoint Description**: Gaming event like GamesCom, Tokyo Game Show, PAX or GSL\n\n**Parameters**:\n - `$query`: an apicalypse formatted query String\n - `$count`: whether the request should return the number of matches instead of the actual resultset\n\n**Returns**: either the resultset as an array of objects, or a single object with a count property. Depends on the second `$count` parameter.\n\n```php\nevent($query, $count);\n\n?>\n```","html":"
public function event(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n
\n

Fetching data from IGDB API using the Event endpoint.

\n

Endpoint Description: Gaming event like GamesCom, Tokyo Game Show, PAX or GSL

\n

Parameters:

\n
    \n
  • $query: an apicalypse formatted query String
  • \n
  • $count: whether the request should return the number of matches instead of the actual resultset
  • \n
\n

Returns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.

\n
<?php\n\n    // Event endpoint method\n    $igdb->event($query, $count);\n\n?>\n
"},"meta":{"revision":0,"created":1699573929864,"version":0},"$loki":55},{"id":"9dd4ccb","slug":"event-logo","level":3,"parent":"cbf8ecb","parents":["cbf8ecb","29c37ba"],"title":"Event Logo","date":null,"timestamp":null,"body":{"stripped":"Fetching data from IGDB API using the Event Logo endpoint.\n\nEndpoint Description: Logo for the event\n\nParameters:\n\n$query: an apicalypse formatted query String\n\n$count: whether the request should return the number of matches instead of the actual resultset\n\nReturns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.","markdown":"```php\npublic function event_logo(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n```\n\nFetching data from IGDB API using the [Event Logo](https://api-docs.igdb.com/#event-logo) endpoint.\n\n**Endpoint Description**: Logo for the event\n\n**Parameters**:\n - `$query`: an apicalypse formatted query String\n - `$count`: whether the request should return the number of matches instead of the actual resultset\n\n**Returns**: either the resultset as an array of objects, or a single object with a count property. Depends on the second `$count` parameter.\n\n```php\nevent_logo($query, $count);\n\n?>\n```","html":"
public function event_logo(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n
\n

Fetching data from IGDB API using the Event Logo endpoint.

\n

Endpoint Description: Logo for the event

\n

Parameters:

\n
    \n
  • $query: an apicalypse formatted query String
  • \n
  • $count: whether the request should return the number of matches instead of the actual resultset
  • \n
\n

Returns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.

\n
<?php\n\n    // Event Logo endpoint method\n    $igdb->event_logo($query, $count);\n\n?>\n
"},"meta":{"revision":0,"created":1699573929864,"version":0},"$loki":56},{"id":"6be76dd","slug":"event-network","level":3,"parent":"cbf8ecb","parents":["cbf8ecb","29c37ba"],"title":"Event Network","date":null,"timestamp":null,"body":{"stripped":"Fetching data from IGDB API using the Event Network endpoint.\n\nEndpoint Description: Urls related to the event like twitter, facebook and youtube\n\nParameters:\n\n$query: an apicalypse formatted query String\n\n$count: whether the request should return the number of matches instead of the actual resultset\n\nReturns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.","markdown":"```php\npublic function event_network(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n```\n\nFetching data from IGDB API using the [Event Network](https://api-docs.igdb.com/#event-network) endpoint.\n\n**Endpoint Description**: Urls related to the event like twitter, facebook and youtube\n\n**Parameters**:\n - `$query`: an apicalypse formatted query String\n - `$count`: whether the request should return the number of matches instead of the actual resultset\n\n**Returns**: either the resultset as an array of objects, or a single object with a count property. Depends on the second `$count` parameter.\n\n```php\nevent_network($query, $count);\n\n?>\n```","html":"
public function event_network(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n
\n

Fetching data from IGDB API using the Event Network endpoint.

\n

Endpoint Description: Urls related to the event like twitter, facebook and youtube

\n

Parameters:

\n
    \n
  • $query: an apicalypse formatted query String
  • \n
  • $count: whether the request should return the number of matches instead of the actual resultset
  • \n
\n

Returns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.

\n
<?php\n\n    // Event Network endpoint method\n    $igdb->event_network($query, $count);\n\n?>\n
"},"meta":{"revision":0,"created":1699573929864,"version":0},"$loki":57},{"id":"202fadd","slug":"external-game","level":3,"parent":"cbf8ecb","parents":["cbf8ecb","29c37ba"],"title":"External Game","date":null,"timestamp":null,"body":{"stripped":"Fetching data from IGDB API using the External Game endpoint.\n\nEndpoint Description: Game IDs on other services\n\nParameters:\n\n$query: an apicalypse formatted query String\n\n$count: whether the request should return the number of matches instead of the actual resultset\n\nReturns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.","markdown":"```php\npublic function external_game(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n```\n\nFetching data from IGDB API using the [External Game](https://api-docs.igdb.com/#external-game) endpoint.\n\n**Endpoint Description**: Game IDs on other services\n\n**Parameters**:\n - `$query`: an apicalypse formatted query String\n - `$count`: whether the request should return the number of matches instead of the actual resultset\n\n**Returns**: either the resultset as an array of objects, or a single object with a count property. Depends on the second `$count` parameter.\n\n```php\nexternal_game($query, $count);\n\n?>\n```","html":"
public function external_game(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n
\n

Fetching data from IGDB API using the External Game endpoint.

\n

Endpoint Description: Game IDs on other services

\n

Parameters:

\n
    \n
  • $query: an apicalypse formatted query String
  • \n
  • $count: whether the request should return the number of matches instead of the actual resultset
  • \n
\n

Returns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.

\n
<?php\n\n    // External Game endpoint method\n    $igdb->external_game($query, $count);\n\n?>\n
"},"meta":{"revision":0,"created":1699573929864,"version":0},"$loki":58},{"id":"e11e6bd","slug":"franchise","level":3,"parent":"cbf8ecb","parents":["cbf8ecb","29c37ba"],"title":"Franchise","date":null,"timestamp":null,"body":{"stripped":"Fetching data from IGDB API using the Franchise endpoint.\n\nEndpoint Description: A list of video game franchises such as Star Wars.\n\nParameters:\n\n$query: an apicalypse formatted query String\n\n$count: whether the request should return the number of matches instead of the actual resultset\n\nReturns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.","markdown":"```php\npublic function franchise(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n```\n\nFetching data from IGDB API using the [Franchise](https://api-docs.igdb.com/#franchise) endpoint.\n\n**Endpoint Description**: A list of video game franchises such as Star Wars.\n\n**Parameters**:\n - `$query`: an apicalypse formatted query String\n - `$count`: whether the request should return the number of matches instead of the actual resultset\n\n**Returns**: either the resultset as an array of objects, or a single object with a count property. Depends on the second `$count` parameter.\n\n```php\nfranchise($query, $count);\n\n?>\n```","html":"
public function franchise(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n
\n

Fetching data from IGDB API using the Franchise endpoint.

\n

Endpoint Description: A list of video game franchises such as Star Wars.

\n

Parameters:

\n
    \n
  • $query: an apicalypse formatted query String
  • \n
  • $count: whether the request should return the number of matches instead of the actual resultset
  • \n
\n

Returns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.

\n
<?php\n\n    // Franchise endpoint method\n    $igdb->franchise($query, $count);\n\n?>\n
"},"meta":{"revision":0,"created":1699573929864,"version":0},"$loki":59},{"id":"2f3ec6b","slug":"game","level":3,"parent":"cbf8ecb","parents":["cbf8ecb","29c37ba"],"title":"Game","date":null,"timestamp":null,"body":{"stripped":"Fetching data from IGDB API using the Game endpoint.\n\nEndpoint Description: Video Games!\n\nParameters:\n\n$query: an apicalypse formatted query String\n\n$count: whether the request should return the number of matches instead of the actual resultset\n\nReturns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.","markdown":"```php\npublic function game(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n```\n\nFetching data from IGDB API using the [Game](https://api-docs.igdb.com/#game) endpoint.\n\n**Endpoint Description**: Video Games!\n\n**Parameters**:\n - `$query`: an apicalypse formatted query String\n - `$count`: whether the request should return the number of matches instead of the actual resultset\n\n**Returns**: either the resultset as an array of objects, or a single object with a count property. Depends on the second `$count` parameter.\n\n```php\ngame($query, $count);\n\n?>\n```","html":"
public function game(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n
\n

Fetching data from IGDB API using the Game endpoint.

\n

Endpoint Description: Video Games!

\n

Parameters:

\n
    \n
  • $query: an apicalypse formatted query String
  • \n
  • $count: whether the request should return the number of matches instead of the actual resultset
  • \n
\n

Returns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.

\n
<?php\n\n    // Game endpoint method\n    $igdb->game($query, $count);\n\n?>\n
"},"meta":{"revision":0,"created":1699573929864,"version":0},"$loki":60},{"id":"c5d47de","slug":"game-engine","level":3,"parent":"cbf8ecb","parents":["cbf8ecb","29c37ba"],"title":"Game Engine","date":null,"timestamp":null,"body":{"stripped":"Fetching data from IGDB API using the Game Engine endpoint.\n\nEndpoint Description: Video game engines such as unreal engine.\n\nParameters:\n\n$query: an apicalypse formatted query String\n\n$count: whether the request should return the number of matches instead of the actual resultset\n\nReturns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.","markdown":"```php\npublic function game_engine(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n```\n\nFetching data from IGDB API using the [Game Engine](https://api-docs.igdb.com/#game-engine) endpoint.\n\n**Endpoint Description**: Video game engines such as unreal engine.\n\n**Parameters**:\n - `$query`: an apicalypse formatted query String\n - `$count`: whether the request should return the number of matches instead of the actual resultset\n\n**Returns**: either the resultset as an array of objects, or a single object with a count property. Depends on the second `$count` parameter.\n\n```php\ngame_engine($query, $count);\n\n?>\n```","html":"
public function game_engine(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n
\n

Fetching data from IGDB API using the Game Engine endpoint.

\n

Endpoint Description: Video game engines such as unreal engine.

\n

Parameters:

\n
    \n
  • $query: an apicalypse formatted query String
  • \n
  • $count: whether the request should return the number of matches instead of the actual resultset
  • \n
\n

Returns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.

\n
<?php\n\n    // Game Engine endpoint method\n    $igdb->game_engine($query, $count);\n\n?>\n
"},"meta":{"revision":0,"created":1699573929864,"version":0},"$loki":61},{"id":"2b61696","slug":"game-engine-logo","level":3,"parent":"cbf8ecb","parents":["cbf8ecb","29c37ba"],"title":"Game Engine Logo","date":null,"timestamp":null,"body":{"stripped":"Fetching data from IGDB API using the Game Engine Logo endpoint.\n\nEndpoint Description: The logos of game engines\n\nParameters:\n\n$query: an apicalypse formatted query String\n\n$count: whether the request should return the number of matches instead of the actual resultset\n\nReturns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.","markdown":"```php\npublic function game_engine_logo(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n```\n\nFetching data from IGDB API using the [Game Engine Logo](https://api-docs.igdb.com/#game-engine-logo) endpoint.\n\n**Endpoint Description**: The logos of game engines\n\n**Parameters**:\n - `$query`: an apicalypse formatted query String\n - `$count`: whether the request should return the number of matches instead of the actual resultset\n\n**Returns**: either the resultset as an array of objects, or a single object with a count property. Depends on the second `$count` parameter.\n\n```php\ngame_engine_logo($query, $count);\n\n?>\n```","html":"
public function game_engine_logo(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n
\n

Fetching data from IGDB API using the Game Engine Logo endpoint.

\n

Endpoint Description: The logos of game engines

\n

Parameters:

\n
    \n
  • $query: an apicalypse formatted query String
  • \n
  • $count: whether the request should return the number of matches instead of the actual resultset
  • \n
\n

Returns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.

\n
<?php\n\n    // Game Engine Logo endpoint method\n    $igdb->game_engine_logo($query, $count);\n\n?>\n
"},"meta":{"revision":0,"created":1699573929864,"version":0},"$loki":62},{"id":"cff0478","slug":"game-localization","level":3,"parent":"cbf8ecb","parents":["cbf8ecb","29c37ba"],"title":"Game Localization","date":null,"timestamp":null,"body":{"stripped":"Fetching data from IGDB API using the Game Localization endpoint.\n\nEndpoint Description: Game localization for a game\n\nParameters:\n\n$query: an apicalypse formatted query String\n\n$count: whether the request should return the number of matches instead of the actual resultset\n\nReturns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.","markdown":"```php\npublic function game_localization(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n```\n\nFetching data from IGDB API using the [Game Localization](https://api-docs.igdb.com/#game-localization) endpoint.\n\n**Endpoint Description**: Game localization for a game\n\n**Parameters**:\n - `$query`: an apicalypse formatted query String\n - `$count`: whether the request should return the number of matches instead of the actual resultset\n\n**Returns**: either the resultset as an array of objects, or a single object with a count property. Depends on the second `$count` parameter.\n\n```php\ngame_localization($query, $count);\n\n?>\n```","html":"
public function game_localization(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n
\n

Fetching data from IGDB API using the Game Localization endpoint.

\n

Endpoint Description: Game localization for a game

\n

Parameters:

\n
    \n
  • $query: an apicalypse formatted query String
  • \n
  • $count: whether the request should return the number of matches instead of the actual resultset
  • \n
\n

Returns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.

\n
<?php\n\n    // Game Localization endpoint method\n    $igdb->game_localization($query, $count);\n\n?>\n
"},"meta":{"revision":0,"created":1699573929864,"version":0},"$loki":63},{"id":"96984d3","slug":"game-mode","level":3,"parent":"cbf8ecb","parents":["cbf8ecb","29c37ba"],"title":"Game Mode","date":null,"timestamp":null,"body":{"stripped":"Fetching data from IGDB API using the Game Mode endpoint.\n\nEndpoint Description: Single player, Multiplayer etc\n\nParameters:\n\n$query: an apicalypse formatted query String\n\n$count: whether the request should return the number of matches instead of the actual resultset\n\nReturns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.","markdown":"```php\npublic function game_mode(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n```\n\nFetching data from IGDB API using the [Game Mode](https://api-docs.igdb.com/#game-mode) endpoint.\n\n**Endpoint Description**: Single player, Multiplayer etc\n\n**Parameters**:\n - `$query`: an apicalypse formatted query String\n - `$count`: whether the request should return the number of matches instead of the actual resultset\n\n**Returns**: either the resultset as an array of objects, or a single object with a count property. Depends on the second `$count` parameter.\n\n```php\ngame_mode($query, $count);\n\n?>\n```","html":"
public function game_mode(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n
\n

Fetching data from IGDB API using the Game Mode endpoint.

\n

Endpoint Description: Single player, Multiplayer etc

\n

Parameters:

\n
    \n
  • $query: an apicalypse formatted query String
  • \n
  • $count: whether the request should return the number of matches instead of the actual resultset
  • \n
\n

Returns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.

\n
<?php\n\n    // Game Mode endpoint method\n    $igdb->game_mode($query, $count);\n\n?>\n
"},"meta":{"revision":0,"created":1699573929864,"version":0},"$loki":64},{"id":"3cbb2f9","slug":"game-version","level":3,"parent":"cbf8ecb","parents":["cbf8ecb","29c37ba"],"title":"Game Version","date":null,"timestamp":null,"body":{"stripped":"Fetching data from IGDB API using the Game Version endpoint.\n\nEndpoint Description: Details about game editions and versions.\n\nParameters:\n\n$query: an apicalypse formatted query String\n\n$count: whether the request should return the number of matches instead of the actual resultset\n\nReturns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.","markdown":"```php\npublic function game_version(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n```\n\nFetching data from IGDB API using the [Game Version](https://api-docs.igdb.com/#game-version) endpoint.\n\n**Endpoint Description**: Details about game editions and versions.\n\n**Parameters**:\n - `$query`: an apicalypse formatted query String\n - `$count`: whether the request should return the number of matches instead of the actual resultset\n\n**Returns**: either the resultset as an array of objects, or a single object with a count property. Depends on the second `$count` parameter.\n\n```php\ngame_version($query, $count);\n\n?>\n```","html":"
public function game_version(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n
\n

Fetching data from IGDB API using the Game Version endpoint.

\n

Endpoint Description: Details about game editions and versions.

\n

Parameters:

\n
    \n
  • $query: an apicalypse formatted query String
  • \n
  • $count: whether the request should return the number of matches instead of the actual resultset
  • \n
\n

Returns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.

\n
<?php\n\n    // Game Version endpoint method\n    $igdb->game_version($query, $count);\n\n?>\n
"},"meta":{"revision":0,"created":1699573929864,"version":0},"$loki":65},{"id":"4b88c69","slug":"game-version-feature","level":3,"parent":"cbf8ecb","parents":["cbf8ecb","29c37ba"],"title":"Game Version Feature","date":null,"timestamp":null,"body":{"stripped":"Fetching data from IGDB API using the Game Version Feature endpoint.\n\nEndpoint Description: Features and descriptions of what makes each version/edition different from the main game\n\nParameters:\n\n$query: an apicalypse formatted query String\n\n$count: whether the request should return the number of matches instead of the actual resultset\n\nReturns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.","markdown":"```php\npublic function game_version_feature(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n```\n\nFetching data from IGDB API using the [Game Version Feature](https://api-docs.igdb.com/#game-version-feature) endpoint.\n\n**Endpoint Description**: Features and descriptions of what makes each version/edition different from the main game\n\n**Parameters**:\n - `$query`: an apicalypse formatted query String\n - `$count`: whether the request should return the number of matches instead of the actual resultset\n\n**Returns**: either the resultset as an array of objects, or a single object with a count property. Depends on the second `$count` parameter.\n\n```php\ngame_version_feature($query, $count);\n\n?>\n```","html":"
public function game_version_feature(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n
\n

Fetching data from IGDB API using the Game Version Feature endpoint.

\n

Endpoint Description: Features and descriptions of what makes each version/edition different from the main game

\n

Parameters:

\n
    \n
  • $query: an apicalypse formatted query String
  • \n
  • $count: whether the request should return the number of matches instead of the actual resultset
  • \n
\n

Returns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.

\n
<?php\n\n    // Game Version Feature endpoint method\n    $igdb->game_version_feature($query, $count);\n\n?>\n
"},"meta":{"revision":0,"created":1699573929864,"version":0},"$loki":66},{"id":"9ac2c22","slug":"game-version-feature-value","level":3,"parent":"cbf8ecb","parents":["cbf8ecb","29c37ba"],"title":"Game Version Feature Value","date":null,"timestamp":null,"body":{"stripped":"Fetching data from IGDB API using the Game Version Feature Value endpoint.\n\nEndpoint Description: The bool/text value of the feature\n\nParameters:\n\n$query: an apicalypse formatted query String\n\n$count: whether the request should return the number of matches instead of the actual resultset\n\nReturns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.","markdown":"```php\npublic function game_version_feature_value(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n```\n\nFetching data from IGDB API using the [Game Version Feature Value](https://api-docs.igdb.com/#game-version-feature-value) endpoint.\n\n**Endpoint Description**: The bool/text value of the feature\n\n**Parameters**:\n - `$query`: an apicalypse formatted query String\n - `$count`: whether the request should return the number of matches instead of the actual resultset\n\n**Returns**: either the resultset as an array of objects, or a single object with a count property. Depends on the second `$count` parameter.\n\n```php\ngame_version_feature_value($query, $count);\n\n?>\n```","html":"
public function game_version_feature_value(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n
\n

Fetching data from IGDB API using the Game Version Feature Value endpoint.

\n

Endpoint Description: The bool/text value of the feature

\n

Parameters:

\n
    \n
  • $query: an apicalypse formatted query String
  • \n
  • $count: whether the request should return the number of matches instead of the actual resultset
  • \n
\n

Returns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.

\n
<?php\n\n    // Game Version Feature Value endpoint method\n    $igdb->game_version_feature_value($query, $count);\n\n?>\n
"},"meta":{"revision":0,"created":1699573929864,"version":0},"$loki":67},{"id":"59ffba6","slug":"game-video","level":3,"parent":"cbf8ecb","parents":["cbf8ecb","29c37ba"],"title":"Game Video","date":null,"timestamp":null,"body":{"stripped":"Fetching data from IGDB API using the Game Video endpoint.\n\nEndpoint Description: A video associated with a game\n\nParameters:\n\n$query: an apicalypse formatted query String\n\n$count: whether the request should return the number of matches instead of the actual resultset\n\nReturns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.","markdown":"```php\npublic function game_video(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n```\n\nFetching data from IGDB API using the [Game Video](https://api-docs.igdb.com/#game-video) endpoint.\n\n**Endpoint Description**: A video associated with a game\n\n**Parameters**:\n - `$query`: an apicalypse formatted query String\n - `$count`: whether the request should return the number of matches instead of the actual resultset\n\n**Returns**: either the resultset as an array of objects, or a single object with a count property. Depends on the second `$count` parameter.\n\n```php\ngame_video($query, $count);\n\n?>\n```","html":"
public function game_video(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n
\n

Fetching data from IGDB API using the Game Video endpoint.

\n

Endpoint Description: A video associated with a game

\n

Parameters:

\n
    \n
  • $query: an apicalypse formatted query String
  • \n
  • $count: whether the request should return the number of matches instead of the actual resultset
  • \n
\n

Returns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.

\n
<?php\n\n    // Game Video endpoint method\n    $igdb->game_video($query, $count);\n\n?>\n
"},"meta":{"revision":0,"created":1699573929864,"version":0},"$loki":68},{"id":"182baa8","slug":"genre","level":3,"parent":"cbf8ecb","parents":["cbf8ecb","29c37ba"],"title":"Genre","date":null,"timestamp":null,"body":{"stripped":"Fetching data from IGDB API using the Genre endpoint.\n\nEndpoint Description: Genres of video game\n\nParameters:\n\n$query: an apicalypse formatted query String\n\n$count: whether the request should return the number of matches instead of the actual resultset\n\nReturns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.","markdown":"```php\npublic function genre(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n```\n\nFetching data from IGDB API using the [Genre](https://api-docs.igdb.com/#genre) endpoint.\n\n**Endpoint Description**: Genres of video game\n\n**Parameters**:\n - `$query`: an apicalypse formatted query String\n - `$count`: whether the request should return the number of matches instead of the actual resultset\n\n**Returns**: either the resultset as an array of objects, or a single object with a count property. Depends on the second `$count` parameter.\n\n```php\ngenre($query, $count);\n\n?>\n```","html":"
public function genre(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n
\n

Fetching data from IGDB API using the Genre endpoint.

\n

Endpoint Description: Genres of video game

\n

Parameters:

\n
    \n
  • $query: an apicalypse formatted query String
  • \n
  • $count: whether the request should return the number of matches instead of the actual resultset
  • \n
\n

Returns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.

\n
<?php\n\n    // Genre endpoint method\n    $igdb->genre($query, $count);\n\n?>\n
"},"meta":{"revision":0,"created":1699573929864,"version":0},"$loki":69},{"id":"ab92e48","slug":"involved-company","level":3,"parent":"cbf8ecb","parents":["cbf8ecb","29c37ba"],"title":"Involved Company","date":null,"timestamp":null,"body":{"stripped":"Fetching data from IGDB API using the Involved Company endpoint.\n\nEndpoint Description:\n\nParameters:\n\n$query: an apicalypse formatted query String\n\n$count: whether the request should return the number of matches instead of the actual resultset\n\nReturns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.","markdown":"```php\npublic function involved_company(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n```\n\nFetching data from IGDB API using the [Involved Company](https://api-docs.igdb.com/#involved-company) endpoint.\n\n**Endpoint Description**: \n\n**Parameters**:\n - `$query`: an apicalypse formatted query String\n - `$count`: whether the request should return the number of matches instead of the actual resultset\n\n**Returns**: either the resultset as an array of objects, or a single object with a count property. Depends on the second `$count` parameter.\n\n```php\ninvolved_company($query, $count);\n\n?>\n```","html":"
public function involved_company(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n
\n

Fetching data from IGDB API using the Involved Company endpoint.

\n

Endpoint Description:

\n

Parameters:

\n
    \n
  • $query: an apicalypse formatted query String
  • \n
  • $count: whether the request should return the number of matches instead of the actual resultset
  • \n
\n

Returns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.

\n
<?php\n\n    // Involved Company endpoint method\n    $igdb->involved_company($query, $count);\n\n?>\n
"},"meta":{"revision":0,"created":1699573929864,"version":0},"$loki":70},{"id":"f09333f","slug":"keyword","level":3,"parent":"cbf8ecb","parents":["cbf8ecb","29c37ba"],"title":"Keyword","date":null,"timestamp":null,"body":{"stripped":"Fetching data from IGDB API using the Keyword endpoint.\n\nEndpoint Description: Keywords are words or phrases that get tagged to a game such as \"world war 2\" or \"steampunk\".\n\nParameters:\n\n$query: an apicalypse formatted query String\n\n$count: whether the request should return the number of matches instead of the actual resultset\n\nReturns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.","markdown":"```php\npublic function keyword(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n```\n\nFetching data from IGDB API using the [Keyword](https://api-docs.igdb.com/#keyword) endpoint.\n\n**Endpoint Description**: Keywords are words or phrases that get tagged to a game such as "world war 2" or "steampunk".\n\n**Parameters**:\n - `$query`: an apicalypse formatted query String\n - `$count`: whether the request should return the number of matches instead of the actual resultset\n\n**Returns**: either the resultset as an array of objects, or a single object with a count property. Depends on the second `$count` parameter.\n\n```php\nkeyword($query, $count);\n\n?>\n```","html":"
public function keyword(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n
\n

Fetching data from IGDB API using the Keyword endpoint.

\n

Endpoint Description: Keywords are words or phrases that get tagged to a game such as \"world war 2\" or \"steampunk\".

\n

Parameters:

\n
    \n
  • $query: an apicalypse formatted query String
  • \n
  • $count: whether the request should return the number of matches instead of the actual resultset
  • \n
\n

Returns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.

\n
<?php\n\n    // Keyword endpoint method\n    $igdb->keyword($query, $count);\n\n?>\n
"},"meta":{"revision":0,"created":1699573929864,"version":0},"$loki":71},{"id":"5d740a7","slug":"language","level":3,"parent":"cbf8ecb","parents":["cbf8ecb","29c37ba"],"title":"Language","date":null,"timestamp":null,"body":{"stripped":"Fetching data from IGDB API using the Language endpoint.\n\nEndpoint Description: Languages that are used in the Language Support endpoint.\n\nParameters:\n\n$query: an apicalypse formatted query String\n\n$count: whether the request should return the number of matches instead of the actual resultset\n\nReturns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.","markdown":"```php\npublic function language(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n```\n\nFetching data from IGDB API using the [Language](https://api-docs.igdb.com/#language) endpoint.\n\n**Endpoint Description**: Languages that are used in the Language Support endpoint.\n\n**Parameters**:\n - `$query`: an apicalypse formatted query String\n - `$count`: whether the request should return the number of matches instead of the actual resultset\n\n**Returns**: either the resultset as an array of objects, or a single object with a count property. Depends on the second `$count` parameter.\n\n```php\nlanguage($query, $count);\n\n?>\n```","html":"
public function language(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n
\n

Fetching data from IGDB API using the Language endpoint.

\n

Endpoint Description: Languages that are used in the Language Support endpoint.

\n

Parameters:

\n
    \n
  • $query: an apicalypse formatted query String
  • \n
  • $count: whether the request should return the number of matches instead of the actual resultset
  • \n
\n

Returns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.

\n
<?php\n\n    // Language endpoint method\n    $igdb->language($query, $count);\n\n?>\n
"},"meta":{"revision":0,"created":1699573929864,"version":0},"$loki":72},{"id":"33a992f","slug":"language-support","level":3,"parent":"cbf8ecb","parents":["cbf8ecb","29c37ba"],"title":"Language Support","date":null,"timestamp":null,"body":{"stripped":"Fetching data from IGDB API using the Language Support endpoint.\n\nEndpoint Description: Games can be played with different languages for voice acting, subtitles, or the interface language.\n\nParameters:\n\n$query: an apicalypse formatted query String\n\n$count: whether the request should return the number of matches instead of the actual resultset\n\nReturns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.","markdown":"```php\npublic function language_support(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n```\n\nFetching data from IGDB API using the [Language Support](https://api-docs.igdb.com/#language-support) endpoint.\n\n**Endpoint Description**: Games can be played with different languages for voice acting, subtitles, or the interface language.\n\n**Parameters**:\n - `$query`: an apicalypse formatted query String\n - `$count`: whether the request should return the number of matches instead of the actual resultset\n\n**Returns**: either the resultset as an array of objects, or a single object with a count property. Depends on the second `$count` parameter.\n\n```php\nlanguage_support($query, $count);\n\n?>\n```","html":"
public function language_support(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n
\n

Fetching data from IGDB API using the Language Support endpoint.

\n

Endpoint Description: Games can be played with different languages for voice acting, subtitles, or the interface language.

\n

Parameters:

\n
    \n
  • $query: an apicalypse formatted query String
  • \n
  • $count: whether the request should return the number of matches instead of the actual resultset
  • \n
\n

Returns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.

\n
<?php\n\n    // Language Support endpoint method\n    $igdb->language_support($query, $count);\n\n?>\n
"},"meta":{"revision":0,"created":1699573929864,"version":0},"$loki":73},{"id":"4bd0a18","slug":"multiplayer-mode","level":3,"parent":"cbf8ecb","parents":["cbf8ecb","29c37ba"],"title":"Multiplayer Mode","date":null,"timestamp":null,"body":{"stripped":"Fetching data from IGDB API using the Multiplayer Mode endpoint.\n\nEndpoint Description: Data about the supported multiplayer types\n\nParameters:\n\n$query: an apicalypse formatted query String\n\n$count: whether the request should return the number of matches instead of the actual resultset\n\nReturns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.","markdown":"```php\npublic function multiplayer_mode(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n```\n\nFetching data from IGDB API using the [Multiplayer Mode](https://api-docs.igdb.com/#multiplayer-mode) endpoint.\n\n**Endpoint Description**: Data about the supported multiplayer types\n\n**Parameters**:\n - `$query`: an apicalypse formatted query String\n - `$count`: whether the request should return the number of matches instead of the actual resultset\n\n**Returns**: either the resultset as an array of objects, or a single object with a count property. Depends on the second `$count` parameter.\n\n```php\nmultiplayer_mode($query, $count);\n\n?>\n```","html":"
public function multiplayer_mode(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n
\n

Fetching data from IGDB API using the Multiplayer Mode endpoint.

\n

Endpoint Description: Data about the supported multiplayer types

\n

Parameters:

\n
    \n
  • $query: an apicalypse formatted query String
  • \n
  • $count: whether the request should return the number of matches instead of the actual resultset
  • \n
\n

Returns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.

\n
<?php\n\n    // Multiplayer Mode endpoint method\n    $igdb->multiplayer_mode($query, $count);\n\n?>\n
"},"meta":{"revision":0,"created":1699573929864,"version":0},"$loki":74},{"id":"6a55946","slug":"platform","level":3,"parent":"cbf8ecb","parents":["cbf8ecb","29c37ba"],"title":"Platform","date":null,"timestamp":null,"body":{"stripped":"Fetching data from IGDB API using the Platform endpoint.\n\nEndpoint Description: The hardware used to run the game or game delivery network\n\nParameters:\n\n$query: an apicalypse formatted query String\n\n$count: whether the request should return the number of matches instead of the actual resultset\n\nReturns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.","markdown":"```php\npublic function platform(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n```\n\nFetching data from IGDB API using the [Platform](https://api-docs.igdb.com/#platform) endpoint.\n\n**Endpoint Description**: The hardware used to run the game or game delivery network\n\n**Parameters**:\n - `$query`: an apicalypse formatted query String\n - `$count`: whether the request should return the number of matches instead of the actual resultset\n\n**Returns**: either the resultset as an array of objects, or a single object with a count property. Depends on the second `$count` parameter.\n\n```php\nplatform($query, $count);\n\n?>\n```","html":"
public function platform(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n
\n

Fetching data from IGDB API using the Platform endpoint.

\n

Endpoint Description: The hardware used to run the game or game delivery network

\n

Parameters:

\n
    \n
  • $query: an apicalypse formatted query String
  • \n
  • $count: whether the request should return the number of matches instead of the actual resultset
  • \n
\n

Returns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.

\n
<?php\n\n    // Platform endpoint method\n    $igdb->platform($query, $count);\n\n?>\n
"},"meta":{"revision":0,"created":1699573929864,"version":0},"$loki":75},{"id":"c26847e","slug":"language-support-type","level":3,"parent":"cbf8ecb","parents":["cbf8ecb","29c37ba"],"title":"Language Support Type","date":null,"timestamp":null,"body":{"stripped":"Fetching data from IGDB API using the Language Support Type endpoint.\n\nEndpoint Description: Language Support Types contains the identifiers for the support types that Language Support uses.\n\nParameters:\n\n$query: an apicalypse formatted query String\n\n$count: whether the request should return the number of matches instead of the actual resultset\n\nReturns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.","markdown":"```php\npublic function language_support_type(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n```\n\nFetching data from IGDB API using the [Language Support Type](https://api-docs.igdb.com/#language-support-type) endpoint.\n\n**Endpoint Description**: Language Support Types contains the identifiers for the support types that Language Support uses.\n\n**Parameters**:\n - `$query`: an apicalypse formatted query String\n - `$count`: whether the request should return the number of matches instead of the actual resultset\n\n**Returns**: either the resultset as an array of objects, or a single object with a count property. Depends on the second `$count` parameter.\n\n```php\nlanguage_support_type($query, $count);\n\n?>\n```","html":"
public function language_support_type(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n
\n

Fetching data from IGDB API using the Language Support Type endpoint.

\n

Endpoint Description: Language Support Types contains the identifiers for the support types that Language Support uses.

\n

Parameters:

\n
    \n
  • $query: an apicalypse formatted query String
  • \n
  • $count: whether the request should return the number of matches instead of the actual resultset
  • \n
\n

Returns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.

\n
<?php\n\n    // Language Support Type endpoint method\n    $igdb->language_support_type($query, $count);\n\n?>\n
"},"meta":{"revision":0,"created":1699573929864,"version":0},"$loki":76},{"id":"21558e9","slug":"platform-family","level":3,"parent":"cbf8ecb","parents":["cbf8ecb","29c37ba"],"title":"Platform Family","date":null,"timestamp":null,"body":{"stripped":"Fetching data from IGDB API using the Platform Family endpoint.\n\nEndpoint Description: A collection of closely related platforms\n\nParameters:\n\n$query: an apicalypse formatted query String\n\n$count: whether the request should return the number of matches instead of the actual resultset\n\nReturns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.","markdown":"```php\npublic function platform_family(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n```\n\nFetching data from IGDB API using the [Platform Family](https://api-docs.igdb.com/#platform-family) endpoint.\n\n**Endpoint Description**: A collection of closely related platforms\n\n**Parameters**:\n - `$query`: an apicalypse formatted query String\n - `$count`: whether the request should return the number of matches instead of the actual resultset\n\n**Returns**: either the resultset as an array of objects, or a single object with a count property. Depends on the second `$count` parameter.\n\n```php\nplatform_family($query, $count);\n\n?>\n```","html":"
public function platform_family(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n
\n

Fetching data from IGDB API using the Platform Family endpoint.

\n

Endpoint Description: A collection of closely related platforms

\n

Parameters:

\n
    \n
  • $query: an apicalypse formatted query String
  • \n
  • $count: whether the request should return the number of matches instead of the actual resultset
  • \n
\n

Returns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.

\n
<?php\n\n    // Platform Family endpoint method\n    $igdb->platform_family($query, $count);\n\n?>\n
"},"meta":{"revision":0,"created":1699573929864,"version":0},"$loki":77},{"id":"3f1f69c","slug":"network-type","level":3,"parent":"cbf8ecb","parents":["cbf8ecb","29c37ba"],"title":"Network Type","date":null,"timestamp":null,"body":{"stripped":"Fetching data from IGDB API using the Network Type endpoint.\n\nEndpoint Description: Social networks related to the event like twitter, facebook and youtube\n\nParameters:\n\n$query: an apicalypse formatted query String\n\n$count: whether the request should return the number of matches instead of the actual resultset\n\nReturns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.","markdown":"```php\npublic function network_type(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n```\n\nFetching data from IGDB API using the [Network Type](https://api-docs.igdb.com/#network-type) endpoint.\n\n**Endpoint Description**: Social networks related to the event like twitter, facebook and youtube\n\n**Parameters**:\n - `$query`: an apicalypse formatted query String\n - `$count`: whether the request should return the number of matches instead of the actual resultset\n\n**Returns**: either the resultset as an array of objects, or a single object with a count property. Depends on the second `$count` parameter.\n\n```php\nnetwork_type($query, $count);\n\n?>\n```","html":"
public function network_type(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n
\n

Fetching data from IGDB API using the Network Type endpoint.

\n

Endpoint Description: Social networks related to the event like twitter, facebook and youtube

\n

Parameters:

\n
    \n
  • $query: an apicalypse formatted query String
  • \n
  • $count: whether the request should return the number of matches instead of the actual resultset
  • \n
\n

Returns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.

\n
<?php\n\n    // Network Type endpoint method\n    $igdb->network_type($query, $count);\n\n?>\n
"},"meta":{"revision":0,"created":1699573929864,"version":0},"$loki":78},{"id":"7448df9","slug":"platform-logo","level":3,"parent":"cbf8ecb","parents":["cbf8ecb","29c37ba"],"title":"Platform Logo","date":null,"timestamp":null,"body":{"stripped":"Fetching data from IGDB API using the Platform Logo endpoint.\n\nEndpoint Description: Logo for a platform\n\nParameters:\n\n$query: an apicalypse formatted query String\n\n$count: whether the request should return the number of matches instead of the actual resultset\n\nReturns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.","markdown":"```php\npublic function platform_logo(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n```\n\nFetching data from IGDB API using the [Platform Logo](https://api-docs.igdb.com/#platform-logo) endpoint.\n\n**Endpoint Description**: Logo for a platform\n\n**Parameters**:\n - `$query`: an apicalypse formatted query String\n - `$count`: whether the request should return the number of matches instead of the actual resultset\n\n**Returns**: either the resultset as an array of objects, or a single object with a count property. Depends on the second `$count` parameter.\n\n```php\nplatform_logo($query, $count);\n\n?>\n```","html":"
public function platform_logo(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n
\n

Fetching data from IGDB API using the Platform Logo endpoint.

\n

Endpoint Description: Logo for a platform

\n

Parameters:

\n
    \n
  • $query: an apicalypse formatted query String
  • \n
  • $count: whether the request should return the number of matches instead of the actual resultset
  • \n
\n

Returns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.

\n
<?php\n\n    // Platform Logo endpoint method\n    $igdb->platform_logo($query, $count);\n\n?>\n
"},"meta":{"revision":0,"created":1699573929864,"version":0},"$loki":79},{"id":"26c0c2f","slug":"platform-version-company","level":3,"parent":"cbf8ecb","parents":["cbf8ecb","29c37ba"],"title":"Platform Version Company","date":null,"timestamp":null,"body":{"stripped":"Fetching data from IGDB API using the Platform Version Company endpoint.\n\nEndpoint Description: A platform developer\n\nParameters:\n\n$query: an apicalypse formatted query String\n\n$count: whether the request should return the number of matches instead of the actual resultset\n\nReturns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.","markdown":"```php\npublic function platform_version_company(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n```\n\nFetching data from IGDB API using the [Platform Version Company](https://api-docs.igdb.com/#platform-version-company) endpoint.\n\n**Endpoint Description**: A platform developer\n\n**Parameters**:\n - `$query`: an apicalypse formatted query String\n - `$count`: whether the request should return the number of matches instead of the actual resultset\n\n**Returns**: either the resultset as an array of objects, or a single object with a count property. Depends on the second `$count` parameter.\n\n```php\nplatform_version_company($query, $count);\n\n?>\n```","html":"
public function platform_version_company(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n
\n

Fetching data from IGDB API using the Platform Version Company endpoint.

\n

Endpoint Description: A platform developer

\n

Parameters:

\n
    \n
  • $query: an apicalypse formatted query String
  • \n
  • $count: whether the request should return the number of matches instead of the actual resultset
  • \n
\n

Returns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.

\n
<?php\n\n    // Platform Version Company endpoint method\n    $igdb->platform_version_company($query, $count);\n\n?>\n
"},"meta":{"revision":0,"created":1699573929864,"version":0},"$loki":80},{"id":"fd4b00d","slug":"platform-version","level":3,"parent":"cbf8ecb","parents":["cbf8ecb","29c37ba"],"title":"Platform Version","date":null,"timestamp":null,"body":{"stripped":"Fetching data from IGDB API using the Platform Version endpoint.\n\nEndpoint Description:\n\nParameters:\n\n$query: an apicalypse formatted query String\n\n$count: whether the request should return the number of matches instead of the actual resultset\n\nReturns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.","markdown":"```php\npublic function platform_version(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n```\n\nFetching data from IGDB API using the [Platform Version](https://api-docs.igdb.com/#platform-version) endpoint.\n\n**Endpoint Description**: \n\n**Parameters**:\n - `$query`: an apicalypse formatted query String\n - `$count`: whether the request should return the number of matches instead of the actual resultset\n\n**Returns**: either the resultset as an array of objects, or a single object with a count property. Depends on the second `$count` parameter.\n\n```php\nplatform_version($query, $count);\n\n?>\n```","html":"
public function platform_version(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n
\n

Fetching data from IGDB API using the Platform Version endpoint.

\n

Endpoint Description:

\n

Parameters:

\n
    \n
  • $query: an apicalypse formatted query String
  • \n
  • $count: whether the request should return the number of matches instead of the actual resultset
  • \n
\n

Returns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.

\n
<?php\n\n    // Platform Version endpoint method\n    $igdb->platform_version($query, $count);\n\n?>\n
"},"meta":{"revision":0,"created":1699573929864,"version":0},"$loki":81},{"id":"2a0f2e3","slug":"platform-website","level":3,"parent":"cbf8ecb","parents":["cbf8ecb","29c37ba"],"title":"Platform Website","date":null,"timestamp":null,"body":{"stripped":"Fetching data from IGDB API using the Platform Website endpoint.\n\nEndpoint Description: The main website for the platform\n\nParameters:\n\n$query: an apicalypse formatted query String\n\n$count: whether the request should return the number of matches instead of the actual resultset\n\nReturns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.","markdown":"```php\npublic function platform_website(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n```\n\nFetching data from IGDB API using the [Platform Website](https://api-docs.igdb.com/#platform-website) endpoint.\n\n**Endpoint Description**: The main website for the platform\n\n**Parameters**:\n - `$query`: an apicalypse formatted query String\n - `$count`: whether the request should return the number of matches instead of the actual resultset\n\n**Returns**: either the resultset as an array of objects, or a single object with a count property. Depends on the second `$count` parameter.\n\n```php\nplatform_website($query, $count);\n\n?>\n```","html":"
public function platform_website(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n
\n

Fetching data from IGDB API using the Platform Website endpoint.

\n

Endpoint Description: The main website for the platform

\n

Parameters:

\n
    \n
  • $query: an apicalypse formatted query String
  • \n
  • $count: whether the request should return the number of matches instead of the actual resultset
  • \n
\n

Returns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.

\n
<?php\n\n    // Platform Website endpoint method\n    $igdb->platform_website($query, $count);\n\n?>\n
"},"meta":{"revision":0,"created":1699573929864,"version":0},"$loki":82},{"id":"0fc5bf3","slug":"platform-version-release-date","level":3,"parent":"cbf8ecb","parents":["cbf8ecb","29c37ba"],"title":"Platform Version Release Date","date":null,"timestamp":null,"body":{"stripped":"Fetching data from IGDB API using the Platform Version Release Date endpoint.\n\nEndpoint Description: A handy endpoint that extends platform release dates. Used to dig deeper into release dates, platforms and versions.\n\nParameters:\n\n$query: an apicalypse formatted query String\n\n$count: whether the request should return the number of matches instead of the actual resultset\n\nReturns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.","markdown":"```php\npublic function platform_version_release_date(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n```\n\nFetching data from IGDB API using the [Platform Version Release Date](https://api-docs.igdb.com/#platform-version-release-date) endpoint.\n\n**Endpoint Description**: A handy endpoint that extends platform release dates. Used to dig deeper into release dates, platforms and versions.\n\n**Parameters**:\n - `$query`: an apicalypse formatted query String\n - `$count`: whether the request should return the number of matches instead of the actual resultset\n\n**Returns**: either the resultset as an array of objects, or a single object with a count property. Depends on the second `$count` parameter.\n\n```php\nplatform_version_release_date($query, $count);\n\n?>\n```","html":"
public function platform_version_release_date(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n
\n

Fetching data from IGDB API using the Platform Version Release Date endpoint.

\n

Endpoint Description: A handy endpoint that extends platform release dates. Used to dig deeper into release dates, platforms and versions.

\n

Parameters:

\n
    \n
  • $query: an apicalypse formatted query String
  • \n
  • $count: whether the request should return the number of matches instead of the actual resultset
  • \n
\n

Returns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.

\n
<?php\n\n    // Platform Version Release Date endpoint method\n    $igdb->platform_version_release_date($query, $count);\n\n?>\n
"},"meta":{"revision":0,"created":1699573929864,"version":0},"$loki":83},{"id":"946855e","slug":"player-perspective","level":3,"parent":"cbf8ecb","parents":["cbf8ecb","29c37ba"],"title":"Player Perspective","date":null,"timestamp":null,"body":{"stripped":"Fetching data from IGDB API using the Player Perspective endpoint.\n\nEndpoint Description: Player perspectives describe the view/perspective of the player in a video game.\n\nParameters:\n\n$query: an apicalypse formatted query String\n\n$count: whether the request should return the number of matches instead of the actual resultset\n\nReturns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.","markdown":"```php\npublic function player_perspective(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n```\n\nFetching data from IGDB API using the [Player Perspective](https://api-docs.igdb.com/#player-perspective) endpoint.\n\n**Endpoint Description**: Player perspectives describe the view/perspective of the player in a video game.\n\n**Parameters**:\n - `$query`: an apicalypse formatted query String\n - `$count`: whether the request should return the number of matches instead of the actual resultset\n\n**Returns**: either the resultset as an array of objects, or a single object with a count property. Depends on the second `$count` parameter.\n\n```php\nplayer_perspective($query, $count);\n\n?>\n```","html":"
public function player_perspective(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n
\n

Fetching data from IGDB API using the Player Perspective endpoint.

\n

Endpoint Description: Player perspectives describe the view/perspective of the player in a video game.

\n

Parameters:

\n
    \n
  • $query: an apicalypse formatted query String
  • \n
  • $count: whether the request should return the number of matches instead of the actual resultset
  • \n
\n

Returns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.

\n
<?php\n\n    // Player Perspective endpoint method\n    $igdb->player_perspective($query, $count);\n\n?>\n
"},"meta":{"revision":0,"created":1699573929864,"version":0},"$loki":84},{"id":"d9117e1","slug":"region","level":3,"parent":"cbf8ecb","parents":["cbf8ecb","29c37ba"],"title":"Region","date":null,"timestamp":null,"body":{"stripped":"Fetching data from IGDB API using the Region endpoint.\n\nEndpoint Description: Region for game localization\n\nParameters:\n\n$query: an apicalypse formatted query String\n\n$count: whether the request should return the number of matches instead of the actual resultset\n\nReturns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.","markdown":"```php\npublic function region(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n```\n\nFetching data from IGDB API using the [Region](https://api-docs.igdb.com/#region) endpoint.\n\n**Endpoint Description**: Region for game localization\n\n**Parameters**:\n - `$query`: an apicalypse formatted query String\n - `$count`: whether the request should return the number of matches instead of the actual resultset\n\n**Returns**: either the resultset as an array of objects, or a single object with a count property. Depends on the second `$count` parameter.\n\n```php\nregion($query, $count);\n\n?>\n```","html":"
public function region(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n
\n

Fetching data from IGDB API using the Region endpoint.

\n

Endpoint Description: Region for game localization

\n

Parameters:

\n
    \n
  • $query: an apicalypse formatted query String
  • \n
  • $count: whether the request should return the number of matches instead of the actual resultset
  • \n
\n

Returns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.

\n
<?php\n\n    // Region endpoint method\n    $igdb->region($query, $count);\n\n?>\n
"},"meta":{"revision":0,"created":1699573929865,"version":0},"$loki":85},{"id":"204b21c","slug":"release-date","level":3,"parent":"cbf8ecb","parents":["cbf8ecb","29c37ba"],"title":"Release Date","date":null,"timestamp":null,"body":{"stripped":"Fetching data from IGDB API using the Release Date endpoint.\n\nEndpoint Description: A handy endpoint that extends game release dates. Used to dig deeper into release dates, platforms and versions.\n\nParameters:\n\n$query: an apicalypse formatted query String\n\n$count: whether the request should return the number of matches instead of the actual resultset\n\nReturns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.","markdown":"```php\npublic function release_date(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n```\n\nFetching data from IGDB API using the [Release Date](https://api-docs.igdb.com/#release-date) endpoint.\n\n**Endpoint Description**: A handy endpoint that extends game release dates. Used to dig deeper into release dates, platforms and versions.\n\n**Parameters**:\n - `$query`: an apicalypse formatted query String\n - `$count`: whether the request should return the number of matches instead of the actual resultset\n\n**Returns**: either the resultset as an array of objects, or a single object with a count property. Depends on the second `$count` parameter.\n\n```php\nrelease_date($query, $count);\n\n?>\n```","html":"
public function release_date(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n
\n

Fetching data from IGDB API using the Release Date endpoint.

\n

Endpoint Description: A handy endpoint that extends game release dates. Used to dig deeper into release dates, platforms and versions.

\n

Parameters:

\n
    \n
  • $query: an apicalypse formatted query String
  • \n
  • $count: whether the request should return the number of matches instead of the actual resultset
  • \n
\n

Returns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.

\n
<?php\n\n    // Release Date endpoint method\n    $igdb->release_date($query, $count);\n\n?>\n
"},"meta":{"revision":0,"created":1699573929865,"version":0},"$loki":86},{"id":"292c41b","slug":"release-date-status","level":3,"parent":"cbf8ecb","parents":["cbf8ecb","29c37ba"],"title":"Release Date Status","date":null,"timestamp":null,"body":{"stripped":"Fetching data from IGDB API using the Release Date Status endpoint.\n\nEndpoint Description: An endpoint to provide definition of all of the current release date statuses.\n\nParameters:\n\n$query: an apicalypse formatted query String\n\n$count: whether the request should return the number of matches instead of the actual resultset\n\nReturns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.","markdown":"```php\npublic function release_date_status(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n```\n\nFetching data from IGDB API using the [Release Date Status](https://api-docs.igdb.com/#release-date-status) endpoint.\n\n**Endpoint Description**: An endpoint to provide definition of all of the current release date statuses.\n\n**Parameters**:\n - `$query`: an apicalypse formatted query String\n - `$count`: whether the request should return the number of matches instead of the actual resultset\n\n**Returns**: either the resultset as an array of objects, or a single object with a count property. Depends on the second `$count` parameter.\n\n```php\nrelease_date_status($query, $count);\n\n?>\n```","html":"
public function release_date_status(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n
\n

Fetching data from IGDB API using the Release Date Status endpoint.

\n

Endpoint Description: An endpoint to provide definition of all of the current release date statuses.

\n

Parameters:

\n
    \n
  • $query: an apicalypse formatted query String
  • \n
  • $count: whether the request should return the number of matches instead of the actual resultset
  • \n
\n

Returns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.

\n
<?php\n\n    // Release Date Status endpoint method\n    $igdb->release_date_status($query, $count);\n\n?>\n
"},"meta":{"revision":0,"created":1699573929865,"version":0},"$loki":87},{"id":"f67ed58","slug":"screenshot","level":3,"parent":"cbf8ecb","parents":["cbf8ecb","29c37ba"],"title":"Screenshot","date":null,"timestamp":null,"body":{"stripped":"Fetching data from IGDB API using the Screenshot endpoint.\n\nEndpoint Description: Screenshots of games\n\nParameters:\n\n$query: an apicalypse formatted query String\n\n$count: whether the request should return the number of matches instead of the actual resultset\n\nReturns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.","markdown":"```php\npublic function screenshot(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n```\n\nFetching data from IGDB API using the [Screenshot](https://api-docs.igdb.com/#screenshot) endpoint.\n\n**Endpoint Description**: Screenshots of games\n\n**Parameters**:\n - `$query`: an apicalypse formatted query String\n - `$count`: whether the request should return the number of matches instead of the actual resultset\n\n**Returns**: either the resultset as an array of objects, or a single object with a count property. Depends on the second `$count` parameter.\n\n```php\nscreenshot($query, $count);\n\n?>\n```","html":"
public function screenshot(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n
\n

Fetching data from IGDB API using the Screenshot endpoint.

\n

Endpoint Description: Screenshots of games

\n

Parameters:

\n
    \n
  • $query: an apicalypse formatted query String
  • \n
  • $count: whether the request should return the number of matches instead of the actual resultset
  • \n
\n

Returns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.

\n
<?php\n\n    // Screenshot endpoint method\n    $igdb->screenshot($query, $count);\n\n?>\n
"},"meta":{"revision":0,"created":1699573929865,"version":0},"$loki":88},{"id":"67b3635","slug":"search-ii","level":3,"parent":"cbf8ecb","parents":["cbf8ecb","29c37ba"],"title":"Search","date":null,"timestamp":null,"body":{"stripped":"Fetching data from IGDB API using the Search endpoint.\n\nEndpoint Description:\n\nParameters:\n\n$query: an apicalypse formatted query String\n\n$count: whether the request should return the number of matches instead of the actual resultset\n\nReturns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.","markdown":"```php\npublic function search(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n```\n\nFetching data from IGDB API using the [Search](https://api-docs.igdb.com/#search) endpoint.\n\n**Endpoint Description**: \n\n**Parameters**:\n - `$query`: an apicalypse formatted query String\n - `$count`: whether the request should return the number of matches instead of the actual resultset\n\n**Returns**: either the resultset as an array of objects, or a single object with a count property. Depends on the second `$count` parameter.\n\n```php\nsearch($query, $count);\n\n?>\n```","html":"
public function search(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n
\n

Fetching data from IGDB API using the Search endpoint.

\n

Endpoint Description:

\n

Parameters:

\n
    \n
  • $query: an apicalypse formatted query String
  • \n
  • $count: whether the request should return the number of matches instead of the actual resultset
  • \n
\n

Returns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.

\n
<?php\n\n    // Search endpoint method\n    $igdb->search($query, $count);\n\n?>\n
"},"meta":{"revision":0,"created":1699573929865,"version":0},"$loki":89},{"id":"20792d4","slug":"theme","level":3,"parent":"cbf8ecb","parents":["cbf8ecb","29c37ba"],"title":"Theme","date":null,"timestamp":null,"body":{"stripped":"Fetching data from IGDB API using the Theme endpoint.\n\nEndpoint Description: Video game themes\n\nParameters:\n\n$query: an apicalypse formatted query String\n\n$count: whether the request should return the number of matches instead of the actual resultset\n\nReturns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.","markdown":"```php\npublic function theme(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n```\n\nFetching data from IGDB API using the [Theme](https://api-docs.igdb.com/#theme) endpoint.\n\n**Endpoint Description**: Video game themes\n\n**Parameters**:\n - `$query`: an apicalypse formatted query String\n - `$count`: whether the request should return the number of matches instead of the actual resultset\n\n**Returns**: either the resultset as an array of objects, or a single object with a count property. Depends on the second `$count` parameter.\n\n```php\ntheme($query, $count);\n\n?>\n```","html":"
public function theme(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n
\n

Fetching data from IGDB API using the Theme endpoint.

\n

Endpoint Description: Video game themes

\n

Parameters:

\n
    \n
  • $query: an apicalypse formatted query String
  • \n
  • $count: whether the request should return the number of matches instead of the actual resultset
  • \n
\n

Returns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.

\n
<?php\n\n    // Theme endpoint method\n    $igdb->theme($query, $count);\n\n?>\n
"},"meta":{"revision":0,"created":1699573929865,"version":0},"$loki":90},{"id":"f8262e8","slug":"website","level":3,"parent":"cbf8ecb","parents":["cbf8ecb","29c37ba"],"title":"Website","date":null,"timestamp":null,"body":{"stripped":"Fetching data from IGDB API using the Website endpoint.\n\nEndpoint Description: A website url, usually associated with a game\n\nParameters:\n\n$query: an apicalypse formatted query String\n\n$count: whether the request should return the number of matches instead of the actual resultset\n\nReturns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.","markdown":"```php\npublic function website(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n```\n\nFetching data from IGDB API using the [Website](https://api-docs.igdb.com/#website) endpoint.\n\n**Endpoint Description**: A website url, usually associated with a game\n\n**Parameters**:\n - `$query`: an apicalypse formatted query String\n - `$count`: whether the request should return the number of matches instead of the actual resultset\n\n**Returns**: either the resultset as an array of objects, or a single object with a count property. Depends on the second `$count` parameter.\n\n```php\nwebsite($query, $count);\n\n?>\n```","html":"
public function website(string $query, boolean $count = false) throws IGDBEndpointException: mixed\n
\n

Fetching data from IGDB API using the Website endpoint.

\n

Endpoint Description: A website url, usually associated with a game

\n

Parameters:

\n
    \n
  • $query: an apicalypse formatted query String
  • \n
  • $count: whether the request should return the number of matches instead of the actual resultset
  • \n
\n

Returns: either the resultset as an array of objects, or a single object with a count property. Depends on the second $count parameter.

\n
<?php\n\n    // Website endpoint method\n    $igdb->website($query, $count);\n\n?>\n
"},"meta":{"revision":0,"created":1699573929865,"version":0},"$loki":91},{"id":"cf8a7d3","slug":"multiquery","level":2,"parent":"cbf8ecb","parents":["cbf8ecb"],"title":"MultiQuery","date":null,"timestamp":null,"body":{"stripped":"This method executes a query against the multiquery endpoint. With this functionality one is able to execute multiple queries in a single request.\n\n:warning If you are using the Query Builder to construct your queries, the parameters name and endpoint are mandatory! There is also a third optional parameter count. If any of the mandatory parameters are missing for the multiquery, an IGDBInvalidParameterException is thrown! Please refer to the build method for more information!\n\nParameters\n\n$queries: an array of apicalypse formatted multiquery query strings.\n\nReturns: the response from the IGDB endpoint. The result object can vary depending on your query.\n\n\n\nThe result of the query:","markdown":"```php\npublic function multiquery(array $queries) throws IGDBEndpointException, IGDBInvalidParameterException: mixed\n```\n\nThis method executes a query against the `multiquery` endpoint. With this functionality one is able to execute multiple queries in a single request.\n\n> :warning If you are using the [Query Builder](#igdb-query-builder) to construct your queries, the parameters [`name`](#name) and [`endpoint`](#endpoint) are **mandatory**! There is also a third optional parameter [`count`](#count). If any of the mandatory parameters are missing for the multiquery, an `IGDBInvalidParameterException` is thrown! Please refer to the [`build`](#building-the-query) method for more information!\n\n**Parameters**\n - `$queries`: an array of apicalypse formatted multiquery query strings.\n\n**Returns**: the response from the IGDB endpoint. The result object can vary depending on your query.\n\n```php\nname(\"Main Game\")\n ->endpoint(\"game\")\n ->fields(\"id,name\")\n ->where(\"id = 25076\")\n ->build(true);\n\n // building the bundle query\n $bundle = $bundle_builder\n ->name(\"Bundles\")\n ->endpoint(\"game\")\n ->fields(\"id,name,version_parent,category\")\n ->where(\"version_parent = 25076\")\n ->where(\"category = 0\")\n ->build(true);\n\n // the query can be passed as a string too\n\n // $main = \"query games \\\"Main Game\\\" {\n // fields id,name;\n // where id = 25076;\n // };\";\n\n // $bundle = \"query games \\\"Bundles\\\" {\n // fields id,name,version_parent,category;\n // where version_parent = 25076 & category = 0;\n // };\";\n\n // passing the queries to the multiquery method as an array of strings\n var_dump(\n $igdb->multiquery(\n array($main, $bundle)\n )\n );\n } catch (IGDBInvaliParameterException $e) {\n // a builder property is invalid\n echo $e->getMessage();\n } catch (IGDBEndpointException $e) {\n // something went wront with the query\n echo $e->getMessage();\n }\n?>\n```\nThe result of the query:\n\n```text\narray (size=2)\n 0 =>\n object(stdClass)[4]\n public 'name' => string 'Main Game' (length=9)\n public 'result' =>\n array (size=1)\n 0 =>\n object(stdClass)[5]\n public 'id' => int 25076\n public 'name' => string 'Red Dead Redemption 2' (length=21)\n 1 =>\n object(stdClass)[6]\n public 'name' => string 'Bundles' (length=7)\n public 'result' =>\n array (size=3)\n 0 =>\n object(stdClass)[7]\n public 'id' => int 103207\n public 'category' => int 0\n public 'name' => string 'Red Dead Redemption 2: Collector's Box' (length=38)\n public 'version_parent' => int 25076\n 1 =>\n object(stdClass)[8]\n public 'id' => int 103206\n public 'category' => int 0\n public 'name' => string 'Red dead Redemption 2: Ultimate Edition' (length=39)\n public 'version_parent' => int 25076\n 2 =>\n object(stdClass)[9]\n public 'id' => int 103205\n public 'category' => int 0\n public 'name' => string 'Red Dead Redemption 2: Special Edition' (length=38)\n public 'version_parent' => int 25076\n```","html":"
public function multiquery(array $queries) throws IGDBEndpointException, IGDBInvalidParameterException: mixed\n
\n

This method executes a query against the multiquery endpoint. With this functionality one is able to execute multiple queries in a single request.

\n
\n

:warning If you are using the Query Builder to construct your queries, the parameters name and endpoint are mandatory! There is also a third optional parameter count. If any of the mandatory parameters are missing for the multiquery, an IGDBInvalidParameterException is thrown! Please refer to the build method for more information!

\n
\n

Parameters

\n
    \n
  • $queries: an array of apicalypse formatted multiquery query strings.
  • \n
\n

Returns: the response from the IGDB endpoint. The result object can vary depending on your query.

\n
<?php\n\n    // importing the wrapper\n    require_once \"class.igdb.php\";\n\n    // instantiate the wrapper\n    $igdb = new IGDB(\"{client_id}\", \"{access_token}\");\n\n    // query builder for the main game\n    $main_builder = new IGDBQueryBuilder();\n\n    // query builder for the bundles\n    $bundle_builder = new IGDBQueryBuilder();\n\n    try {\n        // building the main game query\n        $main = $main_builder\n            ->name(\"Main Game\")\n            ->endpoint(\"game\")\n            ->fields(\"id,name\")\n            ->where(\"id = 25076\")\n            ->build(true);\n\n        // building the bundle query\n        $bundle = $bundle_builder\n            ->name(\"Bundles\")\n            ->endpoint(\"game\")\n            ->fields(\"id,name,version_parent,category\")\n            ->where(\"version_parent = 25076\")\n            ->where(\"category = 0\")\n            ->build(true);\n\n        // the query can be passed as a string too\n\n        // $main = \"query games \\\"Main Game\\\" {\n        //     fields id,name;\n        //     where id = 25076;\n        // };\";\n\n        // $bundle = \"query games \\\"Bundles\\\" {\n        //     fields id,name,version_parent,category;\n        //     where version_parent = 25076 & category = 0;\n        // };\";\n\n        // passing the queries to the multiquery method as an array of strings\n        var_dump(\n            $igdb->multiquery(\n                array($main, $bundle)\n            )\n        );\n    } catch (IGDBInvaliParameterException $e) {\n        // a builder property is invalid\n        echo $e->getMessage();\n    } catch (IGDBEndpointException $e) {\n        // something went wront with the query\n        echo $e->getMessage();\n    }\n?>\n
\n

The result of the query:

\n
array (size=2)\n  0 =>\n    object(stdClass)[4]\n      public 'name' => string 'Main Game' (length=9)\n      public 'result' =>\n        array (size=1)\n          0 =>\n            object(stdClass)[5]\n              public 'id' => int 25076\n              public 'name' => string 'Red Dead Redemption 2' (length=21)\n  1 =>\n    object(stdClass)[6]\n      public 'name' => string 'Bundles' (length=7)\n      public 'result' =>\n        array (size=3)\n          0 =>\n            object(stdClass)[7]\n              public 'id' => int 103207\n              public 'category' => int 0\n              public 'name' => string 'Red Dead Redemption 2: Collector's Box' (length=38)\n              public 'version_parent' => int 25076\n          1 =>\n            object(stdClass)[8]\n              public 'id' => int 103206\n              public 'category' => int 0\n              public 'name' => string 'Red dead Redemption 2: Ultimate Edition' (length=39)\n              public 'version_parent' => int 25076\n          2 =>\n            object(stdClass)[9]\n              public 'id' => int 103205\n              public 'category' => int 0\n              public 'name' => string 'Red Dead Redemption 2: Special Edition' (length=38)\n              public 'version_parent' => int 25076\n
"},"meta":{"revision":0,"created":1699573929865,"version":0},"$loki":92},{"id":"a68dee9","slug":"return-values","level":2,"parent":"cbf8ecb","parents":["cbf8ecb"],"title":"Return Values","date":null,"timestamp":null,"body":{"stripped":"Every endpoint method can return two different type of results, depending on the second parameter passed to them.\n\nBy default the second $count parameter is a boolean false. this means, that the query will be executed against the IGDB, returning a $result array of objects.\n\n\n\nThe result of the query above:\n\n\n\nIf you pass a boolean true as a second parameter, then you will get an object with a count property containing the item count from the selected endpoint filtered by the $query filters.\n\n\n\nThe result of the query above:\n\n\n\nThe result object's properties will vary depending on the provided field list in the $query. From the example result above you can see, the result holds an array, containing two elements. Every element of the result array is an object, containing properties with name of the fields from the fields parameter.","markdown":"Every endpoint method can return two different type of results, depending on the second parameter passed to them.\n\nBy default the second `$count` parameter is a boolean `false`. this means, that the query will be executed against the IGDB, returning a `$result` **array of objects**.\n\n```php\ngame(\"fields id,name; where id = (1,2);\");\n\n?>\n```\n\nThe result of the query above:\n\n```text\narray (size=2)\n 0 =>\n object(stdClass)[2]\n public 'id' => int 1\n public 'name' => string 'Thief II: The Metal Age' (length=23)\n 1 =>\n object(stdClass)[3]\n public 'id' => int 2\n public 'name' => string 'Thief: The Dark Project' (length=23)\n```\n\nIf you pass a boolean `true` as a second parameter, then you will get an object with a `count` property containing the item count from the selected endpoint filtered by the `$query` filters.\n\n```php\ngame(\"fields id,name; where id = (1,2);\", true);\n\n?>\n```\n\nThe result of the query above:\n```text\nobject(stdClass)[3]\n public 'count' => int 2\n```\n\nThe result object's properties will vary depending on the provided field list in the `$query`. From the example result above you can see, the result holds an array, containing two elements. Every element of the result array is an object, containing properties with name of the fields from the `fields` parameter.","html":"

Every endpoint method can return two different type of results, depending on the second parameter passed to them.

\n

By default the second $count parameter is a boolean false. this means, that the query will be executed against the IGDB, returning a $result array of objects.

\n
<?php\n\n    // a query against the game endpoint without a $count parameter\n    $igdb->game(\"fields id,name; where id = (1,2);\");\n\n?>\n
\n

The result of the query above:

\n
array (size=2)\n    0 =>\n        object(stdClass)[2]\n        public 'id' => int 1\n        public 'name' => string 'Thief II: The Metal Age' (length=23)\n    1 =>\n        object(stdClass)[3]\n        public 'id' => int 2\n        public 'name' => string 'Thief: The Dark Project' (length=23)\n
\n

If you pass a boolean true as a second parameter, then you will get an object with a count property containing the item count from the selected endpoint filtered by the $query filters.

\n
<?php\n    // a query against the game endpoint with a second true parameter\n    // note the second boolean true parameter\n    $igdb->game(\"fields id,name; where id = (1,2);\", true);\n\n?>\n
\n

The result of the query above:

\n
object(stdClass)[3]\n    public 'count' => int 2\n
\n

The result object's properties will vary depending on the provided field list in the $query. From the example result above you can see, the result holds an array, containing two elements. Every element of the result array is an object, containing properties with name of the fields from the fields parameter.

"},"meta":{"revision":0,"created":1699573929865,"version":0},"$loki":93},{"id":"120f8ce","slug":"igdb-utils","level":1,"parent":null,"parents":[],"title":"IGDB Utils","date":null,"timestamp":1650326202000,"body":{"stripped":"A utility class to help with some tasks.\n\nThe methods in this class are static, therefore you can use them with the double colon syntax.","markdown":"A utility class to help with some tasks.\n\n> The methods in this class are [static](https://www.php.net/manual/en/language.oop5.static.php), therefore you can use them with the double colon syntax.","html":"

A utility class to help with some tasks.

\n
\n

The methods in this class are static, therefore you can use them with the double colon syntax.

\n
"},"icon":"fa-tools","overview":"Utility tools for making the job easier with the IGDB API","meta":{"revision":0,"created":1699573929865,"version":0},"$loki":94},{"id":"ed871fa","slug":"authenticate","level":2,"parent":"120f8ce","parents":["120f8ce"],"title":"Authenticate","date":null,"timestamp":null,"body":{"stripped":"A helper method to generate your access_token. This method will send a post request to the Twitch API with your client_id and client_secret.\n\nParameters:\n\n$client_id: your client id\n\n$client_secret: the client secret generated by twitch\n\nRetunrs: an object decoded from the response from the Twitch API containing three keys: access_token, expires_in and token_type.\n\nIf a non-successful response is recieved from Twitch, an Exception is thrown.\n\n\n\nThe output of the method will contain your new access_token:","markdown":"```php\npublic static function authenticate(string $client_id, string $client_secret) throws Exception: object\n```\n\nA helper method to generate your `access_token`. This method will send a post request to the Twitch API with your `client_id` and `client_secret`.\n\n**Parameters**:\n - `$client_id`: your client id\n - `$client_secret`: the client secret generated by twitch\n\n**Retunrs**: an object decoded from the response from the Twitch API containing three keys: `access_token`, `expires_in` and `token_type`.\n\nIf a non-successful response is recieved from Twitch, an `Exception` is thrown.\n\n```php\ngetMessage();\n }\n\n?>\n```\n\nThe output of the method will contain your new `access_token`:\n\n```text\nobject(stdClass)[1]\n public 'access_token' => string 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' (length=30)\n public 'expires_in' => int 5269900\n public 'token_type' => string 'bearer' (length=6)\n```","html":"
public static function authenticate(string $client_id, string $client_secret) throws Exception: object\n
\n

A helper method to generate your access_token. This method will send a post request to the Twitch API with your client_id and client_secret.

\n

Parameters:

\n
    \n
  • $client_id: your client id
  • \n
  • $client_secret: the client secret generated by twitch
  • \n
\n

Retunrs: an object decoded from the response from the Twitch API containing three keys: access_token, expires_in and token_type.

\n

If a non-successful response is recieved from Twitch, an Exception is thrown.

\n
<?php\n\n    require_once \"class.igdb.php\";\n\n    try {\n        var_dump(IGDBUtils::authenticate(\"{client_id}\", \"{client_secret}\"));\n    } catch (Exception $e) {\n        // something went wrong\n        echo $e->getMessage();\n    }\n\n?>\n
\n

The output of the method will contain your new access_token:

\n
object(stdClass)[1]\n  public 'access_token' => string 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' (length=30)\n  public 'expires_in' => int 5269900\n  public 'token_type' => string 'bearer' (length=6)\n
"},"meta":{"revision":0,"created":1699573929865,"version":0},"$loki":95},{"id":"38a7e63","slug":"image-url","level":2,"parent":"120f8ce","parents":["120f8ce"],"title":"Image URL","date":null,"timestamp":null,"body":{"stripped":"Get the URL of a specific sized image for a record.\n\nParameters:\n\n$image_id: the image_id of the image. Each image in the database has it's own id and image_id fields. You must use the image_id field!\n\n$size: the required size. Possible sizes:\n\ncover_small\n\ncover_small\\_2x\n\nscreenshot_med\n\nscreenshot_med\\_2x\n\ncover_big\n\ncover_big\\_2x\n\nlogo_med\n\nlogo_med\\_2x\n\nscreenshot_big\n\nscreenshot_big\\_2x\n\nscreenshot_huge\n\nscreenshot_huge\\_2x\n\nthumb\n\nthumb\\_2x\n\nmicro\n\nmicro\\_2x\n\n720p\n\n720p\\_2x\n\n1080p\n\n1080p\\_2x\n\nIf an invalid second parameter is passed, an IGDBInvalidParameterException will be thrown.\n\n\n\nThe script above will produce the output below:\n\n\n\nOn the last line you can see the 720p version of the image which is a valid url.","markdown":"```php\npublic static function image_url(string $image_id, string $size) throws IGDBInvalidParameterException: string\n```\n\nGet the URL of a specific sized image for a record.\n\n**Parameters**:\n - `$image_id`: the `image_id` of the image. Each image in the database has it's own `id` and `image_id` fields. You **must** use the `image_id` field!\n - `$size`: the required size. Possible sizes:\n - cover_small\n - cover_small_2x\n - screenshot_med\n - screenshot_med_2x\n - cover_big\n - cover_big_2x\n - logo_med\n - logo_med_2x\n - screenshot_big\n - screenshot_big_2x\n - screenshot_huge\n - screenshot_huge_2x\n - thumb\n - thumb_2x\n - micro\n - micro_2x\n - 720p\n - 720p_2x\n - 1080p\n - 1080p_2x\n\nIf an invalid second parameter is passed, an `IGDBInvalidParameterException` will be thrown.\n\n```php\ngame(\n $builder\n ->fields(\"id, name, artworks.*\")\n ->search(\"uncharted 4\")\n ->limit(1)\n ->build()\n );\n\n var_dump($result);\n\n // processing the first result's first artwork\n echo \"720p version: \" . IGDBUtils::image_url($result[0]->artworks[0]->image_id, \"720p\");\n } catch (IGDBInvalidParameterException $e) {\n // invalid parameter passed to the builder\n echo $e->getMessage();\n } catch (IGDBEndpointException $e) {\n // failed query\n echo $e->getMessage();\n }\n\n?>\n```\n\nThe script above will produce the output below:\n\n```text\narray (size=1)\n 0 =>\n object(stdClass)[3]\n public 'id' => int 7331\n public 'artworks' =>\n array (size=5)\n 0 =>\n object(stdClass)[4]\n public 'id' => int 6303\n public 'alpha_channel' => boolean false\n public 'animated' => boolean false\n public 'game' => int 7331\n public 'height' => int 1059\n public 'image_id' => string 'ar4v3' (length=5)\n public 'url' => string '//images.igdb.com/igdb/image/upload/t_thumb/ar4v3.jpg' (length=53)\n public 'width' => int 1500\n public 'checksum' => string 'ded76617-94df-a813-28cb-feffebeb9d36' (length=36)\n 1 =>\n object(stdClass)[5]\n public 'id' => int 6304\n public 'alpha_channel' => boolean false\n public 'animated' => boolean false\n public 'game' => int 7331\n public 'height' => int 1059\n public 'image_id' => string 'ar4v4' (length=5)\n public 'url' => string '//images.igdb.com/igdb/image/upload/t_thumb/ar4v4.jpg' (length=53)\n public 'width' => int 1500\n public 'checksum' => string '5655acde-a94d-8aa5-8c35-2ef4bc2e965d' (length=36)\n 2 =>\n object(stdClass)[6]\n public 'id' => int 6305\n public 'alpha_channel' => boolean false\n public 'animated' => boolean false\n public 'game' => int 7331\n public 'height' => int 1060\n public 'image_id' => string 'ar4v5' (length=5)\n public 'url' => string '//images.igdb.com/igdb/image/upload/t_thumb/ar4v5.jpg' (length=53)\n public 'width' => int 1500\n public 'checksum' => string '30441489-b264-70d7-2d26-86b7c1eb3d3a' (length=36)\n 3 =>\n object(stdClass)[7]\n public 'id' => int 6306\n public 'alpha_channel' => boolean false\n public 'animated' => boolean false\n public 'game' => int 7331\n public 'height' => int 1060\n public 'image_id' => string 'ar4v6' (length=5)\n public 'url' => string '//images.igdb.com/igdb/image/upload/t_thumb/ar4v6.jpg' (length=53)\n public 'width' => int 1500\n public 'checksum' => string 'e8629a83-2452-ec8c-2388-f42c6ec21de5' (length=36)\n 4 =>\n object(stdClass)[8]\n public 'id' => int 6307\n public 'alpha_channel' => boolean false\n public 'animated' => boolean false\n public 'game' => int 7331\n public 'height' => int 1060\n public 'image_id' => string 'ar4v7' (length=5)\n public 'url' => string '//images.igdb.com/igdb/image/upload/t_thumb/ar4v7.jpg' (length=53)\n public 'width' => int 1500\n public 'checksum' => string 'e0b49da1-76dd-a863-b499-30b7f0ae0c78' (length=36)\n public 'name' => string 'Uncharted 4: A Thief's End' (length=26)\n720p version: https://images.igdb.com/igdb/image/upload/t_720p/ar4v3.jpg\n```\n\nOn the last line you can see the 720p version of the image which is a valid url.","html":"
public static function image_url(string $image_id, string $size) throws IGDBInvalidParameterException: string\n
\n

Get the URL of a specific sized image for a record.

\n

Parameters:

\n
    \n
  • $image_id: the image_id of the image. Each image in the database has it's own id and image_id fields. You must use the image_id field!
  • \n
  • $size: the required size. Possible sizes:\n
      \n
    • cover_small
    • \n
    • cover_small_2x
    • \n
    • screenshot_med
    • \n
    • screenshot_med_2x
    • \n
    • cover_big
    • \n
    • cover_big_2x
    • \n
    • logo_med
    • \n
    • logo_med_2x
    • \n
    • screenshot_big
    • \n
    • screenshot_big_2x
    • \n
    • screenshot_huge
    • \n
    • screenshot_huge_2x
    • \n
    • thumb
    • \n
    • thumb_2x
    • \n
    • micro
    • \n
    • micro_2x
    • \n
    • 720p
    • \n
    • 720p_2x
    • \n
    • 1080p
    • \n
    • 1080p_2x
    • \n
    \n
  • \n
\n

If an invalid second parameter is passed, an IGDBInvalidParameterException will be thrown.

\n
<?php\n\n    require_once \"class.igdb.php\";\n\n    $igdb = new IGDB(\"{client_id}\", \"{access_token}\");\n    $builder = new IGDBQueryBuilder();\n\n    try {\n        $result = $igdb->game(\n            $builder\n                ->fields(\"id, name, artworks.*\")\n                ->search(\"uncharted 4\")\n                ->limit(1)\n                ->build()\n        );\n\n        var_dump($result);\n\n        // processing the first result's first artwork\n        echo \"720p version: \" . IGDBUtils::image_url($result[0]->artworks[0]->image_id, \"720p\");\n    } catch (IGDBInvalidParameterException $e) {\n        // invalid parameter passed to the builder\n        echo $e->getMessage();\n    } catch (IGDBEndpointException $e) {\n        // failed query\n        echo $e->getMessage();\n    }\n\n?>\n
\n

The script above will produce the output below:

\n
array (size=1)\n  0 =>\n    object(stdClass)[3]\n      public 'id' => int 7331\n      public 'artworks' =>\n        array (size=5)\n          0 =>\n            object(stdClass)[4]\n              public 'id' => int 6303\n              public 'alpha_channel' => boolean false\n              public 'animated' => boolean false\n              public 'game' => int 7331\n              public 'height' => int 1059\n              public 'image_id' => string 'ar4v3' (length=5)\n              public 'url' => string '//images.igdb.com/igdb/image/upload/t_thumb/ar4v3.jpg' (length=53)\n              public 'width' => int 1500\n              public 'checksum' => string 'ded76617-94df-a813-28cb-feffebeb9d36' (length=36)\n          1 =>\n            object(stdClass)[5]\n              public 'id' => int 6304\n              public 'alpha_channel' => boolean false\n              public 'animated' => boolean false\n              public 'game' => int 7331\n              public 'height' => int 1059\n              public 'image_id' => string 'ar4v4' (length=5)\n              public 'url' => string '//images.igdb.com/igdb/image/upload/t_thumb/ar4v4.jpg' (length=53)\n              public 'width' => int 1500\n              public 'checksum' => string '5655acde-a94d-8aa5-8c35-2ef4bc2e965d' (length=36)\n          2 =>\n            object(stdClass)[6]\n              public 'id' => int 6305\n              public 'alpha_channel' => boolean false\n              public 'animated' => boolean false\n              public 'game' => int 7331\n              public 'height' => int 1060\n              public 'image_id' => string 'ar4v5' (length=5)\n              public 'url' => string '//images.igdb.com/igdb/image/upload/t_thumb/ar4v5.jpg' (length=53)\n              public 'width' => int 1500\n              public 'checksum' => string '30441489-b264-70d7-2d26-86b7c1eb3d3a' (length=36)\n          3 =>\n            object(stdClass)[7]\n              public 'id' => int 6306\n              public 'alpha_channel' => boolean false\n              public 'animated' => boolean false\n              public 'game' => int 7331\n              public 'height' => int 1060\n              public 'image_id' => string 'ar4v6' (length=5)\n              public 'url' => string '//images.igdb.com/igdb/image/upload/t_thumb/ar4v6.jpg' (length=53)\n              public 'width' => int 1500\n              public 'checksum' => string 'e8629a83-2452-ec8c-2388-f42c6ec21de5' (length=36)\n          4 =>\n            object(stdClass)[8]\n              public 'id' => int 6307\n              public 'alpha_channel' => boolean false\n              public 'animated' => boolean false\n              public 'game' => int 7331\n              public 'height' => int 1060\n              public 'image_id' => string 'ar4v7' (length=5)\n              public 'url' => string '//images.igdb.com/igdb/image/upload/t_thumb/ar4v7.jpg' (length=53)\n              public 'width' => int 1500\n              public 'checksum' => string 'e0b49da1-76dd-a863-b499-30b7f0ae0c78' (length=36)\n      public 'name' => string 'Uncharted 4: A Thief's End' (length=26)\n720p version: https://images.igdb.com/igdb/image/upload/t_720p/ar4v3.jpg\n
\n

On the last line you can see the 720p version of the image which is a valid url.

"},"meta":{"revision":0,"created":1699573929865,"version":0},"$loki":96},{"id":"7c0fcd6","slug":"examples","level":1,"parent":null,"parents":[],"title":"Examples","date":null,"timestamp":1669925801000,"body":{"stripped":"The examples in this section will try to cover most of the use cases of the wrapper.\n\n:tip To see your own tokens in the example codes set them up on the home page as described in Using the documentation section!","markdown":"The examples in this section will try to cover most of the use cases of the wrapper.\n\n>:tip To see your own tokens in the example codes set them up on the home page as described in [Using the documentation section](#using-the-documentation)!","html":"

The examples in this section will try to cover most of the use cases of the wrapper.

\n
\n

:tip To see your own tokens in the example codes set them up on the home page as described in Using the documentation section!

\n
"},"icon":"fa-code","overview":"Working examples, covering most of the functionalities of the wrapper","meta":{"revision":0,"created":1699573929865,"version":0},"$loki":97},{"id":"c892c4b","slug":"basic-example","level":2,"parent":"7c0fcd6","parents":["7c0fcd6"],"title":"Basic Example","date":null,"timestamp":null,"body":{"stripped":"A basic example to send your apicalypse query to the IGDB API.\n\nMake sure to place your endpoint method calls in a try...catch block to be able to catch errors!\n\nCode\n\n\n\nResult","markdown":"A basic example to send your apicalypse query to the IGDB API.\n\n> Make sure to place your [endpoint method](#endpoints) calls in a try...catch block to be able to catch errors!\n\n**Code**\n\n```php\ngame($query);\n\n // showing the results\n var_dump($games);\n } catch (IGDBEnpointException $e) {\n // a non-successful response recieved from the IGDB API\n echo $e->getMessage();\n }\n\n?>\n```\n\n**Result**\n\n```text\narray (size=5)\n 0 =>\n object(stdClass)[3]\n public 'id' => int 125062\n public 'cover' => int 83686\n public 'name' => string 'Uncharted Ocean: Set Sail' (length=25)\n 1 =>\n object(stdClass)[4]\n public 'id' => int 19583\n public 'cover' => int 15883\n public 'name' => string 'Uncharted: Fight for Fortune' (length=28)\n 2 =>\n object(stdClass)[5]\n public 'id' => int 26193\n public 'cover' => int 85149\n public 'name' => string 'Uncharted: The Lost Legacy' (length=26)\n 3 =>\n object(stdClass)[6]\n public 'id' => int 19609\n public 'cover' => int 85164\n public 'name' => string 'Uncharted: Fortune Hunter' (length=25)\n 4 =>\n object(stdClass)[7]\n public 'id' => int 7331\n public 'cover' => int 81917\n public 'name' => string 'Uncharted 4: A Thief's End' (length=26)\n```","html":"

A basic example to send your apicalypse query to the IGDB API.

\n
\n

Make sure to place your endpoint method calls in a try...catch block to be able to catch errors!

\n
\n

Code

\n
<?php\n\n    // importing the wrapper\n    require 'class.igdb.php';\n\n    // instantiating the wrapper\n    $igdb = new IGDB(\"{client_id}\", \"{access_token}\");\n\n    // your query string\n    $query = 'search \"uncharted\"; fields id,name,cover; limit 5; offset 10;';\n\n    try {\n        // executing the query\n        $games = $igdb->game($query);\n\n        // showing the results\n        var_dump($games);\n    } catch (IGDBEnpointException $e) {\n        // a non-successful response recieved from the IGDB API\n        echo $e->getMessage();\n    }\n\n?>\n
\n

Result

\n
array (size=5)\n  0 =>\n    object(stdClass)[3]\n      public 'id' => int 125062\n      public 'cover' => int 83686\n      public 'name' => string 'Uncharted Ocean: Set Sail' (length=25)\n  1 =>\n    object(stdClass)[4]\n      public 'id' => int 19583\n      public 'cover' => int 15883\n      public 'name' => string 'Uncharted: Fight for Fortune' (length=28)\n  2 =>\n    object(stdClass)[5]\n      public 'id' => int 26193\n      public 'cover' => int 85149\n      public 'name' => string 'Uncharted: The Lost Legacy' (length=26)\n  3 =>\n    object(stdClass)[6]\n      public 'id' => int 19609\n      public 'cover' => int 85164\n      public 'name' => string 'Uncharted: Fortune Hunter' (length=25)\n  4 =>\n    object(stdClass)[7]\n      public 'id' => int 7331\n      public 'cover' => int 81917\n      public 'name' => string 'Uncharted 4: A Thief's End' (length=26)\n
"},"meta":{"revision":0,"created":1699573929865,"version":0},"$loki":98},{"id":"e6c295d","slug":"using-the-query-builder","level":2,"parent":"7c0fcd6","parents":["7c0fcd6"],"title":"Using the Query Builder","date":null,"timestamp":null,"body":{"stripped":"An example to see how to use the IGDB Query Builder to build the query strings.\n\nMake sure to place your query builder configuration and endpoint method calls in a try...catch block to be able to catch errors!\n\nCode\n\n\n\nResult","markdown":"An example to see how to use the [IGDB Query Builder](#igdb-query-builder) to build the query strings.\n\n> Make sure to place your [query builder configuration](#configuring-methods) and [endpoint method](#endpoints) calls in a try...catch block to be able to catch errors!\n\n**Code**\n\n```php\nsearch(\"uncharted\")\n // we want to see these fields in the results\n ->fields(\"id, name, cover\")\n // we only need maximum 5 results per query (pagination)\n ->limit(5)\n // we would like to show the third page; fetch the results from the tenth element (pagination)\n ->offset(10)\n // process the configuration and return a string\n ->build();\n\n // executing the query\n $games = $igdb->game($query);\n\n // showing the results\n var_dump($games);\n } catch (IGDBInvalidParameterException $e) {\n // an invalid parameter is passed to the query builder\n echo $e->getMessage();\n } catch (IGDBEnpointException $e) {\n // a non-successful response recieved from the IGDB API\n echo $e->getMessage();\n }\n\n?>\n```\n\n**Result**\n\n```text\narray (size=5)\n 0 =>\n object(stdClass)[3]\n public 'id' => int 125062\n public 'cover' => int 83686\n public 'name' => string 'Uncharted Ocean: Set Sail' (length=25)\n 1 =>\n object(stdClass)[4]\n public 'id' => int 19583\n public 'cover' => int 15883\n public 'name' => string 'Uncharted: Fight for Fortune' (length=28)\n 2 =>\n object(stdClass)[5]\n public 'id' => int 26193\n public 'cover' => int 85149\n public 'name' => string 'Uncharted: The Lost Legacy' (length=26)\n 3 =>\n object(stdClass)[6]\n public 'id' => int 19609\n public 'cover' => int 85164\n public 'name' => string 'Uncharted: Fortune Hunter' (length=25)\n 4 =>\n object(stdClass)[7]\n public 'id' => int 7331\n public 'cover' => int 81917\n public 'name' => string 'Uncharted 4: A Thief's End' (length=26)\n```","html":"

An example to see how to use the IGDB Query Builder to build the query strings.

\n
\n

Make sure to place your query builder configuration and endpoint method calls in a try...catch block to be able to catch errors!

\n
\n

Code

\n
<?php\n\n    // importing the wrapper\n    require 'class.igdb.php';\n\n    // instantiating the wrapper\n    $igdb = new IGDB(\"{client_id}\", \"{access_token}\");\n\n    // instantiate the query builder\n    $builder = new IGDBQueryBuilder();\n\n    try {\n        // building the query\n        $query = $builder\n            // searching for games LIKE uncharted\n            ->search(\"uncharted\")\n            // we want to see these fields in the results\n            ->fields(\"id, name, cover\")\n            // we only need maximum 5 results per query (pagination)\n            ->limit(5)\n            // we would like to show the third page; fetch the results from the tenth element (pagination)\n            ->offset(10)\n            // process the configuration and return a string\n            ->build();\n\n        // executing the query\n        $games = $igdb->game($query);\n\n        // showing the results\n        var_dump($games);\n    } catch (IGDBInvalidParameterException $e) {\n        // an invalid parameter is passed to the query builder\n        echo $e->getMessage();\n    } catch (IGDBEnpointException $e) {\n        // a non-successful response recieved from the IGDB API\n        echo $e->getMessage();\n    }\n\n?>\n
\n

Result

\n
array (size=5)\n  0 =>\n    object(stdClass)[3]\n      public 'id' => int 125062\n      public 'cover' => int 83686\n      public 'name' => string 'Uncharted Ocean: Set Sail' (length=25)\n  1 =>\n    object(stdClass)[4]\n      public 'id' => int 19583\n      public 'cover' => int 15883\n      public 'name' => string 'Uncharted: Fight for Fortune' (length=28)\n  2 =>\n    object(stdClass)[5]\n      public 'id' => int 26193\n      public 'cover' => int 85149\n      public 'name' => string 'Uncharted: The Lost Legacy' (length=26)\n  3 =>\n    object(stdClass)[6]\n      public 'id' => int 19609\n      public 'cover' => int 85164\n      public 'name' => string 'Uncharted: Fortune Hunter' (length=25)\n  4 =>\n    object(stdClass)[7]\n      public 'id' => int 7331\n      public 'cover' => int 81917\n      public 'name' => string 'Uncharted 4: A Thief's End' (length=26)\n
"},"meta":{"revision":0,"created":1699573929865,"version":0},"$loki":99},{"id":"4dc1f8f","slug":"query-builder-with-options","level":2,"parent":"7c0fcd6","parents":["7c0fcd6"],"title":"Query Builder with Options","date":null,"timestamp":null,"body":{"stripped":"The IGDB Query Builder still supports the legacy $options array to parameterize the query.\n\n:warning Using the Builder this way is not recommended as this functionality may be removed in future versions. Use the builder approach instead.\n\nCode\n\n\n\nResult","markdown":"The [IGDB Query Builder](#igdb-query-builder) still supports the legacy `$options` array to parameterize the query.\n\n>:warning Using the Builder this way is not recommended as this functionality may be removed in future versions. Use the [builder approach](#builder-approach) instead.\n\n**Code**\n\n```php\n \"uncharted\",\n // we want to see these fields in the results\n \"fields\" => array(\"id\", \"name\", \"cover\"),\n // we only need maximum 5 results per query (pagination)\n \"limit\" => 5,\n // we would like to show the third page; fetch the results from the tenth element (pagination)\n \"offset\" => 10\n );\n\n try {\n // adding your $options array with the options method\n $builder->options($options);\n\n // building the query\n $query = $builder->build();\n\n // executing the query\n $games = $igdb->game($query);\n\n // showing the results\n var_dump($games);\n } catch (IGDBInvalidParameterException $e) {\n // an invalid parameter is passed to the query builder\n echo $e->getMessage();\n } catch (IGDBEnpointException $e) {\n // a non-successful response recieved from the IGDB API\n echo $e->getMessage();\n }\n\n?>\n```\n\n**Result**\n\n```text\narray (size=5)\n 0 =>\n object(stdClass)[3]\n public 'id' => int 125062\n public 'cover' => int 83686\n public 'name' => string 'Uncharted Ocean: Set Sail' (length=25)\n 1 =>\n object(stdClass)[4]\n public 'id' => int 19583\n public 'cover' => int 15883\n public 'name' => string 'Uncharted: Fight for Fortune' (length=28)\n 2 =>\n object(stdClass)[5]\n public 'id' => int 26193\n public 'cover' => int 85149\n public 'name' => string 'Uncharted: The Lost Legacy' (length=26)\n 3 =>\n object(stdClass)[6]\n public 'id' => int 19609\n public 'cover' => int 85164\n public 'name' => string 'Uncharted: Fortune Hunter' (length=25)\n 4 =>\n object(stdClass)[7]\n public 'id' => int 7331\n public 'cover' => int 81917\n public 'name' => string 'Uncharted 4: A Thief's End' (length=26)\n```","html":"

The IGDB Query Builder still supports the legacy $options array to parameterize the query.

\n
\n

:warning Using the Builder this way is not recommended as this functionality may be removed in future versions. Use the builder approach instead.

\n
\n

Code

\n
<?php\n\n    // importing the wrapper\n    require_once \"class.igdb.php\";\n\n    // instantiating the wrapper\n    $igdb = new IGDB(\"{client_id}\", \"{access_token}\");\n\n    // instantiating the builder\n    $builder = new IGDBQueryBuilder();\n\n    // creating the options array\n    $options = array(\n        // searching for games LIKE uncharted\n        \"search\" => \"uncharted\",\n        // we want to see these fields in the results\n        \"fields\" => array(\"id\", \"name\", \"cover\"),\n        // we only need maximum 5 results per query (pagination)\n        \"limit\" => 5,\n        // we would like to show the third page; fetch the results from the tenth element (pagination)\n        \"offset\" => 10\n    );\n\n    try {\n        // adding your $options array with the options method\n        $builder->options($options);\n\n        // building the query\n        $query = $builder->build();\n\n        // executing the query\n        $games = $igdb->game($query);\n\n        // showing the results\n        var_dump($games);\n    } catch (IGDBInvalidParameterException $e) {\n        // an invalid parameter is passed to the query builder\n        echo $e->getMessage();\n    } catch (IGDBEnpointException $e) {\n        // a non-successful response recieved from the IGDB API\n        echo $e->getMessage();\n    }\n\n?>\n
\n

Result

\n
array (size=5)\n  0 =>\n    object(stdClass)[3]\n      public 'id' => int 125062\n      public 'cover' => int 83686\n      public 'name' => string 'Uncharted Ocean: Set Sail' (length=25)\n  1 =>\n    object(stdClass)[4]\n      public 'id' => int 19583\n      public 'cover' => int 15883\n      public 'name' => string 'Uncharted: Fight for Fortune' (length=28)\n  2 =>\n    object(stdClass)[5]\n      public 'id' => int 26193\n      public 'cover' => int 85149\n      public 'name' => string 'Uncharted: The Lost Legacy' (length=26)\n  3 =>\n    object(stdClass)[6]\n      public 'id' => int 19609\n      public 'cover' => int 85164\n      public 'name' => string 'Uncharted: Fortune Hunter' (length=25)\n  4 =>\n    object(stdClass)[7]\n      public 'id' => int 7331\n      public 'cover' => int 81917\n      public 'name' => string 'Uncharted 4: A Thief's End' (length=26)\n
"},"meta":{"revision":0,"created":1699573929865,"version":0},"$loki":100},{"id":"a423327","slug":"counting-results","level":2,"parent":"7c0fcd6","parents":["7c0fcd6"],"title":"Counting Results","date":null,"timestamp":null,"body":{"stripped":"An example to count the matched records.\n\nWhen true is passed as the second parameter, the return value will be an object with a single property called count. For more details on the return values of the endpoint methods please refer to the return values section.\n\nCode\n\n\n\nResult","markdown":"An example to count the matched records.\n\n> When `true` is passed as the second parameter, the return value will be an object with a single property called `count`. For more details on the return values of the endpoint methods please refer to the [return values section](#return-values).\n\n**Code**\n\n```php\nwhere(\n array(\n 'field' => 'rating',\n 'postfix' => '>',\n 'value' => 75\n )\n )\n // process the configuration and return a string\n ->build();\n\n // executing the query\n // note the second true parameter\n $game_count = $igdb->game($query, true);\n\n // showing the results\n var_dump($game_count);\n } catch (IGDBInvalidParameterException $e) {\n // an invalid parameter is passed to the query builder\n echo $e->getMessage();\n } catch (IGDBEnpointException $e) {\n // a non-successful response recieved from the IGDB API\n echo $e->getMessage();\n }\n\n?>\n```\n\n**Result**\n\n```text\nobject(stdClass)[3]\n public 'count' => int 8081\n```","html":"

An example to count the matched records.

\n
\n

When true is passed as the second parameter, the return value will be an object with a single property called count. For more details on the return values of the endpoint methods please refer to the return values section.

\n
\n

Code

\n
<?php\n\n    // importing the wrapper\n    require 'class.igdb.php';\n\n    // instantiating the wrapper\n    $igdb = new IGDB(\"{client_id}\", \"{access_token}\");\n\n    // instantiate the query builder\n    $builder = new IGDBQueryBuilder();\n\n    try {\n        // building the query\n        $query = $builder\n            // setting a filter to fetch games with rating greater than 75\n            ->where(\n                array(\n                    'field' => 'rating',\n                    'postfix' => '>',\n                    'value' => 75\n                )\n            )\n            // process the configuration and return a string\n            ->build();\n\n        // executing the query\n        // note the second true parameter\n        $game_count = $igdb->game($query, true);\n\n        // showing the results\n        var_dump($game_count);\n    } catch (IGDBInvalidParameterException $e) {\n        // an invalid parameter is passed to the query builder\n        echo $e->getMessage();\n    } catch (IGDBEnpointException $e) {\n        // a non-successful response recieved from the IGDB API\n        echo $e->getMessage();\n    }\n\n?>\n
\n

Result

\n
object(stdClass)[3]\n  public 'count' => int 8081\n
"},"meta":{"revision":0,"created":1699573929865,"version":0},"$loki":101},{"id":"cca5fdc","slug":"expander","level":2,"parent":"7c0fcd6","parents":["7c0fcd6"],"title":"Expander","date":null,"timestamp":null,"body":{"stripped":"Some fields are actually ids pointing to other endpoints. The expander feature is a convenient way to go into these other endpoints and access more information from them in the same query, instead of having to do multiple queries.\n\nCode\n\n\n\nResult","markdown":"Some fields are actually ids pointing to other endpoints. The expander feature is a convenient way to go into these other endpoints and access more information from them in the same query, instead of having to do multiple queries.\n\n**Code**\n\n```php\nid(array(1,2))\n // fields can be expanded with a dot followed by the fields you want to access from a certain endpoint\n ->fields(array(\"name\", \"themes.url\", \"themes.name\"))\n // process the configuration and return a string\n ->build();\n\n // executing the query\n $game_count = $igdb->game($query);\n\n // showing the results\n var_dump($game_count);\n } catch (IGDBInvalidParameterException $e) {\n // an invalid parameter is passed to the query builder\n echo $e->getMessage();\n } catch (IGDBEnpointException $e) {\n // a non-successful response recieved from the IGDB API\n echo $e->getMessage();\n }\n\n?>\n```\n\n**Result**\n\n```text\narray (size=2)\n 0 =>\n object(stdClass)[3]\n public 'id' => int 1\n public 'name' => string 'Thief II: The Metal Age' (length=23)\n public 'themes' =>\n array (size=3)\n 0 =>\n object(stdClass)[4]\n public 'id' => int 1\n public 'name' => string 'Action' (length=6)\n public 'url' => string 'https://www.igdb.com/themes/action' (length=34)\n 1 =>\n object(stdClass)[5]\n public 'id' => int 17\n public 'name' => string 'Fantasy' (length=7)\n public 'url' => string 'https://www.igdb.com/themes/fantasy' (length=35)\n 2 =>\n object(stdClass)[6]\n public 'id' => int 23\n public 'name' => string 'Stealth' (length=7)\n public 'url' => string 'https://www.igdb.com/themes/stealth' (length=35)\n 1 =>\n object(stdClass)[7]\n public 'id' => int 2\n public 'name' => string 'Thief: The Dark Project' (length=23)\n public 'themes' =>\n array (size=3)\n 0 =>\n object(stdClass)[8]\n public 'id' => int 1\n public 'name' => string 'Action' (length=6)\n public 'url' => string 'https://www.igdb.com/themes/action' (length=34)\n 1 =>\n object(stdClass)[9]\n public 'id' => int 17\n public 'name' => string 'Fantasy' (length=7)\n public 'url' => string 'https://www.igdb.com/themes/fantasy' (length=35)\n 2 =>\n object(stdClass)[10]\n public 'id' => int 23\n public 'name' => string 'Stealth' (length=7)\n public 'url' => string 'https://www.igdb.com/themes/stealth' (length=35)\n```","html":"

Some fields are actually ids pointing to other endpoints. The expander feature is a convenient way to go into these other endpoints and access more information from them in the same query, instead of having to do multiple queries.

\n

Code

\n
<?php\n\n    // importing the wrapper\n    require 'class.igdb.php';\n\n    // instantiating the wrapper\n    $igdb = new IGDB(\"{client_id}\", \"{access_token}\");\n\n    // instantiate the query builder\n    $builder = new IGDBQueryBuilder();\n\n    try {\n        // building the query\n        $query = $builder\n            // fetching the first 2 games by id 1 and 2\n            ->id(array(1,2))\n            // fields can be expanded with a dot followed by the fields you want to access from a certain endpoint\n            ->fields(array(\"name\", \"themes.url\", \"themes.name\"))\n            // process the configuration and return a string\n            ->build();\n\n        // executing the query\n        $game_count = $igdb->game($query);\n\n        // showing the results\n        var_dump($game_count);\n    } catch (IGDBInvalidParameterException $e) {\n        // an invalid parameter is passed to the query builder\n        echo $e->getMessage();\n    } catch (IGDBEnpointException $e) {\n        // a non-successful response recieved from the IGDB API\n        echo $e->getMessage();\n    }\n\n?>\n
\n

Result

\n
array (size=2)\n  0 =>\n    object(stdClass)[3]\n      public 'id' => int 1\n      public 'name' => string 'Thief II: The Metal Age' (length=23)\n      public 'themes' =>\n        array (size=3)\n          0 =>\n            object(stdClass)[4]\n              public 'id' => int 1\n              public 'name' => string 'Action' (length=6)\n              public 'url' => string 'https://www.igdb.com/themes/action' (length=34)\n          1 =>\n            object(stdClass)[5]\n              public 'id' => int 17\n              public 'name' => string 'Fantasy' (length=7)\n              public 'url' => string 'https://www.igdb.com/themes/fantasy' (length=35)\n          2 =>\n            object(stdClass)[6]\n              public 'id' => int 23\n              public 'name' => string 'Stealth' (length=7)\n              public 'url' => string 'https://www.igdb.com/themes/stealth' (length=35)\n  1 =>\n    object(stdClass)[7]\n      public 'id' => int 2\n      public 'name' => string 'Thief: The Dark Project' (length=23)\n      public 'themes' =>\n        array (size=3)\n          0 =>\n            object(stdClass)[8]\n              public 'id' => int 1\n              public 'name' => string 'Action' (length=6)\n              public 'url' => string 'https://www.igdb.com/themes/action' (length=34)\n          1 =>\n            object(stdClass)[9]\n              public 'id' => int 17\n              public 'name' => string 'Fantasy' (length=7)\n              public 'url' => string 'https://www.igdb.com/themes/fantasy' (length=35)\n          2 =>\n            object(stdClass)[10]\n              public 'id' => int 23\n              public 'name' => string 'Stealth' (length=7)\n              public 'url' => string 'https://www.igdb.com/themes/stealth' (length=35)\n
"},"meta":{"revision":0,"created":1699573929865,"version":0},"$loki":102},{"id":"25c7cc2","slug":"multiquery-ii","level":2,"parent":"7c0fcd6","parents":["7c0fcd6"],"title":"MultiQuery","date":null,"timestamp":null,"body":{"stripped":"Using multiquery multiple queries can be executed against the IGDB database using a single query. The multiquery method expects an array of multiquery query strings.\n\n:info Using the build method with a boolean true parameter, a query will be returned with a multiquery syntax.\n\nCode\n\n\n\nResult","markdown":"Using multiquery multiple queries can be executed against the IGDB database using a single query. The multiquery method expects an array of multiquery query strings.\n\n>:info Using the [`build`](#building-the-query) method with a boolean `true` parameter, a query will be returned with a multiquery syntax.\n\n**Code**\n\n```php\nname(\"Main Game\")\n ->endpoint(\"game\")\n ->fields(\"id,name\")\n ->where(\"id = 25076\");\n\n // configuring the bundle query\n $bundle\n ->name(\"Bundles\")\n ->endpoint(\"game\")\n ->fields(\"id,name,version_parent,category\")\n ->where(\"version_parent = 25076\")\n ->where(\"category = 0\");\n\n var_dump(\n $igdb->multiquery(\n array(\n $main->build(true),\n $bundle->build(true)\n )\n )\n );\n } catch (IGDBInvaliParameterException $e) {\n // a builder property is invalid\n echo $e->getMessage();\n } catch (IGDBEndpointException $e) {\n // something went wront with the query\n echo $e->getMessage();\n }\n?>\n```\n\n**Result**\n\n```text\narray (size=2)\n 0 =>\n object(stdClass)[4]\n public 'name' => string 'Main Game' (length=9)\n public 'result' =>\n array (size=1)\n 0 =>\n object(stdClass)[5]\n public 'id' => int 25076\n public 'name' => string 'Red Dead Redemption 2' (length=21)\n 1 =>\n object(stdClass)[6]\n public 'name' => string 'Bundles' (length=7)\n public 'result' =>\n array (size=3)\n 0 =>\n object(stdClass)[7]\n public 'id' => int 103205\n public 'category' => int 0\n public 'name' => string 'Red Dead Redemption 2: Special Edition' (length=38)\n public 'version_parent' => int 25076\n 1 =>\n object(stdClass)[8]\n public 'id' => int 103207\n public 'category' => int 0\n public 'name' => string 'Red Dead Redemption 2: Collector's Box' (length=38)\n public 'version_parent' => int 25076\n 2 =>\n object(stdClass)[9]\n public 'id' => int 103206\n public 'category' => int 0\n public 'name' => string 'Red dead Redemption 2: Ultimate Edition' (length=39)\n public 'version_parent' => int 25076\n```","html":"

Using multiquery multiple queries can be executed against the IGDB database using a single query. The multiquery method expects an array of multiquery query strings.

\n
\n

:info Using the build method with a boolean true parameter, a query will be returned with a multiquery syntax.

\n
\n

Code

\n
<?php\n\n    // importing the wrapper\n    require_once \"class.igdb.php\";\n\n    // instantiate the wrapper\n    $igdb = new IGDB(\"{client_id}\", \"{access_token}\");\n\n    // query builder for the main game\n    $main = new IGDBQueryBuilder();\n\n    // query builder for the bundles\n    $bundle = new IGDBQueryBuilder();\n\n    try {\n        // configuring the main query\n        $main\n            ->name(\"Main Game\")\n            ->endpoint(\"game\")\n            ->fields(\"id,name\")\n            ->where(\"id = 25076\");\n\n        // configuring the bundle query\n        $bundle\n            ->name(\"Bundles\")\n            ->endpoint(\"game\")\n            ->fields(\"id,name,version_parent,category\")\n            ->where(\"version_parent = 25076\")\n            ->where(\"category = 0\");\n\n        var_dump(\n            $igdb->multiquery(\n                array(\n                    $main->build(true),\n                    $bundle->build(true)\n                )\n            )\n        );\n    } catch (IGDBInvaliParameterException $e) {\n        // a builder property is invalid\n        echo $e->getMessage();\n    } catch (IGDBEndpointException $e) {\n        // something went wront with the query\n        echo $e->getMessage();\n    }\n?>\n
\n

Result

\n
array (size=2)\n  0 =>\n    object(stdClass)[4]\n      public 'name' => string 'Main Game' (length=9)\n      public 'result' =>\n        array (size=1)\n          0 =>\n            object(stdClass)[5]\n              public 'id' => int 25076\n              public 'name' => string 'Red Dead Redemption 2' (length=21)\n  1 =>\n    object(stdClass)[6]\n      public 'name' => string 'Bundles' (length=7)\n      public 'result' =>\n        array (size=3)\n          0 =>\n            object(stdClass)[7]\n              public 'id' => int 103205\n              public 'category' => int 0\n              public 'name' => string 'Red Dead Redemption 2: Special Edition' (length=38)\n              public 'version_parent' => int 25076\n          1 =>\n            object(stdClass)[8]\n              public 'id' => int 103207\n              public 'category' => int 0\n              public 'name' => string 'Red Dead Redemption 2: Collector's Box' (length=38)\n              public 'version_parent' => int 25076\n          2 =>\n            object(stdClass)[9]\n              public 'id' => int 103206\n              public 'category' => int 0\n              public 'name' => string 'Red dead Redemption 2: Ultimate Edition' (length=39)\n              public 'version_parent' => int 25076\n
"},"meta":{"revision":0,"created":1699573929865,"version":0},"$loki":103},{"id":"74d88cc","slug":"change-log","level":1,"parent":null,"parents":[],"title":"Change Log","date":null,"timestamp":1699573872000,"body":{"stripped":"","markdown":"","html":""},"icon":"fa-clipboard-list","overview":"Changes, updates, notes.","meta":{"revision":0,"created":1699573929865,"version":0},"$loki":104},{"id":"1f31857","slug":"v4-3-2---october-26--2023","level":2,"parent":"74d88cc","parents":["74d88cc"],"title":"v4.3.2 - October 26, 2023","date":null,"timestamp":null,"body":{"stripped":"Added new endpoint methods to the wrapper\n\ncollection_membership\n\ncollection_membership_type\n\ncollection_relation\n\ncollection_relation_type\n\ncollection_type\n\nevent\n\nevent_logo\n\nevent_network\n\ngame_localization\n\nlanguage\n\nlanguage_support\n\nlanguage_support_type\n\nnetwork_type\n\nregion\n\nrelease_date_status","markdown":"- Added new endpoint methods to the wrapper\n - [collection_membership](#collection-membership)\n - [collection_membership_type](#collection-membership-type)\n - [collection_relation](#collection-relation)\n - [collection_relation_type](#collection-relation-type)\n - [collection_type](#collection-type)\n - [event](#event)\n - [event_logo](#event-logo)\n - [event_network](#event-network)\n - [game_localization](#game-localization)\n - [language](#language)\n - [language_support](#language-support)\n - [language_support_type](#language-support-type)\n - [network_type](#network-type)\n - [region](#region)\n - [release_date_status](#release-date-status)","html":""},"meta":{"revision":0,"created":1699573929865,"version":0},"$loki":105},{"id":"797e68c","slug":"v4-3-1---april-19--2022","level":2,"parent":"74d88cc","parents":["74d88cc"],"title":"v4.3.1 - April 19, 2022","date":null,"timestamp":null,"body":{"stripped":"IGDBEndpointException\n\nAdded a getResponseCode() to fetch http response code from IGDB API\n\nAdded sections to the documentation:\n\nHandling Errors\n\nHandling Builder Errors\n\nHandling Request Errors","markdown":"- IGDBEndpointException\n - Added a `getResponseCode()` to fetch http response code from IGDB API\n - Added sections to the documentation:\n - [Handling Errors](#handling-errors)\n - [Handling Builder Errors](#handling-builder-errors)\n - [Handling Request Errors](#handling-request-errors)","html":""},"meta":{"revision":0,"created":1699573929865,"version":0},"$loki":106},{"id":"8b05cd0","slug":"v4-3-0---august-19--2021","level":2,"parent":"74d88cc","parents":["74d88cc"],"title":"v4.3.0 - August 19, 2021","date":null,"timestamp":null,"body":{"stripped":"IGDBQueryBuilder: three new properties introduced for multiquery:\n\nname\n\nendpoint\n\ncount\n\nIGDBQueryBuilder: build method signature updated\n\nIGDBWrapper: multiquery updated to accept array of queries","markdown":"- IGDBQueryBuilder: three new properties introduced for multiquery:\n - [name](#name)\n - [endpoint](#endpoint)\n - [count](#count)\n - IGDBQueryBuilder: [build method](#building-the-query) signature updated\n - IGDBWrapper: [multiquery](#multiquery) updated to accept array of queries","html":"
    \n
  • IGDBQueryBuilder: three new properties introduced for multiquery:\n\n
  • \n
  • IGDBQueryBuilder: build method signature updated
  • \n
  • IGDBWrapper: multiquery updated to accept array of queries
  • \n
"},"meta":{"revision":0,"created":1699573929865,"version":0},"$loki":107},{"id":"1ece63a","slug":"v4-2-0---may-22--2021","level":2,"parent":"74d88cc","parents":["74d88cc"],"title":"v4.2.0 - May 22, 2021","date":null,"timestamp":null,"body":{"stripped":"IGDBQueryBuilder: Moved the $options array parsing to the options() method\n\nIGDBQueryBuilder: reset() method added","markdown":"- IGDBQueryBuilder: Moved the `$options` array parsing to the [`options()`](#options) method\n - IGDBQueryBuilder: [`reset()`](#reset) method added","html":"
    \n
  • IGDBQueryBuilder: Moved the $options array parsing to the options() method
  • \n
  • IGDBQueryBuilder: reset() method added
  • \n
"},"meta":{"revision":0,"created":1699573929865,"version":0},"$loki":108},{"id":"fd1a031","slug":"v4-1-2---may-20--2021","level":2,"parent":"74d88cc","parents":["74d88cc"],"title":"v4.1.2 - May 20, 2021","date":null,"timestamp":null,"body":{"stripped":"Minor updates to the readme","markdown":"- Minor updates to the readme","html":"
    \n
  • Minor updates to the readme
  • \n
"},"meta":{"revision":0,"created":1699573929865,"version":0},"$loki":109},{"id":"448ad0d","slug":"v4-1-1---may-20--2021","level":2,"parent":"74d88cc","parents":["74d88cc"],"title":"v4.1.1 - May 20, 2021","date":null,"timestamp":null,"body":{"stripped":"Removed a debugging var_dump from the IGDB Wrapper\n\nUpdated the documentation with a Query Builder example with $options array","markdown":"- Removed a debugging var_dump from the IGDB Wrapper\n - Updated the documentation with a [Query Builder example](#query-builder-with-options) with `$options` array","html":"
    \n
  • Removed a debugging var_dump from the IGDB Wrapper
  • \n
  • Updated the documentation with a Query Builder example with $options array
  • \n
"},"meta":{"revision":0,"created":1699573929865,"version":0},"$loki":110},{"id":"a6d123f","slug":"v4-1-0---may-15--2021","level":2,"parent":"74d88cc","parents":["74d88cc"],"title":"v4.1.0 - May 15, 2021","date":null,"timestamp":null,"body":{"stripped":"The wrapper got a brand new documentation!\n\nIntroduced the IGDBQueryBuilder class\n\nIntroduced the IGDB Utils class\n\nIntroduced IGDBEndpointException and IGDBInvalidParameterException classes\n\nThe wrapper endpoint methods no longer accepts $options, only apicalypse query strings","markdown":"- The wrapper got a brand new documentation!\n - Introduced the [IGDBQueryBuilder](#igdb-query-builder) class\n - Introduced the [IGDB Utils](#igdb-utils) class\n - Introduced `IGDBEndpointException` and `IGDBInvalidParameterException` classes\n - The wrapper [endpoint methods](#endpoints) no longer accepts `$options`, only [apicalypse query strings](https://api-docs.igdb.com/#apicalypse-1)","html":""},"meta":{"revision":0,"created":1699573929865,"version":0},"$loki":111},{"id":"6cbb51a","slug":"v4-0-2---april-28--2021","level":2,"parent":"74d88cc","parents":["74d88cc"],"title":"v4.0.2 - April 28, 2021","date":null,"timestamp":null,"body":{"stripped":"Updated error response handling from IGDB","markdown":"- Updated error response handling from IGDB","html":"
    \n
  • Updated error response handling from IGDB
  • \n
"},"meta":{"revision":0,"created":1699573929865,"version":0},"$loki":112},{"id":"b7920a5","slug":"v4-0-1---february-18--2021","level":2,"parent":"74d88cc","parents":["74d88cc"],"title":"v4.0.1 - February 18, 2021","date":null,"timestamp":null,"body":{"stripped":"Minor updates to the Readme","markdown":"- Minor updates to the Readme","html":"
    \n
  • Minor updates to the Readme
  • \n
"},"meta":{"revision":0,"created":1699573929865,"version":0},"$loki":113},{"id":"29a3c1d","slug":"v4-0-0---october-20--2020","level":2,"parent":"74d88cc","parents":["74d88cc"],"title":"v4.0.0 - October 20, 2020","date":null,"timestamp":null,"body":{"stripped":"IGDB Api v4 compatibility update\n\nUpdated Class constructor to accept the new tokens from Twitch\n\nRemoved API KEY\n\nRemoved IGDB::api_status() method\n\nRemoved Endpoint methods according to the IGDB Changes\n\nRenamed methods:\n\n\\_init_curl() => \\_curl_init()\n\nclose_curl() => curl_close()\n\nreinit_curl() => curl_reinit()\n\nUpdated endpoint methods to accept apicalypse strings as well\n\nImplemented Multiquery","markdown":"- **IGDB Api v4 compatibility update**\n - Updated Class constructor to accept the new tokens from Twitch\n - Removed API KEY\n - Removed `IGDB::api_status()` method\n - Removed Endpoint methods according to the [IGDB Changes](https://api-docs.igdb.com/#breaking-changes)\n - Renamed methods:\n - `_init_curl() => _curl_init()`\n - `close_curl() => curl_close()`\n - `reinit_curl() => curl_reinit()`\n - Updated endpoint methods to accept apicalypse strings as well\n - Implemented [Multiquery](#multiquery)","html":"
    \n
  • IGDB Api v4 compatibility update
  • \n
  • Updated Class constructor to accept the new tokens from Twitch
  • \n
  • Removed API KEY
  • \n
  • Removed IGDB::api_status() method
  • \n
  • Removed Endpoint methods according to the IGDB Changes
  • \n
  • Renamed methods:\n
      \n
    • _init_curl() => _curl_init()
    • \n
    • close_curl() => curl_close()
    • \n
    • reinit_curl() => curl_reinit()
    • \n
    \n
  • \n
  • Updated endpoint methods to accept apicalypse strings as well
  • \n
  • Implemented Multiquery
  • \n
"},"meta":{"revision":0,"created":1699573929865,"version":0},"$loki":114},{"id":"add15dc","slug":"v2-0-3---september-17--2020","level":2,"parent":"74d88cc","parents":["74d88cc"],"title":"v2.0.3 - September 17, 2020","date":null,"timestamp":null,"body":{"stripped":"Fixed a bug with the where filter (#6 Issues with slug field)","markdown":"- Fixed a bug with the `where` filter ([#6 Issues with slug field](https://github.com/enisz/igdb/issues/6))","html":""},"meta":{"revision":0,"created":1699573929865,"version":0},"$loki":115},{"id":"6674c85","slug":"v2-0-2---february-03--2020","level":2,"parent":"74d88cc","parents":["74d88cc"],"title":"v2.0.2 - February 03, 2020","date":null,"timestamp":null,"body":{"stripped":"Fixing inaccurate information in the Readme","markdown":"- Fixing inaccurate information in the Readme","html":"
    \n
  • Fixing inaccurate information in the Readme
  • \n
"},"meta":{"revision":0,"created":1699573929865,"version":0},"$loki":116},{"id":"76e1aee","slug":"v2-0-1---january-27--2020","level":2,"parent":"74d88cc","parents":["74d88cc"],"title":"v2.0.1 - January 27, 2020","date":null,"timestamp":null,"body":{"stripped":"Minor changes / fixes in the Readme\n\nAdded method \\_construct_url\n\nUpdated every endpoint method to construct the endpoint url's different","markdown":"- Minor changes / fixes in the Readme\n - Added method [`_construct_url`](#constructing-urls)\n - Updated every endpoint method to construct the endpoint url's different","html":"
    \n
  • Minor changes / fixes in the Readme
  • \n
  • Added method _construct_url
  • \n
  • Updated every endpoint method to construct the endpoint url's different
  • \n
"},"meta":{"revision":0,"created":1699573929865,"version":0},"$loki":117},{"id":"1dc8ea8","slug":"v2-0-0---december-04--2019","level":2,"parent":"74d88cc","parents":["74d88cc"],"title":"v2.0.0 - December 04, 2019","date":null,"timestamp":null,"body":{"stripped":"IGDB Api v3 compatibility update\n\nRemoved expander parameter\n\nRenamed parameter filter to where\n\nRenamed parameter order to sort\n\nRemoved multiple methods:\n\n\\_stringify_options\n\n\\_construct_url\n\ncount\n\ncustom_query\n\nAdded method apicalypse\n\nAdded method api_status\n\nUpdated every endpoint method (removed $execute, added $count)","markdown":"- **IGDB Api v3 compatibility update**\n - Removed `expander` parameter\n - Renamed parameter `filter` to `where`\n - Renamed parameter `order` to `sort`\n - Removed multiple methods:\n - `_stringify_options`\n - `_construct_url`\n - `count`\n - `custom_query`\n - Added method [`apicalypse`](#convert-options-to-apicalypse-query-string)\n - Added method [`api_status`](#get-the-status-of-your-api-key)\n - Updated every [endpoint method](#endpoints) (removed `$execute`, added `$count`)","html":"
    \n
  • IGDB Api v3 compatibility update
  • \n
  • Removed expander parameter
  • \n
  • Renamed parameter filter to where
  • \n
  • Renamed parameter order to sort
  • \n
  • Removed multiple methods:\n
      \n
    • _stringify_options
    • \n
    • _construct_url
    • \n
    • count
    • \n
    • custom_query
    • \n
    \n
  • \n
  • Added method apicalypse
  • \n
  • Added method api_status
  • \n
  • Updated every endpoint method (removed $execute, added $count)
  • \n
"},"meta":{"revision":0,"created":1699573929865,"version":0},"$loki":118},{"id":"b3fc67e","slug":"v1-0-5---march-11--2019","level":2,"parent":"74d88cc","parents":["74d88cc"],"title":"v1.0.5 - March 11, 2019","date":null,"timestamp":null,"body":{"stripped":"Fixed a bug at the request's error handling\n\npublic IGDB::get_request_info() public method added","markdown":"- Fixed a bug at the request's error handling\n - [``public IGDB::get_request_info()``](#get-request-information) public method added","html":""},"meta":{"revision":0,"created":1699573929865,"version":0},"$loki":119},{"id":"9ceefe3","slug":"v1-0-4---march-25--2018","level":2,"parent":"74d88cc","parents":["74d88cc"],"title":"v1.0.4 - March 25, 2018","date":null,"timestamp":null,"body":{"stripped":"Default properties has been removed.\n\nset_default public method has been removed.","markdown":"- Default properties has been removed.\n - set\\_default public method has been removed.","html":"
    \n
  • Default properties has been removed.
  • \n
  • set_default public method has been removed.
  • \n
"},"meta":{"revision":0,"created":1699573929865,"version":0},"$loki":120},{"id":"31adba1","slug":"v1-0-3---march-18--2018","level":2,"parent":"74d88cc","parents":["74d88cc"],"title":"v1.0.3 - March 18, 2018","date":null,"timestamp":null,"body":{"stripped":"Providing either search or id parameter in the options array are not mandatory anymore.\n\nProviding fields parameter when using expander is not mandatory anymore.\n\nOrdering parameter 'order' in the options array has been renamed to 'direction'. Refer to the order section of the options parameters.\n\nImplemented count method. Refer to the count section of the Readme.\n\nExample count.php has been added.\n\nUpdated Readme","markdown":"- Providing either search or id parameter in the options array are not mandatory anymore.\n - Providing fields parameter when using expander is not mandatory anymore.\n - Ordering parameter 'order' in the options array has been renamed to 'direction'. Refer to the [order](#order) section of the [options parameters](#options-parameters).\n - Implemented count method. Refer to the [count](#count) section of the Readme.\n - Example _count.php_ has been added.\n - Updated Readme","html":"
    \n
  • Providing either search or id parameter in the options array are not mandatory anymore.
  • \n
  • Providing fields parameter when using expander is not mandatory anymore.
  • \n
  • Ordering parameter 'order' in the options array has been renamed to 'direction'. Refer to the order section of the options parameters.
  • \n
  • Implemented count method. Refer to the count section of the Readme.
  • \n
  • Example count.php has been added.
  • \n
  • Updated Readme
  • \n
"},"meta":{"revision":0,"created":1699573929865,"version":0},"$loki":121},{"id":"22c65f0","slug":"v1-0-2---march-17--2018","level":2,"parent":"74d88cc","parents":["74d88cc"],"title":"v1.0.2 - March 17, 2018","date":null,"timestamp":null,"body":{"stripped":"Modified the constructor to ask only for the API Key. The API URL has been changed to be fix for every user (by IGDB).\n\nThe API URL and KEY setter and getter methods has been removed.\n\nThe API URL and KEY validator methods has been removed.\n\nNew method for order parameter constructing has been implemented.\n\nStringify Options method is private again. Use the updated endpoint methods instead.\n\nUpdated Endpoint Methods to accept a second optional parameter to return the constructed URL instead of executing the query.\n\nbasic.php example file has been renamed to basic.example.php.\n\norder.php example has been added.\n\norder_subfilter.php example has been added.\n\nAll example files has been modified with the updated constructor.","markdown":"- Modified the [constructor](#initializing-class) to ask only for the API Key. The API URL has been changed to be fix for every user (by IGDB).\n - The API URL and KEY setter and getter methods has been removed.\n - The API URL and KEY validator methods has been removed.\n - New method for order parameter constructing has been implemented.\n - [Stringify Options](#stringify-options) method is private again. Use the updated endpoint methods instead.\n - Updated [Endpoint Methods](#endpoints) to accept a second optional parameter to return the constructed URL instead of executing the query.\n - _basic.php_ example file has been renamed to _basic.example.php_.\n - _order.php_ example has been added.\n - _order_subfilter.php_ example has been added.\n - All example files has been modified with the updated constructor.","html":"
    \n
  • Modified the constructor to ask only for the API Key. The API URL has been changed to be fix for every user (by IGDB).
  • \n
  • The API URL and KEY setter and getter methods has been removed.
  • \n
  • The API URL and KEY validator methods has been removed.
  • \n
  • New method for order parameter constructing has been implemented.
  • \n
  • Stringify Options method is private again. Use the updated endpoint methods instead.
  • \n
  • Updated Endpoint Methods to accept a second optional parameter to return the constructed URL instead of executing the query.
  • \n
  • basic.php example file has been renamed to basic.example.php.
  • \n
  • order.php example has been added.
  • \n
  • order_subfilter.php example has been added.
  • \n
  • All example files has been modified with the updated constructor.
  • \n
"},"meta":{"revision":0,"created":1699573929865,"version":0},"$loki":122},{"id":"1f02b09","slug":"v1-0-1---march-16--2018","level":2,"parent":"74d88cc","parents":["74d88cc"],"title":"v1.0.1 - March 16, 2018","date":null,"timestamp":null,"body":{"stripped":"Added Changes section to the ReadMe.\n\nFixed filter parameter constructing; the parameter input has been changed.\n\nAdded example snippets to the Options Parameters section.\n\nAdded example file filter_multiple_criteria.php\n\nAdded example file filter_single_criteria.php","markdown":"- Added [Changes](#changes) section to the ReadMe.\n - Fixed [filter parameter](#filters) constructing; the parameter input has been changed.\n - Added example snippets to the [Options Parameters](#options-parameters) section.\n - Added example file _filter_multiple_criteria.php_\n - Added example file _filter_single_criteria.php_","html":"
    \n
  • Added Changes section to the ReadMe.
  • \n
  • Fixed filter parameter constructing; the parameter input has been changed.
  • \n
  • Added example snippets to the Options Parameters section.
  • \n
  • Added example file filter_multiple_criteria.php
  • \n
  • Added example file filter_single_criteria.php
  • \n
"},"meta":{"revision":0,"created":1699573929865,"version":0},"$loki":123}],"idIndex":null,"binaryIndices":{},"constraints":null,"uniqueNames":[],"transforms":{},"objType":"templates","dirty":true,"cachedIndex":null,"cachedBinaryIndex":null,"cachedData":null,"adaptiveBinaryIndices":true,"transactional":false,"cloneObjects":false,"cloneMethod":"parse-stringify","asyncListeners":false,"disableMeta":false,"disableChangesApi":true,"disableDeltaChangesApi":true,"autoupdate":false,"serializableIndices":true,"disableFreeze":true,"ttl":null,"maxId":123,"DynamicViews":[],"events":{"insert":[],"update":[],"pre-insert":[],"pre-update":[],"close":[],"flushbuffer":[],"error":[],"delete":[null],"warning":[null]},"changes":[],"dirtyIds":[]}],"databaseVersion":1.5,"engineVersion":1.5,"autosave":false,"autosaveInterval":5000,"autosaveHandle":null,"throttledSaves":true,"options":{"env":"BROWSER","persistenceMethod":"memory","serializationMethod":"normal","destructureDelimiter":"$<\n"},"persistenceMethod":"memory","persistenceAdapter":null,"verbose":false,"events":{"init":[null],"loaded":[],"flushChanges":[],"close":[],"changes":[],"warning":[]},"ENV":"BROWSER"} \ No newline at end of file diff --git a/docs/favicon.ico b/docs/favicon.ico deleted file mode 100644 index b812d0f..0000000 Binary files a/docs/favicon.ico and /dev/null differ diff --git a/docs/images/example-code-with-token.png b/docs/images/example-code-with-token.png deleted file mode 100644 index 5507081..0000000 Binary files a/docs/images/example-code-with-token.png and /dev/null differ diff --git a/docs/images/set-token-link.png b/docs/images/set-token-link.png deleted file mode 100644 index 8571aeb..0000000 Binary files a/docs/images/set-token-link.png and /dev/null differ diff --git a/docs/index.html b/docs/index.html deleted file mode 100644 index 6216dc1..0000000 --- a/docs/index.html +++ /dev/null @@ -1 +0,0 @@ -IGDBWrapper
\ No newline at end of file diff --git a/docs/logo192.png b/docs/logo192.png deleted file mode 100644 index fc44b0a..0000000 Binary files a/docs/logo192.png and /dev/null differ diff --git a/docs/logo512.png b/docs/logo512.png deleted file mode 100644 index a4e47a6..0000000 Binary files a/docs/logo512.png and /dev/null differ diff --git a/docs/manifest.json b/docs/manifest.json deleted file mode 100644 index 080d6c7..0000000 --- a/docs/manifest.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "short_name": "React App", - "name": "Create React App Sample", - "icons": [ - { - "src": "favicon.ico", - "sizes": "64x64 32x32 24x24 16x16", - "type": "image/x-icon" - }, - { - "src": "logo192.png", - "type": "image/png", - "sizes": "192x192" - }, - { - "src": "logo512.png", - "type": "image/png", - "sizes": "512x512" - } - ], - "start_url": ".", - "display": "standalone", - "theme_color": "#000000", - "background_color": "#ffffff" -} diff --git a/docs/robots.txt b/docs/robots.txt deleted file mode 100644 index e9e57dc..0000000 --- a/docs/robots.txt +++ /dev/null @@ -1,3 +0,0 @@ -# https://www.robotstxt.org/robotstxt.html -User-agent: * -Disallow: diff --git a/docs/static/css/2.e7ae4ec8.chunk.css b/docs/static/css/2.e7ae4ec8.chunk.css deleted file mode 100644 index 12e3ca7..0000000 --- a/docs/static/css/2.e7ae4ec8.chunk.css +++ /dev/null @@ -1,13 +0,0 @@ -body.lb-disable-scrolling{overflow:hidden}.lightboxOverlay{position:absolute;top:0;left:0;z-index:9999;background-color:#000;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=80);opacity:.8;display:none}.lightbox{position:absolute;left:0;width:100%;z-index:10000;text-align:center;line-height:0;font-weight:400;outline:none}.lightbox .lb-image{display:block;height:auto;max-width:inherit;max-height:none;border-radius:3px;border:4px solid #fff}.lightbox a img{border:none}.lb-outerContainer{position:relative;*zoom:1;width:250px;height:250px;margin:0 auto;border-radius:4px;background-color:#fff}.lb-outerContainer:after{content:"";display:table;clear:both}.lb-loader{position:absolute;top:43%;left:0;height:25%;width:100%;text-align:center;line-height:0}.lb-cancel{display:block;width:32px;height:32px;margin:0 auto;background:url(data:image/gif;base64,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) no-repeat}.lb-nav{position:absolute;top:0;left:0;height:100%;width:100%;z-index:10}.lb-container>.nav{left:0}.lb-nav a{outline:none;background-image:url("data:image/gif;base64,R0lGODlhAQABAPAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==")}.lb-next,.lb-prev{height:100%;cursor:pointer;display:block}.lb-nav a.lb-prev{width:34%;left:0;float:left;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAtCAYAAADsvzj/AAAFF0lEQVR4Ac2ZW0xcVRSGPTNnhlPKcCsUAeeChkEVxhutDQwzMANaqamNWgpaH+yDIaZp1cRHbgH0gTsxkmDCI/hiRAqgD5qYRgKQ8II6TE00wfgGAcIdKeM/ydrNZIezxxg9m518gRxWmn6s9a9zhvNQJBL5T/gfjokwA5Uw0zWFeHBOugiTsAArfSWZky+iABVowAZSwRkiDSTRz1iHlJMmogATsIDTIAPYgRs8SeTTtXSQSLVKFNkivIQKksDDJFCsquqLmqZdAa/i+yCuPQ1cJHOKjdpJEWGdsIFs8BQoy83NvTEzMzO3t7f318HBweHc3Nxdj8dznWQeIWmpIryENUaiCPgdDsfN+fn5XyLcWV5eDlmt1gBqHgOpbAHIFmESySAHeECF0+m8hd/+vcgxZ3d39wBj9grqCkA6iaiyRBRunJhEpcvl+nBhYeG3iM7Z2dnZgkg1ZSgNqLI6wgebSVTZ7faPlpaW/tSTWF9f36ivr+9AbQkF3iZRhAs2dSInJ+eDUCj0h0Biq7S09BPUBkEhyAKJssKusE6QRCGoQLDfn56eDulJrK6ubgeDwS7UXgTPAztIkXUfUbhxKgLlyMRtBPtXPYm1tbXdqqoqJnEOOGhbJQCTkSJ8sJlEMNoJrFhdicPDw6PKyspe1FaD85yE2YBnLUGwSSIrK+s2bnZLehIbGxubfr+/B7WXSMJJ42QlCcVAES7YJJGdnR0dp7BgnLZKSko6qBPngIvrBEkYIKIT7PLoOKET4TjB7kbty+A8SaRxmcAxQEQn2BUI9q3Z2dl7gk7sINhRiZeoE87jMmGECB/s3JhgR8dJV2Jzc3Pb5/N1UieKKdgsEyaAY5wIk2Dj5GHBRifCgmBHb3adLBNsO3HBNkxEAWZwCmSCx4EPwb4ZJ9jbCHYXSRQDpyDYhomoNFIOUIRMvINO/KQnsbKyshMIBD5D7RVwgQWblzBahD2Sp5jN5jzM+9uLi4s/60mEw+FNbKcvUH8DVIECcAZoXLCliaRaLBbX8PBwb0RwRkZGfkftx+BdUM4+KInDbdxoWUCKoih5CQkJgYGBgS/xs6PjRPb394+ampp+RP174CIoBGcpYypQZIqYY+4dz4DLvb29Y6LONDY2fou6OuAF+SCDZCgj8kQSQDqNihfU9vX1TYlkGhoa7qDuDVBKMpQVrjMG30fYCs6gAHuRmdqurq5JkUxLS8sEaq+CMq4zJGOgCB2Fk8kHJSaTqaazs3Pi2MzQaWtrm0RtDfDFyCQyGUNFOJlEkMlkwLWenp5vRDKtra1TNGYsM5mcjKEifGeYjBfUQUaYmebm5omYzLjFC8C4zyNqTGfcNDZ1/2ABjKHudZLXkTFARJAZN/CqqnqNMqN7Ojo6vqMF4ONkVFmvFUQLQNiZ7u7u76PZAn6S4TJjrIhoAdT+iwXAdQYYKCJaAG/iPhNvAYyj7jXwAngUpAGrDBF+ATCZAuBXFOX60NDQ3TiPM1/hyfoyPf7kgNNSXyvwmSGZMk3T3hocHPwhzlPzJLLFnpZT5PztV5wZNyilbTZFmTnZrxU4GZWXATV4ap4kmeNELlEticjsSHyZq/39/V/j374P2Lk/Pj5+BznxUuDlj1acJ4B8cAH/4er29vbPR0dH58fGxubx/ac2my1Ab3iz5Yc9/gJIB05QCJ4Fz9FXD3gC5HIfi+WKCGQ0GpuzwA7yCDtdS+b/SCFfRPwaQqPxSSaS6JrlwUjR+RtEvCM0ct4sLQAAAABJRU5ErkJggg==) left 48% no-repeat;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);opacity:0;transition:opacity .6s}.lb-nav a.lb-prev:hover{filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100);opacity:1}.lb-nav a.lb-next{width:64%;right:0;float:right;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAtCAYAAADsvzj/AAAFDUlEQVR4Ac2ZS0xcVRjHvTN3hisw0GIRZ3AeLWHQWqdVsRqgA86AUmpqoy20Whd2YYhprJq45BVAF7yJkQQTluDGiEhBF5qYRsIjYYMKQxNNMO4gQHgjZfxP8pF8ufEe0qQ5pyf5BTKcWfzyff/vnHt5xLQ0wgbsQCfswEY80BWPxx8I5sUlHMBJP0nm4RfRWAUMkAqOgseII8AFDNqjPYwiGuEAySADeEEuOEkE6bNjIIX22riQchHWSo+SRACc1nU9ahjGG+ASfn8Vn+WT0BNUMV0so04kFTwJTodCoeuTk5N3dnd397a3t/8dHx+fzM7OvoG/nQPPADdwscqoF2HBPgJynE5nZGFhYTZuWlNTU3/4fL6b2FMMnmUyTpJRLqKTSAbIQyu9vrW1tRv/n4Uqzfv9/g+x7xUQAh6QxmVUV0SnKRWESMXm5uZ63GJNT0//GQgEPsHeUibD20xTLeKioBdUV1e3rKysrFrJzM3N/eP1ej/F3jImIxgAcsOeDLLAKRAtLCz8HDKWlZmdnf3b4/F8zCojGADyz5F04AUvgPJoNNq2tLS0YSUzNjY2iwHwEWXmFHCzymiqRGwgiaaXD7wIysvKytqWl5e3rGQwAO4iM7ewt4SmmYfLqLpr2U0yZ0FFaWlp597e3r6VDEbzXapMlGQEA0COiEYyTmozP8lcKC4u7lhdXV2zksGhOZeVlXWLy5gHgDwRJsMqE6A2qygoKGhBm60L2izmdruZjGkAyBShxTNzlGTOgvMYAO2iAYDKxKjNSgQDQI6IRWb8VJnXMADaUZlNK5mJiYl5DAC6AQgGgCwRWjaWGR/IB+fD4XDr2trahqDN5lEZ3mbZ5gEgW4QPAD6aK3BotmIArAsqE2MDIMTajGTkinAZ3mb5NAAS58zGIQPgJvaGwVMgk5597ECTLcJl+AB4GVyKRCJfLi4uijLzGzLzHrWYj1pMVyXCB4BBz/J5oAzcwDT7OhaLWZ4zMzMzvyNX79rt9uOUNyewqRSxsbzk0Jh9H3w2MDDwV1yw+vv7Ox0OR4C+q1REAzr1+ON0TpSDD+rq6n7d2dmxusbs9/T0fJOUlBTRNO2gIg6lGSGJYyAXFIFrtbW1P4oq0dnZOYR9F8EZdqaoCDtVgrJBEoXgck1Nzfciia6urlHsu0rSOSADJEkXYRK8EufAlYaGhtsiiba2thFk4kAij75Po1fiOcIkkplEGFQ2NTWNCBz2W1tbb9tstkrsLaDvcQlN5hWFS2SyTFxubGwcFUl0dHT8gH1VTCITJHMJWSLmYAcPMlFfXy9sJ0gkMnGNpEnCXAkJIhYSReAtBHvosGCTRBgEWSV0qc8jPNhMIgyutLS0/CSSSGRC1/Uqkg5aZUKGiDkTQVAMqtrb238+RGJUHGyZb1F4Je4/2FfFwZYr4qRb7QnwEngTwR4+5JxIZOJtcbDlv2lMAR5wBjfUi7h2fCuS6Ovru6Np2nVqvzwmQcFW9+43HeSg10twix0RSfT29v5iGMY7dMLniTOh+N8KghN7lKZTIQgKMiG/IkwkCJELFiL7uMWOYE+lWUL8elRNa51APoqGh4cTN9p7TOJed3f3d4nz5P4l1ITdDU66XK5Ic3PzF0NDQ1ODg4NT+P0rCFbQM3qu4MRWLsIfX7PB0yAEngPP089TwA8yBMFWKmJ+qZBGj7FecJzw0mfpwBBLqBexseAbIBWkESnAEPybQLnIf4JfIzSb+FymAAAAAElFTkSuQmCC) right 48% no-repeat;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);opacity:0;transition:opacity .6s}.lb-nav a.lb-next:hover{filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100);opacity:1}.lb-dataContainer{margin:0 auto;padding-top:5px;*zoom:1;width:100%;border-bottom-left-radius:4px;border-bottom-right-radius:4px}.lb-dataContainer:after{content:"";display:table;clear:both}.lb-data{padding:0 4px;color:#ccc}.lb-data .lb-details{width:85%;float:left;text-align:left;line-height:1.1em}.lb-data .lb-caption{font-size:13px;font-weight:700;line-height:1em}.lb-data .lb-caption a{color:#4ae}.lb-data .lb-number{display:block;clear:left;padding-bottom:1em;font-size:12px;color:#999}.lb-data .lb-close{display:block;float:right;width:30px;height:30px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABsAAAAbCAMAAAC6CgRnAAAAPFBMVEX///8AAAD9/f2CgoKAgIAAAAAAAAAAAABLS0sAAAAAAACqqqqqqqq6urpKSkpISEgAAAC7u7u5ubn////zbsMcAAAAE3RSTlMASv6rqwAWS5YMC7/AyZWVFcrJCYaKfAAAAHhJREFUeF590kkOgCAQRFEaFVGc+/53FYmbz6JqBbyQMFSYuoQuV+iTflnstI7ssLXRvMWRaEMs84e2uVckuZe6knL0hiSPObXhj6ChzoEkIolIIpKIO4joICAIeDd7QGIfCCjOKe9HEk8mnxpIAup/F31RPZP9fAG3IAyBSJe0igAAAABJRU5ErkJggg==) 100% 0 no-repeat;text-align:right;outline:none;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=70);opacity:.7;transition:opacity .2s}.lb-data .lb-close:hover{cursor:pointer;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100);opacity:1} - -/*! - * Bootstrap v4.5.2 (https://getbootstrap.com/) - * Copyright 2011-2020 The Bootstrap Authors - * Copyright 2011-2020 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,:after,:before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{box-sizing:initial;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{font-style:normal;line-height:inherit}address,dl,ol,ul{margin-bottom:1rem}dl,ol,ul{margin-top:0}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:initial}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{border-style:none}img,svg{vertical-align:middle}svg{overflow:hidden}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:initial}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem}.display-1,.display-2{font-weight:300;line-height:1.2}.display-2{font-size:5.5rem}.display-3{font-size:4.5rem}.display-3,.display-4{font-weight:300;line-height:1.2}.display-4{font-size:3.5rem}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-inline,.list-unstyled{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer:before{content:"\2014\00A0"}.img-fluid,.img-thumbnail{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code{font-size:87.5%;color:#e83e8c;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}.row{display:flex;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-10,.col-11,.col-12,.col-auto,.col-lg,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-auto,.col-md,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-md-auto,.col-sm,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-1>*{flex:0 0 100%;max-width:100%}.row-cols-2>*{flex:0 0 50%;max-width:50%}.row-cols-3>*{flex:0 0 33.333333%;max-width:33.333333%}.row-cols-4>*{flex:0 0 25%;max-width:25%}.row-cols-5>*{flex:0 0 20%;max-width:20%}.row-cols-6>*{flex:0 0 16.666667%;max-width:16.666667%}.col-auto{flex:0 0 auto;width:auto;max-width:100%}.col-1{flex:0 0 8.333333%;max-width:8.333333%}.col-2{flex:0 0 16.666667%;max-width:16.666667%}.col-3{flex:0 0 25%;max-width:25%}.col-4{flex:0 0 33.333333%;max-width:33.333333%}.col-5{flex:0 0 41.666667%;max-width:41.666667%}.col-6{flex:0 0 50%;max-width:50%}.col-7{flex:0 0 58.333333%;max-width:58.333333%}.col-8{flex:0 0 66.666667%;max-width:66.666667%}.col-9{flex:0 0 75%;max-width:75%}.col-10{flex:0 0 83.333333%;max-width:83.333333%}.col-11{flex:0 0 91.666667%;max-width:91.666667%}.col-12{flex:0 0 100%;max-width:100%}.order-first{order:-1}.order-last{order:13}.order-0{order:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-6{order:6}.order-7{order:7}.order-8{order:8}.order-9{order:9}.order-10{order:10}.order-11{order:11}.order-12{order:12}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-sm-1>*{flex:0 0 100%;max-width:100%}.row-cols-sm-2>*{flex:0 0 50%;max-width:50%}.row-cols-sm-3>*{flex:0 0 33.333333%;max-width:33.333333%}.row-cols-sm-4>*{flex:0 0 25%;max-width:25%}.row-cols-sm-5>*{flex:0 0 20%;max-width:20%}.row-cols-sm-6>*{flex:0 0 16.666667%;max-width:16.666667%}.col-sm-auto{flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{flex:0 0 25%;max-width:25%}.col-sm-4{flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{flex:0 0 50%;max-width:50%}.col-sm-7{flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{flex:0 0 75%;max-width:75%}.col-sm-10{flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{flex:0 0 100%;max-width:100%}.order-sm-first{order:-1}.order-sm-last{order:13}.order-sm-0{order:0}.order-sm-1{order:1}.order-sm-2{order:2}.order-sm-3{order:3}.order-sm-4{order:4}.order-sm-5{order:5}.order-sm-6{order:6}.order-sm-7{order:7}.order-sm-8{order:8}.order-sm-9{order:9}.order-sm-10{order:10}.order-sm-11{order:11}.order-sm-12{order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-md-1>*{flex:0 0 100%;max-width:100%}.row-cols-md-2>*{flex:0 0 50%;max-width:50%}.row-cols-md-3>*{flex:0 0 33.333333%;max-width:33.333333%}.row-cols-md-4>*{flex:0 0 25%;max-width:25%}.row-cols-md-5>*{flex:0 0 20%;max-width:20%}.row-cols-md-6>*{flex:0 0 16.666667%;max-width:16.666667%}.col-md-auto{flex:0 0 auto;width:auto;max-width:100%}.col-md-1{flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{flex:0 0 25%;max-width:25%}.col-md-4{flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{flex:0 0 50%;max-width:50%}.col-md-7{flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{flex:0 0 75%;max-width:75%}.col-md-10{flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{flex:0 0 100%;max-width:100%}.order-md-first{order:-1}.order-md-last{order:13}.order-md-0{order:0}.order-md-1{order:1}.order-md-2{order:2}.order-md-3{order:3}.order-md-4{order:4}.order-md-5{order:5}.order-md-6{order:6}.order-md-7{order:7}.order-md-8{order:8}.order-md-9{order:9}.order-md-10{order:10}.order-md-11{order:11}.order-md-12{order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-lg-1>*{flex:0 0 100%;max-width:100%}.row-cols-lg-2>*{flex:0 0 50%;max-width:50%}.row-cols-lg-3>*{flex:0 0 33.333333%;max-width:33.333333%}.row-cols-lg-4>*{flex:0 0 25%;max-width:25%}.row-cols-lg-5>*{flex:0 0 20%;max-width:20%}.row-cols-lg-6>*{flex:0 0 16.666667%;max-width:16.666667%}.col-lg-auto{flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{flex:0 0 25%;max-width:25%}.col-lg-4{flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{flex:0 0 50%;max-width:50%}.col-lg-7{flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{flex:0 0 75%;max-width:75%}.col-lg-10{flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{flex:0 0 100%;max-width:100%}.order-lg-first{order:-1}.order-lg-last{order:13}.order-lg-0{order:0}.order-lg-1{order:1}.order-lg-2{order:2}.order-lg-3{order:3}.order-lg-4{order:4}.order-lg-5{order:5}.order-lg-6{order:6}.order-lg-7{order:7}.order-lg-8{order:8}.order-lg-9{order:9}.order-lg-10{order:10}.order-lg-11{order:11}.order-lg-12{order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-xl-1>*{flex:0 0 100%;max-width:100%}.row-cols-xl-2>*{flex:0 0 50%;max-width:50%}.row-cols-xl-3>*{flex:0 0 33.333333%;max-width:33.333333%}.row-cols-xl-4>*{flex:0 0 25%;max-width:25%}.row-cols-xl-5>*{flex:0 0 20%;max-width:20%}.row-cols-xl-6>*{flex:0 0 16.666667%;max-width:16.666667%}.col-xl-auto{flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{flex:0 0 25%;max-width:25%}.col-xl-4{flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{flex:0 0 50%;max-width:50%}.col-xl-7{flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{flex:0 0 75%;max-width:75%}.col-xl-10{flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{flex:0 0 100%;max-width:100%}.order-xl-first{order:-1}.order-xl-last{order:13}.order-xl-0{order:0}.order-xl-1{order:1}.order-xl-2{order:2}.order-xl-3{order:3}.order-xl-4{order:4}.order-xl-5{order:5}.order-xl-6{order:6}.order-xl-7{order:7}.order-xl-8{order:8}.order-xl-9{order:9}.order-xl-10{order:10}.order-xl-11{order:11}.order-xl-12{order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.table{width:100%;margin-bottom:1rem;color:#212529}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table-sm td,.table-sm th{padding:.3rem}.table-bordered,.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{color:#212529;background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#7abaff}.table-hover .table-primary:hover,.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d6d8db}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#b3b7bb}.table-hover .table-secondary:hover,.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#8fd19e}.table-hover .table-success:hover,.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#86cfda}.table-hover .table-info:hover,.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#ffdf7e}.table-hover .table-warning:hover,.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#ed969e}.table-hover .table-danger:hover,.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fbfcfc}.table-hover .table-light:hover,.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#95999c}.table-hover .table-dark:hover,.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th,.table-hover .table-active:hover,.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#343a40}.table-dark td,.table-dark th,.table-dark thead th{border-color:#454d55}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:hsla(0,0%,100%,.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:hsla(0,0%,100%,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:initial;border:0}.form-control:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}input[type=date].form-control,input[type=datetime-local].form-control,input[type=month].form-control,input[type=time].form-control{-webkit-appearance:none;appearance:none}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;font-size:1rem;line-height:1.5;color:#212529;background-color:initial;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[multiple],select.form-control[size],textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:flex;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:inline-flex;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(40,167,69,.9);border-radius:.25rem}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#28a745;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-valid,.was-validated .custom-select:valid{border-color:#28a745;padding-right:calc(.75em + 2.3125rem);background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label:before,.was-validated .custom-control-input:valid~.custom-control-label:before{border-color:#28a745}.custom-control-input.is-valid:checked~.custom-control-label:before,.was-validated .custom-control-input:valid:checked~.custom-control-label:before{border-color:#34ce57;background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label:before,.was-validated .custom-control-input:valid:focus~.custom-control-label:before{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label:before,.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label:before,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545'%3E%3Ccircle cx='6' cy='6' r='4.5'/%3E%3Cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3E%3Ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-invalid,.was-validated .custom-select:invalid{border-color:#dc3545;padding-right:calc(.75em + 2.3125rem);background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545'%3E%3Ccircle cx='6' cy='6' r='4.5'/%3E%3Cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3E%3Ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3E%3C/svg%3E") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label:before,.was-validated .custom-control-input:invalid~.custom-control-label:before{border-color:#dc3545}.custom-control-input.is-invalid:checked~.custom-control-label:before,.was-validated .custom-control-input:invalid:checked~.custom-control-label:before{border-color:#e4606d;background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label:before,.was-validated .custom-control-input:invalid:focus~.custom-control-label:before{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label:before,.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label:before,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:flex;flex-flow:row wrap;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{justify-content:center}.form-inline .form-group,.form-inline label{display:flex;align-items:center;margin-bottom:0}.form-inline .form-group{flex:0 0 auto;flex-flow:row wrap}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:flex;align-items:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{align-items:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;-webkit-user-select:none;user-select:none;background-color:initial;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529;text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary.focus,.btn-primary:focus,.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary.focus,.btn-primary:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary.focus,.btn-secondary:focus,.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary.focus,.btn-secondary:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success.focus,.btn-success:focus,.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info.focus,.btn-info:focus,.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning.focus,.btn-warning:focus,.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger.focus,.btn-danger:focus,.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light.focus,.btn-light:focus,.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark.focus,.btn-dark:focus,.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-outline-primary{color:#007bff;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:initial}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:initial}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-success{color:#28a745;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:initial}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:initial}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:initial}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:initial}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:initial}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343a40;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:initial}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-link{font-weight:400;color:#007bff;text-decoration:none}.btn-link:hover{color:#0056b3}.btn-link.focus,.btn-link:focus,.btn-link:hover{text-decoration:underline}.btn-link.disabled,.btn-link:disabled{color:#6c757d;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty:after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty:after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty:after{margin-left:0}.dropright .dropdown-toggle:after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";display:none}.dropleft .dropdown-toggle:before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty:after{margin-left:0}.dropleft .dropdown-toggle:before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:initial;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;pointer-events:none;background-color:initial}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split:after,.dropright .dropdown-toggle-split:after,.dropup .dropdown-toggle-split:after{margin-left:0}.dropleft .dropdown-toggle-split:before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio],.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{position:relative;flex:1 1 auto;width:1%;min-width:0;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-select:not(:last-child),.input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:flex;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label:after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-append,.input-group-prepend{display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(1.5em + 1rem + 2px)}.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;z-index:1;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;left:0;z-index:-1;width:1rem;height:1.25rem;opacity:0}.custom-control-input:checked~.custom-control-label:before{color:#fff;border-color:#007bff;background-color:#007bff}.custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-control-input:focus:not(:checked)~.custom-control-label:before{border-color:#80bdff}.custom-control-input:not(:disabled):active~.custom-control-label:before{color:#fff;background-color:#b3d7ff;border-color:#b3d7ff}.custom-control-input:disabled~.custom-control-label,.custom-control-input[disabled]~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label:before,.custom-control-input[disabled]~.custom-control-label:before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label:before{pointer-events:none;background-color:#fff;border:1px solid #adb5bd}.custom-control-label:after,.custom-control-label:before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:""}.custom-control-label:after{background:no-repeat 50%/50% 50%}.custom-checkbox .custom-control-label:before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label:before{border-color:#007bff;background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label:before{background-color:rgba(0,123,255,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label:before{background-color:rgba(0,123,255,.5)}.custom-radio .custom-control-label:before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label:before{background-color:rgba(0,123,255,.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label:before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label:after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-switch .custom-control-label:after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label:after{background-color:#fff;-webkit-transform:translateX(.75rem);transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label:before{background-color:rgba(0,123,255,.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center/8px 10px;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{display:none}.custom-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.custom-file{display:inline-block;margin-bottom:0}.custom-file,.custom-file-input{position:relative;width:100%;height:calc(1.5em + .75rem + 2px)}.custom-file-input{z-index:2;margin:0;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-file-input:disabled~.custom-file-label,.custom-file-input[disabled]~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label:after{content:"Browse"}.custom-file-input~.custom-file-label[data-browse]:after{content:attr(data-browse)}.custom-file-label{left:0;z-index:1;height:calc(1.5em + .75rem + 2px);font-weight:400;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label,.custom-file-label:after{position:absolute;top:0;right:0;padding:.375rem .75rem;line-height:1.5;color:#495057}.custom-file-label:after{bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);content:"Browse";background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;height:1.4rem;padding:0;background-color:initial;-webkit-appearance:none;appearance:none}.custom-range:focus{outline:none}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#007bff;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#b3d7ff}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#007bff;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-moz-range-thumb{-moz-transition:none;transition:none}}.custom-range::-moz-range-thumb:active{background-color:#b3d7ff}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#007bff;border:0;border-radius:1rem;-ms-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{-ms-transition:none;transition:none}}.custom-range::-ms-thumb:active{background-color:#b3d7ff}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:initial;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower,.custom-range::-ms-fill-upper{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label:before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-control-label:before,.custom-file-label,.custom-select{transition:none}}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:initial;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-basis:0;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;padding:.5rem 1rem}.navbar,.navbar .container,.navbar .container-fluid,.navbar .container-lg,.navbar .container-md,.navbar .container-sm,.navbar .container-xl{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:initial;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat 50%;background-size:100% 100%}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand,.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a,.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand,.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:hsla(0,0%,100%,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:hsla(0,0%,100%,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:hsla(0,0%,100%,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:hsla(0,0%,100%,.5);border-color:hsla(0,0%,100%,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-dark .navbar-text{color:hsla(0,0%,100%,.5)}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:initial;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;min-height:1px;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem}.card-subtitle,.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-bottom:-.75rem;border-bottom:0}.card-header-pills,.card-header-tabs{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem;border-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom,.card-img-top{flex-shrink:0;width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{display:flex;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{flex:1 0;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;grid-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion{overflow-anchor:none}.accordion>.card{overflow:hidden}.accordion>.card:not(:last-of-type){border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:not(:first-of-type){border-top-left-radius:0;border-top-right-radius:0}.accordion>.card>.card-header{border-radius:0;margin-bottom:-1px}.breadcrumb{flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb,.breadcrumb-item{display:flex}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item:before{display:inline-block;padding-right:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover:before{text-decoration:underline;text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:3;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:initial;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.badge{transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}a.badge-primary:focus,a.badge-primary:hover{color:#fff;background-color:#0062cc}a.badge-primary.focus,a.badge-primary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.badge-secondary{color:#fff;background-color:#6c757d}a.badge-secondary:focus,a.badge-secondary:hover{color:#fff;background-color:#545b62}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.badge-success{color:#fff;background-color:#28a745}a.badge-success:focus,a.badge-success:hover{color:#fff;background-color:#1e7e34}a.badge-success.focus,a.badge-success:focus{outline:0;box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.badge-info{color:#fff;background-color:#17a2b8}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#117a8b}a.badge-info.focus,a.badge-info:focus{outline:0;box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.badge-warning{color:#212529;background-color:#ffc107}a.badge-warning:focus,a.badge-warning:hover{color:#212529;background-color:#d39e00}a.badge-warning.focus,a.badge-warning:focus{outline:0;box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.badge-danger{color:#fff;background-color:#dc3545}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#bd2130}a.badge-danger.focus,a.badge-danger:focus{outline:0;box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.badge-light{color:#212529;background-color:#f8f9fa}a.badge-light:focus,a.badge-light:hover{color:#212529;background-color:#dae0e5}a.badge-light.focus,a.badge-light:focus{outline:0;box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.badge-dark{color:#fff;background-color:#343a40}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#1d2124}a.badge-dark.focus,a.badge-dark:focus{outline:0;box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{0%{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{0%{background-position:1rem 0}to{background-position:0 0}}.progress{height:1rem;line-height:0;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress,.progress-bar{display:flex;overflow:hidden}.progress-bar{flex-direction:column;justify-content:center;color:#fff;text-align:center;white-space:nowrap;background-color:#007bff;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.media{display:flex;align-items:flex-start}.media-body{flex:1 1}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{opacity:.75}button.close{padding:0;background-color:initial;border:0}a.close.disabled{pointer-events:none}.toast{flex-basis:350px;max-width:350px;font-size:.875rem;background-color:hsla(0,0%,100%,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(0,0,0,.1);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:flex;align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:hsla(0,0%,100%,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translateY(-50px);transform:translateY(-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{-webkit-transform:none;transform:none}.modal.modal-static .modal-dialog{-webkit-transform:scale(1.02);transform:scale(1.02)}.modal-dialog-scrollable{display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-footer,.modal-dialog-scrollable .modal-header{flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered:before{display:block;height:calc(100vh - 1rem);height:-webkit-min-content;height:min-content;content:""}.modal-dialog-centered.modal-dialog-scrollable{flex-direction:column;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable:before{content:none}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;align-items:flex-start;justify-content:space-between;padding:1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.modal-header .close{padding:1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered:before{height:calc(100vh - 3.5rem);height:-webkit-min-content;height:min-content}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow:before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow:before,.bs-tooltip-top .arrow:before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow:before,.bs-tooltip-right .arrow:before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow:before,.bs-tooltip-bottom .arrow:before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow:before,.bs-tooltip-left .arrow:before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{top:0;left:0;z-index:1060;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover,.popover .arrow{position:absolute;display:block}.popover .arrow{width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow:after,.popover .arrow:before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=top]>.arrow:before,.bs-popover-top>.arrow:before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top]>.arrow:after,.bs-popover-top>.arrow:after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow:before,.bs-popover-right>.arrow:before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right]>.arrow:after,.bs-popover-right>.arrow:after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=bottom]>.arrow:before,.bs-popover-bottom>.arrow:before{top:0;border-width:0 .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom]>.arrow:after,.bs-popover-bottom>.arrow:after{top:1px;border-width:0 .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header:before,.bs-popover-bottom .popover-header:before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow:before,.bs-popover-left>.arrow:before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left]>.arrow:after,.bs-popover-left>.arrow:after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner:after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-right,.carousel-item-next:not(.carousel-item-left){-webkit-transform:translateX(100%);transform:translateX(100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){-webkit-transform:translateX(-100%);transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;-webkit-transform:none;transform:none}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:no-repeat 50%/100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3E%3C/svg%3E")}.carousel-control-next-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8'%3E%3Cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3E%3C/svg%3E")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:flex;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:initial;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@-webkit-keyframes spinner-border{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes spinner-border{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;border:.25em solid;border-right:.25em solid transparent;border-radius:50%;-webkit-animation:spinner-border .75s linear infinite;animation:spinner-border .75s linear infinite}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1;-webkit-transform:none;transform:none}}@keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1;-webkit-transform:none;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:spinner-grow .75s linear infinite;animation:spinner-grow .75s linear infinite}.spinner-grow-sm{width:1rem;height:1rem}.align-baseline{vertical-align:initial!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#007bff!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:initial!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.2rem!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important}.rounded-right,.rounded-top{border-top-right-radius:.25rem!important}.rounded-bottom,.rounded-right{border-bottom-right-radius:.25rem!important}.rounded-bottom,.rounded-left{border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important}.rounded-lg{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix:after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive:before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9:before{padding-top:42.857143%}.embed-responsive-16by9:before{padding-top:56.25%}.embed-responsive-4by3:before{padding-top:75%}.embed-responsive-1by1:before{padding-top:100%}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-fill{flex:1 1 auto!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}@media (min-width:576px){.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}}@media (min-width:768px){.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.user-select-all{-webkit-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;user-select:none!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{top:0}.fixed-bottom,.fixed-top{position:fixed;right:0;left:0;z-index:1030}.fixed-bottom{bottom:0}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{white-space:nowrap}.sr-only-focusable:active,.sr-only-focusable:focus{white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-n1{margin:-.25rem!important}.mt-n1,.my-n1{margin-top:-.25rem!important}.mr-n1,.mx-n1{margin-right:-.25rem!important}.mb-n1,.my-n1{margin-bottom:-.25rem!important}.ml-n1,.mx-n1{margin-left:-.25rem!important}.m-n2{margin:-.5rem!important}.mt-n2,.my-n2{margin-top:-.5rem!important}.mr-n2,.mx-n2{margin-right:-.5rem!important}.mb-n2,.my-n2{margin-bottom:-.5rem!important}.ml-n2,.mx-n2{margin-left:-.5rem!important}.m-n3{margin:-1rem!important}.mt-n3,.my-n3{margin-top:-1rem!important}.mr-n3,.mx-n3{margin-right:-1rem!important}.mb-n3,.my-n3{margin-bottom:-1rem!important}.ml-n3,.mx-n3{margin-left:-1rem!important}.m-n4{margin:-1.5rem!important}.mt-n4,.my-n4{margin-top:-1.5rem!important}.mr-n4,.mx-n4{margin-right:-1.5rem!important}.mb-n4,.my-n4{margin-bottom:-1.5rem!important}.ml-n4,.mx-n4{margin-left:-1.5rem!important}.m-n5{margin:-3rem!important}.mt-n5,.my-n5{margin-top:-3rem!important}.mr-n5,.mx-n5{margin-right:-3rem!important}.mb-n5,.my-n5{margin-bottom:-3rem!important}.ml-n5,.mx-n5{margin-left:-3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-n1{margin:-.25rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem!important}.m-sm-n3{margin:-1rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-n1{margin:-.25rem!important}.mt-md-n1,.my-md-n1{margin-top:-.25rem!important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem!important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem!important}.m-md-n2{margin:-.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem!important}.m-md-n3{margin:-1rem!important}.mt-md-n3,.my-md-n3{margin-top:-1rem!important}.mr-md-n3,.mx-md-n3{margin-right:-1rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem!important}.ml-md-n3,.mx-md-n3{margin-left:-1rem!important}.m-md-n4{margin:-1.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem!important}.m-md-n5{margin:-3rem!important}.mt-md-n5,.my-md-n5{margin-top:-3rem!important}.mr-md-n5,.mx-md-n5{margin-right:-3rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem!important}.ml-md-n5,.mx-md-n5{margin-left:-3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-n1{margin:-.25rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem!important}.m-lg-n3{margin:-1rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-n1{margin:-.25rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem!important}.m-xl-n3{margin:-1rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.stretched-link:after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:transparent}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0056b3!important}.text-secondary{color:#6c757d!important}a.text-secondary:focus,a.text-secondary:hover{color:#494f54!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#19692c!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#0f6674!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#ba8b00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#a71d2a!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#cbd3da!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#121416!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:hsla(0,0%,100%,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:initial;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-break:break-word!important;overflow-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,:after,:before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]:after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}.container,body{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dee2e6!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}} -/*! - * Font Awesome Free 5.15.1 by @fontawesome - https://fontawesome.com - * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) - */.fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;-webkit-font-feature-settings:normal;font-feature-settings:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-artstation:before{content:"\f77a"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-atlas:before{content:"\f558"}.fa-atlassian:before{content:"\f77b"}.fa-atom:before{content:"\f5d2"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-award:before{content:"\f559"}.fa-aws:before{content:"\f375"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before{content:"\f77d"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-bacon:before{content:"\f7e5"}.fa-bacteria:before{content:"\e059"}.fa-bacterium:before{content:"\e05a"}.fa-bahai:before{content:"\f666"}.fa-balance-scale:before{content:"\f24e"}.fa-balance-scale-left:before{content:"\f515"}.fa-balance-scale-right:before{content:"\f516"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-battle-net:before{content:"\f835"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bible:before{content:"\f647"}.fa-bicycle:before{content:"\f206"}.fa-biking:before{content:"\f84a"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blind:before{content:"\f29d"}.fa-blog:before{content:"\f781"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-dead:before{content:"\f6b7"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-reader:before{content:"\f5da"}.fa-bookmark:before{content:"\f02e"}.fa-bootstrap:before{content:"\f836"}.fa-border-all:before{content:"\f84c"}.fa-border-none:before{content:"\f850"}.fa-border-style:before{content:"\f853"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-box-tissue:before{content:"\e05b"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-bread-slice:before{content:"\f7ec"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-brush:before{content:"\f55d"}.fa-btc:before{content:"\f15a"}.fa-buffer:before{content:"\f837"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-business-time:before{content:"\f64a"}.fa-buy-n-large:before{content:"\f8a6"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-calendar-week:before{content:"\f784"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-campground:before{content:"\f6bb"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-car-alt:before{content:"\f5de"}.fa-car-battery:before{content:"\f5df"}.fa-car-crash:before{content:"\f5e1"}.fa-car-side:before{content:"\f5e4"}.fa-caravan:before{content:"\f8ff"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-charging-station:before{content:"\f5e7"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-double:before{content:"\f560"}.fa-check-square:before{content:"\f14a"}.fa-cheese:before{content:"\f7ef"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-chromecast:before{content:"\f838"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-city:before{content:"\f64f"}.fa-clinic-medical:before{content:"\f7f2"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudflare:before{content:"\e07d"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-compress-alt:before{content:"\f422"}.fa-compress-arrows-alt:before{content:"\f78c"}.fa-concierge-bell:before{content:"\f562"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-cotton-bureau:before{content:"\f89e"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-credit-card:before{content:"\f09d"}.fa-critical-role:before{content:"\f6c9"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-crutch:before{content:"\f7f7"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dailymotion:before{content:"\e052"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-deezer:before{content:"\e077"}.fa-delicious:before{content:"\f1a5"}.fa-democrat:before{content:"\f747"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dharmachakra:before{content:"\f655"}.fa-dhl:before{content:"\f790"}.fa-diagnoses:before{content:"\f470"}.fa-diaspora:before{content:"\f791"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-directions:before{content:"\f5eb"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-disease:before{content:"\f7fa"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-drafting-compass:before{content:"\f568"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edge-legacy:before{content:"\e078"}.fa-edit:before{content:"\f044"}.fa-egg:before{content:"\f7fb"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-ethernet:before{content:"\f796"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-evernote:before{content:"\f839"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-alt:before{content:"\f424"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fan:before{content:"\f863"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-faucet:before{content:"\e005"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before{content:"\f56b"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-figma:before{content:"\f799"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-download:before{content:"\f56d"}.fa-file-excel:before{content:"\f1c3"}.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-upload:before{content:"\f574"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-alt:before{content:"\f7e4"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-firefox-browser:before{content:"\e007"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-fish:before{content:"\f578"}.fa-fist-raised:before{content:"\f6de"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flushed:before{content:"\f579"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-funnel-dollar:before{content:"\f662"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-git:before{content:"\f1d3"}.fa-git-alt:before{content:"\f841"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-cheers:before{content:"\f79f"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glass-whiskey:before{content:"\f7a0"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-globe-africa:before{content:"\f57c"}.fa-globe-americas:before{content:"\f57d"}.fa-globe-asia:before{content:"\f57e"}.fa-globe-europe:before{content:"\f7a2"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-pay:before{content:"\e079"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-grimace:before{content:"\f57f"}.fa-grin:before{content:"\f580"}.fa-grin-alt:before{content:"\f581"}.fa-grin-beam:before{content:"\f582"}.fa-grin-beam-sweat:before{content:"\f583"}.fa-grin-hearts:before{content:"\f584"}.fa-grin-squint:before{content:"\f585"}.fa-grin-squint-tears:before{content:"\f586"}.fa-grin-stars:before{content:"\f587"}.fa-grin-tears:before{content:"\f588"}.fa-grin-tongue:before{content:"\f589"}.fa-grin-tongue-squint:before{content:"\f58a"}.fa-grin-tongue-wink:before{content:"\f58b"}.fa-grin-wink:before{content:"\f58c"}.fa-grip-horizontal:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guilded:before{content:"\e07e"}.fa-guitar:before{content:"\f7a6"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hamburger:before{content:"\f805"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-medical:before{content:"\e05c"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-holding-water:before{content:"\f4c1"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-middle-finger:before{content:"\f806"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-sparkles:before{content:"\e05d"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-hands-wash:before{content:"\e05e"}.fa-handshake:before{content:"\f2b5"}.fa-handshake-alt-slash:before{content:"\e05f"}.fa-handshake-slash:before{content:"\e060"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-hat:before{content:"\f807"}.fa-hashtag:before{content:"\f292"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-hat-wizard:before{content:"\f6e8"}.fa-hdd:before{content:"\f0a0"}.fa-head-side-cough:before{content:"\e061"}.fa-head-side-cough-slash:before{content:"\e062"}.fa-head-side-mask:before{content:"\e063"}.fa-head-side-virus:before{content:"\e064"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-broken:before{content:"\f7a9"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-highlighter:before{content:"\f591"}.fa-hiking:before{content:"\f6ec"}.fa-hippo:before{content:"\f6ed"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hive:before{content:"\e07f"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hospital-user:before{content:"\f80d"}.fa-hot-tub:before{content:"\f593"}.fa-hotdog:before{content:"\f80f"}.fa-hotel:before{content:"\f594"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-house-damage:before{content:"\f6f1"}.fa-house-user:before{content:"\e065"}.fa-houzz:before{content:"\f27c"}.fa-hryvnia:before{content:"\f6f2"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-icicles:before{content:"\f7ad"}.fa-icons:before{content:"\f86d"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-ideal:before{content:"\e013"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-innosoft:before{content:"\e080"}.fa-instagram:before{content:"\f16d"}.fa-instagram-square:before{content:"\e055"}.fa-instalod:before{content:"\e081"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi:before{content:"\f669"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joint:before{content:"\f595"}.fa-joomla:before{content:"\f1aa"}.fa-journal-whills:before{content:"\f66a"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaaba:before{content:"\f66b"}.fa-kaggle:before{content:"\f5fa"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-khanda:before{content:"\f66d"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-landmark:before{content:"\f66f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-house:before{content:"\e066"}.fa-laptop-medical:before{content:"\f812"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-laugh:before{content:"\f599"}.fa-laugh-beam:before{content:"\f59a"}.fa-laugh-squint:before{content:"\f59b"}.fa-laugh-wink:before{content:"\f59c"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-luggage-cart:before{content:"\f59d"}.fa-lungs:before{content:"\f604"}.fa-lungs-virus:before{content:"\e067"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mail-bulk:before{content:"\f674"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marked:before{content:"\f59f"}.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-markdown:before{content:"\f60f"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mask:before{content:"\f6fa"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-mdb:before{content:"\f8ca"}.fa-medal:before{content:"\f5a2"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-meh:before{content:"\f11a"}.fa-meh-blank:before{content:"\f5a4"}.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-memory:before{content:"\f538"}.fa-mendeley:before{content:"\f7b3"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-meteor:before{content:"\f753"}.fa-microblog:before{content:"\e01a"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mitten:before{content:"\f7b5"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mixer:before{content:"\e056"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-motorcycle:before{content:"\f21c"}.fa-mountain:before{content:"\f6fc"}.fa-mouse:before{content:"\f8cc"}.fa-mouse-pointer:before{content:"\f245"}.fa-mug-hot:before{content:"\f7b6"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nimblr:before{content:"\f5a8"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-octopus-deploy:before{content:"\e082"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-oil-can:before{content:"\f613"}.fa-old-republic:before{content:"\f510"}.fa-om:before{content:"\f679"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-orcid:before{content:"\f8d2"}.fa-osi:before{content:"\f41a"}.fa-otter:before{content:"\f700"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-pager:before{content:"\f815"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-passport:before{content:"\f5ab"}.fa-pastafarianism:before{content:"\f67b"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-penny-arcade:before{content:"\f704"}.fa-people-arrows:before{content:"\e068"}.fa-people-carry:before{content:"\f4ce"}.fa-pepper-hot:before{content:"\f816"}.fa-perbyte:before{content:"\e083"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-person-booth:before{content:"\f756"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-alt:before{content:"\f879"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-square-alt:before{content:"\f87b"}.fa-phone-volume:before{content:"\f2a0"}.fa-photo-video:before{content:"\f87c"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-square:before{content:"\e01e"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-pizza-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-plane-slash:before{content:"\e069"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poll:before{content:"\f681"}.fa-poll-h:before{content:"\f682"}.fa-poo:before{content:"\f2fe"}.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-pray:before{content:"\f683"}.fa-praying-hands:before{content:"\f684"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pump-medical:before{content:"\e06a"}.fa-pump-soap:before{content:"\e06b"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-quran:before{content:"\f687"}.fa-r-project:before{content:"\f4f7"}.fa-radiation:before{content:"\f7b9"}.fa-radiation-alt:before{content:"\f7ba"}.fa-rainbow:before{content:"\f75b"}.fa-random:before{content:"\f074"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-record-vinyl:before{content:"\f8d9"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redhat:before{content:"\f7bc"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-remove-format:before{content:"\f87d"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-republican:before{content:"\f75e"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-rev:before{content:"\f5b2"}.fa-ribbon:before{content:"\f4d6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-route:before{content:"\f4d7"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-running:before{content:"\f70c"}.fa-rupee-sign:before{content:"\f156"}.fa-rust:before{content:"\e07a"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-salesforce:before{content:"\f83b"}.fa-sass:before{content:"\f41e"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-scroll:before{content:"\f70e"}.fa-sd-card:before{content:"\f7c2"}.fa-search:before{content:"\f002"}.fa-search-dollar:before{content:"\f688"}.fa-search-location:before{content:"\f689"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-shapes:before{content:"\f61f"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-shield-virus:before{content:"\e06c"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopify:before{content:"\e057"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shower:before{content:"\f2cc"}.fa-shuttle-van:before{content:"\f5b6"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-sim-card:before{content:"\f7c4"}.fa-simplybuilt:before{content:"\f215"}.fa-sink:before{content:"\e06d"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skating:before{content:"\f7c5"}.fa-sketch:before{content:"\f7c6"}.fa-skiing:before{content:"\f7c9"}.fa-skiing-nordic:before{content:"\f7ca"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-wink:before{content:"\f4da"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-sms:before{content:"\f7cd"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowboarding:before{content:"\f7ce"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-soap:before{content:"\e06e"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-down-alt:before{content:"\f884"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-amount-up-alt:before{content:"\f885"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-speaker-deck:before{content:"\f83c"}.fa-spell-check:before{content:"\f891"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-square-root-alt:before{content:"\f698"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stackpath:before{content:"\f842"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-stopwatch-20:before{content:"\e06f"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-store-alt-slash:before{content:"\e070"}.fa-store-slash:before{content:"\e071"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-surprise:before{content:"\f5c2"}.fa-suse:before{content:"\f7d6"}.fa-swatchbook:before{content:"\f5c3"}.fa-swift:before{content:"\f8e1"}.fa-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.fa-symfony:before{content:"\f83d"}.fa-synagogue:before{content:"\f69b"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-tenge:before{content:"\f7d7"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-the-red-yeti:before{content:"\f69d"}.fa-theater-masks:before{content:"\f630"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-think-peaks:before{content:"\f731"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-tiktok:before{content:"\e07b"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.fa-tired:before{content:"\f5c8"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toilet-paper-slash:before{content:"\e072"}.fa-toolbox:before{content:"\f552"}.fa-tools:before{content:"\f7d9"}.fa-tooth:before{content:"\f5c9"}.fa-torah:before{content:"\f6a0"}.fa-torii-gate:before{content:"\f6a1"}.fa-tractor:before{content:"\f722"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-trailer:before{content:"\e041"}.fa-train:before{content:"\f238"}.fa-tram:before{content:"\f7da"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-trash-restore:before{content:"\f829"}.fa-trash-restore-alt:before{content:"\f82a"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-tripadvisor:before{content:"\f262"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbraco:before{content:"\f8e8"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-uncharted:before{content:"\e084"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-unity:before{content:"\e049"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-unsplash:before{content:"\e07c"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-injured:before{content:"\f728"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-users-slash:before{content:"\e073"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-vest:before{content:"\e085"}.fa-vest-patches:before{content:"\e086"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-virus:before{content:"\e074"}.fa-virus-slash:before{content:"\e075"}.fa-viruses:before{content:"\e076"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-voicemail:before{content:"\f897"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-mute:before{content:"\f6a9"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vote-yea:before{content:"\f772"}.fa-vr-cardboard:before{content:"\f729"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-watchman-monitoring:before{content:"\e087"}.fa-water:before{content:"\f773"}.fa-wave-square:before{content:"\f83e"}.fa-waze:before{content:"\f83f"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-wind:before{content:"\f72e"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before{content:"\f5ce"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wodu:before{content:"\e088"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wpressr:before{content:"\f3e4"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yammer:before{content:"\f840"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:400;font-display:block;src:url(../../static/media/fa-brands-400.0fea2496.eot);src:url(../../static/media/fa-brands-400.0fea2496.eot?#iefix) format("embedded-opentype"),url(../../static/media/fa-brands-400.c967a94c.woff2) format("woff2"),url(../../static/media/fa-brands-400.dc2cbadd.woff) format("woff"),url(../../static/media/fa-brands-400.ec82f282.ttf) format("truetype"),url(../../static/media/fa-brands-400.e33e2cf6.svg#fontawesome) format("svg")}.fab{font-family:"Font Awesome 5 Brands"}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;font-display:block;src:url(../../static/media/fa-regular-400.08f9891a.eot);src:url(../../static/media/fa-regular-400.08f9891a.eot?#iefix) format("embedded-opentype"),url(../../static/media/fa-regular-400.1008b522.woff2) format("woff2"),url(../../static/media/fa-regular-400.1069ea55.woff) format("woff"),url(../../static/media/fa-regular-400.1495f578.ttf) format("truetype"),url(../../static/media/fa-regular-400.06b9d19c.svg#fontawesome) format("svg")}.fab,.far{font-weight:400}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;font-display:block;src:url(../../static/media/fa-solid-900.3a24a60e.eot);src:url(../../static/media/fa-solid-900.3a24a60e.eot?#iefix) format("embedded-opentype"),url(../../static/media/fa-solid-900.3ceb50e7.woff2) format("woff2"),url(../../static/media/fa-solid-900.46fdbd2d.woff) format("woff"),url(../../static/media/fa-solid-900.10ecefc2.ttf) format("truetype"),url(../../static/media/fa-solid-900.371dbce0.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:"Font Awesome 5 Free"}.fa,.fas{font-weight:900}.hljs{display:block;overflow-x:auto;padding:.5em;color:#abb2bf;background:#282c34}.hljs-comment,.hljs-quote{color:#5c6370;font-style:italic}.hljs-doctag,.hljs-formula,.hljs-keyword{color:#c678dd}.hljs-deletion,.hljs-name,.hljs-section,.hljs-selector-tag,.hljs-subst{color:#e06c75}.hljs-literal{color:#56b6c2}.hljs-addition,.hljs-attribute,.hljs-meta-string,.hljs-regexp,.hljs-string{color:#98c379}.hljs-built_in,.hljs-class .hljs-title{color:#e6c07b}.hljs-attr,.hljs-number,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-pseudo,.hljs-template-variable,.hljs-type,.hljs-variable{color:#d19a66}.hljs-bullet,.hljs-link,.hljs-meta,.hljs-selector-id,.hljs-symbol,.hljs-title{color:#61aeee}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-link{text-decoration:underline}:root{--toastify-color-light:#fff;--toastify-color-dark:#121212;--toastify-color-info:#3498db;--toastify-color-success:#07bc0c;--toastify-color-warning:#f1c40f;--toastify-color-error:#e74c3c;--toastify-color-transparent:hsla(0,0%,100%,0.7);--toastify-icon-color-info:var(--toastify-color-info);--toastify-icon-color-success:var(--toastify-color-success);--toastify-icon-color-warning:var(--toastify-color-warning);--toastify-icon-color-error:var(--toastify-color-error);--toastify-toast-width:320px;--toastify-toast-background:#fff;--toastify-toast-min-height:64px;--toastify-toast-max-height:800px;--toastify-font-family:sans-serif;--toastify-z-index:9999;--toastify-text-color-light:#757575;--toastify-text-color-dark:#fff;--toastify-text-color-info:#fff;--toastify-text-color-success:#fff;--toastify-text-color-warning:#fff;--toastify-text-color-error:#fff;--toastify-spinner-color:#616161;--toastify-spinner-color-empty-area:#e0e0e0;--toastify-color-progress-light:linear-gradient(90deg,#4cd964,#5ac8fa,#007aff,#34aadc,#5856d6,#ff2d55);--toastify-color-progress-dark:#bb86fc;--toastify-color-progress-info:var(--toastify-color-info);--toastify-color-progress-success:var(--toastify-color-success);--toastify-color-progress-warning:var(--toastify-color-warning);--toastify-color-progress-error:var(--toastify-color-error)}.Toastify__toast-container{z-index:9999;z-index:var(--toastify-z-index);-webkit-transform:translateZ(9999);-webkit-transform:translateZ(var(--toastify-z-index));position:fixed;padding:4px;width:320px;width:var(--toastify-toast-width);box-sizing:border-box;color:#fff}.Toastify__toast-container--top-left{top:1em;left:1em}.Toastify__toast-container--top-center{top:1em;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.Toastify__toast-container--top-right{top:1em;right:1em}.Toastify__toast-container--bottom-left{bottom:1em;left:1em}.Toastify__toast-container--bottom-center{bottom:1em;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.Toastify__toast-container--bottom-right{bottom:1em;right:1em}@media only screen and (max-width:480px){.Toastify__toast-container{width:100vw;padding:0;left:0;margin:0}.Toastify__toast-container--top-center,.Toastify__toast-container--top-left,.Toastify__toast-container--top-right{top:0;-webkit-transform:translateX(0);transform:translateX(0)}.Toastify__toast-container--bottom-center,.Toastify__toast-container--bottom-left,.Toastify__toast-container--bottom-right{bottom:0;-webkit-transform:translateX(0);transform:translateX(0)}.Toastify__toast-container--rtl{right:0;left:auto}}.Toastify__toast{position:relative;min-height:64px;min-height:var(--toastify-toast-min-height);box-sizing:border-box;margin-bottom:1rem;padding:8px;border-radius:4px;box-shadow:0 1px 10px 0 rgba(0,0,0,.1),0 2px 15px 0 rgba(0,0,0,.05);display:flex;justify-content:space-between;max-height:800px;max-height:var(--toastify-toast-max-height);overflow:hidden;font-family:sans-serif;font-family:var(--toastify-font-family);cursor:pointer;direction:ltr}.Toastify__toast--rtl{direction:rtl}.Toastify__toast-body{margin:auto 0;flex:1 1 auto;padding:6px;display:flex;align-items:center}.Toastify__toast-body>div:last-child{flex:1 1}.Toastify__toast-icon{-webkit-margin-end:10px;margin-inline-end:10px;width:20px;flex-shrink:0;display:flex}.Toastify--animate{-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.7s;animation-duration:.7s}.Toastify--animate-icon{-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.3s;animation-duration:.3s}@media only screen and (max-width:480px){.Toastify__toast{margin-bottom:0;border-radius:0}}.Toastify__toast-theme--dark{background:#121212;background:var(--toastify-color-dark);color:#fff;color:var(--toastify-text-color-dark)}.Toastify__toast-theme--colored.Toastify__toast--default,.Toastify__toast-theme--light{background:#fff;background:var(--toastify-color-light);color:#757575;color:var(--toastify-text-color-light)}.Toastify__toast-theme--colored.Toastify__toast--info{color:#fff;color:var(--toastify-text-color-info);background:#3498db;background:var(--toastify-color-info)}.Toastify__toast-theme--colored.Toastify__toast--success{color:#fff;color:var(--toastify-text-color-success);background:#07bc0c;background:var(--toastify-color-success)}.Toastify__toast-theme--colored.Toastify__toast--warning{color:#fff;color:var(--toastify-text-color-warning);background:#f1c40f;background:var(--toastify-color-warning)}.Toastify__toast-theme--colored.Toastify__toast--error{color:#fff;color:var(--toastify-text-color-error);background:#e74c3c;background:var(--toastify-color-error)}.Toastify__progress-bar-theme--light{background:linear-gradient(90deg,#4cd964,#5ac8fa,#007aff,#34aadc,#5856d6,#ff2d55);background:var(--toastify-color-progress-light)}.Toastify__progress-bar-theme--dark{background:#bb86fc;background:var(--toastify-color-progress-dark)}.Toastify__progress-bar--info{background:#3498db;background:var(--toastify-color-progress-info)}.Toastify__progress-bar--success{background:#07bc0c;background:var(--toastify-color-progress-success)}.Toastify__progress-bar--warning{background:#f1c40f;background:var(--toastify-color-progress-warning)}.Toastify__progress-bar--error{background:#e74c3c;background:var(--toastify-color-progress-error)}.Toastify__progress-bar-theme--colored.Toastify__progress-bar--error,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--info,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--success,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--warning{background:hsla(0,0%,100%,.7);background:var(--toastify-color-transparent)}.Toastify__close-button{color:#fff;background:transparent;outline:none;border:none;padding:0;cursor:pointer;opacity:.7;transition:.3s ease;align-self:flex-start}.Toastify__close-button--light{color:#000;opacity:.3}.Toastify__close-button>svg{fill:currentColor;height:16px;width:14px}.Toastify__close-button:focus,.Toastify__close-button:hover{opacity:1}@-webkit-keyframes Toastify__trackProgress{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}to{-webkit-transform:scaleX(0);transform:scaleX(0)}}@keyframes Toastify__trackProgress{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}to{-webkit-transform:scaleX(0);transform:scaleX(0)}}.Toastify__progress-bar{position:absolute;bottom:0;left:0;width:100%;height:5px;z-index:9999;z-index:var(--toastify-z-index);opacity:.7;-webkit-transform-origin:left;transform-origin:left}.Toastify__progress-bar--animated{-webkit-animation:Toastify__trackProgress linear 1 forwards;animation:Toastify__trackProgress linear 1 forwards}.Toastify__progress-bar--controlled{transition:-webkit-transform .2s;transition:transform .2s;transition:transform .2s,-webkit-transform .2s}.Toastify__progress-bar--rtl{right:0;left:auto;-webkit-transform-origin:right;transform-origin:right}.Toastify__spinner{width:20px;height:20px;box-sizing:border-box;border-radius:100%;border:2px solid #e0e0e0;border-color:var(--toastify-spinner-color-empty-area);border-right:2px solid var(--toastify-spinner-color);-webkit-animation:Toastify__spin .65s linear infinite;animation:Toastify__spin .65s linear infinite}@-webkit-keyframes Toastify__bounceInRight{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}to{-webkit-transform:none;transform:none}}@keyframes Toastify__bounceInRight{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}to{-webkit-transform:none;transform:none}}@-webkit-keyframes Toastify__bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes Toastify__bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@-webkit-keyframes Toastify__bounceInLeft{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0);transform:translate3d(-3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}to{-webkit-transform:none;transform:none}}@keyframes Toastify__bounceInLeft{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0);transform:translate3d(-3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}to{-webkit-transform:none;transform:none}}@-webkit-keyframes Toastify__bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes Toastify__bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@-webkit-keyframes Toastify__bounceInUp{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0);transform:translate3d(0,3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes Toastify__bounceInUp{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0);transform:translate3d(0,3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@-webkit-keyframes Toastify__bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes Toastify__bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@-webkit-keyframes Toastify__bounceInDown{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0);transform:translate3d(0,-3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}to{-webkit-transform:none;transform:none}}@keyframes Toastify__bounceInDown{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0);transform:translate3d(0,-3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}to{-webkit-transform:none;transform:none}}@-webkit-keyframes Toastify__bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes Toastify__bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.Toastify__bounce-enter--bottom-left,.Toastify__bounce-enter--top-left{-webkit-animation-name:Toastify__bounceInLeft;animation-name:Toastify__bounceInLeft}.Toastify__bounce-enter--bottom-right,.Toastify__bounce-enter--top-right{-webkit-animation-name:Toastify__bounceInRight;animation-name:Toastify__bounceInRight}.Toastify__bounce-enter--top-center{-webkit-animation-name:Toastify__bounceInDown;animation-name:Toastify__bounceInDown}.Toastify__bounce-enter--bottom-center{-webkit-animation-name:Toastify__bounceInUp;animation-name:Toastify__bounceInUp}.Toastify__bounce-exit--bottom-left,.Toastify__bounce-exit--top-left{-webkit-animation-name:Toastify__bounceOutLeft;animation-name:Toastify__bounceOutLeft}.Toastify__bounce-exit--bottom-right,.Toastify__bounce-exit--top-right{-webkit-animation-name:Toastify__bounceOutRight;animation-name:Toastify__bounceOutRight}.Toastify__bounce-exit--top-center{-webkit-animation-name:Toastify__bounceOutUp;animation-name:Toastify__bounceOutUp}.Toastify__bounce-exit--bottom-center{-webkit-animation-name:Toastify__bounceOutDown;animation-name:Toastify__bounceOutDown}@-webkit-keyframes Toastify__zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes Toastify__zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}@-webkit-keyframes Toastify__zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:0}}@keyframes Toastify__zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:0}}.Toastify__zoom-enter{-webkit-animation-name:Toastify__zoomIn;animation-name:Toastify__zoomIn}.Toastify__zoom-exit{-webkit-animation-name:Toastify__zoomOut;animation-name:Toastify__zoomOut}@-webkit-keyframes Toastify__flipIn{0%{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotateX(10deg);transform:perspective(400px) rotateX(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateX(-5deg);transform:perspective(400px) rotateX(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes Toastify__flipIn{0%{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotateX(10deg);transform:perspective(400px) rotateX(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateX(-5deg);transform:perspective(400px) rotateX(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@-webkit-keyframes Toastify__flipOut{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);opacity:1}to{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);opacity:0}}@keyframes Toastify__flipOut{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);opacity:1}to{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);opacity:0}}.Toastify__flip-enter{-webkit-animation-name:Toastify__flipIn;animation-name:Toastify__flipIn}.Toastify__flip-exit{-webkit-animation-name:Toastify__flipOut;animation-name:Toastify__flipOut}@-webkit-keyframes Toastify__slideInRight{0%{-webkit-transform:translate3d(110%,0,0);transform:translate3d(110%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes Toastify__slideInRight{0%{-webkit-transform:translate3d(110%,0,0);transform:translate3d(110%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@-webkit-keyframes Toastify__slideInLeft{0%{-webkit-transform:translate3d(-110%,0,0);transform:translate3d(-110%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes Toastify__slideInLeft{0%{-webkit-transform:translate3d(-110%,0,0);transform:translate3d(-110%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@-webkit-keyframes Toastify__slideInUp{0%{-webkit-transform:translate3d(0,110%,0);transform:translate3d(0,110%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes Toastify__slideInUp{0%{-webkit-transform:translate3d(0,110%,0);transform:translate3d(0,110%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@-webkit-keyframes Toastify__slideInDown{0%{-webkit-transform:translate3d(0,-110%,0);transform:translate3d(0,-110%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes Toastify__slideInDown{0%{-webkit-transform:translate3d(0,-110%,0);transform:translate3d(0,-110%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@-webkit-keyframes Toastify__slideOutRight{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(110%,0,0);transform:translate3d(110%,0,0)}}@keyframes Toastify__slideOutRight{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(110%,0,0);transform:translate3d(110%,0,0)}}@-webkit-keyframes Toastify__slideOutLeft{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(-110%,0,0);transform:translate3d(-110%,0,0)}}@keyframes Toastify__slideOutLeft{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(-110%,0,0);transform:translate3d(-110%,0,0)}}@-webkit-keyframes Toastify__slideOutDown{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,500px,0);transform:translate3d(0,500px,0)}}@keyframes Toastify__slideOutDown{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,500px,0);transform:translate3d(0,500px,0)}}@-webkit-keyframes Toastify__slideOutUp{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,-500px,0);transform:translate3d(0,-500px,0)}}@keyframes Toastify__slideOutUp{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,-500px,0);transform:translate3d(0,-500px,0)}}.Toastify__slide-enter--bottom-left,.Toastify__slide-enter--top-left{-webkit-animation-name:Toastify__slideInLeft;animation-name:Toastify__slideInLeft}.Toastify__slide-enter--bottom-right,.Toastify__slide-enter--top-right{-webkit-animation-name:Toastify__slideInRight;animation-name:Toastify__slideInRight}.Toastify__slide-enter--top-center{-webkit-animation-name:Toastify__slideInDown;animation-name:Toastify__slideInDown}.Toastify__slide-enter--bottom-center{-webkit-animation-name:Toastify__slideInUp;animation-name:Toastify__slideInUp}.Toastify__slide-exit--bottom-left,.Toastify__slide-exit--top-left{-webkit-animation-name:Toastify__slideOutLeft;animation-name:Toastify__slideOutLeft}.Toastify__slide-exit--bottom-right,.Toastify__slide-exit--top-right{-webkit-animation-name:Toastify__slideOutRight;animation-name:Toastify__slideOutRight}.Toastify__slide-exit--top-center{-webkit-animation-name:Toastify__slideOutUp;animation-name:Toastify__slideOutUp}.Toastify__slide-exit--bottom-center{-webkit-animation-name:Toastify__slideOutDown;animation-name:Toastify__slideOutDown}@-webkit-keyframes Toastify__spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes Toastify__spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}} -/*# sourceMappingURL=2.e7ae4ec8.chunk.css.map */ \ No newline at end of file diff --git a/docs/static/css/2.e7ae4ec8.chunk.css.map b/docs/static/css/2.e7ae4ec8.chunk.css.map deleted file mode 100644 index 9d48c66..0000000 --- a/docs/static/css/2.e7ae4ec8.chunk.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack://node_modules/lightbox2/dist/css/lightbox.css","2.e7ae4ec8.chunk.css","webpack://node_modules/bootstrap/scss/bootstrap.scss","webpack://node_modules/bootstrap/dist/css/bootstrap.css","webpack://node_modules/bootstrap/scss/_root.scss","webpack://node_modules/bootstrap/scss/_reboot.scss","webpack://node_modules/bootstrap/scss/_variables.scss","webpack://node_modules/bootstrap/scss/vendor/_rfs.scss","webpack://node_modules/bootstrap/scss/mixins/_hover.scss","webpack://node_modules/bootstrap/scss/_type.scss","webpack://node_modules/bootstrap/scss/mixins/_lists.scss","webpack://node_modules/bootstrap/scss/_images.scss","webpack://node_modules/bootstrap/scss/mixins/_image.scss","webpack://node_modules/bootstrap/scss/mixins/_border-radius.scss","webpack://node_modules/bootstrap/scss/_code.scss","webpack://node_modules/bootstrap/scss/_grid.scss","webpack://node_modules/bootstrap/scss/mixins/_grid.scss","webpack://node_modules/bootstrap/scss/mixins/_breakpoints.scss","webpack://node_modules/bootstrap/scss/mixins/_grid-framework.scss","webpack://node_modules/bootstrap/scss/_tables.scss","webpack://node_modules/bootstrap/scss/mixins/_table-row.scss","webpack://node_modules/bootstrap/scss/_forms.scss","webpack://node_modules/bootstrap/scss/_functions.scss","webpack://node_modules/bootstrap/scss/mixins/_transition.scss","webpack://node_modules/bootstrap/scss/mixins/_forms.scss","webpack://node_modules/bootstrap/scss/mixins/_gradients.scss","webpack://node_modules/bootstrap/scss/_buttons.scss","webpack://node_modules/bootstrap/scss/mixins/_buttons.scss","webpack://node_modules/bootstrap/scss/_transitions.scss","webpack://node_modules/bootstrap/scss/_dropdown.scss","webpack://node_modules/bootstrap/scss/mixins/_caret.scss","webpack://node_modules/bootstrap/scss/mixins/_nav-divider.scss","webpack://node_modules/bootstrap/scss/_button-group.scss","webpack://node_modules/bootstrap/scss/_input-group.scss","webpack://node_modules/bootstrap/scss/_custom-forms.scss","webpack://node_modules/bootstrap/scss/_nav.scss","webpack://node_modules/bootstrap/scss/_navbar.scss","webpack://node_modules/bootstrap/scss/_card.scss","webpack://node_modules/bootstrap/scss/_breadcrumb.scss","webpack://node_modules/bootstrap/scss/_pagination.scss","webpack://node_modules/bootstrap/scss/mixins/_pagination.scss","webpack://node_modules/bootstrap/scss/_badge.scss","webpack://node_modules/bootstrap/scss/mixins/_badge.scss","webpack://node_modules/bootstrap/scss/_jumbotron.scss","webpack://node_modules/bootstrap/scss/_alert.scss","webpack://node_modules/bootstrap/scss/mixins/_alert.scss","webpack://node_modules/bootstrap/scss/_progress.scss","webpack://node_modules/bootstrap/scss/_media.scss","webpack://node_modules/bootstrap/scss/_list-group.scss","webpack://node_modules/bootstrap/scss/mixins/_list-group.scss","webpack://node_modules/bootstrap/scss/_close.scss","webpack://node_modules/bootstrap/scss/_toasts.scss","webpack://node_modules/bootstrap/scss/_modal.scss","webpack://node_modules/bootstrap/scss/_tooltip.scss","webpack://node_modules/bootstrap/scss/mixins/_reset-text.scss","webpack://node_modules/bootstrap/scss/_popover.scss","webpack://node_modules/bootstrap/scss/_carousel.scss","webpack://node_modules/bootstrap/scss/mixins/_clearfix.scss","webpack://node_modules/bootstrap/scss/_spinners.scss","webpack://node_modules/bootstrap/scss/utilities/_align.scss","webpack://node_modules/bootstrap/scss/mixins/_background-variant.scss","webpack://node_modules/bootstrap/scss/utilities/_background.scss","webpack://node_modules/bootstrap/scss/utilities/_borders.scss","webpack://node_modules/bootstrap/scss/utilities/_display.scss","webpack://node_modules/bootstrap/scss/utilities/_embed.scss","webpack://node_modules/bootstrap/scss/utilities/_flex.scss","webpack://node_modules/bootstrap/scss/utilities/_float.scss","webpack://node_modules/bootstrap/scss/utilities/_interactions.scss","webpack://node_modules/bootstrap/scss/utilities/_overflow.scss","webpack://node_modules/bootstrap/scss/utilities/_position.scss","webpack://node_modules/bootstrap/scss/utilities/_screenreaders.scss","webpack://node_modules/bootstrap/scss/mixins/_screen-reader.scss","webpack://node_modules/bootstrap/scss/utilities/_shadows.scss","webpack://node_modules/bootstrap/scss/utilities/_sizing.scss","webpack://node_modules/bootstrap/scss/utilities/_spacing.scss","webpack://node_modules/bootstrap/scss/utilities/_stretched-link.scss","webpack://node_modules/bootstrap/scss/utilities/_text.scss","webpack://node_modules/bootstrap/scss/mixins/_text-truncate.scss","webpack://node_modules/bootstrap/scss/mixins/_text-emphasis.scss","webpack://node_modules/bootstrap/scss/mixins/_text-hide.scss","webpack://node_modules/bootstrap/scss/utilities/_visibility.scss","webpack://node_modules/bootstrap/scss/_print.scss","webpack://node_modules/@fortawesome/fontawesome-free/css/all.css","webpack://node_modules/highlight.js/styles/atom-one-dark.css","webpack://node_modules/react-toastify/scss/_variables.scss","webpack://node_modules/react-toastify/dist/ReactToastify.css","webpack://node_modules/react-toastify/scss/_toastContainer.scss","webpack://node_modules/react-toastify/scss/_toast.scss","webpack://node_modules/react-toastify/scss/_theme.scss","webpack://node_modules/react-toastify/scss/_closeButton.scss","webpack://node_modules/react-toastify/scss/_progressBar.scss","webpack://node_modules/react-toastify/scss/_icons.scss","webpack://node_modules/react-toastify/scss/animations/_bounce.scss","webpack://node_modules/react-toastify/scss/animations/_zoom.scss","webpack://node_modules/react-toastify/scss/animations/_flip.scss","webpack://node_modules/react-toastify/scss/animations/_slide.scss","webpack://node_modules/react-toastify/scss/animations/_spin.scss"],"names":[],"mappings":"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CDwJf,oBCX4C,CDY5C,wBFhCF,CKhJE,QHmLE,aCd8D,CDe9D,yBF/BJ,CKrJE,4DHkME,aAAc,CACd,oBFpCJ,CE6CA,kBAIE,0FCyDgH,CC7M9G,aJ2GJ,CE6CA,IAEE,YAAa,CAEb,kBAAmB,CAEnB,aAAc,CAGd,4BF/CF,CEuDA,OAEE,eFrDF,CE6DA,IAEE,iBF1DF,CE6DA,QAJE,qBFpDF,CEwDA,IAGE,eF3DF,CEoEA,MACE,wBFjEF,CEoEA,QACE,kBC6EkC,CD5ElC,qBC4EkC,CD3ElC,aCtQgB,CDuQhB,eAAgB,CAChB,mBFjEF,CEoEA,GAGE,kBFnEF,CE2EA,MAEE,oBAAqB,CACrB,mBFzEF,CE+EA,OAEE,eF7EF,CEoFA,aACE,kBAAmB,CACnB,yCFjFF,CEoFA,sCAKE,QAAS,CACT,mBAAoB,CExPlB,iBAAW,CF0Pb,mBFjFF,CEoFA,aAEE,gBFjFF,CEoFA,cAEE,mBFjFF,CAEA,cEsFE,cFpFF,CE0FA,OACE,gBFvFF,CE8FA,gDAIE,yBF3FF,CEgGE,4GAKI,cF9FN,CEoGA,wHAIE,SAAU,CACV,iBFjGF,CEoGA,uCAEE,qBAAsB,CACtB,SFjGF,CEqGA,SACE,aAAc,CAEd,eFnGF,CEsGA,SAME,WAAY,CAEZ,SAAU,CACV,QAAS,CACT,QFzGF,CE8GA,OACE,aAAc,CACd,UAAW,CACX,cAAe,CACf,SAAU,CACV,mBAAoB,CE/RhB,gBAtCY,CFuUhB,mBAAoB,CACpB,aAAc,CACd,kBF3GF,CE8GA,SACE,sBF3GF,CAEA,kFE+GE,WF5GF,CAEA,cEkHE,mBAAoB,CACpB,uBFhHF,CAEA,yCEsHE,uBFpHF,CE4HA,6BACE,YAAa,CACb,yBFzHF,CEgIA,OACE,oBF7HF,CEgIA,QACE,iBAAkB,CAClB,cF7HF,CEgIA,SACE,YF7HF,CAEA,SEiIE,sBF/HF,CMzVA,0CAEE,mBHqSuC,CGnSvC,eHqS+B,CGpS/B,eN2VF,CMvVA,OFgHM,gBJ2ON,CM1VA,OF+GM,cJ+ON,CM7VA,OF8GM,iBJmPN,CMhWA,OF6GM,gBJuPN,CMnWA,OF4GM,iBJ2PN,CMtWA,OF2GM,cJ+PN,CMxWA,MFyGM,iBAtCY,CEjEhB,eN2WF,CMvWA,WFmGM,cJ0QN,CMxWA,sBAHE,eH0R+B,CGzR/B,eNgXF,CM9WA,WF8FM,gBJgRN,CMzWA,WFyFM,gBJsRN,CM1WA,sBAHE,eHkR+B,CGjR/B,eNkXF,CMhXA,WFoFM,gBJ4RN,CEhVA,GIpBE,eHgFW,CG/EX,kBH+EW,CG9EX,QAAS,CACT,mCNwWF,CMhWA,aFMI,aAAW,CEHb,eNmWF,CMhWA,WAEE,YHkQgC,CGjQhC,wBNmWF,CMtVA,4BCpFE,cAAe,CACf,ePmbF,CM7VA,kBACE,oBNgWF,CMjWA,mCAII,kBNiWJ,CMvVA,YFjCI,aAAW,CEmCb,wBN0VF,CMtVA,YACE,kBHuBW,CCRP,iBJ2UN,CMtVA,mBACE,aAAc,CF7CZ,aAAW,CE+Cb,aNyVF,CM5VA,0BAMI,oBN0VJ,CQvcA,0BCFE,cAAe,CAGf,WTodF,CQrdA,eACE,cL6/BwC,CK5/BxC,qBLRa,CKSb,wBLNgB,COQd,oBVgdJ,CQtcA,QAEE,oBRwcF,CQrcA,YACE,mBAA0B,CAC1B,aRwcF,CQrcA,gBJkCI,aAAW,CIhCb,aRwcF,CW/eA,KPuEI,eAAW,COrEb,aRmCe,CQlCf,oBXkfF,CW/eE,OACE,aXkfJ,CW7eA,IACE,mBRilCuC,CCvhCrC,eAAW,COxDb,URTa,CQUb,wBRDgB,COEd,mBVgfJ,CWrfA,QASI,SAAU,CPkDV,cAAW,COhDX,eXgfJ,CExSA,ISjME,aAAc,CPyCZ,eAAW,COvCb,aX6eF,CWhfA,SP0CI,iBAAW,COlCX,aAAc,CACd,iBX6eJ,CWxeA,gBACE,gBRwjCuC,CQvjCvC,iBX2eF,CYnhBE,oFCDA,UAAW,CACX,kBAA0B,CAC1B,iBAAyB,CACzB,iBAAkB,CAClB,gBb6hBF,Cc1eI,yBFzCE,yBACE,eZuhBN,CACF,CchfI,yBFzCE,uCACE,eZ6hBN,CACF,CctfI,yBFzCE,qDACE,eZmiBN,CACF,Cc5fI,0BFzCE,mEACE,gBZyiBN,CACF,CY9gBE,KCnCA,YAAa,CACb,cAAe,CACf,kBAA0B,CAC1B,iBbqjBF,CY/gBE,YACE,cAAe,CACf,aZkhBJ,CYphBE,2CAMI,eAAgB,CAChB,cZmhBN,CezkBE,sqBACE,iBAAkB,CAClB,UAAW,CACX,kBAA0B,CAC1B,iBfilBJ,Ce3jBM,KACE,YAAa,CACb,WAAY,CACZ,cf8jBR,CezjBU,cFwBN,aAAuB,CACvB,cbqiBJ,Ce9jBU,cFwBN,YAAuB,CACvB,ab0iBJ,CenkBU,cFwBN,mBAAuB,CACvB,oBb+iBJ,CexkBU,cFwBN,YAAuB,CACvB,abojBJ,Ce7kBU,cFwBN,YAAuB,CACvB,abyjBJ,CellBU,cFwBN,mBAAuB,CACvB,oBb8jBJ,CejlBM,UFCJ,aAAc,CACd,UAAW,CACX,cbolBF,CejlBU,OFbR,kBAAsC,CAItC,mBb+lBF,CetlBU,OFbR,mBAAsC,CAItC,oBbomBF,Ce3lBU,OFbR,YAAsC,CAItC,abymBF,CehmBU,OFbR,mBAAsC,CAItC,oBb8mBF,CermBU,OFbR,mBAAsC,CAItC,oBbmnBF,Ce1mBU,OFbR,YAAsC,CAItC,abwnBF,Ce/mBU,OFbR,mBAAsC,CAItC,oBb6nBF,CepnBU,OFbR,mBAAsC,CAItC,oBbkoBF,CeznBU,OFbR,YAAsC,CAItC,abuoBF,Ce9nBU,QFbR,mBAAsC,CAItC,oBb4oBF,CenoBU,QFbR,mBAAsC,CAItC,oBbipBF,CexoBU,QFbR,aAAsC,CAItC,cbspBF,CevoBM,aAAwB,Qf2oB9B,CezoBM,YAAuB,Qf6oB7B,Ce1oBQ,SAAwB,Of8oBhC,Ce9oBQ,SAAwB,OfkpBhC,CelpBQ,SAAwB,OfspBhC,CetpBQ,SAAwB,Of0pBhC,Ce1pBQ,SAAwB,Of8pBhC,Ce9pBQ,SAAwB,OfkqBhC,CelqBQ,SAAwB,OfsqBhC,CetqBQ,SAAwB,Of0qBhC,Ce1qBQ,SAAwB,Of8qBhC,Ce9qBQ,SAAwB,OfkrBhC,CelrBQ,UAAwB,QfsrBhC,CetrBQ,UAAwB,Qf0rBhC,Ce1rBQ,UAAwB,Qf8rBhC,CevrBY,UFhBV,qBb2sBF,Ce3rBY,UFhBV,sBb+sBF,Ce/rBY,UFhBV,ebmtBF,CensBY,UFhBV,sBbutBF,CevsBY,UFhBV,sBb2tBF,Ce3sBY,UFhBV,eb+tBF,Ce/sBY,UFhBV,sBbmuBF,CentBY,UFhBV,sBbuuBF,CevtBY,UFhBV,eb2uBF,Ce3tBY,WFhBV,sBb+uBF,Ce/tBY,WFhBV,sBbmvBF,Cc9uBI,yBC3BE,QACE,YAAa,CACb,WAAY,CACZ,cf6wBN,CexwBQ,iBFwBN,aAAuB,CACvB,cbmvBF,Ce5wBQ,iBFwBN,YAAuB,CACvB,abuvBF,CehxBQ,iBFwBN,mBAAuB,CACvB,oBb2vBF,CepxBQ,iBFwBN,YAAuB,CACvB,ab+vBF,CexxBQ,iBFwBN,YAAuB,CACvB,abmwBF,Ce5xBQ,iBFwBN,mBAAuB,CACvB,oBbuwBF,Ce1xBI,aFCJ,aAAc,CACd,UAAW,CACX,cb4xBA,CezxBQ,UFbR,kBAAsC,CAItC,mBbsyBA,Ce7xBQ,UFbR,mBAAsC,CAItC,oBb0yBA,CejyBQ,UFbR,YAAsC,CAItC,ab8yBA,CeryBQ,UFbR,mBAAsC,CAItC,oBbkzBA,CezyBQ,UFbR,mBAAsC,CAItC,oBbszBA,Ce7yBQ,UFbR,YAAsC,CAItC,ab0zBA,CejzBQ,UFbR,mBAAsC,CAItC,oBb8zBA,CerzBQ,UFbR,mBAAsC,CAItC,oBbk0BA,CezzBQ,UFbR,YAAsC,CAItC,abs0BA,Ce7zBQ,WFbR,mBAAsC,CAItC,oBb00BA,Cej0BQ,WFbR,mBAAsC,CAItC,oBb80BA,Cer0BQ,WFbR,aAAsC,CAItC,cbk1BA,Cen0BI,gBAAwB,Qfs0B5B,Cep0BI,eAAuB,Qfu0B3B,Cep0BM,YAAwB,Ofu0B9B,Cev0BM,YAAwB,Of00B9B,Ce10BM,YAAwB,Of60B9B,Ce70BM,YAAwB,Ofg1B9B,Ceh1BM,YAAwB,Ofm1B9B,Cen1BM,YAAwB,Ofs1B9B,Cet1BM,YAAwB,Ofy1B9B,Cez1BM,YAAwB,Of41B9B,Ce51BM,YAAwB,Of+1B9B,Ce/1BM,YAAwB,Ofk2B9B,Cel2BM,aAAwB,Qfq2B9B,Cer2BM,aAAwB,Qfw2B9B,Cex2BM,aAAwB,Qf22B9B,Cep2BU,aFhBV,abu3BA,Cev2BU,aFhBV,qBb03BA,Ce12BU,aFhBV,sBb63BA,Ce72BU,aFhBV,ebg4BA,Ceh3BU,aFhBV,sBbm4BA,Cen3BU,aFhBV,sBbs4BA,Cet3BU,aFhBV,eby4BA,Cez3BU,aFhBV,sBb44BA,Ce53BU,aFhBV,sBb+4BA,Ce/3BU,aFhBV,ebk5BA,Cel4BU,cFhBV,sBbq5BA,Cer4BU,cFhBV,sBbw5BA,CACF,Ccp5BI,yBC3BE,QACE,YAAa,CACb,WAAY,CACZ,cfm7BN,Ce96BQ,iBFwBN,aAAuB,CACvB,cby5BF,Cel7BQ,iBFwBN,YAAuB,CACvB,ab65BF,Cet7BQ,iBFwBN,mBAAuB,CACvB,oBbi6BF,Ce17BQ,iBFwBN,YAAuB,CACvB,abq6BF,Ce97BQ,iBFwBN,YAAuB,CACvB,aby6BF,Cel8BQ,iBFwBN,mBAAuB,CACvB,oBb66BF,Ceh8BI,aFCJ,aAAc,CACd,UAAW,CACX,cbk8BA,Ce/7BQ,UFbR,kBAAsC,CAItC,mBb48BA,Cen8BQ,UFbR,mBAAsC,CAItC,oBbg9BA,Cev8BQ,UFbR,YAAsC,CAItC,abo9BA,Ce38BQ,UFbR,mBAAsC,CAItC,oBbw9BA,Ce/8BQ,UFbR,mBAAsC,CAItC,oBb49BA,Cen9BQ,UFbR,YAAsC,CAItC,abg+BA,Cev9BQ,UFbR,mBAAsC,CAItC,oBbo+BA,Ce39BQ,UFbR,mBAAsC,CAItC,oBbw+BA,Ce/9BQ,UFbR,YAAsC,CAItC,ab4+BA,Cen+BQ,WFbR,mBAAsC,CAItC,oBbg/BA,Cev+BQ,WFbR,mBAAsC,CAItC,oBbo/BA,Ce3+BQ,WFbR,aAAsC,CAItC,cbw/BA,Cez+BI,gBAAwB,Qf4+B5B,Ce1+BI,eAAuB,Qf6+B3B,Ce1+BM,YAAwB,Of6+B9B,Ce7+BM,YAAwB,Ofg/B9B,Ceh/BM,YAAwB,Ofm/B9B,Cen/BM,YAAwB,Ofs/B9B,Cet/BM,YAAwB,Ofy/B9B,Cez/BM,YAAwB,Of4/B9B,Ce5/BM,YAAwB,Of+/B9B,Ce//BM,YAAwB,OfkgC9B,CelgCM,YAAwB,OfqgC9B,CergCM,YAAwB,OfwgC9B,CexgCM,aAAwB,Qf2gC9B,Ce3gCM,aAAwB,Qf8gC9B,Ce9gCM,aAAwB,QfihC9B,Ce1gCU,aFhBV,ab6hCA,Ce7gCU,aFhBV,qBbgiCA,CehhCU,aFhBV,sBbmiCA,CenhCU,aFhBV,ebsiCA,CethCU,aFhBV,sBbyiCA,CezhCU,aFhBV,sBb4iCA,Ce5hCU,aFhBV,eb+iCA,Ce/hCU,aFhBV,sBbkjCA,CeliCU,aFhBV,sBbqjCA,CeriCU,aFhBV,ebwjCA,CexiCU,cFhBV,sBb2jCA,Ce3iCU,cFhBV,sBb8jCA,CACF,Cc1jCI,yBC3BE,QACE,YAAa,CACb,WAAY,CACZ,cfylCN,CeplCQ,iBFwBN,aAAuB,CACvB,cb+jCF,CexlCQ,iBFwBN,YAAuB,CACvB,abmkCF,Ce5lCQ,iBFwBN,mBAAuB,CACvB,oBbukCF,CehmCQ,iBFwBN,YAAuB,CACvB,ab2kCF,CepmCQ,iBFwBN,YAAuB,CACvB,ab+kCF,CexmCQ,iBFwBN,mBAAuB,CACvB,oBbmlCF,CetmCI,aFCJ,aAAc,CACd,UAAW,CACX,cbwmCA,CermCQ,UFbR,kBAAsC,CAItC,mBbknCA,CezmCQ,UFbR,mBAAsC,CAItC,oBbsnCA,Ce7mCQ,UFbR,YAAsC,CAItC,ab0nCA,CejnCQ,UFbR,mBAAsC,CAItC,oBb8nCA,CernCQ,UFbR,mBAAsC,CAItC,oBbkoCA,CeznCQ,UFbR,YAAsC,CAItC,absoCA,Ce7nCQ,UFbR,mBAAsC,CAItC,oBb0oCA,CejoCQ,UFbR,mBAAsC,CAItC,oBb8oCA,CeroCQ,UFbR,YAAsC,CAItC,abkpCA,CezoCQ,WFbR,mBAAsC,CAItC,oBbspCA,Ce7oCQ,WFbR,mBAAsC,CAItC,oBb0pCA,CejpCQ,WFbR,aAAsC,CAItC,cb8pCA,Ce/oCI,gBAAwB,QfkpC5B,CehpCI,eAAuB,QfmpC3B,CehpCM,YAAwB,OfmpC9B,CenpCM,YAAwB,OfspC9B,CetpCM,YAAwB,OfypC9B,CezpCM,YAAwB,Of4pC9B,Ce5pCM,YAAwB,Of+pC9B,Ce/pCM,YAAwB,OfkqC9B,CelqCM,YAAwB,OfqqC9B,CerqCM,YAAwB,OfwqC9B,CexqCM,YAAwB,Of2qC9B,Ce3qCM,YAAwB,Of8qC9B,Ce9qCM,aAAwB,QfirC9B,CejrCM,aAAwB,QforC9B,CeprCM,aAAwB,QfurC9B,CehrCU,aFhBV,abmsCA,CenrCU,aFhBV,qBbssCA,CetrCU,aFhBV,sBbysCA,CezrCU,aFhBV,eb4sCA,Ce5rCU,aFhBV,sBb+sCA,Ce/rCU,aFhBV,sBbktCA,CelsCU,aFhBV,ebqtCA,CersCU,aFhBV,sBbwtCA,CexsCU,aFhBV,sBb2tCA,Ce3sCU,aFhBV,eb8tCA,Ce9sCU,cFhBV,sBbiuCA,CejtCU,cFhBV,sBbouCA,CACF,CchuCI,0BC3BE,QACE,YAAa,CACb,WAAY,CACZ,cf+vCN,Ce1vCQ,iBFwBN,aAAuB,CACvB,cbquCF,Ce9vCQ,iBFwBN,YAAuB,CACvB,abyuCF,CelwCQ,iBFwBN,mBAAuB,CACvB,oBb6uCF,CetwCQ,iBFwBN,YAAuB,CACvB,abivCF,Ce1wCQ,iBFwBN,YAAuB,CACvB,abqvCF,Ce9wCQ,iBFwBN,mBAAuB,CACvB,oBbyvCF,Ce5wCI,aFCJ,aAAc,CACd,UAAW,CACX,cb8wCA,Ce3wCQ,UFbR,kBAAsC,CAItC,mBbwxCA,Ce/wCQ,UFbR,mBAAsC,CAItC,oBb4xCA,CenxCQ,UFbR,YAAsC,CAItC,abgyCA,CevxCQ,UFbR,mBAAsC,CAItC,oBboyCA,Ce3xCQ,UFbR,mBAAsC,CAItC,oBbwyCA,Ce/xCQ,UFbR,YAAsC,CAItC,ab4yCA,CenyCQ,UFbR,mBAAsC,CAItC,oBbgzCA,CevyCQ,UFbR,mBAAsC,CAItC,oBbozCA,Ce3yCQ,UFbR,YAAsC,CAItC,abwzCA,Ce/yCQ,WFbR,mBAAsC,CAItC,oBb4zCA,CenzCQ,WFbR,mBAAsC,CAItC,oBbg0CA,CevzCQ,WFbR,aAAsC,CAItC,cbo0CA,CerzCI,gBAAwB,QfwzC5B,CetzCI,eAAuB,QfyzC3B,CetzCM,YAAwB,OfyzC9B,CezzCM,YAAwB,Of4zC9B,Ce5zCM,YAAwB,Of+zC9B,Ce/zCM,YAAwB,Ofk0C9B,Cel0CM,YAAwB,Ofq0C9B,Cer0CM,YAAwB,Ofw0C9B,Cex0CM,YAAwB,Of20C9B,Ce30CM,YAAwB,Of80C9B,Ce90CM,YAAwB,Ofi1C9B,Cej1CM,YAAwB,Ofo1C9B,Cep1CM,aAAwB,Qfu1C9B,Cev1CM,aAAwB,Qf01C9B,Ce11CM,aAAwB,Qf61C9B,Cet1CU,aFhBV,aby2CA,Cez1CU,aFhBV,qBb42CA,Ce51CU,aFhBV,sBb+2CA,Ce/1CU,aFhBV,ebk3CA,Cel2CU,aFhBV,sBbq3CA,Cer2CU,aFhBV,sBbw3CA,Cex2CU,aFhBV,eb23CA,Ce32CU,aFhBV,sBb83CA,Ce92CU,aFhBV,sBbi4CA,Cej3CU,aFhBV,ebo4CA,Cep3CU,cFhBV,sBbu4CA,Cev3CU,cFhBV,sBb04CA,CACF,CgB97CA,OACE,UAAW,CACX,kBbiIW,CahIX,ahBi8CF,CgBp8CA,oBAQI,cbkVgC,CajVhC,kBAAmB,CACnB,4BhBi8CJ,CgB38CA,gBAcI,qBAAsB,CACtB,+BhBi8CJ,CgBh9CA,mBAmBI,4BhBi8CJ,CgBx7CA,0BAGI,ahB07CJ,CgBj7CA,sDAKI,wBhBq7CJ,CgB17CA,kDAWM,uBhBo7CN,CgB/6CA,mGAKI,QhBi7CJ,CgBz6CA,yCAEI,gChB26CJ,CK1+CE,4BW2EI,abvEY,CawEZ,iChBm6CN,CiBt/CE,mDAII,wBjBw/CN,CiB5/CE,uFAYM,oBjBu/CR,CiBh/CE,4GASQ,wBjBg/CV,CiB5gDE,yDAII,wBjB8gDN,CiBlhDE,+FAYM,oBjB6gDR,CiBtgDE,kHASQ,wBjBsgDV,CiBliDE,mDAII,wBjBoiDN,CiBxiDE,uFAYM,oBjBmiDR,CiB5hDE,4GASQ,wBjB4hDV,CiBxjDE,0CAII,wBjB0jDN,CiB9jDE,2EAYM,oBjByjDR,CiBljDE,mGASQ,wBjBkjDV,CiB9kDE,mDAII,wBjBglDN,CiBplDE,uFAYM,oBjB+kDR,CiBxkDE,4GASQ,wBjBwkDV,CiBpmDE,gDAII,wBjBsmDN,CiB1mDE,mFAYM,oBjBqmDR,CiB9lDE,yGASQ,wBjB8lDV,CiB1nDE,6CAII,wBjB4nDN,CiBhoDE,+EAYM,oBjB2nDR,CiBpnDE,sGASQ,wBjBonDV,CiBhpDE,0CAII,wBjBkpDN,CiBtpDE,2EAYM,oBjBipDR,CiB1oDE,mGASQ,wBjB0oDV,CiBnpDE,yJASQ,iCjBypDV,CgB3kDA,sBAGM,Ub3GS,Ca4GT,wBbpGY,CaqGZ,oBhB4kDN,CgBjlDA,uBAWM,ab5GY,Ca6GZ,wBblHY,CamHZ,oBhB0kDN,CgBrkDA,YACE,Ub3Ha,Ca4Hb,wBhBwkDF,CgB1kDA,mDAOI,oBhBykDJ,CgBhlDA,2BAWI,QhBykDJ,CgBplDA,oDAgBM,oChBwkDN,CK7sDE,uCW4IM,UbjJO,CakJP,qChBqkDR,CcrpDI,4BEiGA,qBAEI,aAAc,CACd,UAAW,CACX,eAAgB,CAChB,gChBujDN,CgB5jDG,qCASK,QhBsjDR,CACF,CcjqDI,4BEiGA,qBAEI,aAAc,CACd,UAAW,CACX,eAAgB,CAChB,gChBmkDN,CgBxkDG,qCASK,QhBkkDR,CACF,Cc7qDI,4BEiGA,qBAEI,aAAc,CACd,UAAW,CACX,eAAgB,CAChB,gChB+kDN,CgBplDG,qCASK,QhB8kDR,CACF,CczrDI,6BEiGA,qBAEI,aAAc,CACd,UAAW,CACX,eAAgB,CAChB,gChB2lDN,CgBhmDG,qCASK,QhB0lDR,CACF,CgBzmDA,kBAOQ,aAAc,CACd,UAAW,CACX,eAAgB,CAChB,gChBsmDR,CgBhnDA,kCAcU,QhBsmDV,CkBnxDA,cACE,aAAc,CACd,UAAW,CACX,iCC8G8D,CD7G9D,sBfwXkC,CCnQ9B,cAtCY,Cc5EhB,efkR+B,CejR/B,efsR+B,CerR/B,afDgB,CeEhB,qBfTa,CeUb,2BAA4B,CAC5B,wBfPgB,COOd,oBP6NgC,CiB/N9B,oEpByxDN,CoBrxDM,uCFdN,cEeQ,epByxDN,CACF,CkBzyDA,0BAsBI,wBAA6B,CAC7B,QlBuxDJ,CkB9yDA,6BA4BI,iBAAkB,CAClB,yBlBsxDJ,CqB5yDE,oBACE,alBAc,CkBCd,qBlBRW,CkBSX,oBlBodsE,CkBndtE,SAAU,CAKR,0CrB2yDN,CkB3zDA,yCAqCI,af9Bc,CegCd,SlByxDJ,CkBh0DA,2BAqCI,af9Bc,CegCd,SlByxDJ,CkBh0DA,+CAiDI,wBf9Cc,CegDd,SlBkxDJ,CkB9wDA,mIAKI,uBAAgB,CAAhB,elBgxDJ,CkB5wDA,qCAOI,af/Dc,CegEd,qBlBywDJ,CkBpwDA,uCAEE,aAAc,CACd,UlBuwDF,CkB7vDA,gBACE,+BCsB8D,CDrB9D,kCCqB8D,CDpB9D,eAAgB,Cd3Bd,iBAAW,Cc6Bb,elBgwDF,CkB7vDA,mBACE,6BCc8D,CDb9D,gCCa8D,CfQ1D,iBAtCY,CcmBhB,elBgwDF,CkB7vDA,mBACE,8BCO8D,CDN9D,iCCM8D,CfQ1D,iBAtCY,Cc0BhB,elBgwDF,CkBvvDA,wBACE,aAAc,CACd,UAAW,CACX,iBAA2B,CAC3B,eAAgB,CdDZ,cAtCY,CcyChB,efkK+B,CejK/B,afnHgB,CeoHhB,wBAA6B,CAE7B,wBAAmC,CAAnC,kBlB0vDF,CkBpwDA,gFAcI,eAAgB,CAChB,clB0vDJ,CkB9uDA,iBACE,gCCjC8D,CDkC9D,oBfmPiC,CC7Q7B,iBAtCY,CckEhB,ef+E+B,COxN7B,mBV23DJ,CkB9uDA,iBACE,+BCzC8D,CD0C9D,kBfgPgC,CClR5B,iBAtCY,Cc0EhB,efsE+B,COvN7B,mBVm4DJ,CkBtuDA,8EACE,WlB6uDF,CkBruDA,YACE,kBlBwuDF,CkBruDA,WACE,aAAc,CACd,iBlBwuDF,CkBhuDA,UACE,YAAa,CACb,cAAe,CACf,iBAA0C,CAC1C,gBlBmuDF,CkBvuDA,uCAQI,iBAA0C,CAC1C,gBlBouDJ,CkB3tDA,YACE,iBAAkB,CAClB,aAAc,CACd,oBlB8tDF,CkB3tDA,kBACE,iBAAkB,CAClB,gBf2R2C,Ce1R3C,oBlB8tDF,CkBjuDA,2FAQI,alB8tDJ,CkB1tDA,kBACE,elB6tDF,CkB1tDA,mBACE,mBAAoB,CACpB,kBAAmB,CACnB,cAAe,CACf,mBlB6tDF,CkBjuDA,qCAQI,eAAgB,CAChB,YAAa,CACb,qBfuQ4C,CetQ5C,alB6tDJ,CqB16DE,gBACE,YAAa,CACb,UAAW,CACX,iBlByc0C,CChb1C,aAAW,CiBvBX,arB66DJ,CqB16DE,eACE,iBAAkB,CAClB,QAAS,CACT,MAAO,CACP,SAAU,CACV,YAAa,CACb,cAAe,CACf,oBlB8xBqC,CkB7xBrC,gBAAiB,CjBmEf,iBAtCY,CiB3Bd,elBsO6B,CkBrO7B,UlBxDW,CkByDX,mClBtBa,COxBb,oBV49DJ,CqB98DI,8HAuCE,arB86DN,CqBr9DI,0DA6CE,oBlBnCW,CkBsCT,kCFuCwD,CEtCxD,4QFvB0E,CEwB1E,2BAA4B,CAC5B,wDAA6D,CAC7D,2DrB06DR,CqB99DI,sEAwDI,oBlB9CS,CkB+CT,0CrB06DR,CqBn+DI,0EAkEI,kCFqBwD,CEpBxD,6ErBq6DR,CqBx+DI,4DA0EE,oBlBhEW,CkBmET,qCFUwD,CETxD,wiBrBg6DR,CqB9+DI,wEAkFI,oBlBxES,CkByET,0CrBg6DR,CqBn/DI,sGA2FI,arB45DR,CqBv/DI,kMAgGI,arB65DR,CqB7/DI,sHAwGI,arBy5DR,CqBjgEI,oIA2GM,oBrB05DV,CqBrgEI,oJAiHM,oBAAkC,CC3IxC,wBtBoiEJ,CqB1gEI,gJAwHM,0CrBs5DV,CqB9gEI,sRAsII,oBrBg5DR,CqBthEI,sHA2IM,oBlBjIO,CkBkIP,0CrB+4DV,CqB/gEE,kBACE,YAAa,CACb,UAAW,CACX,iBlByc0C,CChb1C,aAAW,CiBvBX,arBkhEJ,CqB/gEE,iBACE,iBAAkB,CAClB,QAAS,CACT,MAAO,CACP,SAAU,CACV,YAAa,CACb,cAAe,CACf,oBlB8xBqC,CkB7xBrC,gBAAiB,CjBmEf,iBAtCY,CiB3Bd,elBsO6B,CkBrO7B,UlBxDW,CkByDX,mClBzBa,COrBb,oBVikEJ,CqBnjEI,8IAuCE,arBmhEN,CqB1jEI,8DA6CE,oBlBtCW,CkByCT,kCFuCwD,CEtCxD,qUFvB0E,CEwB1E,2BAA4B,CAC5B,wDAA6D,CAC7D,2DrB+gER,CqBnkEI,0EAwDI,oBlBjDS,CkBkDT,0CrB+gER,CqBxkEI,8EAkEI,kCFqBwD,CEpBxD,6ErB0gER,CqB7kEI,gEA0EE,oBlBnEW,CkBsET,qCFUwD,CETxD,imBrBqgER,CqBnlEI,4EAkFI,oBlB3ES,CkB4ET,0CrBqgER,CqBxlEI,0GA2FI,arBigER,CqB5lEI,kNAgGI,arBkgER,CqBlmEI,0HAwGI,arB8/DR,CqBtmEI,wIA2GM,oBrB+/DV,CqB1mEI,wJAiHM,oBAAkC,CC3IxC,wBtByoEJ,CqB/mEI,oJAwHM,0CrB2/DV,CqBnnEI,8RAsII,oBrBq/DR,CqB3nEI,0HA2IM,oBlBpIO,CkBqIP,0CrBo/DV,CkB94DA,aACE,YAAa,CACb,kBAAmB,CACnB,kBlBi5DF,CkBp5DA,yBASI,UlB+4DJ,Cc9mEI,yBIsNJ,mBAiBM,sBlB+4DJ,CkBh6DF,4CAeM,YAAa,CACb,kBAAmB,CAEnB,elBq5DJ,CkBv6DF,yBAwBM,aAAc,CACd,kBlB84DJ,CkBv6DF,2BAgCM,oBAAqB,CACrB,UAAW,CACX,qBlB04DJ,CkB56DF,qCAuCM,oBlBw4DJ,CkB/6DF,sDA4CM,UlBu4DJ,CkBn7DF,yBAkDM,YAAa,CACb,kBAAmB,CACnB,sBAAuB,CACvB,UAAW,CACX,clBo4DJ,CkB17DF,+BAyDM,iBAAkB,CAClB,aAAc,CACd,YAAa,CACb,mBf8KwC,Ce7KxC,alBo4DJ,CkBj8DF,6BAiEM,kBAAmB,CACnB,sBlBm4DJ,CkBr8DF,mCAqEM,elBm4DJ,CACF,CuBrtEA,KACE,oBAAqB,CAErB,epBsR+B,CoBrR/B,apBMgB,CoBLhB,iBAAkB,CAGlB,qBAAsB,CACtB,wBAAiB,CAAjB,gBAAiB,CACjB,wBAA6B,CAC7B,4BAA2C,CCuF3C,sBrB0RkC,CCnQ9B,cAtCY,CoBiBhB,erB0L+B,COlR7B,oBP6NgC,CiB/N9B,6HpB2tEN,CoBvtEM,uCGdN,KHeQ,epB2tEN,CACF,CKruEE,WkBUE,apBNc,CoBOd,oBvB+tEJ,CuBhvEA,sBAsBI,SAAU,CACV,0CvB8tEJ,CuBrvEA,4BA6BI,WvB4tEJ,CuBzvEA,mCAkCI,cvB2tEJ,CuB7sEA,uCAEE,mBvBgtEF,CuBvsEE,aC3DA,UrBCa,CmBDX,wBnB6Ba,CqB3Bf,oBxBswEF,CwB7vEE,yDALE,UrBLW,CmBDX,wBEDoF,CASpF,oBxB6wEJ,CwB1wEE,sCASI,0CxBiwEN,CwB5vEE,4CAEE,UrB1BW,CqB2BX,wBrBCa,CqBAb,oBxB8vEJ,CwBvvEE,uIAGE,UrBtCW,CqBuCX,wBAzCuK,CA6CvK,oBxBsvEJ,CwBpvEI,yJAKI,0CxBovER,CuB5uEE,eC3DA,UrBCa,CmBDX,wBnBOc,CqBLhB,oBxB2yEF,CwBlyEE,+DALE,UrBLW,CmBDX,wBEDoF,CASpF,oBxBkzEJ,CwB/yEE,0CASI,2CxBsyEN,CwBjyEE,gDAEE,UrB1BW,CqB2BX,wBrBrBc,CqBsBd,oBxBmyEJ,CwB5xEE,6IAGE,UrBtCW,CqBuCX,wBAzCuK,CA6CvK,oBxB2xEJ,CwBzxEI,+JAKI,2CxByxER,CuBjxEE,aC3DA,UrBCa,CmBDX,wBnBoCa,CqBlCf,oBxBg1EF,CwBv0EE,yDALE,UrBLW,CmBDX,wBEDoF,CASpF,oBxBu1EJ,CwBp1EE,sCASI,yCxB20EN,CwBt0EE,4CAEE,UrB1BW,CqB2BX,wBrBQa,CqBPb,oBxBw0EJ,CwBj0EE,uIAGE,UrBtCW,CqBuCX,wBAzCuK,CA6CvK,oBxBg0EJ,CwB9zEI,yJAKI,yCxB8zER,CuBtzEE,UC3DA,UrBCa,CmBDX,wBnBsCa,CqBpCf,oBxBq3EF,CwB52EE,gDALE,UrBLW,CmBDX,wBEDoF,CASpF,oBxB43EJ,CwBz3EE,gCASI,0CxBg3EN,CwB32EE,sCAEE,UrB1BW,CqB2BX,wBrBUa,CqBTb,oBxB62EJ,CwBt2EE,8HAGE,UrBtCW,CqBuCX,wBAzCuK,CA6CvK,oBxBq2EJ,CwBn2EI,gJAKI,0CxBm2ER,CuB31EE,aC3DA,arBUgB,CmBVd,wBnBmCa,CqBjCf,oBxB05EF,CwBj5EE,yDALE,arBIc,CmBVd,wBEDoF,CASpF,oBxBi6EJ,CwB95EE,sCASI,0CxBq5EN,CwBh5EE,4CAEE,arBjBc,CqBkBd,wBrBOa,CqBNb,oBxBk5EJ,CwB34EE,uIAGE,arB7Bc,CqB8Bd,wBAzCuK,CA6CvK,oBxB04EJ,CwBx4EI,yJAKI,0CxBw4ER,CuBh4EE,YC3DA,UrBCa,CmBDX,wBnBiCa,CqB/Bf,oBxB+7EF,CwBt7EE,sDALE,UrBLW,CmBDX,wBEDoF,CASpF,oBxBs8EJ,CwBn8EE,oCASI,yCxB07EN,CwBr7EE,0CAEE,UrB1BW,CqB2BX,wBrBKa,CqBJb,oBxBu7EJ,CwBh7EE,oIAGE,UrBtCW,CqBuCX,wBAzCuK,CA6CvK,oBxB+6EJ,CwB76EI,sJAKI,yCxB66ER,CuBr6EE,WC3DA,arBUgB,CmBVd,wBnBEc,CqBAhB,oBxBo+EF,CwB39EE,mDALE,arBIc,CmBVd,wBEDoF,CASpF,oBxB2+EJ,CwBx+EE,kCASI,2CxB+9EN,CwB19EE,wCAEE,arBjBc,CqBkBd,wBrB1Bc,CqB2Bd,oBxB49EJ,CwBr9EE,iIAGE,arB7Bc,CqB8Bd,wBAzCuK,CA6CvK,oBxBo9EJ,CwBl9EI,mJAKI,2CxBk9ER,CuB18EE,UC3DA,UrBCa,CmBDX,wBnBSc,CqBPhB,oBxBygFF,CwBhgFE,gDALE,UrBLW,CmBDX,wBEDoF,CASpF,oBxBghFJ,CwB7gFE,gCASI,wCxBogFN,CwB//EE,sCAEE,UrB1BW,CqB2BX,wBrBnBc,CqBoBd,oBxBigFJ,CwB1/EE,8HAGE,UrBtCW,CqBuCX,wBAzCuK,CA6CvK,oBxBy/EJ,CwBv/EI,gJAKI,wCxBu/ER,CuBz+EE,qBCPA,arB7Be,CqB8Bf,oBxBo/EF,CKziFE,2BmBwDE,UrB7DW,CqB8DX,wBrBlCa,CqBmCb,oBxBq/EJ,CwBl/EE,sDAEE,yCxBo/EJ,CwBj/EE,4DAEE,arB7Ca,CqB8Cb,wBxBm/EJ,CwBh/EE,+JAGE,UrBhFW,CqBiFX,wBrBrDa,CqBsDb,oBxBk/EJ,CwBh/EI,iLAKI,yCxBg/ER,CuBzgFE,uBCPA,arBnDgB,CqBoDhB,oBxBohFF,CKzkFE,6BmBwDE,UrB7DW,CqB8DX,wBrBxDc,CqByDd,oBxBqhFJ,CwBlhFE,0DAEE,2CxBohFJ,CwBjhFE,gEAEE,arBnEc,CqBoEd,wBxBmhFJ,CwBhhFE,qKAGE,UrBhFW,CqBiFX,wBrB3Ec,CqB4Ed,oBxBkhFJ,CwBhhFI,uLAKI,2CxBghFR,CuBziFE,qBCPA,arBtBe,CqBuBf,oBxBojFF,CKzmFE,2BmBwDE,UrB7DW,CqB8DX,wBrB3Ba,CqB4Bb,oBxBqjFJ,CwBljFE,sDAEE,yCxBojFJ,CwBjjFE,4DAEE,arBtCa,CqBuCb,wBxBmjFJ,CwBhjFE,+JAGE,UrBhFW,CqBiFX,wBrB9Ca,CqB+Cb,oBxBkjFJ,CwBhjFI,iLAKI,yCxBgjFR,CuBzkFE,kBCPA,arBpBe,CqBqBf,oBxBolFF,CKzoFE,wBmBwDE,UrB7DW,CqB8DX,wBrBzBa,CqB0Bb,oBxBqlFJ,CwBllFE,gDAEE,0CxBolFJ,CwBjlFE,sDAEE,arBpCa,CqBqCb,wBxBmlFJ,CwBhlFE,sJAGE,UrBhFW,CqBiFX,wBrB5Ca,CqB6Cb,oBxBklFJ,CwBhlFI,wKAKI,0CxBglFR,CuBzmFE,qBCPA,arBvBe,CqBwBf,oBxBonFF,CKzqFE,2BmBwDE,arBpDc,CqBqDd,wBrB5Ba,CqB6Bb,oBxBqnFJ,CwBlnFE,sDAEE,yCxBonFJ,CwBjnFE,4DAEE,arBvCa,CqBwCb,wBxBmnFJ,CwBhnFE,+JAGE,arBvEc,CqBwEd,wBrB/Ca,CqBgDb,oBxBknFJ,CwBhnFI,iLAKI,yCxBgnFR,CuBzoFE,oBCPA,arBzBe,CqB0Bf,oBxBopFF,CKzsFE,0BmBwDE,UrB7DW,CqB8DX,wBrB9Ba,CqB+Bb,oBxBqpFJ,CwBlpFE,oDAEE,yCxBopFJ,CwBjpFE,0DAEE,arBzCa,CqB0Cb,wBxBmpFJ,CwBhpFE,4JAGE,UrBhFW,CqBiFX,wBrBjDa,CqBkDb,oBxBkpFJ,CwBhpFI,8KAKI,yCxBgpFR,CuBzqFE,mBCPA,arBxDgB,CqByDhB,oBxBorFF,CKzuFE,yBmBwDE,arBpDc,CqBqDd,wBrB7Dc,CqB8Dd,oBxBqrFJ,CwBlrFE,kDAEE,2CxBorFJ,CwBjrFE,wDAEE,arBxEc,CqByEd,wBxBmrFJ,CwBhrFE,yJAGE,arBvEc,CqBwEd,wBrBhFc,CqBiFd,oBxBkrFJ,CwBhrFI,2KAKI,2CxBgrFR,CuBzsFE,kBCPA,arBjDgB,CqBkDhB,oBxBotFF,CKzwFE,wBmBwDE,UrB7DW,CqB8DX,wBrBtDc,CqBuDd,oBxBqtFJ,CwBltFE,gDAEE,wCxBotFJ,CwBjtFE,sDAEE,arBjEc,CqBkEd,wBxBmtFJ,CwBhtFE,sJAGE,UrBhFW,CqBiFX,wBrBzEc,CqB0Ed,oBxBktFJ,CwBhtFI,wKAKI,wCxBgtFR,CuB9tFA,UACE,epB4M+B,CoB3M/B,apBjDe,CoBkDf,oBvBiuFF,CK1yFE,gBkB4EE,avBmuFJ,CuBzuFA,gDAOI,yBvBsuFJ,CuB7uFA,sCAiBI,apBtFc,CoBuFd,mBvBguFJ,CuBrtFA,2BCPE,kBr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aAAc,CACd,qBvB+kBwC,CuB9kBxC,a1B07FF,C6BrnGA,+BAEE,iBAAkB,CAClB,mBAAoB,CACpB,qB7BwnGF,C6B5nGA,yCAOI,iBAAkB,CAClB,a7B0nGJ,C6BloGA,wNAkBM,S7B4nGN,C6BtnGA,aACE,YAAa,CACb,cAAe,CACf,0B7BynGF,C6B5nGA,0BAMI,U7B0nGJ,C6BtnGA,0EAII,gB7BunGJ,C6B3nGA,mGnBHI,yBmBa8B,CnBZ9B,4BVmoGJ,C6BjoGA,+EnBWI,wBmBI6B,CnBH7B,2BV2nGJ,C6BxmGA,uBACE,sBAAmC,CACnC,qB7B2mGF,C6B7mGA,0GAOI,a7B4mGJ,C6BzmGE,wCACE,c7B4mGJ,C6BxmGA,yEACE,qBAAsC,CACtC,oB7B2mGF,C6BxmGA,yEACE,oBAAsC,CACtC,mB7B2mGF,C6BvlGA,oBACE,qBAAsB,CACtB,sBAAuB,CACvB,sB7B0lGF,C6B7lGA,wDAOI,U7B2lGJ,C6BlmGA,4FAYI,e7B2lGJ,C6BvmGA,qHnBrEI,4BmBuF+B,CnBtF/B,2BVirGJ,C6B7mGA,iGnBnFI,wBmB0G4B,CnBzG5B,yBVqsGJ,C6B3kGA,yDAGI,e7B6kGJ,C6BhlGA,gMAOM,iBAAkB,CAClB,kBAAsB,CACtB,mB7BglGN,C8BzuGA,aACE,iBAAkB,CAClB,YAAa,CACb,cAAe,CACf,mBAAoB,CACpB,U9B4uGF,C8BjvGA,sHAWI,iBAAkB,CAClB,aAAc,CACd,QAAS,CACT,WAAY,CACZ,e9B6uGJ,C8B5vGA,0gBAoBM,gB9BuvGN,C8B3wGA,yIA4BI,S9BqvGJ,C8BjxGA,mDAiCI,S9BovGJ,C8BrxGA,yFpB4BI,yBoBUmD,CpBTnD,4BV8vGJ,C8B3xGA,2FpB0CI,wBoBHmD,CpBInD,2BVsvGJ,C8BjyGA,0BA6CI,YAAa,CACb,kB9BwvGJ,C8BtyGA,kIpB4BI,yBoBqB6E,CpBpB7E,4BV+wGJ,C8B5yGA,+DpB0CI,wBoBQsE,CpBPtE,2BVswGJ,C8BpvGA,yCAEE,Y9BuvGF,C8BzvGA,mDAQI,iBAAkB,CAClB,S9BsvGJ,C8B/vGA,+DAYM,S9BwvGN,C8BpwGA,4VAoBI,gB9B2vGJ,C8BvvGA,qBAAuB,iB9B2vGvB,C8B1vGA,oBAAsB,gB9B8vGtB,C8BtvGA,kBACE,YAAa,CACb,kBAAmB,CACnB,sB3B2RkC,C2B1RlC,eAAgB,C1BuBZ,cAtCY,C0BiBhB,e3BqL+B,C2BpL/B,e3ByL+B,C2BxL/B,a3B9FgB,C2B+FhB,iBAAkB,CAClB,kBAAmB,CACnB,wB3BtGgB,C2BuGhB,wB3BrGgB,COOd,oBVw1GJ,C8BtwGA,2EAkBI,Y9ByvGJ,C8B/uGA,2EAEE,+B9BkvGF,C8B/uGA,6PAME,kB3BsQgC,CClR5B,iBAtCY,C0BoDhB,e3B4F+B,COvN7B,mBV82GJ,C8B/uGA,2EAEE,gC9BkvGF,C8B/uGA,6PAME,oB3BgPiC,CC7Q7B,iBAtCY,C0BqEhB,e3B4E+B,COxN7B,mBV+3GJ,C8B/uGA,8DAEE,qB9BkvGF,C8BvuGA,6XpB7II,yBoBmJ4B,CpBlJ5B,4BV63GJ,C8BxuGA,+WpBxII,wBoB8I2B,CpB7I3B,2BVy3GJ,C+Bj6GA,gBACE,iBAAkB,CAClB,SAAU,CACV,aAAc,CACd,iBAA+C,CAC/C,mB/Bo6GF,C+Bj6GA,uBACE,mBAAoB,CACpB,iB/Bo6GF,C+Bj6GA,sBACE,iBAAkB,CAClB,MAAO,CACP,UAAW,CACX,U5Bof0C,C4Bnf1C,cAAkF,CAClF,S/Bo6GF,C+B16GA,2DASI,U5BxBW,C4ByBX,oB5BGa,CmB7Bb,wBtBg8GJ,C+Bh7GA,yDAoBM,0C/Bg6GN,C+Bp7GA,uEAyBI,oB/B+5GJ,C+Bx7GA,yEA6BI,U5B5CW,C4B6CX,wB5Bif8E,C4Bhf9E,oB/B+5GJ,C+B97GA,2GAuCM,a/B25GN,C+Bl8GA,yHA0CQ,wB/B45GR,C+Bl5GA,sBACE,iBAAkB,CAClB,eAAgB,CAEhB,kB/Bo5GF,C+Bx5GA,6BAeI,mBAAoB,CAEpB,qB5BpFW,C4BqFX,wB/Bm5GJ,C+Br6GA,yDASI,iBAAkB,CAClB,UAA+E,CAC/E,YAA+D,CAC/D,aAAc,CACd,U5BubwC,C4BtbxC,W5BsbwC,C4BpbxC,U/Bg6GJ,C+Bh7GA,4BA+BI,gC/Bi5GJ,C+Bx4GA,8CrBhGI,oBV4+GJ,C+B54GA,2EAOM,6N/By4GN,C+Bh5GA,kFAaM,oB5B5FW,CmB7Bb,wBtBigHJ,C+Br5GA,iFAkBM,0K/Bu4GN,C+Bz5GA,qFT5GI,mCtBygHJ,C+B75GA,2FT5GI,mCtB6gHJ,C+B73GA,2CAGI,iB/B83GJ,C+Bj4GA,wEAQM,2L/B63GN,C+Br4GA,kFThJI,mCtByhHJ,C+Bj3GA,eACE,oB/Bo3GF,C+Br3GA,4CAKM,aAAqD,CACrD,a5BiY+E,C4BhY/E,kBAAmB,CAEnB,mB/Bm3GN,C+B53GA,2CAaM,sBZpE0D,CYqE1D,yBZrE0D,CYsE1D,sBZlD0D,CYmD1D,uBZnD0D,CYoD1D,wB5BnLY,C4BqLZ,mB5BqX4E,CiBtiB5E,yIjBwf+H,CiBxf/H,iIjBwf+H,CiBxf/H,oKpBoiHN,CoBhiHM,uCW0JN,2CXzJQ,epBoiHN,CACF,C+B54GA,yEA0BM,qB5BjMS,C4BkMT,oCAA4E,CAA5E,4B/Bs3GN,C+Bj5GA,mFTxKI,mCtB6jHJ,C+Bx2GA,eACE,oBAAqB,CACrB,UAAW,CACX,iCZvG8D,CYwG9D,sC5BmKkC,CCnQ9B,cAtCY,C2ByIhB,e5B6D+B,C4B5D/B,e5BiE+B,C4BhE/B,a5BtNgB,C4BuNhB,qBAAsB,CACtB,iO5BkW+I,C4BjW/I,wB5B5NgB,COOd,oBP6NgC,C4BLlC,uBAAgB,CAAhB,e/By2GF,C+Bx3GA,qBAkBI,oB5BuPsE,C4BtPtE,SAAU,CAKR,0C/Bs2GN,C+B93GA,gCAiCM,a5B9OY,C4B+OZ,qB/Bi2GN,C+Bn4GA,8DAwCI,WAAY,CACZ,oB5B8HgC,C4B7HhC,qB/B+1GJ,C+Bz4GA,wBA8CI,a5B5Pc,C4B6Pd,wB/B+1GJ,C+B94GA,2BAoDI,Y/B81GJ,C+Bl5GA,8BAyDI,iBAAkB,CAClB,yB/B61GJ,C+Bz1GA,kBACE,gCZnK8D,CYoK9D,kB5BgHkC,C4B/GlC,qB5B+GkC,C4B9GlC,kB5B+GiC,CC7Q7B,iBJ2/GN,C+Bz1GA,kBACE,+BZ3K8D,CY4K9D,iB5B6GiC,C4B5GjC,oB5B4GiC,C4B3GjC,iB5B4GgC,CClR5B,iBJmgHN,C+Bp1GA,aAEE,oBAAqB,CAGrB,e/Bu1GF,C+Bp1GA,gCAPE,iBAAkB,CAElB,UAAW,CACX,iC/Bi2GF,C+B71GA,mBAEE,SAAU,CAGV,QAAS,CACT,S/Bu1GF,C+B71GA,4CASI,oB5BqKsE,C4BpKtE,0C/Bw1GJ,C+Bl2GA,+FAgBI,wB/Bu1GJ,C+Bv2GA,qDAqBM,gB/Bs1GN,C+B32GA,yDA0BI,yB/Bq1GJ,C+Bj1GA,mBAIE,MAAO,CACP,SAAU,CACV,iCZnO8D,CYsO9D,e5B9D+B,C4BiE/B,qB5BzVa,C4B0Vb,wB5BtVgB,COOd,oBVmqHJ,C+Bj2GA,4CACE,iBAAkB,CAClB,KAAM,CACN,OAAQ,CAIR,sB5BuCkC,C4BpClC,e5B1D+B,C4B2D/B,a/Bu2GF,C+Bl3GA,yBAqBI,QAAS,CACT,SAAU,CACV,aAAc,CACd,2BZrP4D,CYyP5D,gBAAiB,CT1WjB,wBnBGc,C4ByWd,mBAAoB,CrBhWpB,+BVorHJ,C+Bz0GA,cACE,UAAW,CACX,aZ3Q2B,CY4Q3B,SAAU,CACV,wBAA6B,CAC7B,uBAAgB,CAAhB,e/B40GF,C+Bj1GA,oBAQI,Y/B60GJ,C+Br1GA,0CAY8B,yD/B60G9B,C+Bz1GA,sCAa8B,yD/Bg1G9B,C+B71GA,+BAc8B,yD/Bm1G9B,C+Bj2GA,gCAkBI,Q/Bm1GJ,C+Br2GA,oCAsBI,U5BqN6C,C4BpN7C,W5BoN6C,C4BnN7C,kBAAyE,CT/YzE,wBnB6Ba,C4BoXb,Q5BoN0C,COzlB1C,kBP0lB6C,CiB5lB3C,8GjBwf+H,CiBxf/H,sGjBwf+H,C4B7GjI,uBAAgB,CAAhB,e/Bk1GJ,CoBztHM,uCWyWN,oCXxWQ,uBAAgB,CAAhB,epB6tHN,CACF,C+Bt3GA,2CTvXI,wBtBivHJ,C+B13GA,6CAsCI,U5B8LoC,C4B7LpC,Y5B8LqC,C4B7LrC,iBAAkB,CAClB,c5B6LuC,C4B5LvC,wB5B7Zc,C4B8Zd,wBAAyB,CrBtZzB,kBV+uHJ,C+Bp4GA,gCAiDI,U5B0L6C,C4BzL7C,W5ByL6C,CmBlmB7C,wBnB6Ba,C4B8Yb,Q5B0L0C,COzlB1C,kBP0lB6C,CiB5lB3C,2GjBwf+H,CiBxf/H,sGjBwf+H,C4BnFjI,e/Bs1GJ,CoBvvHM,uCWyWN,gCXxWQ,oBAAgB,CAAhB,epB2vHN,CACF,C+Bp5GA,uCTvXI,wBtB+wHJ,C+Bx5GA,gCAgEI,U5BoKoC,C4BnKpC,Y5BoKqC,C4BnKrC,iBAAkB,CAClB,c5BmKuC,C4BlKvC,wB5Bvbc,C4Bwbd,wBAAyB,CrBhbzB,kBV6wHJ,C+Bl6GA,yBA2EI,U5BgK6C,C4B/J7C,W5B+J6C,C4B9J7C,YAAa,CACb,kB5BpE+B,C4BqE/B,iB5BrE+B,CmBjY/B,wBnB6Ba,C4B2ab,Q5B6J0C,COzlB1C,kBP0lB6C,CiB5lB3C,0GjBwf+H,CiBxf/H,sGjBwf+H,C4BtDjI,e/B01GJ,CoBxxHM,uCWyWN,yBXxWQ,mBAAgB,CAAhB,epB4xHN,CACF,C+Br7GA,gCTvXI,wBtBgzHJ,C+Bz7GA,yBA6FI,U5BuIoC,C4BtIpC,Y5BuIqC,C4BtIrC,iBAAkB,CAClB,c5BsIuC,C4BrIvC,wBAA6B,CAC7B,wBAAyB,CACzB,kB/Bg2GJ,C+Bn8GA,4DAwGI,wB5B3dc,COQd,kBVyzHJ,C+B98GA,8BA6GI,iB/Bi2GJ,C+B98GA,6CAoHM,wB/B81GN,C+Bl9GA,sDAwHM,c/B81GN,C+Bt9GA,yCA4HM,wB/B81GN,C+B19GA,yCAgIM,c/B81GN,C+B99GA,kCAoIM,wB/B81GN,C+Bz1GA,+DXtfM,sGpBq1HN,CoBj1HM,uCWkfN,+DXjfQ,epBu1HN,CACF,CgCx2HA,KACE,YAAa,CACb,cAAe,CACf,cAAe,CACf,eAAgB,CAChB,ehC22HF,CgCx2HA,UACE,aAAc,CACd,kBhC22HF,CK12HE,gC2BGE,oBhC22HJ,CgCj3HA,mBAWI,a7BXc,C6BYd,mBAAoB,CACpB,chC02HJ,CgCl2HA,UACE,+BhCq2HF,CgCt2HA,oBAII,kBhCs2HJ,CgC12HA,oBAQI,4BAAgD,CtBfhD,6BPoNgC,COnNhC,8BVs3HJ,CKl4HE,oD2B8BI,oChCw2HN,CgCp3HA,6BAgBM,a7BrCY,C6BsCZ,wBAA6B,CAC7B,wBhCw2HN,CgC13HA,8DAwBI,a7B5Cc,C6B6Cd,qB7BpDW,C6BqDX,iChCu2HJ,CgCj4HA,yBA+BI,e7B2K6B,COjN7B,wBsBwC4B,CtBvC5B,yBV64HJ,CgC71HA,qBtB1DI,oBV25HJ,CgCj2HA,uDAOI,U7B5EW,C6B6EX,wBhC+1HJ,CgCt1HA,wCAGI,aAAc,CACd,iBhCw1HJ,CgCp1HA,kDAGI,YAAa,CACb,WAAY,CACZ,iBhCs1HJ,CgC70HA,uBAEI,YhC+0HJ,CgCj1HA,qBAKI,ahCg1HJ,CiCv7HA,QACE,iBAAkB,CAKlB,kBjC07HF,CiCh8HA,4IAEE,YAAa,CACb,cAAe,CACf,kBAAmB,CACnB,6BjCm8HF,CiCt6HA,cACE,oBAAqB,CACrB,oB9BgqB+E,C8B/pB/E,uB9B+pB+E,C8B9pB/E,iB9BgFW,CCRP,iBAtCY,C6BhChB,mBAAoB,CACpB,kBjCy6HF,CKn9HE,wC4B6CE,oBjC06HJ,CiCj6HA,YACE,YAAa,CACb,qBAAsB,CACtB,cAAe,CACf,eAAgB,CAChB,ejCo6HF,CiCz6HA,sBAQI,eAAgB,CAChB,cjCq6HJ,CiC96HA,2BAaI,eAAgB,CAChB,UjCq6HJ,CiC55HA,aACE,oBAAqB,CACrB,iB9BulBuC,C8BtlBvC,oBjC+5HF,CiCn5HA,iBACE,eAAgB,CAChB,WAAY,CAGZ,kBjCo5HF,CiCh5HA,gBACE,qB9BkmBwC,CCzlBpC,iBAtCY,C6B+BhB,aAAc,CACd,wBAA6B,CAC7B,4BAAuC,CvBxGrC,oBV4/HJ,CK9/HE,4C4B8GE,oBjCo5HJ,CiC94HA,qBACE,oBAAqB,CACrB,WAAY,CACZ,YAAa,CACb,qBAAsB,CACtB,UAAW,CACX,wBAAmC,CACnC,yBjCi5HF,Ccn9HI,4BmB4EC,gMAGK,eAAgB,CAChB,cjC04HR,CACF,Ccx+HI,yBmByFA,kBAoBI,oBAAqB,CACrB,0BjCg4HN,CiCr5HG,8BAwBK,kBjCg4HR,CiCx5HG,6CA2BO,iBjCg4HV,CiC35HG,wCA+BO,mB9B2hB6B,C8B1hB7B,kBjC+3HV,CiC/5HG,gMAsCK,gBjC63HR,CiCn6HG,mCAqDK,sBAAwB,CAGxB,ejC+2HR,CiCv6HG,kCA4DK,YjC82HR,CACF,Ccv/HI,4BmB4EC,gMAGK,eAAgB,CAChB,cjC86HR,CACF,Cc5gII,yBmByFA,kBAoBI,oBAAqB,CACrB,0BjCo6HN,CiCz7HG,8BAwBK,kBjCo6HR,CiC57HG,6CA2BO,iBjCo6HV,CiC/7HG,wCA+BO,mB9B2hB6B,C8B1hB7B,kBjCm6HV,CiCn8HG,gMAsCK,gBjCi6HR,CiCv8HG,mCAqDK,sBAAwB,CAGxB,ejCm5HR,CiC38HG,kCA4DK,YjCk5HR,CACF,Cc3hII,4BmB4EC,gMAGK,eAAgB,CAChB,cjCk9HR,CACF,CchjII,yBmByFA,kBAoBI,oBAAqB,CACrB,0BjCw8HN,CiC79HG,8BAwBK,kBjCw8HR,CiCh+HG,6CA2BO,iBjCw8HV,CiCn+HG,wCA+BO,mB9B2hB6B,C8B1hB7B,kBjCu8HV,CiCv+HG,gMAsCK,gBjCq8HR,CiC3+HG,mCAqDK,sBAAwB,CAGxB,ejCu7HR,CiC/+HG,kCA4DK,YjCs7HR,CACF,Cc/jII,6BmB4EC,gMAGK,eAAgB,CAChB,cjCs/HR,CACF,CcplII,0BmByFA,kBAoBI,oBAAqB,CACrB,0BjC4+HN,CiCjgIG,8BAwBK,kBjC4+HR,CiCpgIG,6CA2BO,iBjC4+HV,CiCvgIG,wCA+BO,mB9B2hB6B,C8B1hB7B,kBjC2+HV,CiC3gIG,gMAsCK,gBjCy+HR,CiC/gIG,mCAqDK,sBAAwB,CAGxB,ejC29HR,CiCnhIG,kCA4DK,YjC09HR,CACF,CiC5hIA,eAyBQ,oBAAqB,CACrB,0BjCugIR,CiCjiIA,8KAQU,eAAgB,CAChB,cjC8hIV,CiCviIA,2BA6BU,kBjC8gIV,CiC3iIA,0CAgCY,iBjC+gIZ,CiC/iIA,qCAoCY,mB9B2hB6B,C8B1hB7B,kBjC+gIZ,CiCpjIA,8KA2CU,gBjC8gIV,CiCzjIA,gCA0DU,sBAAwB,CAGxB,ejCigIV,CiC9jIA,+BAiEU,YjCigIV,CKlsIE,gG4BmNI,oBjCu/HN,CiC5/HA,oCAWM,oBjCq/HN,CK9sIE,oF4B4NM,oBjCs/HR,CiCpgIA,6CAkBQ,oBjCs/HR,CiCxgIA,0KA0BM,oBjCq/HN,CiC/gIA,8BA+BI,oB9B5OW,C8B6OX,2BjCo/HJ,CiCphIA,mCAoCI,wQjCo/HJ,CiCxhIA,2BAwCI,oBjCo/HJ,CK1uIE,mG4B2PM,oBjCu/HR,CKlvIE,6F4BuQI,UjCm/HN,CiCx/HA,mCAWM,wBjCi/HN,CK9vIE,kF4BgRM,yBjCk/HR,CiChgIA,4CAkBQ,yBjCk/HR,CiCpgIA,sKA0BM,UjCi/HN,CiC3gIA,6BA+BI,wB9B1SW,C8B2SX,+BjCg/HJ,CiChhIA,kCAoCI,8QjCg/HJ,CiCphIA,0BAwCI,wBjCg/HJ,CK1xIE,gG4B+SM,UjCm/HR,CkC9yIA,MACE,iBAAkB,CAClB,YAAa,CACb,qBAAsB,CACtB,WAAY,CAEZ,oBAAqB,CACrB,qB/BJa,C+BKb,uBAA2B,CAC3B,iC/BIa,COCX,oBV4yIJ,CkC1zIA,SAaI,cAAe,CACf,alCizIJ,CkC/zIA,kBAkBI,kBAAmB,CACnB,qBlCizIJ,CkCp0IA,8BAsBM,kBAAmB,CxBCrB,yCSgH4D,CT/G5D,0CVkzIJ,CkC10IA,6BA2BM,qBAAsB,CxBUxB,6CSkG4D,CTjG5D,4CV0yIJ,CkCh1IA,8DAoCI,YlCizIJ,CkC7yIA,WAGE,aAAc,CAGd,cAAe,CACf,elC4yIF,CkCxyIA,YACE,oBlC2yIF,CkCxyIA,eACE,mBlC4yIF,CkCxyIA,qCAHE,elC+yIF,CKh2IE,iB6B0DE,oBlC0yIJ,CkC5yIA,sBAMI,mBlC0yIJ,CkClyIA,aACE,sB/BwuByC,C+BvuBzC,eAAgB,CAEhB,gC/BrEa,C+BsEb,wClCoyIF,CkCzyIA,yBxBhEI,uDV62IJ,CkCjyIA,aACE,sB/B4tByC,C+B1tBzC,gC/BhFa,C+BiFb,qClCmyIF,CkCvyIA,wBxB5EI,uDVu3IJ,CkC3xIA,kBAEE,qB/B0sBwC,C+BxsBxC,elC8xIF,CkC3xIA,qCANE,qBAAiC,CAEjC,oBlCoyIF,CkC1xIA,kBACE,iBAAkB,CAClB,KAAM,CACN,OAAQ,CACR,QAAS,CACT,MAAO,CACP,e/BqsByC,COpzBvC,gCV64IJ,CkC1xIA,yCAGE,aAAc,CACd,UlC6xIF,CkC1xIA,wBxBjHI,yCSgH4D,CT/G5D,0CVg5IJ,CkC3xIA,2BxBxGI,6CSkG4D,CTjG5D,4CVw4IJ,CkCzxIA,iBAEI,kBlC2xIJ,Cc13II,yBoB6FJ,WAMI,YAAa,CACb,kBAAmB,CACnB,kB/BuqBsD,C+BtqBtD,iBlC4xIF,CkCryIF,iBAaM,QAAY,CACZ,iB/BiqBoD,C+BhqBpD,eAAgB,CAChB,gBlC2xIJ,CACF,CkClxIA,kBAII,kBlCkxIJ,Cc74II,yBoBuHJ,YAQI,YAAa,CACb,kBlCmxIF,CkC5xIF,kBAcM,QAAY,CACZ,elCixIJ,CkChyIF,wBAkBQ,aAAc,CACd,alCixIN,CkCpyIF,mCxBjJI,yBwB0KoC,CxBzKpC,4BVw7IF,CkCxyIF,iGA8BY,yBlC8wIV,CkC5yIF,oGAmCY,4BlC6wIV,CkChzIF,oCxBnII,wBwB2KmC,CxB1KnC,2BVs7IF,CkCpzIF,mGA6CY,wBlC2wIV,CkCxzIF,sGAkDY,2BlC0wIV,CACF,CkC9vIA,oBAEI,oBlCgwIJ,Ccx7II,yBoBsLJ,cAMI,sB/BmlBiC,C+BnlBjC,c/BmlBiC,C+BllBjC,0B/BmlBuC,C+BnlBvC,uB/BmlBuC,C+BnlBvC,uB/BmlBuC,C+BnlBvC,kB/BmlBuC,C+BllBvC,SAAU,CACV,QlCiwIF,CkC1wIF,oBAYM,oBAAqB,CACrB,UlCiwIJ,CACF,CkCxvIA,WACE,oBlC2vIF,CkC5vIA,iBAII,elC4vIJ,CkChwIA,oCAOM,eAAgB,CxBvOlB,4BwBwOiC,CxBvOjC,2BVq+IJ,CkCtwIA,qCxB9OI,wBwB0P8B,CxBzP9B,yBVw/IJ,CkC3wIA,8BxBvPI,ewBuQ0B,CACxB,kBlC+vIN,CmCzhJA,YAEE,cAAe,CACf,mBhC2hCsC,CgC1hCtC,kBhC6hCsC,CgC3hCtC,eAAgB,CAChB,wBhCEgB,COSd,oBVihJJ,CmCxhJA,6BAVE,YnCsiJF,CmC5hJA,kCAKI,kBnC2hJJ,CmChiJA,yCAQM,oBAAqB,CACrB,mBhC2gCmC,CgC1gCnC,ahCRY,CgCSZ,WnC4hJN,CmCviJA,+CAsBI,yBAA0B,CAI1B,oBnCihJJ,CmC3iJA,wBA8BI,anCqhJJ,CoC9jJA,YACE,YAAa,C7BGb,cAAe,CACf,eAAgB,CGad,oBVmjJJ,CoC/jJA,WACE,iBAAkB,CAClB,aAAc,CACd,oBjC4wBwC,CiC3wBxC,gBjCkO+B,CiCjO/B,gBjC+wBsC,CiC9wBtC,ajCuBe,CiCrBf,qBjCPa,CiCQb,wBpCikJF,CoC1kJA,iBAYI,SAAU,CACV,ajC8J8D,CiC7J9D,oBAAqB,CACrB,wBjCZc,CiCad,oBpCkkJJ,CoCllJA,iBAoBI,SAAU,CACV,SjCuwBiC,CiCtwBjC,0CpCkkJJ,CoC9jJA,kCAGM,aAAc,C1BahB,6BP+LgC,CO9LhC,gCVmjJJ,CoCpkJA,iC1BEI,8BP6MgC,CO5MhC,iCVskJJ,CoCzkJA,6BAcI,SAAU,CACV,UjCxCW,CiCyCX,wBjCba,CiCcb,oBpC+jJJ,CoChlJA,+BAqBI,ajCxCc,CiCyCd,mBAAoB,CAEpB,WAAY,CACZ,qBjClDW,CiCmDX,oBpC8jJJ,CqCrnJE,0BACE,qBlCqxBsC,CC1pBpC,iBAtCY,CiCnFd,erCwnJJ,CqCnnJM,iD3BqCF,4BPgM+B,CO/L/B,+BVklJJ,CqCnnJM,gD3BkBF,6BP8M+B,CO7M/B,gCVqmJJ,CqCroJE,0BACE,oBlCmxBqC,CCxpBnC,iBAtCY,CiCnFd,erCwoJJ,CqCnoJM,iD3BqCF,4BPiM+B,COhM/B,+BVkmJJ,CqCnoJM,gD3BkBF,6BP+M+B,CO9M/B,gCVqnJJ,CsCnpJA,OACE,oBAAqB,CACrB,kBnCo5BsC,CCn1BpC,aAAW,CkC/Db,enCuR+B,CmCtR/B,aAAc,CACd,iBAAkB,CAClB,kBAAmB,CACnB,sBAAwB,C5BKtB,oBP6NgC,CiB/N9B,6HpBqpJN,CoBjpJM,uCkBfN,OlBgBQ,epBqpJN,CACF,CK3pJE,4BiCGI,oBtC4pJN,CsC1qJA,aAoBI,YtC0pJJ,CsCrpJA,YACE,iBAAkB,CAClB,QtCwpJF,CsCjpJA,YACE,kBnCy3BsC,CmCx3BtC,iBnCw3BsC,CO/4BpC,mBV4qJJ,CsC5oJE,eCjDA,UpCMa,CoCLb,wBvCisJF,CKnrJE,4CkCVI,UpCCS,CoCAT,wBvCisJN,CuCpsJU,4CAQJ,SAAU,CACV,yCvCgsJN,CsC3pJE,iBCjDA,UpCMa,CoCLb,wBvCgtJF,CKlsJE,gDkCVI,UpCCS,CoCAT,wBvCgtJN,CuCntJU,gDAQJ,SAAU,CACV,2CvC+sJN,CsC1qJE,eCjDA,UpCMa,CoCLb,wBvC+tJF,CKjtJE,4CkCVI,UpCCS,CoCAT,wBvC+tJN,CuCluJU,4CAQJ,SAAU,CACV,yCvC8tJN,CsCzrJE,YCjDA,UpCMa,CoCLb,wBvC8uJF,CKhuJE,sCkCVI,UpCCS,CoCAT,wBvC8uJN,CuCjvJU,sCAQJ,SAAU,CACV,0CvC6uJN,CsCxsJE,eCjDA,apCegB,CoCdhB,wBvC6vJF,CK/uJE,4CkCVI,apCUY,CoCTZ,wBvC6vJN,CuChwJU,4CAQJ,SAAU,CACV,yCvC4vJN,CsCvtJE,cCjDA,UpCMa,CoCLb,wBvC4wJF,CK9vJE,0CkCVI,UpCCS,CoCAT,wBvC4wJN,CuC/wJU,0CAQJ,SAAU,CACV,yCvC2wJN,CsCtuJE,aCjDA,apCegB,CoCdhB,wBvC2xJF,CK7wJE,wCkCVI,apCUY,CoCTZ,wBvC2xJN,CuC9xJU,wCAQJ,SAAU,CACV,2CvC0xJN,CsCrvJE,YCjDA,UpCMa,CoCLb,wBvC0yJF,CK5xJE,sCkCVI,UpCCS,CoCAT,wBvC0yJN,CuC7yJU,sCAQJ,SAAU,CACV,wCvCyyJN,CwCtzJA,WACE,iBAAoD,CACpD,kBrCizBsC,CqC/yBtC,wBrCKgB,COSd,mBV2yJJ,CcjwJI,yB0B5DJ,WAQI,iBxC0zJF,CACF,CwCvzJA,iBACE,eAAgB,CAChB,cAAe,C9BIb,eVuzJJ,CyCr0JA,OACE,iBAAkB,CAClB,sBtCi9ByC,CsCh9BzC,kBtCi9BsC,CsCh9BtC,4BAA6C,C/BU3C,oBV+zJJ,CyCp0JA,eAEE,azCs0JF,CyCl0JA,YACE,ezCq0JF,CyC7zJA,mBACE,kBzCg0JF,CyCj0JA,0BAKI,iBAAkB,CAClB,KAAM,CACN,OAAQ,CACR,sBtCm7BuC,CsCl7BvC,azCg0JJ,CyCtzJE,eC9CA,avBqGgE,CGhG9D,wBHgG8D,CuBnGhE,oB1Cw2JF,C0Ct2JE,kBACE,wB1Cy2JJ,C0Ct2JE,2BACE,a1Cy2JJ,CyCp0JE,iBC9CA,avBqGgE,CGhG9D,wBHgG8D,CuBnGhE,oB1Cs3JF,C0Cp3JE,oBACE,wB1Cu3JJ,C0Cp3JE,6BACE,a1Cu3JJ,CyCl1JE,eC9CA,avBqGgE,CGhG9D,wBHgG8D,CuBnGhE,oB1Co4JF,C0Cl4JE,kBACE,wB1Cq4JJ,C0Cl4JE,2BACE,a1Cq4JJ,CyCh2JE,YC9CA,avBqGgE,CGhG9D,wBHgG8D,CuBnGhE,oB1Ck5JF,C0Ch5JE,eACE,wB1Cm5JJ,C0Ch5JE,wBACE,a1Cm5JJ,CyC92JE,eC9CA,avBqGgE,CGhG9D,wBHgG8D,CuBnGhE,oB1Cg6JF,C0C95JE,kBACE,wB1Ci6JJ,C0C95JE,2BACE,a1Ci6JJ,CyC53JE,cC9CA,avBqGgE,CGhG9D,wBHgG8D,CuBnGhE,oB1C86JF,C0C56JE,iBACE,wB1C+6JJ,C0C56JE,0BACE,a1C+6JJ,CyC14JE,aC9CA,avBqGgE,CGhG9D,wBHgG8D,CuBnGhE,oB1C47JF,C0C17JE,gBACE,wB1C67JJ,C0C17JE,yBACE,a1C67JJ,CyCx5JE,YC9CA,avBqGgE,CGhG9D,wBHgG8D,CuBnGhE,oB1C08JF,C0Cx8JE,eACE,wB1C28JJ,C0Cx8JE,wBACE,a1C28JJ,C2Cn9JE,wCACE,GAAO,0B3Cu9JT,C2Ct9JE,GAAK,uB3Cy9JP,CACF,C2C59JE,gCACE,GAAO,0B3Cu9JT,C2Ct9JE,GAAK,uB3Cy9JP,CACF,C2Ct9JA,UAEE,WxC09BsC,CwCx9BtC,aAAc,CvCmHV,gBAtCY,CuC3EhB,wBxCLgB,COSd,oBVs9JJ,C2Cr9JA,wBAVE,YAAa,CAEb,e3Cy+JF,C2Cj+JA,cAEE,qBAAsB,CACtB,sBAAuB,CAEvB,UxCjBa,CwCkBb,iBAAkB,CAClB,kBAAmB,CACnB,wBxCQe,CiBnBX,yBpBo+JN,CoBh+JM,uCuBDN,cvBEQ,epBo+JN,CACF,C2C39JA,sBrBYE,qKAA6I,CqBV7I,yB3C89JF,C2C19JE,uBACE,yDxCq8BkD,CwCr8BlD,iD3C69JJ,C2C19JM,uCAJJ,uBAKM,sBAAe,CAAf,c3C89JN,CACF,C4CzgKA,OACE,YAAa,CACb,sB5C4gKF,C4CzgKA,YACE,Q5C4gKF,C6C9gKA,YACE,YAAa,CACb,qBAAsB,CAGtB,cAAe,CACf,eAAgB,CnCQd,oBVwgKJ,C6CtgKA,wBACE,UAAW,CACX,a1CRgB,C0CShB,kB7CygKF,CKhhKE,4DwCWE,SAAU,CACV,a1Cdc,C0Ced,oBAAqB,CACrB,wB7CygKJ,C6CnhKA,+BAcI,a1ClBc,C0CmBd,wB7CygKJ,C6ChgKA,iBACE,iBAAkB,CAClB,aAAc,CACd,sB1Cy8ByC,C0Ct8BzC,qB1C3Ca,C0C4Cb,iC7CigKF,C6CxgKA,6BnCjBI,8BmC2BkC,CnC1BlC,+BV6hKJ,C6C7gKA,4BnCHI,kCmCiBqC,CnChBrC,iCVohKJ,C6ClhKA,oDAmBI,a1ClDc,C0CmDd,mBAAoB,CACpB,qB7CmgKJ,C6CxhKA,wBA0BI,SAAU,CACV,U1ChEW,C0CiEX,wB1CrCa,C0CsCb,oB7CkgKJ,C6C/hKA,kCAiCI,kB7CkgKJ,C6CniKA,yCAoCM,e1C4J2B,C0C3J3B,oB7CmgKN,C6Cr/JI,uBACE,kB7Cw/JN,C6Cz/JI,oDnCtBA,gCPsKgC,COlLhC,yBVgiKJ,C6C9/JI,mDnClCA,8BPkLgC,COtKhC,2BVyhKJ,C6CngKI,+CAeM,Y7Cw/JV,C6CvgKI,yDAmBM,oB1C0HuB,C0CzHvB,mB7Cw/JV,C6C5gKI,gEAuBQ,gB1CsHqB,C0CrHrB,qB7Cy/JZ,CcpjKI,yB+BmCA,0BACE,kB7CqhKJ,C6CthKE,uDnCtBA,gCPsKgC,COlLhC,yBV4jKF,C6C1hKE,sDnClCA,8BPkLgC,COtKhC,2BVojKF,C6C9hKE,kDAeM,Y7CkhKR,C6CjiKE,4DAmBM,oB1C0HuB,C0CzHvB,mB7CihKR,C6CriKE,mEAuBQ,gB1CsHqB,C0CrHrB,qB7CihKV,CACF,Cc7kKI,yB+BmCA,0BACE,kB7C8iKJ,C6C/iKE,uDnCtBA,gCPsKgC,COlLhC,yBVqlKF,C6CnjKE,sDnClCA,8BPkLgC,COtKhC,2BV6kKF,C6CvjKE,kDAeM,Y7C2iKR,C6C1jKE,4DAmBM,oB1C0HuB,C0CzHvB,mB7C0iKR,C6C9jKE,mEAuBQ,gB1CsHqB,C0CrHrB,qB7C0iKV,CACF,CctmKI,yB+BmCA,0BACE,kB7CukKJ,C6CxkKE,uDnCtBA,gCPsKgC,COlLhC,yBV8mKF,C6C5kKE,sDnClCA,8BPkLgC,COtKhC,2BVsmKF,C6ChlKE,kDAeM,Y7CokKR,C6CnlKE,4DAmBM,oB1C0HuB,C0CzHvB,mB7CmkKR,C6CvlKE,mEAuBQ,gB1CsHqB,C0CrHrB,qB7CmkKV,CACF,Cc/nKI,0B+BmCA,0BACE,kB7CgmKJ,C6CjmKE,uDnCtBA,gCPsKgC,COlLhC,yBVuoKF,C6CrmKE,sDnClCA,8BPkLgC,COtKhC,2BV+nKF,C6CzmKE,kDAeM,Y7C6lKR,C6C5mKE,4DAmBM,oB1C0HuB,C0CzHvB,mB7C4lKR,C6ChnKE,mEAuBQ,gB1CsHqB,C0CrHrB,qB7C4lKV,CACF,C6C/kKA,kBnCnHI,eVssKJ,C6CnlKA,mCAII,oB7CmlKJ,C6CvlKA,8CAOM,qB7ColKN,C8C7tKE,yBACE,a3BkG8D,C2BjG9D,wB9CguKJ,CKrtKE,4GyCPM,a3B6F0D,C2B5F1D,wB9CguKR,C8CvuKE,uDAWM,U3CPO,C2CQP,wB3BuF0D,C2BtF1D,oB9CguKR,C8C7uKE,2BACE,a3BkG8D,C2BjG9D,wB9CgvKJ,CKruKE,gHyCPM,a3B6F0D,C2B5F1D,wB9CgvKR,C8CvvKE,yDAWM,U3CPO,C2CQP,wB3BuF0D,C2BtF1D,oB9CgvKR,C8C7vKE,yBACE,a3BkG8D,C2BjG9D,wB9CgwKJ,CKrvKE,4GyCPM,a3B6F0D,C2B5F1D,wB9CgwKR,C8CvwKE,uDAWM,U3CPO,C2CQP,wB3BuF0D,C2BtF1D,oB9CgwKR,C8C7wKE,sBACE,a3BkG8D,C2BjG9D,wB9CgxKJ,CKrwKE,sGyCPM,a3B6F0D,C2B5F1D,wB9CgxKR,C8CvxKE,oDAWM,U3CPO,C2CQP,wB3BuF0D,C2BtF1D,oB9CgxKR,C8C7xKE,yBACE,a3BkG8D,C2BjG9D,wB9CgyKJ,CKrxKE,4GyCPM,a3B6F0D,C2B5F1D,wB9CgyKR,C8CvyKE,uDAWM,U3CPO,C2CQP,wB3BuF0D,C2BtF1D,oB9CgyKR,C8C7yKE,wBACE,a3BkG8D,C2BjG9D,wB9CgzKJ,CKryKE,0GyCPM,a3B6F0D,C2B5F1D,wB9CgzKR,C8CvzKE,sDAWM,U3CPO,C2CQP,wB3BuF0D,C2BtF1D,oB9CgzKR,C8C7zKE,uBACE,a3BkG8D,C2BjG9D,wB9Cg0KJ,CKrzKE,wGyCPM,a3B6F0D,C2B5F1D,wB9Cg0KR,C8Cv0KE,qDAWM,U3CPO,C2CQP,wB3BuF0D,C2BtF1D,oB9Cg0KR,C8C70KE,sBACE,a3BkG8D,C2BjG9D,wB9Cg1KJ,CKr0KE,sGyCPM,a3B6F0D,C2B5F1D,wB9Cg1KR,C8Cv1KE,oDAWM,U3CPO,C2CQP,wB3BuF0D,C2BtF1D,oB9Cg1KR,C+Ch2KA,OACE,WAAY,C3C8HR,gBAtCY,C2CtFhB,e5C6R+B,C4C5R/B,aAAc,CACd,U5CYa,C4CXb,wB5CCa,C4CAb,U/Cm2KF,CK91KE,a0CDE,U5CMW,C4CLX,oB/Cm2KJ,CK/1KE,sF0CCI,W/Ck2KN,C+Cv1KA,aACE,SAAU,CACV,wBAA6B,CAC7B,Q/C01KF,C+Cp1KA,iBACE,mB/Cu1KF,CgD73KA,OAGE,gB7Cm4BuC,C6Cl4BvC,e7Ck4BuC,CCvwBnC,iBAtCY,C4ClFhB,oC7CAa,C6CCb,2BAA4B,CAC5B,+B7Co4BmD,C6Cn4BnD,yC7COa,C6CNb,SAAU,CtCOR,oBVu3KJ,CgDz4KA,wBAeI,oBhD83KJ,CgD74KA,eAmBI,ShD83KJ,CgDj5KA,YAuBI,aAAc,CACd,ShD83KJ,CgDt5KA,YA4BI,YhD83KJ,CgD13KA,cACE,YAAa,CACb,kBAAmB,CACnB,qB7Co2BwC,C6Cn2BxC,a7CvBgB,C6CwBhB,oC7C9Ba,C6C+Bb,2BAA4B,CAC5B,uC7C42BoD,COx3BlD,yCSgH4D,CT/G5D,0CV04KJ,CgD33KA,YACE,chD83KF,CiDp6KA,YAEE,ejDs6KF,CiDx6KA,mBAKI,iBAAkB,CAClB,ejDu6KJ,CiDl6KA,OACE,cAAe,CACf,KAAM,CACN,MAAO,CACP,Y9C0pBsC,C8CzpBtC,YAAa,CACb,UAAW,CACX,WAAY,CACZ,eAAgB,CAGhB,SjDm6KF,CiD55KA,cACE,iBAAkB,CAClB,UAAW,CACX,Y9Cy4BuC,C8Cv4BvC,mBjD85KF,CiD35KE,0B7B3BI,yCjB87BoD,CiB97BpD,iCjB87BoD,CiB97BpD,gEjB87BoD,C8Cj6BtD,mC9C+5BmD,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,OAAQ,CACR,gCjDmwBmC,CiDlwBnC,iCpDsvLN,CoDlwLA,+EAgBM,SjD4G2B,CiD3G3B,gCjD6vBmC,CiD5vBnC,sBpDsvLN,CoDhuLA,gBACE,oBjD8tBwC,CiD7tBxC,eAAgB,ChD3BZ,cAtCY,CgDoEhB,wBjDutByD,CiDttBzD,+BAAyE,C1CnIvE,wCSgH4D,CT/G5D,yCVs2LJ,CoD1uLA,sBAUI,YpDouLJ,CoDhuLA,cACE,oBjDgtBwC,CiD/sBxC,apDmuLF,CqD93LA,UACE,iBrDi4LF,CqD93LA,wBACE,kBrDi4LF,CqD93LA,gBACE,iBAAkB,CAClB,UAAW,CACX,erDi4LF,CsDx5LE,sBACE,aAAc,CACd,UAAW,CACX,UtD25LJ,CqDn4LA,eACE,iBAAkB,CAClB,YAAa,CACb,UAAW,CACX,UAAW,CACX,kBAAmB,CACnB,kCAA2B,CAA3B,0BAA2B,CjClBvB,4CjBmjCkF,CiBnjClF,oCjBmjCkF,CiBnjClF,sEpBy5LN,CoBr5LM,uCiCQN,ejCPQ,epBy5LN,CACF,CqDz4LA,8DAGE,arD44LF,CqDz4LA,yEAEE,kCAA2B,CAA3B,0BrD44LF,CqDz4LA,yEAEE,mCAA4B,CAA5B,2BrD44LF,CqDp4LA,8BAEI,SAAU,CACV,2BAA4B,CAC5B,sBAAe,CAAf,crDs4LJ,CqD14LA,kJAUI,SAAU,CACV,SrDs4LJ,CqDj5LA,qFAgBI,SAAU,CACV,SAAU,CjC5DR,yBpBm8LN,CoB/7LM,uCiCuCN,qFjCtCQ,epBo8LN,CACF,CqDp4LA,8CAEE,iBAAkB,CAClB,KAAM,CACN,QAAS,CACT,SAAU,CAEV,YAAa,CACb,kBAAmB,CACnB,sBAAuB,CACvB,SlD88BsC,CkD78BtC,UlD1Fa,CkD2Fb,iBAAkB,CAClB,UlD48BqC,CiB/hCjC,4BpB09LN,CoBt9LM,uCiCkEN,8CjCjEQ,epB29LN,CACF,CKj+LE,oHgDwFE,UlDjGW,CkDkGX,oBAAqB,CACrB,SAAU,CACV,UrD+4LJ,CqD54LA,uBACE,MrD+4LF,CqD14LA,uBACE,OrD64LF,CqDt4LA,wDAEE,oBAAqB,CACrB,UlD87BuC,CkD77BvC,WlD67BuC,CkD57BvC,kCrDy4LF,CqDv4LA,4BACE,iNrD04LF,CqDx4LA,4BACE,kNrD24LF,CqDl4LA,qBACE,iBAAkB,CAClB,OAAQ,CACR,QAAS,CACT,MAAO,CACP,UAAW,CACX,YAAa,CACb,sBAAuB,CACvB,cAAe,CAEf,gBlDo5BsC,CkDn5BtC,elDm5BsC,CkDl5BtC,erDo4LF,CqDh5LA,wBAeI,kBAAuB,CACvB,aAAc,CACd,UlDk5BqC,CkDj5BrC,UlDk5BoC,CkDj5BpC,gBlDm5BoC,CkDl5BpC,elDk5BoC,CkDj5BpC,kBAAmB,CACnB,cAAe,CACf,qBlDhKW,CkDiKX,2BAA4B,CAE5B,iCAAiE,CACjE,oCAAoE,CACpE,UAAW,CjC5JT,2BpBiiMN,CoB7hMM,uCiC4HN,wBjC3HQ,epBiiMN,CACF,CqDv6LA,6BAiCI,SrD04LJ,CqDj4LA,kBACE,iBAAkB,CAClB,SAA2C,CAC3C,WAAY,CACZ,QAA0C,CAC1C,UAAW,CACX,gBAAiB,CACjB,mBAAoB,CACpB,UlD3La,CkD4Lb,iBrDo4LF,CuDnkMA,kCACE,GAAK,+BAAyB,CAAzB,uBvDukML,CACF,CuDzkMA,0BACE,GAAK,+BAAyB,CAAzB,uBvDukML,CACF,CuDrkMA,gBACE,oBAAqB,CACrB,UpD8jC0B,CoD7jC1B,WpD6jC0B,CoD5jC1B,0BAA2B,CAE3B,kBAA+B,CAA/B,oCAA+B,CAE/B,iBAAkB,CAClB,qDAA8C,CAA9C,6CvDukMF,CuDpkMA,mBACE,UpDujC4B,CoDtjC5B,WpDsjC4B,CoDrjC5B,iBvDukMF,CuDhkMA,gCACE,GACE,0BAAmB,CAAnB,kBvDmkMF,CuDjkMA,IACE,SAAU,CACV,sBAAe,CAAf,cvDmkMF,CACF,CuD1kMA,wBACE,GACE,0BAAmB,CAAnB,kBvDmkMF,CuDjkMA,IACE,SAAU,CACV,sBAAe,CAAf,cvDmkMF,CACF,CuDhkMA,cACE,oBAAqB,CACrB,UpD8hC0B,CoD7hC1B,WpD6hC0B,CoD5hC1B,0BAA2B,CAC3B,6BAA8B,CAE9B,iBAAkB,CAClB,SAAU,CACV,mDAA4C,CAA5C,2CvDkkMF,CuD/jMA,iBACE,UpDuhC4B,CoDthC5B,WvDkkMF,CwDtnMA,gBAAqB,gCxD0nMrB,CwDznMA,WAAqB,4BxD6nMrB,CwD5nMA,cAAqB,+BxDgoMrB,CwD/nMA,cAAqB,+BxDmoMrB,CwDloMA,mBAAqB,oCxDsoMrB,CwDroMA,gBAAqB,iCxDyoMrB,CyD3oME,YACE,kCzD8oMJ,CKpoME,sFoDLI,kCzD+oMN,CyDrpME,cACE,kCzDwpMJ,CK9oME,8FoDLI,kCzDypMN,CyD/pME,YACE,kCzDkqMJ,CKxpME,sFoDLI,kCzDmqMN,CyDzqME,SACE,kCzD4qMJ,CKlqME,0EoDLI,kCzD6qMN,CyDnrME,YACE,kCzDsrMJ,CK5qME,sFoDLI,kCzDurMN,CyD7rME,WACE,kCzDgsMJ,CKtrME,kFoDLI,kCzDisMN,CyDvsME,UACE,kCzD0sMJ,CKhsME,8EoDLI,kCzD2sMN,CyDjtME,SACE,kCzDotMJ,CK1sME,0EoDLI,kCzDqtMN,C0DptMA,UACE,+B1DutMF,C0DptMA,gBACE,kC1DutMF,C2DluMA,QAAkB,kC3DsuMlB,C2DruMA,YAAkB,sC3DyuMlB,C2DxuMA,cAAkB,wC3D4uMlB,C2D3uMA,eAAkB,yC3D+uMlB,C2D9uMA,aAAkB,uC3DkvMlB,C2DhvMA,UAAmB,kB3DovMnB,C2DnvMA,cAAmB,sB3DuvMnB,C2DtvMA,gBAAmB,wB3D0vMnB,C2DzvMA,iBAAmB,yB3D6vMnB,C2D5vMA,eAAmB,uB3DgwMnB,C2D7vME,gBACE,8B3DgwMJ,C2DjwME,kBACE,8B3DowMJ,C2DrwME,gBACE,8B3DwwMJ,C2DzwME,aACE,8B3D4wMJ,C2D7wME,gBACE,8B3DgxMJ,C2DjxME,eACE,8B3DoxMJ,C2DrxME,cACE,8B3DwxMJ,C2DzxME,aACE,8B3D4xMJ,C2DxxMA,cACE,2B3D2xMF,C2DpxMA,YACE,6B3DuxMF,C2DpxMA,SACE,8B3DuxMF,C2DpxMA,aACE,uC3DwxMF,C2DpxMA,4BAHE,wC3D4xMF,C2DpxMA,+BAHE,2C3D4xMF,C2DpxMA,8BAHE,0C3D4xMF,C2DzxMA,cACE,uC3DwxMF,C2DpxMA,YACE,6B3DuxMF,C2DpxMA,gBACE,2B3DuxMF,C2DpxMA,cACE,6B3DuxMF,C2DpxMA,WACE,yB3DuxMF,CsD/1ME,gBACE,aAAc,CACd,UAAW,CACX,UtDk2MJ,C4D31MM,QAAwB,sB5D+1M9B,C4D/1MM,UAAwB,wB5Dm2M9B,C4Dn2MM,gBAAwB,8B5Du2M9B,C4Dv2MM,SAAwB,uB5D22M9B,C4D32MM,SAAwB,uB5D+2M9B,C4D/2MM,aAAwB,2B5Dm3M9B,C4Dn3MM,cAAwB,4B5Du3M9B,C4Dv3MM,QAAwB,sB5D23M9B,C4D33MM,eAAwB,6B5D+3M9B,Cc90MI,yB8CjDE,WAAwB,sB5Do4M5B,C4Dp4MI,aAAwB,wB5Du4M5B,C4Dv4MI,mBAAwB,8B5D04M5B,C4D14MI,YAAwB,uB5D64M5B,C4D74MI,YAAwB,uB5Dg5M5B,C4Dh5MI,gBAAwB,2B5Dm5M5B,C4Dn5MI,iBAAwB,4B5Ds5M5B,C4Dt5MI,WAAwB,sB5Dy5M5B,C4Dz5MI,kBAAwB,6B5D45M5B,CACF,Cc52MI,yB8CjDE,WAAwB,sB5Dk6M5B,C4Dl6MI,aAAwB,wB5Dq6M5B,C4Dr6MI,mBAAwB,8B5Dw6M5B,C4Dx6MI,YAAwB,uB5D26M5B,C4D36MI,YAAwB,uB5D86M5B,C4D96MI,gBAAwB,2B5Di7M5B,C4Dj7MI,iBAAwB,4B5Do7M5B,C4Dp7MI,WAAwB,sB5Du7M5B,C4Dv7MI,kBAAwB,6B5D07M5B,CACF,Cc14MI,yB8CjDE,WAAwB,sB5Dg8M5B,C4Dh8MI,aAAwB,wB5Dm8M5B,C4Dn8MI,mBAAwB,8B5Ds8M5B,C4Dt8MI,YAAwB,uB5Dy8M5B,C4Dz8MI,YAAwB,uB5D48M5B,C4D58MI,gBAAwB,2B5D+8M5B,C4D/8MI,iBAAwB,4B5Dk9M5B,C4Dl9MI,WAAwB,sB5Dq9M5B,C4Dr9MI,kBAAwB,6B5Dw9M5B,CACF,Ccx6MI,0B8CjDE,WAAwB,sB5D89M5B,C4D99MI,aAAwB,wB5Di+M5B,C4Dj+MI,mBAAwB,8B5Do+M5B,C4Dp+MI,YAAwB,uB5Du+M5B,C4Dv+MI,YAAwB,uB5D0+M5B,C4D1+MI,gBAAwB,2B5D6+M5B,C4D7+MI,iBAAwB,4B5Dg/M5B,C4Dh/MI,WAAwB,sB5Dm/M5B,C4Dn/MI,kBAAwB,6B5Ds/M5B,CACF,C4D7+MA,aAEI,cAAqB,sB5Dg/MvB,C4Dh/ME,gBAAqB,wB5Dm/MvB,C4Dn/ME,sBAAqB,8B5Ds/MvB,C4Dt/ME,eAAqB,uB5Dy/MvB,C4Dz/ME,eAAqB,uB5D4/MvB,C4D5/ME,mBAAqB,2B5D+/MvB,C4D//ME,oBAAqB,4B5DkgNvB,C4DlgNE,cAAqB,sB5DqgNvB,C4DrgNE,qBAAqB,6B5DwgNvB,CACF,C6D9hNA,kBACE,iBAAkB,CAClB,aAAc,CACd,UAAW,CACX,SAAU,CACV,e7DiiNF,C6DtiNA,yBAQI,aAAc,CACd,U7DkiNJ,C6D3iNA,2IAiBI,iBAAkB,CAClB,KAAM,CACN,QAAS,CACT,MAAO,CACP,UAAW,CACX,WAAY,CACZ,Q7DkiNJ,C6D1hNE,+BAEI,sB7D4hNN,C6D9hNE,+BAEI,kB7DgiNN,C6DliNE,8BAEI,e7DoiNN,C6DtiNE,8BAEI,gB7DwiNN,C8DjkNI,UAAgC,4B9DqkNpC,C8DpkNI,aAAgC,+B9DwkNpC,C8DvkNI,kBAAgC,oC9D2kNpC,C8D1kNI,qBAAgC,uC9D8kNpC,C8D5kNI,WAA8B,wB9DglNlC,C8D/kNI,aAA8B,0B9DmlNlC,C8DllNI,mBAA8B,gC9DslNlC,C8DrlNI,WAA8B,uB9DylNlC,C8DxlNI,aAA8B,qB9D4lNlC,C8D3lNI,aAA8B,qB9D+lNlC,C8D9lNI,eAA8B,uB9DkmNlC,C8DjmNI,eAA8B,uB9DqmNlC,C8DnmNI,uBAAoC,oC9DumNxC,C8DtmNI,qBAAoC,kC9D0mNxC,C8DzmNI,wBAAoC,gC9D6mNxC,C8D5mNI,yBAAoC,uC9DgnNxC,C8D/mNI,wBAAoC,sC9DmnNxC,C8DjnNI,mBAAiC,gC9DqnNrC,C8DpnNI,iBAAiC,8B9DwnNrC,C8DvnNI,oBAAiC,4B9D2nNrC,C8D1nNI,sBAAiC,8B9D8nNrC,C8D7nNI,qBAAiC,6B9DioNrC,C8D/nNI,qBAAkC,kC9DmoNtC,C8DloNI,mBAAkC,gC9DsoNtC,C8DroNI,sBAAkC,8B9DyoNtC,C8DxoNI,uBAAkC,qC9D4oNtC,C8D3oNI,sBAAkC,oC9D+oNtC,C8D9oNI,uBAAkC,+B9DkpNtC,C8DhpNI,iBAAgC,yB9DopNpC,C8DnpNI,kBAAgC,+B9DupNpC,C8DtpNI,gBAAgC,6B9D0pNpC,C8DzpNI,mBAAgC,2B9D6pNpC,C8D5pNI,qBAAgC,6B9DgqNpC,C8D/pNI,oBAAgC,4B9DmqNpC,CcvpNI,yBgDlDA,aAAgC,4B9D8sNlC,C8D7sNE,gBAAgC,+B9DgtNlC,C8D/sNE,qBAAgC,oC9DktNlC,C8DjtNE,wBAAgC,uC9DotNlC,C8DltNE,cAA8B,wB9DqtNhC,C8DptNE,gBAA8B,0B9DutNhC,C8DttNE,sBAA8B,gC9DytNhC,C8DxtNE,cAA8B,uB9D2tNhC,C8D1tNE,gBAA8B,qB9D6tNhC,C8D5tNE,gBAA8B,qB9D+tNhC,C8D9tNE,kBAA8B,uB9DiuNhC,C8DhuNE,kBAA8B,uB9DmuNhC,C8DjuNE,0BAAoC,oC9DouNtC,C8DnuNE,wBAAoC,kC9DsuNtC,C8DruNE,2BAAoC,gC9DwuNtC,C8DvuNE,4BAAoC,uC9D0uNtC,C8DzuNE,2BAAoC,sC9D4uNtC,C8D1uNE,sBAAiC,gC9D6uNnC,C8D5uNE,oBAAiC,8B9D+uNnC,C8D9uNE,uBAAiC,4B9DivNnC,C8DhvNE,yBAAiC,8B9DmvNnC,C8DlvNE,wBAAiC,6B9DqvNnC,C8DnvNE,wBAAkC,kC9DsvNpC,C8DrvNE,sBAAkC,gC9DwvNpC,C8DvvNE,yBAAkC,8B9D0vNpC,C8DzvNE,0BAAkC,qC9D4vNpC,C8D3vNE,yBAAkC,oC9D8vNpC,C8D7vNE,0BAAkC,+B9DgwNpC,C8D9vNE,oBAAgC,yB9DiwNlC,C8DhwNE,qBAAgC,+B9DmwNlC,C8DlwNE,mBAAgC,6B9DqwNlC,C8DpwNE,sBAAgC,2B9DuwNlC,C8DtwNE,wBAAgC,6B9DywNlC,C8DxwNE,uBAAgC,4B9D2wNlC,CACF,CchwNI,yBgDlDA,aAAgC,4B9DuzNlC,C8DtzNE,gBAAgC,+B9DyzNlC,C8DxzNE,qBAAgC,oC9D2zNlC,C8D1zNE,wBAAgC,uC9D6zNlC,C8D3zNE,cAA8B,wB9D8zNhC,C8D7zNE,gBAA8B,0B9Dg0NhC,C8D/zNE,sBAA8B,gC9Dk0NhC,C8Dj0NE,cAA8B,uB9Do0NhC,C8Dn0NE,gBAA8B,qB9Ds0NhC,C8Dr0NE,gBAA8B,qB9Dw0NhC,C8Dv0NE,kBAA8B,uB9D00NhC,C8Dz0NE,kBAA8B,uB9D40NhC,C8D10NE,0BAAoC,oC9D60NtC,C8D50NE,wBAAoC,kC9D+0NtC,C8D90NE,2BAAoC,gC9Di1NtC,C8Dh1NE,4BAAoC,uC9Dm1NtC,C8Dl1NE,2BAAoC,sC9Dq1NtC,C8Dn1NE,sBAAiC,gC9Ds1NnC,C8Dr1NE,oBAAiC,8B9Dw1NnC,C8Dv1NE,uBAAiC,4B9D01NnC,C8Dz1NE,yBAAiC,8B9D41NnC,C8D31NE,wBAAiC,6B9D81NnC,C8D51NE,wBAAkC,kC9D+1NpC,C8D91NE,sBAAkC,gC9Di2NpC,C8Dh2NE,yBAAkC,8B9Dm2NpC,C8Dl2NE,0BAAkC,qC9Dq2NpC,C8Dp2NE,yBAAkC,oC9Du2NpC,C8Dt2NE,0BAAkC,+B9Dy2NpC,C8Dv2NE,oBAAgC,yB9D02NlC,C8Dz2NE,qBAAgC,+B9D42NlC,C8D32NE,mBAAgC,6B9D82NlC,C8D72NE,sBAAgC,2B9Dg3NlC,C8D/2NE,wBAAgC,6B9Dk3NlC,C8Dj3NE,uBAAgC,4B9Do3NlC,CACF,Ccz2NI,yBgDlDA,aAAgC,4B9Dg6NlC,C8D/5NE,gBAAgC,+B9Dk6NlC,C8Dj6NE,qBAAgC,oC9Do6NlC,C8Dn6NE,wBAAgC,uC9Ds6NlC,C8Dp6NE,cAA8B,wB9Du6NhC,C8Dt6NE,gBAA8B,0B9Dy6NhC,C8Dx6NE,sBAA8B,gC9D26NhC,C8D16NE,cAA8B,uB9D66NhC,C8D56NE,gBAA8B,qB9D+6NhC,C8D96NE,gBAA8B,qB9Di7NhC,C8Dh7NE,kBAA8B,uB9Dm7NhC,C8Dl7NE,kBAA8B,uB9Dq7NhC,C8Dn7NE,0BAAoC,oC9Ds7NtC,C8Dr7NE,wBAAoC,kC9Dw7NtC,C8Dv7NE,2BAAoC,gC9D07NtC,C8Dz7NE,4BAAoC,uC9D47NtC,C8D37NE,2BAAoC,sC9D87NtC,C8D57NE,sBAAiC,gC9D+7NnC,C8D97NE,oBAAiC,8B9Di8NnC,C8Dh8NE,uBAAiC,4B9Dm8NnC,C8Dl8NE,yBAAiC,8B9Dq8NnC,C8Dp8NE,wBAAiC,6B9Du8NnC,C8Dr8NE,wBAAkC,kC9Dw8NpC,C8Dv8NE,sBAAkC,gC9D08NpC,C8Dz8NE,yBAAkC,8B9D48NpC,C8D38NE,0BAAkC,qC9D88NpC,C8D78NE,yBAAkC,oC9Dg9NpC,C8D/8NE,0BAAkC,+B9Dk9NpC,C8Dh9NE,oBAAgC,yB9Dm9NlC,C8Dl9NE,qBAAgC,+B9Dq9NlC,C8Dp9NE,mBAAgC,6B9Du9NlC,C8Dt9NE,sBAAgC,2B9Dy9NlC,C8Dx9NE,wBAAgC,6B9D29NlC,C8D19NE,uBAAgC,4B9D69NlC,CACF,Ccl9NI,0BgDlDA,aAAgC,4B9DygOlC,C8DxgOE,gBAAgC,+B9D2gOlC,C8D1gOE,qBAAgC,oC9D6gOlC,C8D5gOE,wBAAgC,uC9D+gOlC,C8D7gOE,cAA8B,wB9DghOhC,C8D/gOE,gBAA8B,0B9DkhOhC,C8DjhOE,sBAA8B,gC9DohOhC,C8DnhOE,cAA8B,uB9DshOhC,C8DrhOE,gBAA8B,qB9DwhOhC,C8DvhOE,gBAA8B,qB9D0hOhC,C8DzhOE,kBAA8B,uB9D4hOhC,C8D3hOE,kBAA8B,uB9D8hOhC,C8D5hOE,0BAAoC,oC9D+hOtC,C8D9hOE,wBAAoC,kC9DiiOtC,C8DhiOE,2BAAoC,gC9DmiOtC,C8DliOE,4BAAoC,uC9DqiOtC,C8DpiOE,2BAAoC,sC9DuiOtC,C8DriOE,sBAAiC,gC9DwiOnC,C8DviOE,oBAAiC,8B9D0iOnC,C8DziOE,uBAAiC,4B9D4iOnC,C8D3iOE,yBAAiC,8B9D8iOnC,C8D7iOE,wBAAiC,6B9DgjOnC,C8D9iOE,wBAAkC,kC9DijOpC,C8DhjOE,sBAAkC,gC9DmjOpC,C8DljOE,yBAAkC,8B9DqjOpC,C8DpjOE,0BAAkC,qC9DujOpC,C8DtjOE,yBAAkC,oC9DyjOpC,C8DxjOE,0BAAkC,+B9D2jOpC,C8DzjOE,oBAAgC,yB9D4jOlC,C8D3jOE,qBAAgC,+B9D8jOlC,C8D7jOE,mBAAgC,6B9DgkOlC,C8D/jOE,sBAAgC,2B9DkkOlC,C8DjkOE,wBAAgC,6B9DokOlC,C8DnkOE,uBAAgC,4B9DskOlC,CACF,C+DjnOI,YAAwB,oB/DqnO5B,C+DpnOI,aAAwB,qB/DwnO5B,C+DvnOI,YAAwB,oB/D2nO5B,CcvkOI,yBiDtDA,eAAwB,oB/DkoO1B,C+DjoOE,gBAAwB,qB/DooO1B,C+DnoOE,eAAwB,oB/DsoO1B,CACF,CcnlOI,yBiDtDA,eAAwB,oB/D8oO1B,C+D7oOE,gBAAwB,qB/DgpO1B,C+D/oOE,eAAwB,oB/DkpO1B,CACF,Cc/lOI,yBiDtDA,eAAwB,oB/D0pO1B,C+DzpOE,gBAAwB,qB/D4pO1B,C+D3pOE,eAAwB,oB/D8pO1B,CACF,Cc3mOI,0BiDtDA,eAAwB,oB/DsqO1B,C+DrqOE,gBAAwB,qB/DwqO1B,C+DvqOE,eAAwB,oB/D0qO1B,CACF,CgEhrOE,iBAAyB,iCAA8B,CAA9B,yBhEorO3B,CgEprOE,kBAAyB,kCAA8B,CAA9B,0BhEwrO3B,CgExrOE,kBAAyB,kCAA8B,CAA9B,0BhE4rO3B,CiE5rOE,eAAsB,uBjEgsOxB,CiEhsOE,iBAAsB,yBjEosOxB,CkEnsOE,iBAAyB,yBlEusO3B,CkEvsOE,mBAAyB,2BlE2sO3B,CkE3sOE,mBAAyB,2BlE+sO3B,CkE/sOE,gBAAyB,wBlEmtO3B,CkEntOE,iBAAyB,iCAA8B,CAA9B,yBlEutO3B,CkEltOA,WAEE,KlEwtOF,CkEltOA,yBAPE,cAAe,CAEf,OAAQ,CACR,MAAO,CACP,YlE6tOF,CkE1tOA,cAGE,QlEutOF,CkEjtO8B,2DAD9B,YAEI,uBAAgB,CAAhB,eAAgB,CAChB,KAAM,CACN,YlEqtOF,CACF,CmE/uOA,SCSE,kBpEkvOF,CoEvuOE,mDAOE,kBpEyuOJ,CqEtwOA,WAAa,sDrE0wOb,CqEzwOA,QAAU,iDrE6wOV,CqE5wOA,WAAa,iDrEgxOb,CqE/wOA,aAAe,yBrEmxOf,CsElxOI,MAAuB,mBtEsxO3B,CsEtxOI,MAAuB,mBtE0xO3B,CsE1xOI,MAAuB,mBtE8xO3B,CsE9xOI,OAAuB,oBtEkyO3B,CsElyOI,QAAuB,oBtEsyO3B,CsEtyOI,MAAuB,oBtE0yO3B,CsE1yOI,MAAuB,oBtE8yO3B,CsE9yOI,MAAuB,oBtEkzO3B,CsElzOI,OAAuB,qBtEszO3B,CsEtzOI,QAAuB,qBtE0zO3B,CsEtzOA,QAAU,wBtE0zOV,CsEzzOA,QAAU,yBtE6zOV,CsEzzOA,YAAc,yBtE6zOd,CsE5zOA,YAAc,0BtEg0Od,CsE9zOA,QAAU,qBtEk0OV,CsEj0OA,QAAU,sBtEq0OV,CuE90OQ,KAAgC,kBvEk1OxC,CuEj1OQ,YAEE,sBvEo1OV,CuEl1OQ,YAEE,wBvEq1OV,CuEn1OQ,YAEE,yBvEs1OV,CuEp1OQ,YAEE,uBvEu1OV,CuEt2OQ,KAAgC,uBvE02OxC,CuEz2OQ,YAEE,2BvE42OV,CuE12OQ,YAEE,6BvE62OV,CuE32OQ,YAEE,8BvE82OV,CuE52OQ,YAEE,4BvE+2OV,CuE93OQ,KAAgC,sBvEk4OxC,CuEj4OQ,YAEE,0BvEo4OV,CuEl4OQ,YAEE,4BvEq4OV,CuEn4OQ,YAEE,6BvEs4OV,CuEp4OQ,YAEE,2BvEu4OV,CuEt5OQ,KAAgC,qBvE05OxC,CuEz5OQ,YAEE,yBvE45OV,CuE15OQ,YAEE,2BvE65OV,CuE35OQ,YAEE,4BvE85OV,CuE55OQ,YAEE,0BvE+5OV,CuE96OQ,KAAgC,uBvEk7OxC,CuEj7OQ,YAEE,2BvEo7OV,CuEl7OQ,YAEE,6BvEq7OV,CuEn7OQ,YAEE,8BvEs7OV,CuEp7OQ,YAEE,4BvEu7OV,CuEt8OQ,KAAgC,qBvE08OxC,CuEz8OQ,YAEE,yBvE48OV,CuE18OQ,YAEE,2BvE68OV,CuE38OQ,YAEE,4BvE88OV,CuE58OQ,YAEE,0BvE+8OV,CuE99OQ,KAAgC,mBvEk+OxC,CuEj+OQ,YAEE,uBvEo+OV,CuEl+OQ,YAEE,yBvEq+OV,CuEn+OQ,YAEE,0BvEs+OV,CuEp+OQ,YAEE,wBvEu+OV,CuEt/OQ,KAAgC,wBvE0/OxC,CuEz/OQ,YAEE,4BvE4/OV,CuE1/OQ,YAEE,8BvE6/OV,CuE3/OQ,YAEE,+BvE8/OV,CuE5/OQ,YAEE,6BvE+/OV,CuE9gPQ,KAAgC,uBvEkhPxC,CuEjhPQ,YAEE,2BvEohPV,CuElhPQ,YAEE,6BvEqhPV,CuEnhPQ,YAEE,8BvEshPV,CuEphPQ,YAEE,4BvEuhPV,CuEtiPQ,KAAgC,sBvE0iPxC,CuEziPQ,YAEE,0BvE4iPV,CuE1iPQ,YAEE,4BvE6iPV,CuE3iPQ,YAEE,6BvE8iPV,CuE5iPQ,YAEE,2BvE+iPV,CuE9jPQ,KAAgC,wBvEkkPxC,CuEjkPQ,YAEE,4BvEokPV,CuElkPQ,YAEE,8BvEqkPV,CuEnkPQ,YAEE,+BvEskPV,CuEpkPQ,YAEE,6BvEukPV,CuEtlPQ,KAAgC,sBvE0lPxC,CuEzlPQ,YAEE,0BvE4lPV,CuE1lPQ,YAEE,4BvE6lPV,CuE3lPQ,YAEE,6BvE8lPV,CuE5lPQ,YAEE,2BvE+lPV,CuEvlPQ,MAAwB,wBvE2lPhC,CuE1lPQ,cAEE,4BvE6lPV,CuE3lPQ,cAEE,8BvE8lPV,CuE5lPQ,cAEE,+BvE+lPV,CuE7lPQ,cAEE,6BvEgmPV,CuE/mPQ,MAAwB,uBvEmnPhC,CuElnPQ,cAEE,2BvEqnPV,CuEnnPQ,cAEE,6BvEsnPV,CuEpnPQ,cAEE,8BvEunPV,CuErnPQ,cAEE,4BvEwnPV,CuEvoPQ,MAAwB,sBvE2oPhC,CuE1oPQ,cAEE,0BvE6oPV,CuE3oPQ,cAEE,4BvE8oPV,CuE5oPQ,cAEE,6BvE+oPV,CuE7oPQ,cAEE,2BvEgpPV,CuE/pPQ,MAAwB,wBvEmqPhC,CuElqPQ,cAEE,4BvEqqPV,CuEnqPQ,cAEE,8BvEsqPV,CuEpqPQ,cAEE,+BvEuqPV,CuErqPQ,cAEE,6BvEwqPV,CuEvrPQ,MAAwB,sBvE2rPhC,CuE1rPQ,cAEE,0BvE6rPV,CuE3rPQ,cAEE,4BvE8rPV,CuE5rPQ,cAEE,6BvE+rPV,CuE7rPQ,cAEE,2BvEgsPV,CuE1rPI,QAAmB,qBvE8rPvB,CuE7rPI,kBAEE,yBvEgsPN,CuE9rPI,kBAEE,2BvEisPN,CuE/rPI,kBAEE,4BvEksPN,CuEhsPI,kBAEE,0BvEmsPN,Cc5sPI,yByDlDI,QAAgC,kBvEmwPtC,CuElwPM,kBAEE,sBvEowPR,CuElwPM,kBAEE,wBvEowPR,CuElwPM,kBAEE,yBvEowPR,CuElwPM,kBAEE,uBvEowPR,CuEnxPM,QAAgC,uBvEsxPtC,CuErxPM,kBAEE,2BvEuxPR,CuErxPM,kBAEE,6BvEuxPR,CuErxPM,kBAEE,8BvEuxPR,CuErxPM,kBAEE,4BvEuxPR,CuEtyPM,QAAgC,sBvEyyPtC,CuExyPM,kBAEE,0BvE0yPR,CuExyPM,kBAEE,4BvE0yPR,CuExyPM,kBAEE,6BvE0yPR,CuExyPM,kBAEE,2BvE0yPR,CuEzzPM,QAAgC,qBvE4zPtC,CuE3zPM,kBAEE,yBvE6zPR,CuE3zPM,kBAEE,2BvE6zPR,CuE3zPM,kBAEE,4BvE6zPR,CuE3zPM,kBAEE,0BvE6zPR,CuE50PM,QAAgC,uBvE+0PtC,CuE90PM,kBAEE,2BvEg1PR,CuE90PM,kBAEE,6BvEg1PR,CuE90PM,kBAEE,8BvEg1PR,CuE90PM,kBAEE,4BvEg1PR,CuE/1PM,QAAgC,qBvEk2PtC,CuEj2PM,kBAEE,yBvEm2PR,CuEj2PM,kBAEE,2BvEm2PR,CuEj2PM,kBAEE,4BvEm2PR,CuEj2PM,kBAEE,0BvEm2PR,CuEl3PM,QAAgC,mBvEq3PtC,CuEp3PM,kBAEE,uBvEs3PR,CuEp3PM,kBAEE,yBvEs3PR,CuEp3PM,kBAEE,0BvEs3PR,CuEp3PM,kBAEE,wBvEs3PR,CuEr4PM,QAAgC,wBvEw4PtC,CuEv4PM,kBAEE,4BvEy4PR,CuEv4PM,kBAEE,8BvEy4PR,CuEv4PM,kBAEE,+BvEy4PR,CuEv4PM,kBAEE,6BvEy4PR,CuEx5PM,QAAgC,uBvE25PtC,CuE15PM,kBAEE,2BvE45PR,CuE15PM,kBAEE,6BvE45PR,CuE15PM,kBAEE,8BvE45PR,CuE15PM,kBAEE,4BvE45PR,CuE36PM,QAAgC,sBvE86PtC,CuE76PM,kBAEE,0BvE+6PR,CuE76PM,kBAEE,4BvE+6PR,CuE76PM,kBAEE,6BvE+6PR,CuE76PM,kBAEE,2BvE+6PR,CuE97PM,QAAgC,wBvEi8PtC,CuEh8PM,kBAEE,4BvEk8PR,CuEh8PM,kBAEE,8BvEk8PR,CuEh8PM,kBAEE,+BvEk8PR,CuEh8PM,kBAEE,6BvEk8PR,CuEj9PM,QAAgC,sBvEo9PtC,CuEn9PM,kBAEE,0BvEq9PR,CuEn9PM,kBAEE,4BvEq9PR,CuEn9PM,kBAEE,6BvEq9PR,CuEn9PM,kBAEE,2BvEq9PR,CuE78PM,SAAwB,wBvEg9P9B,CuE/8PM,oBAEE,4BvEi9PR,CuE/8PM,oBAEE,8BvEi9PR,CuE/8PM,oBAEE,+BvEi9PR,CuE/8PM,oBAEE,6BvEi9PR,CuEh+PM,SAAwB,uBvEm+P9B,CuEl+PM,oBAEE,2BvEo+PR,CuEl+PM,oBAEE,6BvEo+PR,CuEl+PM,oBAEE,8BvEo+PR,CuEl+PM,oBAEE,4BvEo+PR,CuEn/PM,SAAwB,sBvEs/P9B,CuEr/PM,oBAEE,0BvEu/PR,CuEr/PM,oBAEE,4BvEu/PR,CuEr/PM,oBAEE,6BvEu/PR,CuEr/PM,oBAEE,2BvEu/PR,CuEtgQM,SAAwB,wBvEygQ9B,CuExgQM,oBAEE,4BvE0gQR,CuExgQM,oBAEE,8BvE0gQR,CuExgQM,oBAEE,+BvE0gQR,CuExgQM,oBAEE,6BvE0gQR,CuEzhQM,SAAwB,sBvE4hQ9B,CuE3hQM,oBAEE,0BvE6hQR,CuE3hQM,oBAEE,4BvE6hQR,CuE3hQM,oBAEE,6BvE6hQR,CuE3hQM,oBAEE,2BvE6hQR,CuEvhQE,WAAmB,qBvE0hQrB,CuEzhQE,wBAEE,yBvE2hQJ,CuEzhQE,wBAEE,2BvE2hQJ,CuEzhQE,wBAEE,4BvE2hQJ,CuEzhQE,wBAEE,0BvE2hQJ,CACF,CcriQI,yByDlDI,QAAgC,kBvE4lQtC,CuE3lQM,kBAEE,sBvE6lQR,CuE3lQM,kBAEE,wBvE6lQR,CuE3lQM,kBAEE,yBvE6lQR,CuE3lQM,kBAEE,uBvE6lQR,CuE5mQM,QAAgC,uBvE+mQtC,CuE9mQM,kBAEE,2BvEgnQR,CuE9mQM,kBAEE,6BvEgnQR,CuE9mQM,kBAEE,8BvEgnQR,CuE9mQM,kBAEE,4BvEgnQR,CuE/nQM,QAAgC,sBvEkoQtC,CuEjoQM,kBAEE,0BvEmoQR,CuEjoQM,kBAEE,4BvEmoQR,CuEjoQM,kBAEE,6BvEmoQR,CuEjoQM,kBAEE,2BvEmoQR,CuElpQM,QAAgC,qBvEqpQtC,CuEppQM,kBAEE,yBvEspQR,CuEppQM,kBAEE,2BvEspQR,CuEppQM,kBAEE,4BvEspQR,CuEppQM,kBAEE,0BvEspQR,CuErqQM,QAAgC,uBvEwqQtC,CuEvqQM,kBAEE,2BvEyqQR,CuEvqQM,kBAEE,6BvEyqQR,CuEvqQM,kBAEE,8BvEyqQR,CuEvqQM,kBAEE,4BvEyqQR,CuExrQM,QAAgC,qBvE2rQtC,CuE1rQM,kBAEE,yBvE4rQR,CuE1rQM,kBAEE,2BvE4rQR,CuE1rQM,kBAEE,4BvE4rQR,CuE1rQM,kBAEE,0BvE4rQR,CuE3sQM,QAAgC,mBvE8sQtC,CuE7sQM,kBAEE,uBvE+sQR,CuE7sQM,kBAEE,yBvE+sQR,CuE7sQM,kBAEE,0BvE+sQR,CuE7sQM,kBAEE,wBvE+sQR,CuE9tQM,QAAgC,wBvEiuQtC,CuEhuQM,kBAEE,4BvEkuQR,CuEhuQM,kBAEE,8BvEkuQR,CuEhuQM,kBAEE,+BvEkuQR,CuEhuQM,kBAEE,6BvEkuQR,CuEjvQM,QAAgC,uBvEovQtC,CuEnvQM,kBAEE,2BvEqvQR,CuEnvQM,kBAEE,6BvEqvQR,CuEnvQM,kBAEE,8BvEqvQR,CuEnvQM,kBAEE,4BvEqvQR,CuEpwQM,QAAgC,sBvEuwQtC,CuEtwQM,kBAEE,0BvEwwQR,CuEtwQM,kBAEE,4BvEwwQR,CuEtwQM,kBAEE,6BvEwwQR,CuEtwQM,kBAEE,2BvEwwQR,CuEvxQM,QAAgC,wBvE0xQtC,CuEzxQM,kBAEE,4BvE2xQR,CuEzxQM,kBAEE,8BvE2xQR,CuEzxQM,kBAEE,+BvE2xQR,CuEzxQM,kBAEE,6BvE2xQR,CuE1yQM,QAAgC,sBvE6yQtC,CuE5yQM,kBAEE,0BvE8yQR,CuE5yQM,kBAEE,4BvE8yQR,CuE5yQM,kBAEE,6BvE8yQR,CuE5yQM,kBAEE,2BvE8yQR,CuEtyQM,SAAwB,wBvEyyQ9B,CuExyQM,oBAEE,4BvE0yQR,CuExyQM,oBAEE,8BvE0yQR,CuExyQM,oBAEE,+BvE0yQR,CuExyQM,oBAEE,6BvE0yQR,CuEzzQM,SAAwB,uBvE4zQ9B,CuE3zQM,oBAEE,2BvE6zQR,CuE3zQM,oBAEE,6BvE6zQR,CuE3zQM,oBAEE,8BvE6zQR,CuE3zQM,oBAEE,4BvE6zQR,CuE50QM,SAAwB,sBvE+0Q9B,CuE90QM,oBAEE,0BvEg1QR,CuE90QM,oBAEE,4BvEg1QR,CuE90QM,oBAEE,6BvEg1QR,CuE90QM,oBAEE,2BvEg1QR,CuE/1QM,SAAwB,wBvEk2Q9B,CuEj2QM,oBAEE,4BvEm2QR,CuEj2QM,oBAEE,8BvEm2QR,CuEj2QM,oBAEE,+BvEm2QR,CuEj2QM,oBAEE,6BvEm2QR,CuEl3QM,SAAwB,sBvEq3Q9B,CuEp3QM,oBAEE,0BvEs3QR,CuEp3QM,oBAEE,4BvEs3QR,CuEp3QM,oBAEE,6BvEs3QR,CuEp3QM,oBAEE,2BvEs3QR,CuEh3QE,WAAmB,qBvEm3QrB,CuEl3QE,wBAEE,yBvEo3QJ,CuEl3QE,wBAEE,2BvEo3QJ,CuEl3QE,wBAEE,4BvEo3QJ,CuEl3QE,wBAEE,0BvEo3QJ,CACF,Cc93QI,yByDlDI,QAAgC,kBvEq7QtC,CuEp7QM,kBAEE,sBvEs7QR,CuEp7QM,kBAEE,wBvEs7QR,CuEp7QM,kBAEE,yBvEs7QR,CuEp7QM,kBAEE,uBvEs7QR,CuEr8QM,QAAgC,uBvEw8QtC,CuEv8QM,kBAEE,2BvEy8QR,CuEv8QM,kBAEE,6BvEy8QR,CuEv8QM,kBAEE,8BvEy8QR,CuEv8QM,kBAEE,4BvEy8QR,CuEx9QM,QAAgC,sBvE29QtC,CuE19QM,kBAEE,0BvE49QR,CuE19QM,kBAEE,4BvE49QR,CuE19QM,kBAEE,6BvE49QR,CuE19QM,kBAEE,2BvE49QR,CuE3+QM,QAAgC,qBvE8+QtC,CuE7+QM,kBAEE,yBvE++QR,CuE7+QM,kBAEE,2BvE++QR,CuE7+QM,kBAEE,4BvE++QR,CuE7+QM,kBAEE,0BvE++QR,CuE9/QM,QAAgC,uBvEigRtC,CuEhgRM,kBAEE,2BvEkgRR,CuEhgRM,kBAEE,6BvEkgRR,CuEhgRM,kBAEE,8BvEkgRR,CuEhgRM,kBAEE,4BvEkgRR,CuEjhRM,QAAgC,qBvEohRtC,CuEnhRM,kBAEE,yBvEqhRR,CuEnhRM,kBAEE,2BvEqhRR,CuEnhRM,kBAEE,4BvEqhRR,CuEnhRM,kBAEE,0BvEqhRR,CuEpiRM,QAAgC,mBvEuiRtC,CuEtiRM,kBAEE,uBvEwiRR,CuEtiRM,kBAEE,yBvEwiRR,CuEtiRM,kBAEE,0BvEwiRR,CuEtiRM,kBAEE,wBvEwiRR,CuEvjRM,QAAgC,wBvE0jRtC,CuEzjRM,kBAEE,4BvE2jRR,CuEzjRM,kBAEE,8BvE2jRR,CuEzjRM,kBAEE,+BvE2jRR,CuEzjRM,kBAEE,6BvE2jRR,CuE1kRM,QAAgC,uBvE6kRtC,CuE5kRM,kBAEE,2BvE8kRR,CuE5kRM,kBAEE,6BvE8kRR,CuE5kRM,kBAEE,8BvE8kRR,CuE5kRM,kBAEE,4BvE8kRR,CuE7lRM,QAAgC,sBvEgmRtC,CuE/lRM,kBAEE,0BvEimRR,CuE/lRM,kBAEE,4BvEimRR,CuE/lRM,kBAEE,6BvEimRR,CuE/lRM,kBAEE,2BvEimRR,CuEhnRM,QAAgC,wBvEmnRtC,CuElnRM,kBAEE,4BvEonRR,CuElnRM,kBAEE,8BvEonRR,CuElnRM,kBAEE,+BvEonRR,CuElnRM,kBAEE,6BvEonRR,CuEnoRM,QAAgC,sBvEsoRtC,CuEroRM,kBAEE,0BvEuoRR,CuEroRM,kBAEE,4BvEuoRR,CuEroRM,kBAEE,6BvEuoRR,CuEroRM,kBAEE,2BvEuoRR,CuE/nRM,SAAwB,wBvEkoR9B,CuEjoRM,oBAEE,4BvEmoRR,CuEjoRM,oBAEE,8BvEmoRR,CuEjoRM,oBAEE,+BvEmoRR,CuEjoRM,oBAEE,6BvEmoRR,CuElpRM,SAAwB,uBvEqpR9B,CuEppRM,oBAEE,2BvEspRR,CuEppRM,oBAEE,6BvEspRR,CuEppRM,oBAEE,8BvEspRR,CuEppRM,oBAEE,4BvEspRR,CuErqRM,SAAwB,sBvEwqR9B,CuEvqRM,oBAEE,0BvEyqRR,CuEvqRM,oBAEE,4BvEyqRR,CuEvqRM,oBAEE,6BvEyqRR,CuEvqRM,oBAEE,2BvEyqRR,CuExrRM,SAAwB,wBvE2rR9B,CuE1rRM,oBAEE,4BvE4rRR,CuE1rRM,oBAEE,8BvE4rRR,CuE1rRM,oBAEE,+BvE4rRR,CuE1rRM,oBAEE,6BvE4rRR,CuE3sRM,SAAwB,sBvE8sR9B,CuE7sRM,oBAEE,0BvE+sRR,CuE7sRM,oBAEE,4BvE+sRR,CuE7sRM,oBAEE,6BvE+sRR,CuE7sRM,oBAEE,2BvE+sRR,CuEzsRE,WAAmB,qBvE4sRrB,CuE3sRE,wBAEE,yBvE6sRJ,CuE3sRE,wBAEE,2BvE6sRJ,CuE3sRE,wBAEE,4BvE6sRJ,CuE3sRE,wBAEE,0BvE6sRJ,CACF,CcvtRI,0ByDlDI,QAAgC,kBvE8wRtC,CuE7wRM,kBAEE,sBvE+wRR,CuE7wRM,kBAEE,wBvE+wRR,CuE7wRM,kBAEE,yBvE+wRR,CuE7wRM,kBAEE,uBvE+wRR,CuE9xRM,QAAgC,uBvEiyRtC,CuEhyRM,kBAEE,2BvEkyRR,CuEhyRM,kBAEE,6BvEkyRR,CuEhyRM,kBAEE,8BvEkyRR,CuEhyRM,kBAEE,4BvEkyRR,CuEjzRM,QAAgC,sBvEozRtC,CuEnzRM,kBAEE,0BvEqzRR,CuEnzRM,kBAEE,4BvEqzRR,CuEnzRM,kBAEE,6BvEqzRR,CuEnzRM,kBAEE,2BvEqzRR,CuEp0RM,QAAgC,qBvEu0RtC,CuEt0RM,kBAEE,yBvEw0RR,CuEt0RM,kBAEE,2BvEw0RR,CuEt0RM,kBAEE,4BvEw0RR,CuEt0RM,kBAEE,0BvEw0RR,CuEv1RM,QAAgC,uBvE01RtC,CuEz1RM,kBAEE,2BvE21RR,CuEz1RM,kBAEE,6BvE21RR,CuEz1RM,kBAEE,8BvE21RR,CuEz1RM,kBAEE,4BvE21RR,CuE12RM,QAAgC,qBvE62RtC,CuE52RM,kBAEE,yBvE82RR,CuE52RM,kBAEE,2BvE82RR,CuE52RM,kBAEE,4BvE82RR,CuE52RM,kBAEE,0BvE82RR,CuE73RM,QAAgC,mBvEg4RtC,CuE/3RM,kBAEE,uBvEi4RR,CuE/3RM,kBAEE,yBvEi4RR,CuE/3RM,kBAEE,0BvEi4RR,CuE/3RM,kBAEE,wBvEi4RR,CuEh5RM,QAAgC,wBvEm5RtC,CuEl5RM,kBAEE,4BvEo5RR,CuEl5RM,kBAEE,8BvEo5RR,CuEl5RM,kBAEE,+BvEo5RR,CuEl5RM,kBAEE,6BvEo5RR,CuEn6RM,QAAgC,uBvEs6RtC,CuEr6RM,kBAEE,2BvEu6RR,CuEr6RM,kBAEE,6BvEu6RR,CuEr6RM,kBAEE,8BvEu6RR,CuEr6RM,kBAEE,4BvEu6RR,CuEt7RM,QAAgC,sBvEy7RtC,CuEx7RM,kBAEE,0BvE07RR,CuEx7RM,kBAEE,4BvE07RR,CuEx7RM,kBAEE,6BvE07RR,CuEx7RM,kBAEE,2BvE07RR,CuEz8RM,QAAgC,wBvE48RtC,CuE38RM,kBAEE,4BvE68RR,CuE38RM,kBAEE,8BvE68RR,CuE38RM,kBAEE,+BvE68RR,CuE38RM,kBAEE,6BvE68RR,CuE59RM,QAAgC,sBvE+9RtC,CuE99RM,kBAEE,0BvEg+RR,CuE99RM,kBAEE,4BvEg+RR,CuE99RM,kBAEE,6BvEg+RR,CuE99RM,kBAEE,2BvEg+RR,CuEx9RM,SAAwB,wBvE29R9B,CuE19RM,oBAEE,4BvE49RR,CuE19RM,oBAEE,8BvE49RR,CuE19RM,oBAEE,+BvE49RR,CuE19RM,oBAEE,6BvE49RR,CuE3+RM,SAAwB,uBvE8+R9B,CuE7+RM,oBAEE,2BvE++RR,CuE7+RM,oBAEE,6BvE++RR,CuE7+RM,oBAEE,8BvE++RR,CuE7+RM,oBAEE,4BvE++RR,CuE9/RM,SAAwB,sBvEigS9B,CuEhgSM,oBAEE,0BvEkgSR,CuEhgSM,oBAEE,4BvEkgSR,CuEhgSM,oBAEE,6BvEkgSR,CuEhgSM,oBAEE,2BvEkgSR,CuEjhSM,SAAwB,wBvEohS9B,CuEnhSM,oBAEE,4BvEqhSR,CuEnhSM,oBAEE,8BvEqhSR,CuEnhSM,oBAEE,+BvEqhSR,CuEnhSM,oBAEE,6BvEqhSR,CuEpiSM,SAAwB,sBvEuiS9B,CuEtiSM,oBAEE,0BvEwiSR,CuEtiSM,oBAEE,4BvEwiSR,CuEtiSM,oBAEE,6BvEwiSR,CuEtiSM,oBAEE,2BvEwiSR,CuEliSE,WAAmB,qBvEqiSrB,CuEpiSE,wBAEE,yBvEsiSJ,CuEpiSE,wBAEE,2BvEsiSJ,CuEpiSE,wBAEE,4BvEsiSJ,CuEpiSE,wBAEE,0BvEsiSJ,CACF,CwExmSA,sBAEI,iBAAkB,CAClB,KAAM,CACN,OAAQ,CACR,QAAS,CACT,MAAO,CACP,SAAU,CAEV,mBAAoB,CACpB,UAAW,CAEX,4BxEwmSJ,CyElnSA,gBAAkB,oGzEsnSlB,CyElnSA,cAAiB,4BzEsnSjB,CyErnSA,WAAiB,4BzEynSjB,CyExnSA,aAAiB,4BzE4nSjB,CyE3nSA,eCTE,eAAgB,CAChB,sBAAuB,CACvB,kB1EwoSF,CyEznSI,WAAwB,yBzE6nS5B,CyE5nSI,YAAwB,0BzEgoS5B,CyE/nSI,aAAwB,2BzEmoS5B,Cc9lSI,yB2DvCA,cAAwB,yBzE0oS1B,CyEzoSE,eAAwB,0BzE4oS1B,CyE3oSE,gBAAwB,2BzE8oS1B,CACF,Cc1mSI,yB2DvCA,cAAwB,yBzEspS1B,CyErpSE,eAAwB,0BzEwpS1B,CyEvpSE,gBAAwB,2BzE0pS1B,CACF,CctnSI,yB2DvCA,cAAwB,yBzEkqS1B,CyEjqSE,eAAwB,0BzEoqS1B,CyEnqSE,gBAAwB,2BzEsqS1B,CACF,CcloSI,0B2DvCA,cAAwB,yBzE8qS1B,CyE7qSE,eAAwB,0BzEgrS1B,CyE/qSE,gBAAwB,2BzEkrS1B,CACF,CyE7qSA,gBAAmB,kCzEirSnB,CyEhrSA,gBAAmB,kCzEorSnB,CyEnrSA,iBAAmB,mCzEurSnB,CyEnrSA,mBAAuB,yBzEurSvB,CyEtrSA,qBAAuB,6BzE0rSvB,CyEzrSA,oBAAuB,yBzE6rSvB,CyE5rSA,kBAAuB,yBzEgsSvB,CyE/rSA,oBAAuB,4BzEmsSvB,CyElsSA,aAAuB,2BzEssSvB,CyElsSA,YAAc,oBzEssSd,C2E7uSE,cACE,uB3EgvSJ,CKtuSE,0CsELM,uB3E+uSR,C2ErvSE,gBACE,uB3EwvSJ,CK9uSE,8CsELM,uB3EuvSR,C2E7vSE,cACE,uB3EgwSJ,CKtvSE,0CsELM,uB3E+vSR,C2ErwSE,WACE,uB3EwwSJ,CK9vSE,oCsELM,uB3EuwSR,C2E7wSE,cACE,uB3EgxSJ,CKtwSE,0CsELM,uB3E+wSR,C2ErxSE,aACE,uB3EwxSJ,CK9wSE,wCsELM,uB3EuxSR,C2E7xSE,YACE,uB3EgySJ,CKtxSE,sCsELM,uB3E+xSR,C2ErySE,WACE,uB3EwySJ,CK9xSE,oCsELM,uB3EuySR,CyEhwSA,WAAa,uBzEowSb,CyEnwSA,YAAc,uBzEuwSd,CyErwSA,eAAiB,8BzEywSjB,Cy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","file":"2.e7ae4ec8.chunk.css","sourcesContent":["body.lb-disable-scrolling {\n overflow: hidden;\n}\n\n.lightboxOverlay {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 9999;\n background-color: black;\n filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);\n opacity: 0.8;\n display: none;\n}\n\n.lightbox {\n position: absolute;\n left: 0;\n width: 100%;\n z-index: 10000;\n text-align: center;\n line-height: 0;\n font-weight: normal;\n outline: none;\n}\n\n.lightbox .lb-image {\n display: block;\n height: auto;\n max-width: inherit;\n max-height: none;\n border-radius: 3px;\n\n /* Image border */\n border: 4px solid white;\n}\n\n.lightbox a img {\n border: none;\n}\n\n.lb-outerContainer {\n position: relative;\n *zoom: 1;\n width: 250px;\n height: 250px;\n margin: 0 auto;\n border-radius: 4px;\n\n /* Background color behind image.\n This is visible during transitions. */\n background-color: white;\n}\n\n.lb-outerContainer:after {\n content: \"\";\n display: table;\n clear: both;\n}\n\n.lb-loader {\n position: absolute;\n top: 43%;\n left: 0;\n height: 25%;\n width: 100%;\n text-align: center;\n line-height: 0;\n}\n\n.lb-cancel {\n display: block;\n width: 32px;\n height: 32px;\n margin: 0 auto;\n background: url(../images/loading.gif) no-repeat;\n}\n\n.lb-nav {\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n width: 100%;\n z-index: 10;\n}\n\n.lb-container > .nav {\n left: 0;\n}\n\n.lb-nav a {\n outline: none;\n background-image: url('data:image/gif;base64,R0lGODlhAQABAPAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==');\n}\n\n.lb-prev, .lb-next {\n height: 100%;\n cursor: pointer;\n display: block;\n}\n\n.lb-nav a.lb-prev {\n width: 34%;\n left: 0;\n float: left;\n background: url(../images/prev.png) left 48% no-repeat;\n filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);\n opacity: 0;\n -webkit-transition: opacity 0.6s;\n -moz-transition: opacity 0.6s;\n -o-transition: opacity 0.6s;\n transition: opacity 0.6s;\n}\n\n.lb-nav a.lb-prev:hover {\n filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);\n opacity: 1;\n}\n\n.lb-nav a.lb-next {\n width: 64%;\n right: 0;\n float: right;\n background: url(../images/next.png) right 48% no-repeat;\n filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);\n opacity: 0;\n -webkit-transition: opacity 0.6s;\n -moz-transition: opacity 0.6s;\n -o-transition: opacity 0.6s;\n transition: opacity 0.6s;\n}\n\n.lb-nav a.lb-next:hover {\n filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);\n opacity: 1;\n}\n\n.lb-dataContainer {\n margin: 0 auto;\n padding-top: 5px;\n *zoom: 1;\n width: 100%;\n border-bottom-left-radius: 4px;\n border-bottom-right-radius: 4px;\n}\n\n.lb-dataContainer:after {\n content: \"\";\n display: table;\n clear: both;\n}\n\n.lb-data {\n padding: 0 4px;\n color: #ccc;\n}\n\n.lb-data .lb-details {\n width: 85%;\n float: left;\n text-align: left;\n line-height: 1.1em;\n}\n\n.lb-data .lb-caption {\n font-size: 13px;\n font-weight: bold;\n line-height: 1em;\n}\n\n.lb-data .lb-caption a {\n color: #4ae;\n}\n\n.lb-data .lb-number {\n display: block;\n clear: left;\n padding-bottom: 1em;\n font-size: 12px;\n color: #999999;\n}\n\n.lb-data .lb-close {\n display: block;\n float: right;\n width: 30px;\n height: 30px;\n background: url(../images/close.png) top right no-repeat;\n text-align: right;\n outline: none;\n filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=70);\n opacity: 0.7;\n -webkit-transition: opacity 0.2s;\n -moz-transition: opacity 0.2s;\n -o-transition: opacity 0.2s;\n transition: opacity 0.2s;\n}\n\n.lb-data .lb-close:hover {\n cursor: pointer;\n filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);\n opacity: 1;\n}\n","body.lb-disable-scrolling {\n overflow: hidden;\n}\n\n.lightboxOverlay {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 9999;\n background-color: black;\n filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);\n opacity: 0.8;\n display: none;\n}\n\n.lightbox {\n position: absolute;\n left: 0;\n width: 100%;\n z-index: 10000;\n text-align: center;\n line-height: 0;\n font-weight: normal;\n outline: none;\n}\n\n.lightbox .lb-image {\n display: block;\n height: auto;\n max-width: inherit;\n max-height: none;\n border-radius: 3px;\n\n /* Image border */\n border: 4px solid white;\n}\n\n.lightbox a img {\n border: none;\n}\n\n.lb-outerContainer {\n position: relative;\n *zoom: 1;\n width: 250px;\n height: 250px;\n margin: 0 auto;\n border-radius: 4px;\n\n /* Background color behind image.\n This is visible during transitions. */\n background-color: white;\n}\n\n.lb-outerContainer:after {\n content: \"\";\n display: table;\n clear: both;\n}\n\n.lb-loader {\n position: absolute;\n top: 43%;\n left: 0;\n height: 25%;\n width: 100%;\n text-align: center;\n line-height: 0;\n}\n\n.lb-cancel {\n display: block;\n width: 32px;\n height: 32px;\n margin: 0 auto;\n background: url(data:image/gif;base64,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) no-repeat;\n}\n\n.lb-nav {\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n width: 100%;\n z-index: 10;\n}\n\n.lb-container > .nav {\n left: 0;\n}\n\n.lb-nav a {\n outline: none;\n background-image: url('data:image/gif;base64,R0lGODlhAQABAPAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==');\n}\n\n.lb-prev, .lb-next {\n height: 100%;\n cursor: pointer;\n display: block;\n}\n\n.lb-nav a.lb-prev {\n width: 34%;\n left: 0;\n float: left;\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAtCAYAAADsvzj/AAAFF0lEQVR4Ac2ZW0xcVRSGPTNnhlPKcCsUAeeChkEVxhutDQwzMANaqamNWgpaH+yDIaZp1cRHbgH0gTsxkmDCI/hiRAqgD5qYRgKQ8II6TE00wfgGAcIdKeM/ydrNZIezxxg9m518gRxWmn6s9a9zhvNQJBL5T/gfjokwA5Uw0zWFeHBOugiTsAArfSWZky+iABVowAZSwRkiDSTRz1iHlJMmogATsIDTIAPYgRs8SeTTtXSQSLVKFNkivIQKksDDJFCsquqLmqZdAa/i+yCuPQ1cJHOKjdpJEWGdsIFs8BQoy83NvTEzMzO3t7f318HBweHc3Nxdj8dznWQeIWmpIryENUaiCPgdDsfN+fn5XyLcWV5eDlmt1gBqHgOpbAHIFmESySAHeECF0+m8hd/+vcgxZ3d39wBj9grqCkA6iaiyRBRunJhEpcvl+nBhYeG3iM7Z2dnZgkg1ZSgNqLI6wgebSVTZ7faPlpaW/tSTWF9f36ivr+9AbQkF3iZRhAs2dSInJ+eDUCj0h0Biq7S09BPUBkEhyAKJssKusE6QRCGoQLDfn56eDulJrK6ubgeDwS7UXgTPAztIkXUfUbhxKgLlyMRtBPtXPYm1tbXdqqoqJnEOOGhbJQCTkSJ8sJlEMNoJrFhdicPDw6PKyspe1FaD85yE2YBnLUGwSSIrK+s2bnZLehIbGxubfr+/B7WXSMJJ42QlCcVAES7YJJGdnR0dp7BgnLZKSko6qBPngIvrBEkYIKIT7PLoOKET4TjB7kbty+A8SaRxmcAxQEQn2BUI9q3Z2dl7gk7sINhRiZeoE87jMmGECB/s3JhgR8dJV2Jzc3Pb5/N1UieKKdgsEyaAY5wIk2Dj5GHBRifCgmBHb3adLBNsO3HBNkxEAWZwCmSCx4EPwb4ZJ9jbCHYXSRQDpyDYhomoNFIOUIRMvINO/KQnsbKyshMIBD5D7RVwgQWblzBahD2Sp5jN5jzM+9uLi4s/60mEw+FNbKcvUH8DVIECcAZoXLCliaRaLBbX8PBwb0RwRkZGfkftx+BdUM4+KInDbdxoWUCKoih5CQkJgYGBgS/xs6PjRPb394+ampp+RP174CIoBGcpYypQZIqYY+4dz4DLvb29Y6LONDY2fou6OuAF+SCDZCgj8kQSQDqNihfU9vX1TYlkGhoa7qDuDVBKMpQVrjMG30fYCs6gAHuRmdqurq5JkUxLS8sEaq+CMq4zJGOgCB2Fk8kHJSaTqaazs3Pi2MzQaWtrm0RtDfDFyCQyGUNFOJlEkMlkwLWenp5vRDKtra1TNGYsM5mcjKEifGeYjBfUQUaYmebm5omYzLjFC8C4zyNqTGfcNDZ1/2ABjKHudZLXkTFARJAZN/CqqnqNMqN7Ojo6vqMF4ONkVFmvFUQLQNiZ7u7u76PZAn6S4TJjrIhoAdT+iwXAdQYYKCJaAG/iPhNvAYyj7jXwAngUpAGrDBF+ATCZAuBXFOX60NDQ3TiPM1/hyfoyPf7kgNNSXyvwmSGZMk3T3hocHPwhzlPzJLLFnpZT5PztV5wZNyilbTZFmTnZrxU4GZWXATV4ap4kmeNELlEticjsSHyZq/39/V/j374P2Lk/Pj5+BznxUuDlj1acJ4B8cAH/4er29vbPR0dH58fGxubx/ac2my1Ab3iz5Yc9/gJIB05QCJ4Fz9FXD3gC5HIfi+WKCGQ0GpuzwA7yCDtdS+b/SCFfRPwaQqPxSSaS6JrlwUjR+RtEvCM0ct4sLQAAAABJRU5ErkJggg==) left 48% no-repeat;\n filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);\n opacity: 0;\n transition: opacity 0.6s;\n}\n\n.lb-nav a.lb-prev:hover {\n filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);\n opacity: 1;\n}\n\n.lb-nav a.lb-next {\n width: 64%;\n right: 0;\n float: right;\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAtCAYAAADsvzj/AAAFDUlEQVR4Ac2ZS0xcVRjHvTN3hisw0GIRZ3AeLWHQWqdVsRqgA86AUmpqoy20Whd2YYhprJq45BVAF7yJkQQTluDGiEhBF5qYRsIjYYMKQxNNMO4gQHgjZfxP8pF8ufEe0qQ5pyf5BTKcWfzyff/vnHt5xLQ0wgbsQCfswEY80BWPxx8I5sUlHMBJP0nm4RfRWAUMkAqOgseII8AFDNqjPYwiGuEAySADeEEuOEkE6bNjIIX22riQchHWSo+SRACc1nU9ahjGG+ASfn8Vn+WT0BNUMV0so04kFTwJTodCoeuTk5N3dnd397a3t/8dHx+fzM7OvoG/nQPPADdwscqoF2HBPgJynE5nZGFhYTZuWlNTU3/4fL6b2FMMnmUyTpJRLqKTSAbIQyu9vrW1tRv/n4Uqzfv9/g+x7xUQAh6QxmVUV0SnKRWESMXm5uZ63GJNT0//GQgEPsHeUibD20xTLeKioBdUV1e3rKysrFrJzM3N/eP1ej/F3jImIxgAcsOeDLLAKRAtLCz8HDKWlZmdnf3b4/F8zCojGADyz5F04AUvgPJoNNq2tLS0YSUzNjY2iwHwEWXmFHCzymiqRGwgiaaXD7wIysvKytqWl5e3rGQwAO4iM7ewt4SmmYfLqLpr2U0yZ0FFaWlp597e3r6VDEbzXapMlGQEA0COiEYyTmozP8lcKC4u7lhdXV2zksGhOZeVlXWLy5gHgDwRJsMqE6A2qygoKGhBm60L2izmdruZjGkAyBShxTNzlGTOgvMYAO2iAYDKxKjNSgQDQI6IRWb8VJnXMADaUZlNK5mJiYl5DAC6AQgGgCwRWjaWGR/IB+fD4XDr2trahqDN5lEZ3mbZ5gEgW4QPAD6aK3BotmIArAsqE2MDIMTajGTkinAZ3mb5NAAS58zGIQPgJvaGwVMgk5597ECTLcJl+AB4GVyKRCJfLi4uijLzGzLzHrWYj1pMVyXCB4BBz/J5oAzcwDT7OhaLWZ4zMzMzvyNX79rt9uOUNyewqRSxsbzk0Jh9H3w2MDDwV1yw+vv7Ox0OR4C+q1REAzr1+ON0TpSDD+rq6n7d2dmxusbs9/T0fJOUlBTRNO2gIg6lGSGJYyAXFIFrtbW1P4oq0dnZOYR9F8EZdqaoCDtVgrJBEoXgck1Nzfciia6urlHsu0rSOSADJEkXYRK8EufAlYaGhtsiiba2thFk4kAij75Po1fiOcIkkplEGFQ2NTWNCBz2W1tbb9tstkrsLaDvcQlN5hWFS2SyTFxubGwcFUl0dHT8gH1VTCITJHMJWSLmYAcPMlFfXy9sJ0gkMnGNpEnCXAkJIhYSReAtBHvosGCTRBgEWSV0qc8jPNhMIgyutLS0/CSSSGRC1/Uqkg5aZUKGiDkTQVAMqtrb238+RGJUHGyZb1F4Je4/2FfFwZYr4qRb7QnwEngTwR4+5JxIZOJtcbDlv2lMAR5wBjfUi7h2fCuS6Ovru6Np2nVqvzwmQcFW9+43HeSg10twix0RSfT29v5iGMY7dMLniTOh+N8KghN7lKZTIQgKMiG/IkwkCJELFiL7uMWOYE+lWUL8elRNa51APoqGh4cTN9p7TOJed3f3d4nz5P4l1ITdDU66XK5Ic3PzF0NDQ1ODg4NT+P0rCFbQM3qu4MRWLsIfX7PB0yAEngPP089TwA8yBMFWKmJ+qZBGj7FecJzw0mfpwBBLqBexseAbIBWkESnAEPybQLnIf4JfIzSb+FymAAAAAElFTkSuQmCC) right 48% no-repeat;\n filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);\n opacity: 0;\n transition: opacity 0.6s;\n}\n\n.lb-nav a.lb-next:hover {\n filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);\n opacity: 1;\n}\n\n.lb-dataContainer {\n margin: 0 auto;\n padding-top: 5px;\n *zoom: 1;\n width: 100%;\n border-bottom-left-radius: 4px;\n border-bottom-right-radius: 4px;\n}\n\n.lb-dataContainer:after {\n content: \"\";\n display: table;\n clear: both;\n}\n\n.lb-data {\n padding: 0 4px;\n color: #ccc;\n}\n\n.lb-data .lb-details {\n width: 85%;\n float: left;\n text-align: left;\n line-height: 1.1em;\n}\n\n.lb-data .lb-caption {\n font-size: 13px;\n font-weight: bold;\n line-height: 1em;\n}\n\n.lb-data .lb-caption a {\n color: #4ae;\n}\n\n.lb-data .lb-number {\n display: block;\n clear: left;\n padding-bottom: 1em;\n font-size: 12px;\n color: #999999;\n}\n\n.lb-data .lb-close {\n display: block;\n float: right;\n width: 30px;\n height: 30px;\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABsAAAAbCAMAAAC6CgRnAAAAPFBMVEX///8AAAD9/f2CgoKAgIAAAAAAAAAAAABLS0sAAAAAAACqqqqqqqq6urpKSkpISEgAAAC7u7u5ubn////zbsMcAAAAE3RSTlMASv6rqwAWS5YMC7/AyZWVFcrJCYaKfAAAAHhJREFUeF590kkOgCAQRFEaFVGc+/53FYmbz6JqBbyQMFSYuoQuV+iTflnstI7ssLXRvMWRaEMs84e2uVckuZe6knL0hiSPObXhj6ChzoEkIolIIpKIO4joICAIeDd7QGIfCCjOKe9HEk8mnxpIAup/F31RPZP9fAG3IAyBSJe0igAAAABJRU5ErkJggg==) top right no-repeat;\n text-align: right;\n outline: none;\n filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=70);\n opacity: 0.7;\n transition: opacity 0.2s;\n}\n\n.lb-data .lb-close:hover {\n cursor: pointer;\n filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);\n opacity: 1;\n}\n\n/*!\n * Bootstrap v4.5.2 (https://getbootstrap.com/)\n * Copyright 2011-2020 The Bootstrap Authors\n * Copyright 2011-2020 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n:root {\n --blue: #007bff;\n --indigo: #6610f2;\n --purple: #6f42c1;\n --pink: #e83e8c;\n --red: #dc3545;\n --orange: #fd7e14;\n --yellow: #ffc107;\n --green: #28a745;\n --teal: #20c997;\n --cyan: #17a2b8;\n --white: #fff;\n --gray: #6c757d;\n --gray-dark: #343a40;\n --primary: #007bff;\n --secondary: #6c757d;\n --success: #28a745;\n --info: #17a2b8;\n --warning: #ffc107;\n --danger: #dc3545;\n --light: #f8f9fa;\n --dark: #343a40;\n --breakpoint-xs: 0;\n --breakpoint-sm: 576px;\n --breakpoint-md: 768px;\n --breakpoint-lg: 992px;\n --breakpoint-xl: 1200px;\n --font-family-sans-serif: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\nhtml {\n font-family: sans-serif;\n line-height: 1.15;\n -webkit-text-size-adjust: 100%;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\narticle, aside, figcaption, figure, footer, header, hgroup, main, nav, section {\n display: block;\n}\n\nbody {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #212529;\n text-align: left;\n background-color: #fff;\n}\n\n[tabindex=\"-1\"]:focus:not(:focus-visible) {\n outline: 0 !important;\n}\n\nhr {\n box-sizing: content-box;\n height: 0;\n overflow: visible;\n}\n\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: 0.5rem;\n}\n\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nabbr[title],\nabbr[data-original-title] {\n text-decoration: underline;\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n cursor: help;\n border-bottom: 0;\n -webkit-text-decoration-skip-ink: none;\n text-decoration-skip-ink: none;\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: 700;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0;\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\nb,\nstrong {\n font-weight: bolder;\n}\n\nsmall {\n font-size: 80%;\n}\n\nsub,\nsup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -.25em;\n}\n\nsup {\n top: -.5em;\n}\n\na {\n color: #007bff;\n text-decoration: none;\n background-color: transparent;\n}\n\na:hover {\n color: #0056b3;\n text-decoration: underline;\n}\n\na:not([href]):not([class]) {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([class]):hover {\n color: inherit;\n text-decoration: none;\n}\n\npre,\ncode,\nkbd,\nsamp {\n font-family: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n font-size: 1em;\n}\n\npre {\n margin-top: 0;\n margin-bottom: 1rem;\n overflow: auto;\n -ms-overflow-style: scrollbar;\n}\n\nfigure {\n margin: 0 0 1rem;\n}\n\nimg {\n vertical-align: middle;\n border-style: none;\n}\n\nsvg {\n overflow: hidden;\n vertical-align: middle;\n}\n\ntable {\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n color: #6c757d;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n text-align: inherit;\n}\n\nlabel {\n display: inline-block;\n margin-bottom: 0.5rem;\n}\n\nbutton {\n border-radius: 0;\n}\n\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\nbutton,\ninput {\n overflow: visible;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\n[role=\"button\"] {\n cursor: pointer;\n}\n\nselect {\n word-wrap: normal;\n}\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\nbutton:not(:disabled),\n[type=\"button\"]:not(:disabled),\n[type=\"reset\"]:not(:disabled),\n[type=\"submit\"]:not(:disabled) {\n cursor: pointer;\n}\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n box-sizing: border-box;\n padding: 0;\n}\n\ntextarea {\n overflow: auto;\n resize: vertical;\n}\n\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n max-width: 100%;\n padding: 0;\n margin-bottom: .5rem;\n font-size: 1.5rem;\n line-height: inherit;\n color: inherit;\n white-space: normal;\n}\n\nprogress {\n vertical-align: baseline;\n}\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type=\"search\"] {\n outline-offset: -2px;\n -webkit-appearance: none;\n}\n\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n::-webkit-file-upload-button {\n font: inherit;\n -webkit-appearance: button;\n}\n\noutput {\n display: inline-block;\n}\n\nsummary {\n display: list-item;\n cursor: pointer;\n}\n\ntemplate {\n display: none;\n}\n\n[hidden] {\n display: none !important;\n}\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n margin-bottom: 0.5rem;\n font-weight: 500;\n line-height: 1.2;\n}\n\nh1, .h1 {\n font-size: 2.5rem;\n}\n\nh2, .h2 {\n font-size: 2rem;\n}\n\nh3, .h3 {\n font-size: 1.75rem;\n}\n\nh4, .h4 {\n font-size: 1.5rem;\n}\n\nh5, .h5 {\n font-size: 1.25rem;\n}\n\nh6, .h6 {\n font-size: 1rem;\n}\n\n.lead {\n font-size: 1.25rem;\n font-weight: 300;\n}\n\n.display-1 {\n font-size: 6rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\n.display-2 {\n font-size: 5.5rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\n.display-3 {\n font-size: 4.5rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\n.display-4 {\n font-size: 3.5rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\nhr {\n margin-top: 1rem;\n margin-bottom: 1rem;\n border: 0;\n border-top: 1px solid rgba(0, 0, 0, 0.1);\n}\n\nsmall,\n.small {\n font-size: 80%;\n font-weight: 400;\n}\n\nmark,\n.mark {\n padding: 0.2em;\n background-color: #fcf8e3;\n}\n\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n\n.list-inline {\n padding-left: 0;\n list-style: none;\n}\n\n.list-inline-item {\n display: inline-block;\n}\n\n.list-inline-item:not(:last-child) {\n margin-right: 0.5rem;\n}\n\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\n\n.blockquote {\n margin-bottom: 1rem;\n font-size: 1.25rem;\n}\n\n.blockquote-footer {\n display: block;\n font-size: 80%;\n color: #6c757d;\n}\n\n.blockquote-footer::before {\n content: \"\\2014\\00A0\";\n}\n\n.img-fluid {\n max-width: 100%;\n height: auto;\n}\n\n.img-thumbnail {\n padding: 0.25rem;\n background-color: #fff;\n border: 1px solid #dee2e6;\n border-radius: 0.25rem;\n max-width: 100%;\n height: auto;\n}\n\n.figure {\n display: inline-block;\n}\n\n.figure-img {\n margin-bottom: 0.5rem;\n line-height: 1;\n}\n\n.figure-caption {\n font-size: 90%;\n color: #6c757d;\n}\n\ncode {\n font-size: 87.5%;\n color: #e83e8c;\n word-wrap: break-word;\n}\n\na > code {\n color: inherit;\n}\n\nkbd {\n padding: 0.2rem 0.4rem;\n font-size: 87.5%;\n color: #fff;\n background-color: #212529;\n border-radius: 0.2rem;\n}\n\nkbd kbd {\n padding: 0;\n font-size: 100%;\n font-weight: 700;\n}\n\npre {\n display: block;\n font-size: 87.5%;\n color: #212529;\n}\n\npre code {\n font-size: inherit;\n color: inherit;\n word-break: normal;\n}\n\n.pre-scrollable {\n max-height: 340px;\n overflow-y: scroll;\n}\n\n.container,\n.container-fluid,\n.container-sm,\n.container-md,\n.container-lg,\n.container-xl {\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n}\n\n@media (min-width: 576px) {\n .container, .container-sm {\n max-width: 540px;\n }\n}\n\n@media (min-width: 768px) {\n .container, .container-sm, .container-md {\n max-width: 720px;\n }\n}\n\n@media (min-width: 992px) {\n .container, .container-sm, .container-md, .container-lg {\n max-width: 960px;\n }\n}\n\n@media (min-width: 1200px) {\n .container, .container-sm, .container-md, .container-lg, .container-xl {\n max-width: 1140px;\n }\n}\n\n.row {\n display: flex;\n flex-wrap: wrap;\n margin-right: -15px;\n margin-left: -15px;\n}\n\n.no-gutters {\n margin-right: 0;\n margin-left: 0;\n}\n\n.no-gutters > .col,\n.no-gutters > [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0;\n}\n\n.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,\n.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,\n.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,\n.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,\n.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,\n.col-xl-auto {\n position: relative;\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n}\n\n.col {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n}\n\n.row-cols-1 > * {\n flex: 0 0 100%;\n max-width: 100%;\n}\n\n.row-cols-2 > * {\n flex: 0 0 50%;\n max-width: 50%;\n}\n\n.row-cols-3 > * {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n}\n\n.row-cols-4 > * {\n flex: 0 0 25%;\n max-width: 25%;\n}\n\n.row-cols-5 > * {\n flex: 0 0 20%;\n max-width: 20%;\n}\n\n.row-cols-6 > * {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n}\n\n.col-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n}\n\n.col-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n}\n\n.col-3 {\n flex: 0 0 25%;\n max-width: 25%;\n}\n\n.col-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n}\n\n.col-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n}\n\n.col-6 {\n flex: 0 0 50%;\n max-width: 50%;\n}\n\n.col-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n}\n\n.col-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n}\n\n.col-9 {\n flex: 0 0 75%;\n max-width: 75%;\n}\n\n.col-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n}\n\n.col-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n}\n\n.col-12 {\n flex: 0 0 100%;\n max-width: 100%;\n}\n\n.order-first {\n order: -1;\n}\n\n.order-last {\n order: 13;\n}\n\n.order-0 {\n order: 0;\n}\n\n.order-1 {\n order: 1;\n}\n\n.order-2 {\n order: 2;\n}\n\n.order-3 {\n order: 3;\n}\n\n.order-4 {\n order: 4;\n}\n\n.order-5 {\n order: 5;\n}\n\n.order-6 {\n order: 6;\n}\n\n.order-7 {\n order: 7;\n}\n\n.order-8 {\n order: 8;\n}\n\n.order-9 {\n order: 9;\n}\n\n.order-10 {\n order: 10;\n}\n\n.order-11 {\n order: 11;\n}\n\n.order-12 {\n order: 12;\n}\n\n.offset-1 {\n margin-left: 8.333333%;\n}\n\n.offset-2 {\n margin-left: 16.666667%;\n}\n\n.offset-3 {\n margin-left: 25%;\n}\n\n.offset-4 {\n margin-left: 33.333333%;\n}\n\n.offset-5 {\n margin-left: 41.666667%;\n}\n\n.offset-6 {\n margin-left: 50%;\n}\n\n.offset-7 {\n margin-left: 58.333333%;\n}\n\n.offset-8 {\n margin-left: 66.666667%;\n}\n\n.offset-9 {\n margin-left: 75%;\n}\n\n.offset-10 {\n margin-left: 83.333333%;\n}\n\n.offset-11 {\n margin-left: 91.666667%;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .row-cols-sm-1 > * {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .row-cols-sm-2 > * {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .row-cols-sm-3 > * {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .row-cols-sm-4 > * {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .row-cols-sm-5 > * {\n flex: 0 0 20%;\n max-width: 20%;\n }\n .row-cols-sm-6 > * {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n .col-sm-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-sm-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-sm-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-sm-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-sm-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-sm-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-sm-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-sm-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-sm-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-sm-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-sm-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-sm-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-sm-first {\n order: -1;\n }\n .order-sm-last {\n order: 13;\n }\n .order-sm-0 {\n order: 0;\n }\n .order-sm-1 {\n order: 1;\n }\n .order-sm-2 {\n order: 2;\n }\n .order-sm-3 {\n order: 3;\n }\n .order-sm-4 {\n order: 4;\n }\n .order-sm-5 {\n order: 5;\n }\n .order-sm-6 {\n order: 6;\n }\n .order-sm-7 {\n order: 7;\n }\n .order-sm-8 {\n order: 8;\n }\n .order-sm-9 {\n order: 9;\n }\n .order-sm-10 {\n order: 10;\n }\n .order-sm-11 {\n order: 11;\n }\n .order-sm-12 {\n order: 12;\n }\n .offset-sm-0 {\n margin-left: 0;\n }\n .offset-sm-1 {\n margin-left: 8.333333%;\n }\n .offset-sm-2 {\n margin-left: 16.666667%;\n }\n .offset-sm-3 {\n margin-left: 25%;\n }\n .offset-sm-4 {\n margin-left: 33.333333%;\n }\n .offset-sm-5 {\n margin-left: 41.666667%;\n }\n .offset-sm-6 {\n margin-left: 50%;\n }\n .offset-sm-7 {\n margin-left: 58.333333%;\n }\n .offset-sm-8 {\n margin-left: 66.666667%;\n }\n .offset-sm-9 {\n margin-left: 75%;\n }\n .offset-sm-10 {\n margin-left: 83.333333%;\n }\n .offset-sm-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: 768px) {\n .col-md {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .row-cols-md-1 > * {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .row-cols-md-2 > * {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .row-cols-md-3 > * {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .row-cols-md-4 > * {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .row-cols-md-5 > * {\n flex: 0 0 20%;\n max-width: 20%;\n }\n .row-cols-md-6 > * {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n .col-md-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-md-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-md-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-md-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-md-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-md-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-md-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-md-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-md-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-md-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-md-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-md-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-md-first {\n order: -1;\n }\n .order-md-last {\n order: 13;\n }\n .order-md-0 {\n order: 0;\n }\n .order-md-1 {\n order: 1;\n }\n .order-md-2 {\n order: 2;\n }\n .order-md-3 {\n order: 3;\n }\n .order-md-4 {\n order: 4;\n }\n .order-md-5 {\n order: 5;\n }\n .order-md-6 {\n order: 6;\n }\n .order-md-7 {\n order: 7;\n }\n .order-md-8 {\n order: 8;\n }\n .order-md-9 {\n order: 9;\n }\n .order-md-10 {\n order: 10;\n }\n .order-md-11 {\n order: 11;\n }\n .order-md-12 {\n order: 12;\n }\n .offset-md-0 {\n margin-left: 0;\n }\n .offset-md-1 {\n margin-left: 8.333333%;\n }\n .offset-md-2 {\n margin-left: 16.666667%;\n }\n .offset-md-3 {\n margin-left: 25%;\n }\n .offset-md-4 {\n margin-left: 33.333333%;\n }\n .offset-md-5 {\n margin-left: 41.666667%;\n }\n .offset-md-6 {\n margin-left: 50%;\n }\n .offset-md-7 {\n margin-left: 58.333333%;\n }\n .offset-md-8 {\n margin-left: 66.666667%;\n }\n .offset-md-9 {\n margin-left: 75%;\n }\n .offset-md-10 {\n margin-left: 83.333333%;\n }\n .offset-md-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: 992px) {\n .col-lg {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .row-cols-lg-1 > * {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .row-cols-lg-2 > * {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .row-cols-lg-3 > * {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .row-cols-lg-4 > * {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .row-cols-lg-5 > * {\n flex: 0 0 20%;\n max-width: 20%;\n }\n .row-cols-lg-6 > * {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n .col-lg-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-lg-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-lg-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-lg-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-lg-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-lg-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-lg-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-lg-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-lg-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-lg-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-lg-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-lg-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-lg-first {\n order: -1;\n }\n .order-lg-last {\n order: 13;\n }\n .order-lg-0 {\n order: 0;\n }\n .order-lg-1 {\n order: 1;\n }\n .order-lg-2 {\n order: 2;\n }\n .order-lg-3 {\n order: 3;\n }\n .order-lg-4 {\n order: 4;\n }\n .order-lg-5 {\n order: 5;\n }\n .order-lg-6 {\n order: 6;\n }\n .order-lg-7 {\n order: 7;\n }\n .order-lg-8 {\n order: 8;\n }\n .order-lg-9 {\n order: 9;\n }\n .order-lg-10 {\n order: 10;\n }\n .order-lg-11 {\n order: 11;\n }\n .order-lg-12 {\n order: 12;\n }\n .offset-lg-0 {\n margin-left: 0;\n }\n .offset-lg-1 {\n margin-left: 8.333333%;\n }\n .offset-lg-2 {\n margin-left: 16.666667%;\n }\n .offset-lg-3 {\n margin-left: 25%;\n }\n .offset-lg-4 {\n margin-left: 33.333333%;\n }\n .offset-lg-5 {\n margin-left: 41.666667%;\n }\n .offset-lg-6 {\n margin-left: 50%;\n }\n .offset-lg-7 {\n margin-left: 58.333333%;\n }\n .offset-lg-8 {\n margin-left: 66.666667%;\n }\n .offset-lg-9 {\n margin-left: 75%;\n }\n .offset-lg-10 {\n margin-left: 83.333333%;\n }\n .offset-lg-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: 1200px) {\n .col-xl {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .row-cols-xl-1 > * {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .row-cols-xl-2 > * {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .row-cols-xl-3 > * {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .row-cols-xl-4 > * {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .row-cols-xl-5 > * {\n flex: 0 0 20%;\n max-width: 20%;\n }\n .row-cols-xl-6 > * {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n .col-xl-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-xl-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-xl-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-xl-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-xl-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-xl-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-xl-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-xl-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-xl-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-xl-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-xl-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-xl-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-xl-first {\n order: -1;\n }\n .order-xl-last {\n order: 13;\n }\n .order-xl-0 {\n order: 0;\n }\n .order-xl-1 {\n order: 1;\n }\n .order-xl-2 {\n order: 2;\n }\n .order-xl-3 {\n order: 3;\n }\n .order-xl-4 {\n order: 4;\n }\n .order-xl-5 {\n order: 5;\n }\n .order-xl-6 {\n order: 6;\n }\n .order-xl-7 {\n order: 7;\n }\n .order-xl-8 {\n order: 8;\n }\n .order-xl-9 {\n order: 9;\n }\n .order-xl-10 {\n order: 10;\n }\n .order-xl-11 {\n order: 11;\n }\n .order-xl-12 {\n order: 12;\n }\n .offset-xl-0 {\n margin-left: 0;\n }\n .offset-xl-1 {\n margin-left: 8.333333%;\n }\n .offset-xl-2 {\n margin-left: 16.666667%;\n }\n .offset-xl-3 {\n margin-left: 25%;\n }\n .offset-xl-4 {\n margin-left: 33.333333%;\n }\n .offset-xl-5 {\n margin-left: 41.666667%;\n }\n .offset-xl-6 {\n margin-left: 50%;\n }\n .offset-xl-7 {\n margin-left: 58.333333%;\n }\n .offset-xl-8 {\n margin-left: 66.666667%;\n }\n .offset-xl-9 {\n margin-left: 75%;\n }\n .offset-xl-10 {\n margin-left: 83.333333%;\n }\n .offset-xl-11 {\n margin-left: 91.666667%;\n }\n}\n\n.table {\n width: 100%;\n margin-bottom: 1rem;\n color: #212529;\n}\n\n.table th,\n.table td {\n padding: 0.75rem;\n vertical-align: top;\n border-top: 1px solid #dee2e6;\n}\n\n.table thead th {\n vertical-align: bottom;\n border-bottom: 2px solid #dee2e6;\n}\n\n.table tbody + tbody {\n border-top: 2px solid #dee2e6;\n}\n\n.table-sm th,\n.table-sm td {\n padding: 0.3rem;\n}\n\n.table-bordered {\n border: 1px solid #dee2e6;\n}\n\n.table-bordered th,\n.table-bordered td {\n border: 1px solid #dee2e6;\n}\n\n.table-bordered thead th,\n.table-bordered thead td {\n border-bottom-width: 2px;\n}\n\n.table-borderless th,\n.table-borderless td,\n.table-borderless thead th,\n.table-borderless tbody + tbody {\n border: 0;\n}\n\n.table-striped tbody tr:nth-of-type(odd) {\n background-color: rgba(0, 0, 0, 0.05);\n}\n\n.table-hover tbody tr:hover {\n color: #212529;\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-primary,\n.table-primary > th,\n.table-primary > td {\n background-color: #b8daff;\n}\n\n.table-primary th,\n.table-primary td,\n.table-primary thead th,\n.table-primary tbody + tbody {\n border-color: #7abaff;\n}\n\n.table-hover .table-primary:hover {\n background-color: #9fcdff;\n}\n\n.table-hover .table-primary:hover > td,\n.table-hover .table-primary:hover > th {\n background-color: #9fcdff;\n}\n\n.table-secondary,\n.table-secondary > th,\n.table-secondary > td {\n background-color: #d6d8db;\n}\n\n.table-secondary th,\n.table-secondary td,\n.table-secondary thead th,\n.table-secondary tbody + tbody {\n border-color: #b3b7bb;\n}\n\n.table-hover .table-secondary:hover {\n background-color: #c8cbcf;\n}\n\n.table-hover .table-secondary:hover > td,\n.table-hover .table-secondary:hover > th {\n background-color: #c8cbcf;\n}\n\n.table-success,\n.table-success > th,\n.table-success > td {\n background-color: #c3e6cb;\n}\n\n.table-success th,\n.table-success td,\n.table-success thead th,\n.table-success tbody + tbody {\n border-color: #8fd19e;\n}\n\n.table-hover .table-success:hover {\n background-color: #b1dfbb;\n}\n\n.table-hover .table-success:hover > td,\n.table-hover .table-success:hover > th {\n background-color: #b1dfbb;\n}\n\n.table-info,\n.table-info > th,\n.table-info > td {\n background-color: #bee5eb;\n}\n\n.table-info th,\n.table-info td,\n.table-info thead th,\n.table-info tbody + tbody {\n border-color: #86cfda;\n}\n\n.table-hover .table-info:hover {\n background-color: #abdde5;\n}\n\n.table-hover .table-info:hover > td,\n.table-hover .table-info:hover > th {\n background-color: #abdde5;\n}\n\n.table-warning,\n.table-warning > th,\n.table-warning > td {\n background-color: #ffeeba;\n}\n\n.table-warning th,\n.table-warning td,\n.table-warning thead th,\n.table-warning tbody + tbody {\n border-color: #ffdf7e;\n}\n\n.table-hover .table-warning:hover {\n background-color: #ffe8a1;\n}\n\n.table-hover .table-warning:hover > td,\n.table-hover .table-warning:hover > th {\n background-color: #ffe8a1;\n}\n\n.table-danger,\n.table-danger > th,\n.table-danger > td {\n background-color: #f5c6cb;\n}\n\n.table-danger th,\n.table-danger td,\n.table-danger thead th,\n.table-danger tbody + tbody {\n border-color: #ed969e;\n}\n\n.table-hover .table-danger:hover {\n background-color: #f1b0b7;\n}\n\n.table-hover .table-danger:hover > td,\n.table-hover .table-danger:hover > th {\n background-color: #f1b0b7;\n}\n\n.table-light,\n.table-light > th,\n.table-light > td {\n background-color: #fdfdfe;\n}\n\n.table-light th,\n.table-light td,\n.table-light thead th,\n.table-light tbody + tbody {\n border-color: #fbfcfc;\n}\n\n.table-hover .table-light:hover {\n background-color: #ececf6;\n}\n\n.table-hover .table-light:hover > td,\n.table-hover .table-light:hover > th {\n background-color: #ececf6;\n}\n\n.table-dark,\n.table-dark > th,\n.table-dark > td {\n background-color: #c6c8ca;\n}\n\n.table-dark th,\n.table-dark td,\n.table-dark thead th,\n.table-dark tbody + tbody {\n border-color: #95999c;\n}\n\n.table-hover .table-dark:hover {\n background-color: #b9bbbe;\n}\n\n.table-hover .table-dark:hover > td,\n.table-hover .table-dark:hover > th {\n background-color: #b9bbbe;\n}\n\n.table-active,\n.table-active > th,\n.table-active > td {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-hover .table-active:hover {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-hover .table-active:hover > td,\n.table-hover .table-active:hover > th {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table .thead-dark th {\n color: #fff;\n background-color: #343a40;\n border-color: #454d55;\n}\n\n.table .thead-light th {\n color: #495057;\n background-color: #e9ecef;\n border-color: #dee2e6;\n}\n\n.table-dark {\n color: #fff;\n background-color: #343a40;\n}\n\n.table-dark th,\n.table-dark td,\n.table-dark thead th {\n border-color: #454d55;\n}\n\n.table-dark.table-bordered {\n border: 0;\n}\n\n.table-dark.table-striped tbody tr:nth-of-type(odd) {\n background-color: rgba(255, 255, 255, 0.05);\n}\n\n.table-dark.table-hover tbody tr:hover {\n color: #fff;\n background-color: rgba(255, 255, 255, 0.075);\n}\n\n@media (max-width: 575.98px) {\n .table-responsive-sm {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n .table-responsive-sm > .table-bordered {\n border: 0;\n }\n}\n\n@media (max-width: 767.98px) {\n .table-responsive-md {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n .table-responsive-md > .table-bordered {\n border: 0;\n }\n}\n\n@media (max-width: 991.98px) {\n .table-responsive-lg {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n .table-responsive-lg > .table-bordered {\n border: 0;\n }\n}\n\n@media (max-width: 1199.98px) {\n .table-responsive-xl {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n .table-responsive-xl > .table-bordered {\n border: 0;\n }\n}\n\n.table-responsive {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n}\n\n.table-responsive > .table-bordered {\n border: 0;\n}\n\n.form-control {\n display: block;\n width: 100%;\n height: calc(1.5em + 0.75rem + 2px);\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #495057;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .form-control {\n transition: none;\n }\n}\n\n.form-control::-ms-expand {\n background-color: transparent;\n border: 0;\n}\n\n.form-control:-moz-focusring {\n color: transparent;\n text-shadow: 0 0 0 #495057;\n}\n\n.form-control:focus {\n color: #495057;\n background-color: #fff;\n border-color: #80bdff;\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.form-control::-webkit-input-placeholder {\n color: #6c757d;\n opacity: 1;\n}\n\n.form-control::placeholder {\n color: #6c757d;\n opacity: 1;\n}\n\n.form-control:disabled, .form-control[readonly] {\n background-color: #e9ecef;\n opacity: 1;\n}\n\ninput[type=\"date\"].form-control,\ninput[type=\"time\"].form-control,\ninput[type=\"datetime-local\"].form-control,\ninput[type=\"month\"].form-control {\n -webkit-appearance: none;\n appearance: none;\n}\n\nselect.form-control:focus::-ms-value {\n color: #495057;\n background-color: #fff;\n}\n\n.form-control-file,\n.form-control-range {\n display: block;\n width: 100%;\n}\n\n.col-form-label {\n padding-top: calc(0.375rem + 1px);\n padding-bottom: calc(0.375rem + 1px);\n margin-bottom: 0;\n font-size: inherit;\n line-height: 1.5;\n}\n\n.col-form-label-lg {\n padding-top: calc(0.5rem + 1px);\n padding-bottom: calc(0.5rem + 1px);\n font-size: 1.25rem;\n line-height: 1.5;\n}\n\n.col-form-label-sm {\n padding-top: calc(0.25rem + 1px);\n padding-bottom: calc(0.25rem + 1px);\n font-size: 0.875rem;\n line-height: 1.5;\n}\n\n.form-control-plaintext {\n display: block;\n width: 100%;\n padding: 0.375rem 0;\n margin-bottom: 0;\n font-size: 1rem;\n line-height: 1.5;\n color: #212529;\n background-color: transparent;\n border: solid transparent;\n border-width: 1px 0;\n}\n\n.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg {\n padding-right: 0;\n padding-left: 0;\n}\n\n.form-control-sm {\n height: calc(1.5em + 0.5rem + 2px);\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem;\n}\n\n.form-control-lg {\n height: calc(1.5em + 1rem + 2px);\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem;\n}\n\nselect.form-control[size], select.form-control[multiple] {\n height: auto;\n}\n\ntextarea.form-control {\n height: auto;\n}\n\n.form-group {\n margin-bottom: 1rem;\n}\n\n.form-text {\n display: block;\n margin-top: 0.25rem;\n}\n\n.form-row {\n display: flex;\n flex-wrap: wrap;\n margin-right: -5px;\n margin-left: -5px;\n}\n\n.form-row > .col,\n.form-row > [class*=\"col-\"] {\n padding-right: 5px;\n padding-left: 5px;\n}\n\n.form-check {\n position: relative;\n display: block;\n padding-left: 1.25rem;\n}\n\n.form-check-input {\n position: absolute;\n margin-top: 0.3rem;\n margin-left: -1.25rem;\n}\n\n.form-check-input[disabled] ~ .form-check-label,\n.form-check-input:disabled ~ .form-check-label {\n color: #6c757d;\n}\n\n.form-check-label {\n margin-bottom: 0;\n}\n\n.form-check-inline {\n display: inline-flex;\n align-items: center;\n padding-left: 0;\n margin-right: 0.75rem;\n}\n\n.form-check-inline .form-check-input {\n position: static;\n margin-top: 0;\n margin-right: 0.3125rem;\n margin-left: 0;\n}\n\n.valid-feedback {\n display: none;\n width: 100%;\n margin-top: 0.25rem;\n font-size: 80%;\n color: #28a745;\n}\n\n.valid-tooltip {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 5;\n display: none;\n max-width: 100%;\n padding: 0.25rem 0.5rem;\n margin-top: .1rem;\n font-size: 0.875rem;\n line-height: 1.5;\n color: #fff;\n background-color: rgba(40, 167, 69, 0.9);\n border-radius: 0.25rem;\n}\n\n.was-validated :valid ~ .valid-feedback,\n.was-validated :valid ~ .valid-tooltip,\n.is-valid ~ .valid-feedback,\n.is-valid ~ .valid-tooltip {\n display: block;\n}\n\n.was-validated .form-control:valid, .form-control.is-valid {\n border-color: #28a745;\n padding-right: calc(1.5em + 0.75rem);\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\");\n background-repeat: no-repeat;\n background-position: right calc(0.375em + 0.1875rem) center;\n background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n\n.was-validated .form-control:valid:focus, .form-control.is-valid:focus {\n border-color: #28a745;\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n\n.was-validated textarea.form-control:valid, textarea.form-control.is-valid {\n padding-right: calc(1.5em + 0.75rem);\n background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);\n}\n\n.was-validated .custom-select:valid, .custom-select.is-valid {\n border-color: #28a745;\n padding-right: calc(0.75em + 2.3125rem);\n background: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e\") no-repeat right 0.75rem center/8px 10px, url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n\n.was-validated .custom-select:valid:focus, .custom-select.is-valid:focus {\n border-color: #28a745;\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n\n.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {\n color: #28a745;\n}\n\n.was-validated .form-check-input:valid ~ .valid-feedback,\n.was-validated .form-check-input:valid ~ .valid-tooltip, .form-check-input.is-valid ~ .valid-feedback,\n.form-check-input.is-valid ~ .valid-tooltip {\n display: block;\n}\n\n.was-validated .custom-control-input:valid ~ .custom-control-label, .custom-control-input.is-valid ~ .custom-control-label {\n color: #28a745;\n}\n\n.was-validated .custom-control-input:valid ~ .custom-control-label::before, .custom-control-input.is-valid ~ .custom-control-label::before {\n border-color: #28a745;\n}\n\n.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before, .custom-control-input.is-valid:checked ~ .custom-control-label::before {\n border-color: #34ce57;\n background-color: #34ce57;\n}\n\n.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before, .custom-control-input.is-valid:focus ~ .custom-control-label::before {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n\n.was-validated .custom-control-input:valid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-valid:focus:not(:checked) ~ .custom-control-label::before {\n border-color: #28a745;\n}\n\n.was-validated .custom-file-input:valid ~ .custom-file-label, .custom-file-input.is-valid ~ .custom-file-label {\n border-color: #28a745;\n}\n\n.was-validated .custom-file-input:valid:focus ~ .custom-file-label, .custom-file-input.is-valid:focus ~ .custom-file-label {\n border-color: #28a745;\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n\n.invalid-feedback {\n display: none;\n width: 100%;\n margin-top: 0.25rem;\n font-size: 80%;\n color: #dc3545;\n}\n\n.invalid-tooltip {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 5;\n display: none;\n max-width: 100%;\n padding: 0.25rem 0.5rem;\n margin-top: .1rem;\n font-size: 0.875rem;\n line-height: 1.5;\n color: #fff;\n background-color: rgba(220, 53, 69, 0.9);\n border-radius: 0.25rem;\n}\n\n.was-validated :invalid ~ .invalid-feedback,\n.was-validated :invalid ~ .invalid-tooltip,\n.is-invalid ~ .invalid-feedback,\n.is-invalid ~ .invalid-tooltip {\n display: block;\n}\n\n.was-validated .form-control:invalid, .form-control.is-invalid {\n border-color: #dc3545;\n padding-right: calc(1.5em + 0.75rem);\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\");\n background-repeat: no-repeat;\n background-position: right calc(0.375em + 0.1875rem) center;\n background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n\n.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus {\n border-color: #dc3545;\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n\n.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid {\n padding-right: calc(1.5em + 0.75rem);\n background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);\n}\n\n.was-validated .custom-select:invalid, .custom-select.is-invalid {\n border-color: #dc3545;\n padding-right: calc(0.75em + 2.3125rem);\n background: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e\") no-repeat right 0.75rem center/8px 10px, url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n\n.was-validated .custom-select:invalid:focus, .custom-select.is-invalid:focus {\n border-color: #dc3545;\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n\n.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {\n color: #dc3545;\n}\n\n.was-validated .form-check-input:invalid ~ .invalid-feedback,\n.was-validated .form-check-input:invalid ~ .invalid-tooltip, .form-check-input.is-invalid ~ .invalid-feedback,\n.form-check-input.is-invalid ~ .invalid-tooltip {\n display: block;\n}\n\n.was-validated .custom-control-input:invalid ~ .custom-control-label, .custom-control-input.is-invalid ~ .custom-control-label {\n color: #dc3545;\n}\n\n.was-validated .custom-control-input:invalid ~ .custom-control-label::before, .custom-control-input.is-invalid ~ .custom-control-label::before {\n border-color: #dc3545;\n}\n\n.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before, .custom-control-input.is-invalid:checked ~ .custom-control-label::before {\n border-color: #e4606d;\n background-color: #e4606d;\n}\n\n.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before, .custom-control-input.is-invalid:focus ~ .custom-control-label::before {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n\n.was-validated .custom-control-input:invalid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-invalid:focus:not(:checked) ~ .custom-control-label::before {\n border-color: #dc3545;\n}\n\n.was-validated .custom-file-input:invalid ~ .custom-file-label, .custom-file-input.is-invalid ~ .custom-file-label {\n border-color: #dc3545;\n}\n\n.was-validated .custom-file-input:invalid:focus ~ .custom-file-label, .custom-file-input.is-invalid:focus ~ .custom-file-label {\n border-color: #dc3545;\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n\n.form-inline {\n display: flex;\n flex-flow: row wrap;\n align-items: center;\n}\n\n.form-inline .form-check {\n width: 100%;\n}\n\n@media (min-width: 576px) {\n .form-inline label {\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 0;\n }\n .form-inline .form-group {\n display: flex;\n flex: 0 0 auto;\n flex-flow: row wrap;\n align-items: center;\n margin-bottom: 0;\n }\n .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .form-inline .form-control-plaintext {\n display: inline-block;\n }\n .form-inline .input-group,\n .form-inline .custom-select {\n width: auto;\n }\n .form-inline .form-check {\n display: flex;\n align-items: center;\n justify-content: center;\n width: auto;\n padding-left: 0;\n }\n .form-inline .form-check-input {\n position: relative;\n flex-shrink: 0;\n margin-top: 0;\n margin-right: 0.25rem;\n margin-left: 0;\n }\n .form-inline .custom-control {\n align-items: center;\n justify-content: center;\n }\n .form-inline .custom-control-label {\n margin-bottom: 0;\n }\n}\n\n.btn {\n display: inline-block;\n font-weight: 400;\n color: #212529;\n text-align: center;\n vertical-align: middle;\n -webkit-user-select: none;\n user-select: none;\n background-color: transparent;\n border: 1px solid transparent;\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n line-height: 1.5;\n border-radius: 0.25rem;\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .btn {\n transition: none;\n }\n}\n\n.btn:hover {\n color: #212529;\n text-decoration: none;\n}\n\n.btn:focus, .btn.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.btn.disabled, .btn:disabled {\n opacity: 0.65;\n}\n\n.btn:not(:disabled):not(.disabled) {\n cursor: pointer;\n}\n\na.btn.disabled,\nfieldset:disabled a.btn {\n pointer-events: none;\n}\n\n.btn-primary {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-primary:hover {\n color: #fff;\n background-color: #0069d9;\n border-color: #0062cc;\n}\n\n.btn-primary:focus, .btn-primary.focus {\n color: #fff;\n background-color: #0069d9;\n border-color: #0062cc;\n box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);\n}\n\n.btn-primary.disabled, .btn-primary:disabled {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-primary:not(:disabled):not(.disabled):active, .btn-primary:not(:disabled):not(.disabled).active,\n.show > .btn-primary.dropdown-toggle {\n color: #fff;\n background-color: #0062cc;\n border-color: #005cbf;\n}\n\n.btn-primary:not(:disabled):not(.disabled):active:focus, .btn-primary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-primary.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);\n}\n\n.btn-secondary {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n\n.btn-secondary:hover {\n color: #fff;\n background-color: #5a6268;\n border-color: #545b62;\n}\n\n.btn-secondary:focus, .btn-secondary.focus {\n color: #fff;\n background-color: #5a6268;\n border-color: #545b62;\n box-shadow: 0 0 0 0.2rem rgba(130, 138, 145, 0.5);\n}\n\n.btn-secondary.disabled, .btn-secondary:disabled {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n\n.btn-secondary:not(:disabled):not(.disabled):active, .btn-secondary:not(:disabled):not(.disabled).active,\n.show > .btn-secondary.dropdown-toggle {\n color: #fff;\n background-color: #545b62;\n border-color: #4e555b;\n}\n\n.btn-secondary:not(:disabled):not(.disabled):active:focus, .btn-secondary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-secondary.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(130, 138, 145, 0.5);\n}\n\n.btn-success {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-success:hover {\n color: #fff;\n background-color: #218838;\n border-color: #1e7e34;\n}\n\n.btn-success:focus, .btn-success.focus {\n color: #fff;\n background-color: #218838;\n border-color: #1e7e34;\n box-shadow: 0 0 0 0.2rem rgba(72, 180, 97, 0.5);\n}\n\n.btn-success.disabled, .btn-success:disabled {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-success:not(:disabled):not(.disabled):active, .btn-success:not(:disabled):not(.disabled).active,\n.show > .btn-success.dropdown-toggle {\n color: #fff;\n background-color: #1e7e34;\n border-color: #1c7430;\n}\n\n.btn-success:not(:disabled):not(.disabled):active:focus, .btn-success:not(:disabled):not(.disabled).active:focus,\n.show > .btn-success.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(72, 180, 97, 0.5);\n}\n\n.btn-info {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-info:hover {\n color: #fff;\n background-color: #138496;\n border-color: #117a8b;\n}\n\n.btn-info:focus, .btn-info.focus {\n color: #fff;\n background-color: #138496;\n border-color: #117a8b;\n box-shadow: 0 0 0 0.2rem rgba(58, 176, 195, 0.5);\n}\n\n.btn-info.disabled, .btn-info:disabled {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-info:not(:disabled):not(.disabled):active, .btn-info:not(:disabled):not(.disabled).active,\n.show > .btn-info.dropdown-toggle {\n color: #fff;\n background-color: #117a8b;\n border-color: #10707f;\n}\n\n.btn-info:not(:disabled):not(.disabled):active:focus, .btn-info:not(:disabled):not(.disabled).active:focus,\n.show > .btn-info.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(58, 176, 195, 0.5);\n}\n\n.btn-warning {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-warning:hover {\n color: #212529;\n background-color: #e0a800;\n border-color: #d39e00;\n}\n\n.btn-warning:focus, .btn-warning.focus {\n color: #212529;\n background-color: #e0a800;\n border-color: #d39e00;\n box-shadow: 0 0 0 0.2rem rgba(222, 170, 12, 0.5);\n}\n\n.btn-warning.disabled, .btn-warning:disabled {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-warning:not(:disabled):not(.disabled):active, .btn-warning:not(:disabled):not(.disabled).active,\n.show > .btn-warning.dropdown-toggle {\n color: #212529;\n background-color: #d39e00;\n border-color: #c69500;\n}\n\n.btn-warning:not(:disabled):not(.disabled):active:focus, .btn-warning:not(:disabled):not(.disabled).active:focus,\n.show > .btn-warning.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(222, 170, 12, 0.5);\n}\n\n.btn-danger {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-danger:hover {\n color: #fff;\n background-color: #c82333;\n border-color: #bd2130;\n}\n\n.btn-danger:focus, .btn-danger.focus {\n color: #fff;\n background-color: #c82333;\n border-color: #bd2130;\n box-shadow: 0 0 0 0.2rem rgba(225, 83, 97, 0.5);\n}\n\n.btn-danger.disabled, .btn-danger:disabled {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-danger:not(:disabled):not(.disabled):active, .btn-danger:not(:disabled):not(.disabled).active,\n.show > .btn-danger.dropdown-toggle {\n color: #fff;\n background-color: #bd2130;\n border-color: #b21f2d;\n}\n\n.btn-danger:not(:disabled):not(.disabled):active:focus, .btn-danger:not(:disabled):not(.disabled).active:focus,\n.show > .btn-danger.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(225, 83, 97, 0.5);\n}\n\n.btn-light {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-light:hover {\n color: #212529;\n background-color: #e2e6ea;\n border-color: #dae0e5;\n}\n\n.btn-light:focus, .btn-light.focus {\n color: #212529;\n background-color: #e2e6ea;\n border-color: #dae0e5;\n box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5);\n}\n\n.btn-light.disabled, .btn-light:disabled {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-light:not(:disabled):not(.disabled):active, .btn-light:not(:disabled):not(.disabled).active,\n.show > .btn-light.dropdown-toggle {\n color: #212529;\n background-color: #dae0e5;\n border-color: #d3d9df;\n}\n\n.btn-light:not(:disabled):not(.disabled):active:focus, .btn-light:not(:disabled):not(.disabled).active:focus,\n.show > .btn-light.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5);\n}\n\n.btn-dark {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-dark:hover {\n color: #fff;\n background-color: #23272b;\n border-color: #1d2124;\n}\n\n.btn-dark:focus, .btn-dark.focus {\n color: #fff;\n background-color: #23272b;\n border-color: #1d2124;\n box-shadow: 0 0 0 0.2rem rgba(82, 88, 93, 0.5);\n}\n\n.btn-dark.disabled, .btn-dark:disabled {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-dark:not(:disabled):not(.disabled):active, .btn-dark:not(:disabled):not(.disabled).active,\n.show > .btn-dark.dropdown-toggle {\n color: #fff;\n background-color: #1d2124;\n border-color: #171a1d;\n}\n\n.btn-dark:not(:disabled):not(.disabled):active:focus, .btn-dark:not(:disabled):not(.disabled).active:focus,\n.show > .btn-dark.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(82, 88, 93, 0.5);\n}\n\n.btn-outline-primary {\n color: #007bff;\n border-color: #007bff;\n}\n\n.btn-outline-primary:hover {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-outline-primary:focus, .btn-outline-primary.focus {\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n\n.btn-outline-primary.disabled, .btn-outline-primary:disabled {\n color: #007bff;\n background-color: transparent;\n}\n\n.btn-outline-primary:not(:disabled):not(.disabled):active, .btn-outline-primary:not(:disabled):not(.disabled).active,\n.show > .btn-outline-primary.dropdown-toggle {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-outline-primary:not(:disabled):not(.disabled):active:focus, .btn-outline-primary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-primary.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n\n.btn-outline-secondary {\n color: #6c757d;\n border-color: #6c757d;\n}\n\n.btn-outline-secondary:hover {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n\n.btn-outline-secondary:focus, .btn-outline-secondary.focus {\n box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\n}\n\n.btn-outline-secondary.disabled, .btn-outline-secondary:disabled {\n color: #6c757d;\n background-color: transparent;\n}\n\n.btn-outline-secondary:not(:disabled):not(.disabled):active, .btn-outline-secondary:not(:disabled):not(.disabled).active,\n.show > .btn-outline-secondary.dropdown-toggle {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n\n.btn-outline-secondary:not(:disabled):not(.disabled):active:focus, .btn-outline-secondary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-secondary.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\n}\n\n.btn-outline-success {\n color: #28a745;\n border-color: #28a745;\n}\n\n.btn-outline-success:hover {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-outline-success:focus, .btn-outline-success.focus {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n}\n\n.btn-outline-success.disabled, .btn-outline-success:disabled {\n color: #28a745;\n background-color: transparent;\n}\n\n.btn-outline-success:not(:disabled):not(.disabled):active, .btn-outline-success:not(:disabled):not(.disabled).active,\n.show > .btn-outline-success.dropdown-toggle {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-outline-success:not(:disabled):not(.disabled):active:focus, .btn-outline-success:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-success.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n}\n\n.btn-outline-info {\n color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-outline-info:hover {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-outline-info:focus, .btn-outline-info.focus {\n box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n}\n\n.btn-outline-info.disabled, .btn-outline-info:disabled {\n color: #17a2b8;\n background-color: transparent;\n}\n\n.btn-outline-info:not(:disabled):not(.disabled):active, .btn-outline-info:not(:disabled):not(.disabled).active,\n.show > .btn-outline-info.dropdown-toggle {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-outline-info:not(:disabled):not(.disabled):active:focus, .btn-outline-info:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-info.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n}\n\n.btn-outline-warning {\n color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-outline-warning:hover {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-outline-warning:focus, .btn-outline-warning.focus {\n box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n}\n\n.btn-outline-warning.disabled, .btn-outline-warning:disabled {\n color: #ffc107;\n background-color: transparent;\n}\n\n.btn-outline-warning:not(:disabled):not(.disabled):active, .btn-outline-warning:not(:disabled):not(.disabled).active,\n.show > .btn-outline-warning.dropdown-toggle {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-outline-warning:not(:disabled):not(.disabled):active:focus, .btn-outline-warning:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-warning.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n}\n\n.btn-outline-danger {\n color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-outline-danger:hover {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-outline-danger:focus, .btn-outline-danger.focus {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n}\n\n.btn-outline-danger.disabled, .btn-outline-danger:disabled {\n color: #dc3545;\n background-color: transparent;\n}\n\n.btn-outline-danger:not(:disabled):not(.disabled):active, .btn-outline-danger:not(:disabled):not(.disabled).active,\n.show > .btn-outline-danger.dropdown-toggle {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-outline-danger:not(:disabled):not(.disabled):active:focus, .btn-outline-danger:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-danger.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n}\n\n.btn-outline-light {\n color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-outline-light:hover {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-outline-light:focus, .btn-outline-light.focus {\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n}\n\n.btn-outline-light.disabled, .btn-outline-light:disabled {\n color: #f8f9fa;\n background-color: transparent;\n}\n\n.btn-outline-light:not(:disabled):not(.disabled):active, .btn-outline-light:not(:disabled):not(.disabled).active,\n.show > .btn-outline-light.dropdown-toggle {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-outline-light:not(:disabled):not(.disabled):active:focus, .btn-outline-light:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-light.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n}\n\n.btn-outline-dark {\n color: #343a40;\n border-color: #343a40;\n}\n\n.btn-outline-dark:hover {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-outline-dark:focus, .btn-outline-dark.focus {\n box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n}\n\n.btn-outline-dark.disabled, .btn-outline-dark:disabled {\n color: #343a40;\n background-color: transparent;\n}\n\n.btn-outline-dark:not(:disabled):not(.disabled):active, .btn-outline-dark:not(:disabled):not(.disabled).active,\n.show > .btn-outline-dark.dropdown-toggle {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-outline-dark:not(:disabled):not(.disabled):active:focus, .btn-outline-dark:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-dark.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n}\n\n.btn-link {\n font-weight: 400;\n color: #007bff;\n text-decoration: none;\n}\n\n.btn-link:hover {\n color: #0056b3;\n text-decoration: underline;\n}\n\n.btn-link:focus, .btn-link.focus {\n text-decoration: underline;\n}\n\n.btn-link:disabled, .btn-link.disabled {\n color: #6c757d;\n pointer-events: none;\n}\n\n.btn-lg, .btn-group-lg > .btn {\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem;\n}\n\n.btn-sm, .btn-group-sm > .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem;\n}\n\n.btn-block {\n display: block;\n width: 100%;\n}\n\n.btn-block + .btn-block {\n margin-top: 0.5rem;\n}\n\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n width: 100%;\n}\n\n.fade {\n transition: opacity 0.15s linear;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .fade {\n transition: none;\n }\n}\n\n.fade:not(.show) {\n opacity: 0;\n}\n\n.collapse:not(.show) {\n display: none;\n}\n\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n transition: height 0.35s ease;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .collapsing {\n transition: none;\n }\n}\n\n.dropup,\n.dropright,\n.dropdown,\n.dropleft {\n position: relative;\n}\n\n.dropdown-toggle {\n white-space: nowrap;\n}\n\n.dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid;\n border-right: 0.3em solid transparent;\n border-bottom: 0;\n border-left: 0.3em solid transparent;\n}\n\n.dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 10rem;\n padding: 0.5rem 0;\n margin: 0.125rem 0 0;\n font-size: 1rem;\n color: #212529;\n text-align: left;\n list-style: none;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0.25rem;\n}\n\n.dropdown-menu-left {\n right: auto;\n left: 0;\n}\n\n.dropdown-menu-right {\n right: 0;\n left: auto;\n}\n\n@media (min-width: 576px) {\n .dropdown-menu-sm-left {\n right: auto;\n left: 0;\n }\n .dropdown-menu-sm-right {\n right: 0;\n left: auto;\n }\n}\n\n@media (min-width: 768px) {\n .dropdown-menu-md-left {\n right: auto;\n left: 0;\n }\n .dropdown-menu-md-right {\n right: 0;\n left: auto;\n }\n}\n\n@media (min-width: 992px) {\n .dropdown-menu-lg-left {\n right: auto;\n left: 0;\n }\n .dropdown-menu-lg-right {\n right: 0;\n left: auto;\n }\n}\n\n@media (min-width: 1200px) {\n .dropdown-menu-xl-left {\n right: auto;\n left: 0;\n }\n .dropdown-menu-xl-right {\n right: 0;\n left: auto;\n }\n}\n\n.dropup .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-top: 0;\n margin-bottom: 0.125rem;\n}\n\n.dropup .dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0;\n border-right: 0.3em solid transparent;\n border-bottom: 0.3em solid;\n border-left: 0.3em solid transparent;\n}\n\n.dropup .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropright .dropdown-menu {\n top: 0;\n right: auto;\n left: 100%;\n margin-top: 0;\n margin-left: 0.125rem;\n}\n\n.dropright .dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid transparent;\n border-right: 0;\n border-bottom: 0.3em solid transparent;\n border-left: 0.3em solid;\n}\n\n.dropright .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropright .dropdown-toggle::after {\n vertical-align: 0;\n}\n\n.dropleft .dropdown-menu {\n top: 0;\n right: 100%;\n left: auto;\n margin-top: 0;\n margin-right: 0.125rem;\n}\n\n.dropleft .dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n}\n\n.dropleft .dropdown-toggle::after {\n display: none;\n}\n\n.dropleft .dropdown-toggle::before {\n display: inline-block;\n margin-right: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid transparent;\n border-right: 0.3em solid;\n border-bottom: 0.3em solid transparent;\n}\n\n.dropleft .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropleft .dropdown-toggle::before {\n vertical-align: 0;\n}\n\n.dropdown-menu[x-placement^=\"top\"], .dropdown-menu[x-placement^=\"right\"], .dropdown-menu[x-placement^=\"bottom\"], .dropdown-menu[x-placement^=\"left\"] {\n right: auto;\n bottom: auto;\n}\n\n.dropdown-divider {\n height: 0;\n margin: 0.5rem 0;\n overflow: hidden;\n border-top: 1px solid #e9ecef;\n}\n\n.dropdown-item {\n display: block;\n width: 100%;\n padding: 0.25rem 1.5rem;\n clear: both;\n font-weight: 400;\n color: #212529;\n text-align: inherit;\n white-space: nowrap;\n background-color: transparent;\n border: 0;\n}\n\n.dropdown-item:hover, .dropdown-item:focus {\n color: #16181b;\n text-decoration: none;\n background-color: #f8f9fa;\n}\n\n.dropdown-item.active, .dropdown-item:active {\n color: #fff;\n text-decoration: none;\n background-color: #007bff;\n}\n\n.dropdown-item.disabled, .dropdown-item:disabled {\n color: #6c757d;\n pointer-events: none;\n background-color: transparent;\n}\n\n.dropdown-menu.show {\n display: block;\n}\n\n.dropdown-header {\n display: block;\n padding: 0.5rem 1.5rem;\n margin-bottom: 0;\n font-size: 0.875rem;\n color: #6c757d;\n white-space: nowrap;\n}\n\n.dropdown-item-text {\n display: block;\n padding: 0.25rem 1.5rem;\n color: #212529;\n}\n\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-flex;\n vertical-align: middle;\n}\n\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n position: relative;\n flex: 1 1 auto;\n}\n\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover {\n z-index: 1;\n}\n\n.btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active,\n.btn-group-vertical > .btn:focus,\n.btn-group-vertical > .btn:active,\n.btn-group-vertical > .btn.active {\n z-index: 1;\n}\n\n.btn-toolbar {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-start;\n}\n\n.btn-toolbar .input-group {\n width: auto;\n}\n\n.btn-group > .btn:not(:first-child),\n.btn-group > .btn-group:not(:first-child) {\n margin-left: -1px;\n}\n\n.btn-group > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group > .btn-group:not(:last-child) > .btn {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.btn-group > .btn:not(:first-child),\n.btn-group > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.dropdown-toggle-split {\n padding-right: 0.5625rem;\n padding-left: 0.5625rem;\n}\n\n.dropdown-toggle-split::after,\n.dropup .dropdown-toggle-split::after,\n.dropright .dropdown-toggle-split::after {\n margin-left: 0;\n}\n\n.dropleft .dropdown-toggle-split::before {\n margin-right: 0;\n}\n\n.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {\n padding-right: 0.375rem;\n padding-left: 0.375rem;\n}\n\n.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {\n padding-right: 0.75rem;\n padding-left: 0.75rem;\n}\n\n.btn-group-vertical {\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n}\n\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group {\n width: 100%;\n}\n\n.btn-group-vertical > .btn:not(:first-child),\n.btn-group-vertical > .btn-group:not(:first-child) {\n margin-top: -1px;\n}\n\n.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group-vertical > .btn-group:not(:last-child) > .btn {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.btn-group-vertical > .btn:not(:first-child),\n.btn-group-vertical > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.btn-group-toggle > .btn,\n.btn-group-toggle > .btn-group > .btn {\n margin-bottom: 0;\n}\n\n.btn-group-toggle > .btn input[type=\"radio\"],\n.btn-group-toggle > .btn input[type=\"checkbox\"],\n.btn-group-toggle > .btn-group > .btn input[type=\"radio\"],\n.btn-group-toggle > .btn-group > .btn input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n\n.input-group {\n position: relative;\n display: flex;\n flex-wrap: wrap;\n align-items: stretch;\n width: 100%;\n}\n\n.input-group > .form-control,\n.input-group > .form-control-plaintext,\n.input-group > .custom-select,\n.input-group > .custom-file {\n position: relative;\n flex: 1 1 auto;\n width: 1%;\n min-width: 0;\n margin-bottom: 0;\n}\n\n.input-group > .form-control + .form-control,\n.input-group > .form-control + .custom-select,\n.input-group > .form-control + .custom-file,\n.input-group > .form-control-plaintext + .form-control,\n.input-group > .form-control-plaintext + .custom-select,\n.input-group > .form-control-plaintext + .custom-file,\n.input-group > .custom-select + .form-control,\n.input-group > .custom-select + .custom-select,\n.input-group > .custom-select + .custom-file,\n.input-group > .custom-file + .form-control,\n.input-group > .custom-file + .custom-select,\n.input-group > .custom-file + .custom-file {\n margin-left: -1px;\n}\n\n.input-group > .form-control:focus,\n.input-group > .custom-select:focus,\n.input-group > .custom-file .custom-file-input:focus ~ .custom-file-label {\n z-index: 3;\n}\n\n.input-group > .custom-file .custom-file-input:focus {\n z-index: 4;\n}\n\n.input-group > .form-control:not(:last-child),\n.input-group > .custom-select:not(:last-child) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.input-group > .form-control:not(:first-child),\n.input-group > .custom-select:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.input-group > .custom-file {\n display: flex;\n align-items: center;\n}\n\n.input-group > .custom-file:not(:last-child) .custom-file-label,\n.input-group > .custom-file:not(:last-child) .custom-file-label::after {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.input-group > .custom-file:not(:first-child) .custom-file-label {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.input-group-prepend,\n.input-group-append {\n display: flex;\n}\n\n.input-group-prepend .btn,\n.input-group-append .btn {\n position: relative;\n z-index: 2;\n}\n\n.input-group-prepend .btn:focus,\n.input-group-append .btn:focus {\n z-index: 3;\n}\n\n.input-group-prepend .btn + .btn,\n.input-group-prepend .btn + .input-group-text,\n.input-group-prepend .input-group-text + .input-group-text,\n.input-group-prepend .input-group-text + .btn,\n.input-group-append .btn + .btn,\n.input-group-append .btn + .input-group-text,\n.input-group-append .input-group-text + .input-group-text,\n.input-group-append .input-group-text + .btn {\n margin-left: -1px;\n}\n\n.input-group-prepend {\n margin-right: -1px;\n}\n\n.input-group-append {\n margin-left: -1px;\n}\n\n.input-group-text {\n display: flex;\n align-items: center;\n padding: 0.375rem 0.75rem;\n margin-bottom: 0;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #495057;\n text-align: center;\n white-space: nowrap;\n background-color: #e9ecef;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n}\n\n.input-group-text input[type=\"radio\"],\n.input-group-text input[type=\"checkbox\"] {\n margin-top: 0;\n}\n\n.input-group-lg > .form-control:not(textarea),\n.input-group-lg > .custom-select {\n height: calc(1.5em + 1rem + 2px);\n}\n\n.input-group-lg > .form-control,\n.input-group-lg > .custom-select,\n.input-group-lg > .input-group-prepend > .input-group-text,\n.input-group-lg > .input-group-append > .input-group-text,\n.input-group-lg > .input-group-prepend > .btn,\n.input-group-lg > .input-group-append > .btn {\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem;\n}\n\n.input-group-sm > .form-control:not(textarea),\n.input-group-sm > .custom-select {\n height: calc(1.5em + 0.5rem + 2px);\n}\n\n.input-group-sm > .form-control,\n.input-group-sm > .custom-select,\n.input-group-sm > .input-group-prepend > .input-group-text,\n.input-group-sm > .input-group-append > .input-group-text,\n.input-group-sm > .input-group-prepend > .btn,\n.input-group-sm > .input-group-append > .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem;\n}\n\n.input-group-lg > .custom-select,\n.input-group-sm > .custom-select {\n padding-right: 1.75rem;\n}\n\n.input-group > .input-group-prepend > .btn,\n.input-group > .input-group-prepend > .input-group-text,\n.input-group > .input-group-append:not(:last-child) > .btn,\n.input-group > .input-group-append:not(:last-child) > .input-group-text,\n.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.input-group > .input-group-append > .btn,\n.input-group > .input-group-append > .input-group-text,\n.input-group > .input-group-prepend:not(:first-child) > .btn,\n.input-group > .input-group-prepend:not(:first-child) > .input-group-text,\n.input-group > .input-group-prepend:first-child > .btn:not(:first-child),\n.input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.custom-control {\n position: relative;\n z-index: 1;\n display: block;\n min-height: 1.5rem;\n padding-left: 1.5rem;\n}\n\n.custom-control-inline {\n display: inline-flex;\n margin-right: 1rem;\n}\n\n.custom-control-input {\n position: absolute;\n left: 0;\n z-index: -1;\n width: 1rem;\n height: 1.25rem;\n opacity: 0;\n}\n\n.custom-control-input:checked ~ .custom-control-label::before {\n color: #fff;\n border-color: #007bff;\n background-color: #007bff;\n}\n\n.custom-control-input:focus ~ .custom-control-label::before {\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-control-input:focus:not(:checked) ~ .custom-control-label::before {\n border-color: #80bdff;\n}\n\n.custom-control-input:not(:disabled):active ~ .custom-control-label::before {\n color: #fff;\n background-color: #b3d7ff;\n border-color: #b3d7ff;\n}\n\n.custom-control-input[disabled] ~ .custom-control-label, .custom-control-input:disabled ~ .custom-control-label {\n color: #6c757d;\n}\n\n.custom-control-input[disabled] ~ .custom-control-label::before, .custom-control-input:disabled ~ .custom-control-label::before {\n background-color: #e9ecef;\n}\n\n.custom-control-label {\n position: relative;\n margin-bottom: 0;\n vertical-align: top;\n}\n\n.custom-control-label::before {\n position: absolute;\n top: 0.25rem;\n left: -1.5rem;\n display: block;\n width: 1rem;\n height: 1rem;\n pointer-events: none;\n content: \"\";\n background-color: #fff;\n border: #adb5bd solid 1px;\n}\n\n.custom-control-label::after {\n position: absolute;\n top: 0.25rem;\n left: -1.5rem;\n display: block;\n width: 1rem;\n height: 1rem;\n content: \"\";\n background: no-repeat 50% / 50% 50%;\n}\n\n.custom-checkbox .custom-control-label::before {\n border-radius: 0.25rem;\n}\n\n.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e\");\n}\n\n.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before {\n border-color: #007bff;\n background-color: #007bff;\n}\n\n.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e\");\n}\n\n.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before {\n background-color: rgba(0, 123, 255, 0.5);\n}\n\n.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before {\n background-color: rgba(0, 123, 255, 0.5);\n}\n\n.custom-radio .custom-control-label::before {\n border-radius: 50%;\n}\n\n.custom-radio .custom-control-input:checked ~ .custom-control-label::after {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e\");\n}\n\n.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before {\n background-color: rgba(0, 123, 255, 0.5);\n}\n\n.custom-switch {\n padding-left: 2.25rem;\n}\n\n.custom-switch .custom-control-label::before {\n left: -2.25rem;\n width: 1.75rem;\n pointer-events: all;\n border-radius: 0.5rem;\n}\n\n.custom-switch .custom-control-label::after {\n top: calc(0.25rem + 2px);\n left: calc(-2.25rem + 2px);\n width: calc(1rem - 4px);\n height: calc(1rem - 4px);\n background-color: #adb5bd;\n border-radius: 0.5rem;\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-transform 0.15s ease-in-out;\n transition: transform 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n transition: transform 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-transform 0.15s ease-in-out;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .custom-switch .custom-control-label::after {\n transition: none;\n }\n}\n\n.custom-switch .custom-control-input:checked ~ .custom-control-label::after {\n background-color: #fff;\n -webkit-transform: translateX(0.75rem);\n transform: translateX(0.75rem);\n}\n\n.custom-switch .custom-control-input:disabled:checked ~ .custom-control-label::before {\n background-color: rgba(0, 123, 255, 0.5);\n}\n\n.custom-select {\n display: inline-block;\n width: 100%;\n height: calc(1.5em + 0.75rem + 2px);\n padding: 0.375rem 1.75rem 0.375rem 0.75rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #495057;\n vertical-align: middle;\n background: #fff url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e\") no-repeat right 0.75rem center/8px 10px;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n -webkit-appearance: none;\n appearance: none;\n}\n\n.custom-select:focus {\n border-color: #80bdff;\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-select:focus::-ms-value {\n color: #495057;\n background-color: #fff;\n}\n\n.custom-select[multiple], .custom-select[size]:not([size=\"1\"]) {\n height: auto;\n padding-right: 0.75rem;\n background-image: none;\n}\n\n.custom-select:disabled {\n color: #6c757d;\n background-color: #e9ecef;\n}\n\n.custom-select::-ms-expand {\n display: none;\n}\n\n.custom-select:-moz-focusring {\n color: transparent;\n text-shadow: 0 0 0 #495057;\n}\n\n.custom-select-sm {\n height: calc(1.5em + 0.5rem + 2px);\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n padding-left: 0.5rem;\n font-size: 0.875rem;\n}\n\n.custom-select-lg {\n height: calc(1.5em + 1rem + 2px);\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n padding-left: 1rem;\n font-size: 1.25rem;\n}\n\n.custom-file {\n position: relative;\n display: inline-block;\n width: 100%;\n height: calc(1.5em + 0.75rem + 2px);\n margin-bottom: 0;\n}\n\n.custom-file-input {\n position: relative;\n z-index: 2;\n width: 100%;\n height: calc(1.5em + 0.75rem + 2px);\n margin: 0;\n opacity: 0;\n}\n\n.custom-file-input:focus ~ .custom-file-label {\n border-color: #80bdff;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-file-input[disabled] ~ .custom-file-label,\n.custom-file-input:disabled ~ .custom-file-label {\n background-color: #e9ecef;\n}\n\n.custom-file-input:lang(en) ~ .custom-file-label::after {\n content: \"Browse\";\n}\n\n.custom-file-input ~ .custom-file-label[data-browse]::after {\n content: attr(data-browse);\n}\n\n.custom-file-label {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n z-index: 1;\n height: calc(1.5em + 0.75rem + 2px);\n padding: 0.375rem 0.75rem;\n font-weight: 400;\n line-height: 1.5;\n color: #495057;\n background-color: #fff;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n}\n\n.custom-file-label::after {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n z-index: 3;\n display: block;\n height: calc(1.5em + 0.75rem);\n padding: 0.375rem 0.75rem;\n line-height: 1.5;\n color: #495057;\n content: \"Browse\";\n background-color: #e9ecef;\n border-left: inherit;\n border-radius: 0 0.25rem 0.25rem 0;\n}\n\n.custom-range {\n width: 100%;\n height: 1.4rem;\n padding: 0;\n background-color: transparent;\n -webkit-appearance: none;\n appearance: none;\n}\n\n.custom-range:focus {\n outline: none;\n}\n\n.custom-range:focus::-webkit-slider-thumb {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-range:focus::-moz-range-thumb {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-range:focus::-ms-thumb {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-range::-moz-focus-outer {\n border: 0;\n}\n\n.custom-range::-webkit-slider-thumb {\n width: 1rem;\n height: 1rem;\n margin-top: -0.25rem;\n background-color: #007bff;\n border: 0;\n border-radius: 1rem;\n -webkit-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n -webkit-appearance: none;\n appearance: none;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .custom-range::-webkit-slider-thumb {\n -webkit-transition: none;\n transition: none;\n }\n}\n\n.custom-range::-webkit-slider-thumb:active {\n background-color: #b3d7ff;\n}\n\n.custom-range::-webkit-slider-runnable-track {\n width: 100%;\n height: 0.5rem;\n color: transparent;\n cursor: pointer;\n background-color: #dee2e6;\n border-color: transparent;\n border-radius: 1rem;\n}\n\n.custom-range::-moz-range-thumb {\n width: 1rem;\n height: 1rem;\n background-color: #007bff;\n border: 0;\n border-radius: 1rem;\n -moz-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n appearance: none;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .custom-range::-moz-range-thumb {\n -moz-transition: none;\n transition: none;\n }\n}\n\n.custom-range::-moz-range-thumb:active {\n background-color: #b3d7ff;\n}\n\n.custom-range::-moz-range-track {\n width: 100%;\n height: 0.5rem;\n color: transparent;\n cursor: pointer;\n background-color: #dee2e6;\n border-color: transparent;\n border-radius: 1rem;\n}\n\n.custom-range::-ms-thumb {\n width: 1rem;\n height: 1rem;\n margin-top: 0;\n margin-right: 0.2rem;\n margin-left: 0.2rem;\n background-color: #007bff;\n border: 0;\n border-radius: 1rem;\n -ms-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n appearance: none;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .custom-range::-ms-thumb {\n -ms-transition: none;\n transition: none;\n }\n}\n\n.custom-range::-ms-thumb:active {\n background-color: #b3d7ff;\n}\n\n.custom-range::-ms-track {\n width: 100%;\n height: 0.5rem;\n color: transparent;\n cursor: pointer;\n background-color: transparent;\n border-color: transparent;\n border-width: 0.5rem;\n}\n\n.custom-range::-ms-fill-lower {\n background-color: #dee2e6;\n border-radius: 1rem;\n}\n\n.custom-range::-ms-fill-upper {\n margin-right: 15px;\n background-color: #dee2e6;\n border-radius: 1rem;\n}\n\n.custom-range:disabled::-webkit-slider-thumb {\n background-color: #adb5bd;\n}\n\n.custom-range:disabled::-webkit-slider-runnable-track {\n cursor: default;\n}\n\n.custom-range:disabled::-moz-range-thumb {\n background-color: #adb5bd;\n}\n\n.custom-range:disabled::-moz-range-track {\n cursor: default;\n}\n\n.custom-range:disabled::-ms-thumb {\n background-color: #adb5bd;\n}\n\n.custom-control-label::before,\n.custom-file-label,\n.custom-select {\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .custom-control-label::before,\n .custom-file-label,\n .custom-select {\n transition: none;\n }\n}\n\n.nav {\n display: flex;\n flex-wrap: wrap;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n\n.nav-link {\n display: block;\n padding: 0.5rem 1rem;\n}\n\n.nav-link:hover, .nav-link:focus {\n text-decoration: none;\n}\n\n.nav-link.disabled {\n color: #6c757d;\n pointer-events: none;\n cursor: default;\n}\n\n.nav-tabs {\n border-bottom: 1px solid #dee2e6;\n}\n\n.nav-tabs .nav-item {\n margin-bottom: -1px;\n}\n\n.nav-tabs .nav-link {\n border: 1px solid transparent;\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n\n.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus {\n border-color: #e9ecef #e9ecef #dee2e6;\n}\n\n.nav-tabs .nav-link.disabled {\n color: #6c757d;\n background-color: transparent;\n border-color: transparent;\n}\n\n.nav-tabs .nav-link.active,\n.nav-tabs .nav-item.show .nav-link {\n color: #495057;\n background-color: #fff;\n border-color: #dee2e6 #dee2e6 #fff;\n}\n\n.nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.nav-pills .nav-link {\n border-radius: 0.25rem;\n}\n\n.nav-pills .nav-link.active,\n.nav-pills .show > .nav-link {\n color: #fff;\n background-color: #007bff;\n}\n\n.nav-fill > .nav-link,\n.nav-fill .nav-item {\n flex: 1 1 auto;\n text-align: center;\n}\n\n.nav-justified > .nav-link,\n.nav-justified .nav-item {\n flex-basis: 0;\n flex-grow: 1;\n text-align: center;\n}\n\n.tab-content > .tab-pane {\n display: none;\n}\n\n.tab-content > .active {\n display: block;\n}\n\n.navbar {\n position: relative;\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n padding: 0.5rem 1rem;\n}\n\n.navbar .container,\n.navbar .container-fluid, .navbar .container-sm, .navbar .container-md, .navbar .container-lg, .navbar .container-xl {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n}\n\n.navbar-brand {\n display: inline-block;\n padding-top: 0.3125rem;\n padding-bottom: 0.3125rem;\n margin-right: 1rem;\n font-size: 1.25rem;\n line-height: inherit;\n white-space: nowrap;\n}\n\n.navbar-brand:hover, .navbar-brand:focus {\n text-decoration: none;\n}\n\n.navbar-nav {\n display: flex;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n\n.navbar-nav .nav-link {\n padding-right: 0;\n padding-left: 0;\n}\n\n.navbar-nav .dropdown-menu {\n position: static;\n float: none;\n}\n\n.navbar-text {\n display: inline-block;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n\n.navbar-collapse {\n flex-basis: 100%;\n flex-grow: 1;\n align-items: center;\n}\n\n.navbar-toggler {\n padding: 0.25rem 0.75rem;\n font-size: 1.25rem;\n line-height: 1;\n background-color: transparent;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n}\n\n.navbar-toggler:hover, .navbar-toggler:focus {\n text-decoration: none;\n}\n\n.navbar-toggler-icon {\n display: inline-block;\n width: 1.5em;\n height: 1.5em;\n vertical-align: middle;\n content: \"\";\n background: no-repeat center center;\n background-size: 100% 100%;\n}\n\n@media (max-width: 575.98px) {\n .navbar-expand-sm > .container,\n .navbar-expand-sm > .container-fluid, .navbar-expand-sm > .container-sm, .navbar-expand-sm > .container-md, .navbar-expand-sm > .container-lg, .navbar-expand-sm > .container-xl {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 576px) {\n .navbar-expand-sm {\n flex-flow: row nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-sm .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-sm .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-sm .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n }\n .navbar-expand-sm > .container,\n .navbar-expand-sm > .container-fluid, .navbar-expand-sm > .container-sm, .navbar-expand-sm > .container-md, .navbar-expand-sm > .container-lg, .navbar-expand-sm > .container-xl {\n flex-wrap: nowrap;\n }\n .navbar-expand-sm .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-sm .navbar-toggler {\n display: none;\n }\n}\n\n@media (max-width: 767.98px) {\n .navbar-expand-md > .container,\n .navbar-expand-md > .container-fluid, .navbar-expand-md > .container-sm, .navbar-expand-md > .container-md, .navbar-expand-md > .container-lg, .navbar-expand-md > .container-xl {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 768px) {\n .navbar-expand-md {\n flex-flow: row nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-md .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-md .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-md .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n }\n .navbar-expand-md > .container,\n .navbar-expand-md > .container-fluid, .navbar-expand-md > .container-sm, .navbar-expand-md > .container-md, .navbar-expand-md > .container-lg, .navbar-expand-md > .container-xl {\n flex-wrap: nowrap;\n }\n .navbar-expand-md .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-md .navbar-toggler {\n display: none;\n }\n}\n\n@media (max-width: 991.98px) {\n .navbar-expand-lg > .container,\n .navbar-expand-lg > .container-fluid, .navbar-expand-lg > .container-sm, .navbar-expand-lg > .container-md, .navbar-expand-lg > .container-lg, .navbar-expand-lg > .container-xl {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 992px) {\n .navbar-expand-lg {\n flex-flow: row nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-lg .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-lg .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-lg .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n }\n .navbar-expand-lg > .container,\n .navbar-expand-lg > .container-fluid, .navbar-expand-lg > .container-sm, .navbar-expand-lg > .container-md, .navbar-expand-lg > .container-lg, .navbar-expand-lg > .container-xl {\n flex-wrap: nowrap;\n }\n .navbar-expand-lg .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-lg .navbar-toggler {\n display: none;\n }\n}\n\n@media (max-width: 1199.98px) {\n .navbar-expand-xl > .container,\n .navbar-expand-xl > .container-fluid, .navbar-expand-xl > .container-sm, .navbar-expand-xl > .container-md, .navbar-expand-xl > .container-lg, .navbar-expand-xl > .container-xl {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 1200px) {\n .navbar-expand-xl {\n flex-flow: row nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-xl .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-xl .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-xl .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n }\n .navbar-expand-xl > .container,\n .navbar-expand-xl > .container-fluid, .navbar-expand-xl > .container-sm, .navbar-expand-xl > .container-md, .navbar-expand-xl > .container-lg, .navbar-expand-xl > .container-xl {\n flex-wrap: nowrap;\n }\n .navbar-expand-xl .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-xl .navbar-toggler {\n display: none;\n }\n}\n\n.navbar-expand {\n flex-flow: row nowrap;\n justify-content: flex-start;\n}\n\n.navbar-expand > .container,\n.navbar-expand > .container-fluid, .navbar-expand > .container-sm, .navbar-expand > .container-md, .navbar-expand > .container-lg, .navbar-expand > .container-xl {\n padding-right: 0;\n padding-left: 0;\n}\n\n.navbar-expand .navbar-nav {\n flex-direction: row;\n}\n\n.navbar-expand .navbar-nav .dropdown-menu {\n position: absolute;\n}\n\n.navbar-expand .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n}\n\n.navbar-expand > .container,\n.navbar-expand > .container-fluid, .navbar-expand > .container-sm, .navbar-expand > .container-md, .navbar-expand > .container-lg, .navbar-expand > .container-xl {\n flex-wrap: nowrap;\n}\n\n.navbar-expand .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n}\n\n.navbar-expand .navbar-toggler {\n display: none;\n}\n\n.navbar-light .navbar-brand {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-nav .nav-link {\n color: rgba(0, 0, 0, 0.5);\n}\n\n.navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus {\n color: rgba(0, 0, 0, 0.7);\n}\n\n.navbar-light .navbar-nav .nav-link.disabled {\n color: rgba(0, 0, 0, 0.3);\n}\n\n.navbar-light .navbar-nav .show > .nav-link,\n.navbar-light .navbar-nav .active > .nav-link,\n.navbar-light .navbar-nav .nav-link.show,\n.navbar-light .navbar-nav .nav-link.active {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-toggler {\n color: rgba(0, 0, 0, 0.5);\n border-color: rgba(0, 0, 0, 0.1);\n}\n\n.navbar-light .navbar-toggler-icon {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n}\n\n.navbar-light .navbar-text {\n color: rgba(0, 0, 0, 0.5);\n}\n\n.navbar-light .navbar-text a {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-text a:hover, .navbar-light .navbar-text a:focus {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-dark .navbar-brand {\n color: #fff;\n}\n\n.navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus {\n color: #fff;\n}\n\n.navbar-dark .navbar-nav .nav-link {\n color: rgba(255, 255, 255, 0.5);\n}\n\n.navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus {\n color: rgba(255, 255, 255, 0.75);\n}\n\n.navbar-dark .navbar-nav .nav-link.disabled {\n color: rgba(255, 255, 255, 0.25);\n}\n\n.navbar-dark .navbar-nav .show > .nav-link,\n.navbar-dark .navbar-nav .active > .nav-link,\n.navbar-dark .navbar-nav .nav-link.show,\n.navbar-dark .navbar-nav .nav-link.active {\n color: #fff;\n}\n\n.navbar-dark .navbar-toggler {\n color: rgba(255, 255, 255, 0.5);\n border-color: rgba(255, 255, 255, 0.1);\n}\n\n.navbar-dark .navbar-toggler-icon {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n}\n\n.navbar-dark .navbar-text {\n color: rgba(255, 255, 255, 0.5);\n}\n\n.navbar-dark .navbar-text a {\n color: #fff;\n}\n\n.navbar-dark .navbar-text a:hover, .navbar-dark .navbar-text a:focus {\n color: #fff;\n}\n\n.card {\n position: relative;\n display: flex;\n flex-direction: column;\n min-width: 0;\n word-wrap: break-word;\n background-color: #fff;\n background-clip: border-box;\n border: 1px solid rgba(0, 0, 0, 0.125);\n border-radius: 0.25rem;\n}\n\n.card > hr {\n margin-right: 0;\n margin-left: 0;\n}\n\n.card > .list-group {\n border-top: inherit;\n border-bottom: inherit;\n}\n\n.card > .list-group:first-child {\n border-top-width: 0;\n border-top-left-radius: calc(0.25rem - 1px);\n border-top-right-radius: calc(0.25rem - 1px);\n}\n\n.card > .list-group:last-child {\n border-bottom-width: 0;\n border-bottom-right-radius: calc(0.25rem - 1px);\n border-bottom-left-radius: calc(0.25rem - 1px);\n}\n\n.card > .card-header + .list-group,\n.card > .list-group + .card-footer {\n border-top: 0;\n}\n\n.card-body {\n flex: 1 1 auto;\n min-height: 1px;\n padding: 1.25rem;\n}\n\n.card-title {\n margin-bottom: 0.75rem;\n}\n\n.card-subtitle {\n margin-top: -0.375rem;\n margin-bottom: 0;\n}\n\n.card-text:last-child {\n margin-bottom: 0;\n}\n\n.card-link:hover {\n text-decoration: none;\n}\n\n.card-link + .card-link {\n margin-left: 1.25rem;\n}\n\n.card-header {\n padding: 0.75rem 1.25rem;\n margin-bottom: 0;\n background-color: rgba(0, 0, 0, 0.03);\n border-bottom: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-header:first-child {\n border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0;\n}\n\n.card-footer {\n padding: 0.75rem 1.25rem;\n background-color: rgba(0, 0, 0, 0.03);\n border-top: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-footer:last-child {\n border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px);\n}\n\n.card-header-tabs {\n margin-right: -0.625rem;\n margin-bottom: -0.75rem;\n margin-left: -0.625rem;\n border-bottom: 0;\n}\n\n.card-header-pills {\n margin-right: -0.625rem;\n margin-left: -0.625rem;\n}\n\n.card-img-overlay {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n padding: 1.25rem;\n border-radius: calc(0.25rem - 1px);\n}\n\n.card-img,\n.card-img-top,\n.card-img-bottom {\n flex-shrink: 0;\n width: 100%;\n}\n\n.card-img,\n.card-img-top {\n border-top-left-radius: calc(0.25rem - 1px);\n border-top-right-radius: calc(0.25rem - 1px);\n}\n\n.card-img,\n.card-img-bottom {\n border-bottom-right-radius: calc(0.25rem - 1px);\n border-bottom-left-radius: calc(0.25rem - 1px);\n}\n\n.card-deck .card {\n margin-bottom: 15px;\n}\n\n@media (min-width: 576px) {\n .card-deck {\n display: flex;\n flex-flow: row wrap;\n margin-right: -15px;\n margin-left: -15px;\n }\n .card-deck .card {\n flex: 1 0;\n margin-right: 15px;\n margin-bottom: 0;\n margin-left: 15px;\n }\n}\n\n.card-group > .card {\n margin-bottom: 15px;\n}\n\n@media (min-width: 576px) {\n .card-group {\n display: flex;\n flex-flow: row wrap;\n }\n .card-group > .card {\n flex: 1 0;\n margin-bottom: 0;\n }\n .card-group > .card + .card {\n margin-left: 0;\n border-left: 0;\n }\n .card-group > .card:not(:last-child) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n .card-group > .card:not(:last-child) .card-img-top,\n .card-group > .card:not(:last-child) .card-header {\n border-top-right-radius: 0;\n }\n .card-group > .card:not(:last-child) .card-img-bottom,\n .card-group > .card:not(:last-child) .card-footer {\n border-bottom-right-radius: 0;\n }\n .card-group > .card:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n .card-group > .card:not(:first-child) .card-img-top,\n .card-group > .card:not(:first-child) .card-header {\n border-top-left-radius: 0;\n }\n .card-group > .card:not(:first-child) .card-img-bottom,\n .card-group > .card:not(:first-child) .card-footer {\n border-bottom-left-radius: 0;\n }\n}\n\n.card-columns .card {\n margin-bottom: 0.75rem;\n}\n\n@media (min-width: 576px) {\n .card-columns {\n -webkit-column-count: 3;\n column-count: 3;\n -webkit-column-gap: 1.25rem;\n -moz-column-gap: 1.25rem;\n grid-column-gap: 1.25rem;\n column-gap: 1.25rem;\n orphans: 1;\n widows: 1;\n }\n .card-columns .card {\n display: inline-block;\n width: 100%;\n }\n}\n\n.accordion {\n overflow-anchor: none;\n}\n\n.accordion > .card {\n overflow: hidden;\n}\n\n.accordion > .card:not(:last-of-type) {\n border-bottom: 0;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.accordion > .card:not(:first-of-type) {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.accordion > .card > .card-header {\n border-radius: 0;\n margin-bottom: -1px;\n}\n\n.breadcrumb {\n display: flex;\n flex-wrap: wrap;\n padding: 0.75rem 1rem;\n margin-bottom: 1rem;\n list-style: none;\n background-color: #e9ecef;\n border-radius: 0.25rem;\n}\n\n.breadcrumb-item {\n display: flex;\n}\n\n.breadcrumb-item + .breadcrumb-item {\n padding-left: 0.5rem;\n}\n\n.breadcrumb-item + .breadcrumb-item::before {\n display: inline-block;\n padding-right: 0.5rem;\n color: #6c757d;\n content: \"/\";\n}\n\n.breadcrumb-item + .breadcrumb-item:hover::before {\n text-decoration: underline;\n}\n\n.breadcrumb-item + .breadcrumb-item:hover::before {\n text-decoration: none;\n}\n\n.breadcrumb-item.active {\n color: #6c757d;\n}\n\n.pagination {\n display: flex;\n padding-left: 0;\n list-style: none;\n border-radius: 0.25rem;\n}\n\n.page-link {\n position: relative;\n display: block;\n padding: 0.5rem 0.75rem;\n margin-left: -1px;\n line-height: 1.25;\n color: #007bff;\n background-color: #fff;\n border: 1px solid #dee2e6;\n}\n\n.page-link:hover {\n z-index: 2;\n color: #0056b3;\n text-decoration: none;\n background-color: #e9ecef;\n border-color: #dee2e6;\n}\n\n.page-link:focus {\n z-index: 3;\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.page-item:first-child .page-link {\n margin-left: 0;\n border-top-left-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.page-item:last-child .page-link {\n border-top-right-radius: 0.25rem;\n border-bottom-right-radius: 0.25rem;\n}\n\n.page-item.active .page-link {\n z-index: 3;\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.page-item.disabled .page-link {\n color: #6c757d;\n pointer-events: none;\n cursor: auto;\n background-color: #fff;\n border-color: #dee2e6;\n}\n\n.pagination-lg .page-link {\n padding: 0.75rem 1.5rem;\n font-size: 1.25rem;\n line-height: 1.5;\n}\n\n.pagination-lg .page-item:first-child .page-link {\n border-top-left-radius: 0.3rem;\n border-bottom-left-radius: 0.3rem;\n}\n\n.pagination-lg .page-item:last-child .page-link {\n border-top-right-radius: 0.3rem;\n border-bottom-right-radius: 0.3rem;\n}\n\n.pagination-sm .page-link {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n}\n\n.pagination-sm .page-item:first-child .page-link {\n border-top-left-radius: 0.2rem;\n border-bottom-left-radius: 0.2rem;\n}\n\n.pagination-sm .page-item:last-child .page-link {\n border-top-right-radius: 0.2rem;\n border-bottom-right-radius: 0.2rem;\n}\n\n.badge {\n display: inline-block;\n padding: 0.25em 0.4em;\n font-size: 75%;\n font-weight: 700;\n line-height: 1;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: 0.25rem;\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .badge {\n transition: none;\n }\n}\n\na.badge:hover, a.badge:focus {\n text-decoration: none;\n}\n\n.badge:empty {\n display: none;\n}\n\n.btn .badge {\n position: relative;\n top: -1px;\n}\n\n.badge-pill {\n padding-right: 0.6em;\n padding-left: 0.6em;\n border-radius: 10rem;\n}\n\n.badge-primary {\n color: #fff;\n background-color: #007bff;\n}\n\na.badge-primary:hover, a.badge-primary:focus {\n color: #fff;\n background-color: #0062cc;\n}\n\na.badge-primary:focus, a.badge-primary.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n\n.badge-secondary {\n color: #fff;\n background-color: #6c757d;\n}\n\na.badge-secondary:hover, a.badge-secondary:focus {\n color: #fff;\n background-color: #545b62;\n}\n\na.badge-secondary:focus, a.badge-secondary.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\n}\n\n.badge-success {\n color: #fff;\n background-color: #28a745;\n}\n\na.badge-success:hover, a.badge-success:focus {\n color: #fff;\n background-color: #1e7e34;\n}\n\na.badge-success:focus, a.badge-success.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n}\n\n.badge-info {\n color: #fff;\n background-color: #17a2b8;\n}\n\na.badge-info:hover, a.badge-info:focus {\n color: #fff;\n background-color: #117a8b;\n}\n\na.badge-info:focus, a.badge-info.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n}\n\n.badge-warning {\n color: #212529;\n background-color: #ffc107;\n}\n\na.badge-warning:hover, a.badge-warning:focus {\n color: #212529;\n background-color: #d39e00;\n}\n\na.badge-warning:focus, a.badge-warning.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n}\n\n.badge-danger {\n color: #fff;\n background-color: #dc3545;\n}\n\na.badge-danger:hover, a.badge-danger:focus {\n color: #fff;\n background-color: #bd2130;\n}\n\na.badge-danger:focus, a.badge-danger.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n}\n\n.badge-light {\n color: #212529;\n background-color: #f8f9fa;\n}\n\na.badge-light:hover, a.badge-light:focus {\n color: #212529;\n background-color: #dae0e5;\n}\n\na.badge-light:focus, a.badge-light.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n}\n\n.badge-dark {\n color: #fff;\n background-color: #343a40;\n}\n\na.badge-dark:hover, a.badge-dark:focus {\n color: #fff;\n background-color: #1d2124;\n}\n\na.badge-dark:focus, a.badge-dark.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n}\n\n.jumbotron {\n padding: 2rem 1rem;\n margin-bottom: 2rem;\n background-color: #e9ecef;\n border-radius: 0.3rem;\n}\n\n@media (min-width: 576px) {\n .jumbotron {\n padding: 4rem 2rem;\n }\n}\n\n.jumbotron-fluid {\n padding-right: 0;\n padding-left: 0;\n border-radius: 0;\n}\n\n.alert {\n position: relative;\n padding: 0.75rem 1.25rem;\n margin-bottom: 1rem;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n}\n\n.alert-heading {\n color: inherit;\n}\n\n.alert-link {\n font-weight: 700;\n}\n\n.alert-dismissible {\n padding-right: 4rem;\n}\n\n.alert-dismissible .close {\n position: absolute;\n top: 0;\n right: 0;\n padding: 0.75rem 1.25rem;\n color: inherit;\n}\n\n.alert-primary {\n color: #004085;\n background-color: #cce5ff;\n border-color: #b8daff;\n}\n\n.alert-primary hr {\n border-top-color: #9fcdff;\n}\n\n.alert-primary .alert-link {\n color: #002752;\n}\n\n.alert-secondary {\n color: #383d41;\n background-color: #e2e3e5;\n border-color: #d6d8db;\n}\n\n.alert-secondary hr {\n border-top-color: #c8cbcf;\n}\n\n.alert-secondary .alert-link {\n color: #202326;\n}\n\n.alert-success {\n color: #155724;\n background-color: #d4edda;\n border-color: #c3e6cb;\n}\n\n.alert-success hr {\n border-top-color: #b1dfbb;\n}\n\n.alert-success .alert-link {\n color: #0b2e13;\n}\n\n.alert-info {\n color: #0c5460;\n background-color: #d1ecf1;\n border-color: #bee5eb;\n}\n\n.alert-info hr {\n border-top-color: #abdde5;\n}\n\n.alert-info .alert-link {\n color: #062c33;\n}\n\n.alert-warning {\n color: #856404;\n background-color: #fff3cd;\n border-color: #ffeeba;\n}\n\n.alert-warning hr {\n border-top-color: #ffe8a1;\n}\n\n.alert-warning .alert-link {\n color: #533f03;\n}\n\n.alert-danger {\n color: #721c24;\n background-color: #f8d7da;\n border-color: #f5c6cb;\n}\n\n.alert-danger hr {\n border-top-color: #f1b0b7;\n}\n\n.alert-danger .alert-link {\n color: #491217;\n}\n\n.alert-light {\n color: #818182;\n background-color: #fefefe;\n border-color: #fdfdfe;\n}\n\n.alert-light hr {\n border-top-color: #ececf6;\n}\n\n.alert-light .alert-link {\n color: #686868;\n}\n\n.alert-dark {\n color: #1b1e21;\n background-color: #d6d8d9;\n border-color: #c6c8ca;\n}\n\n.alert-dark hr {\n border-top-color: #b9bbbe;\n}\n\n.alert-dark .alert-link {\n color: #040505;\n}\n\n@-webkit-keyframes progress-bar-stripes {\n from {\n background-position: 1rem 0;\n }\n to {\n background-position: 0 0;\n }\n}\n\n@keyframes progress-bar-stripes {\n from {\n background-position: 1rem 0;\n }\n to {\n background-position: 0 0;\n }\n}\n\n.progress {\n display: flex;\n height: 1rem;\n overflow: hidden;\n line-height: 0;\n font-size: 0.75rem;\n background-color: #e9ecef;\n border-radius: 0.25rem;\n}\n\n.progress-bar {\n display: flex;\n flex-direction: column;\n justify-content: center;\n overflow: hidden;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n background-color: #007bff;\n transition: width 0.6s ease;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .progress-bar {\n transition: none;\n }\n}\n\n.progress-bar-striped {\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-size: 1rem 1rem;\n}\n\n.progress-bar-animated {\n -webkit-animation: progress-bar-stripes 1s linear infinite;\n animation: progress-bar-stripes 1s linear infinite;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .progress-bar-animated {\n -webkit-animation: none;\n animation: none;\n }\n}\n\n.media {\n display: flex;\n align-items: flex-start;\n}\n\n.media-body {\n flex: 1 1;\n}\n\n.list-group {\n display: flex;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n border-radius: 0.25rem;\n}\n\n.list-group-item-action {\n width: 100%;\n color: #495057;\n text-align: inherit;\n}\n\n.list-group-item-action:hover, .list-group-item-action:focus {\n z-index: 1;\n color: #495057;\n text-decoration: none;\n background-color: #f8f9fa;\n}\n\n.list-group-item-action:active {\n color: #212529;\n background-color: #e9ecef;\n}\n\n.list-group-item {\n position: relative;\n display: block;\n padding: 0.75rem 1.25rem;\n background-color: #fff;\n border: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.list-group-item:first-child {\n border-top-left-radius: inherit;\n border-top-right-radius: inherit;\n}\n\n.list-group-item:last-child {\n border-bottom-right-radius: inherit;\n border-bottom-left-radius: inherit;\n}\n\n.list-group-item.disabled, .list-group-item:disabled {\n color: #6c757d;\n pointer-events: none;\n background-color: #fff;\n}\n\n.list-group-item.active {\n z-index: 2;\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.list-group-item + .list-group-item {\n border-top-width: 0;\n}\n\n.list-group-item + .list-group-item.active {\n margin-top: -1px;\n border-top-width: 1px;\n}\n\n.list-group-horizontal {\n flex-direction: row;\n}\n\n.list-group-horizontal > .list-group-item:first-child {\n border-bottom-left-radius: 0.25rem;\n border-top-right-radius: 0;\n}\n\n.list-group-horizontal > .list-group-item:last-child {\n border-top-right-radius: 0.25rem;\n border-bottom-left-radius: 0;\n}\n\n.list-group-horizontal > .list-group-item.active {\n margin-top: 0;\n}\n\n.list-group-horizontal > .list-group-item + .list-group-item {\n border-top-width: 1px;\n border-left-width: 0;\n}\n\n.list-group-horizontal > .list-group-item + .list-group-item.active {\n margin-left: -1px;\n border-left-width: 1px;\n}\n\n@media (min-width: 576px) {\n .list-group-horizontal-sm {\n flex-direction: row;\n }\n .list-group-horizontal-sm > .list-group-item:first-child {\n border-bottom-left-radius: 0.25rem;\n border-top-right-radius: 0;\n }\n .list-group-horizontal-sm > .list-group-item:last-child {\n border-top-right-radius: 0.25rem;\n border-bottom-left-radius: 0;\n }\n .list-group-horizontal-sm > .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-sm > .list-group-item + .list-group-item {\n border-top-width: 1px;\n border-left-width: 0;\n }\n .list-group-horizontal-sm > .list-group-item + .list-group-item.active {\n margin-left: -1px;\n border-left-width: 1px;\n }\n}\n\n@media (min-width: 768px) {\n .list-group-horizontal-md {\n flex-direction: row;\n }\n .list-group-horizontal-md > .list-group-item:first-child {\n border-bottom-left-radius: 0.25rem;\n border-top-right-radius: 0;\n }\n .list-group-horizontal-md > .list-group-item:last-child {\n border-top-right-radius: 0.25rem;\n border-bottom-left-radius: 0;\n }\n .list-group-horizontal-md > .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-md > .list-group-item + .list-group-item {\n border-top-width: 1px;\n border-left-width: 0;\n }\n .list-group-horizontal-md > .list-group-item + .list-group-item.active {\n margin-left: -1px;\n border-left-width: 1px;\n }\n}\n\n@media (min-width: 992px) {\n .list-group-horizontal-lg {\n flex-direction: row;\n }\n .list-group-horizontal-lg > .list-group-item:first-child {\n border-bottom-left-radius: 0.25rem;\n border-top-right-radius: 0;\n }\n .list-group-horizontal-lg > .list-group-item:last-child {\n border-top-right-radius: 0.25rem;\n border-bottom-left-radius: 0;\n }\n .list-group-horizontal-lg > .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-lg > .list-group-item + .list-group-item {\n border-top-width: 1px;\n border-left-width: 0;\n }\n .list-group-horizontal-lg > .list-group-item + .list-group-item.active {\n margin-left: -1px;\n border-left-width: 1px;\n }\n}\n\n@media (min-width: 1200px) {\n .list-group-horizontal-xl {\n flex-direction: row;\n }\n .list-group-horizontal-xl > .list-group-item:first-child {\n border-bottom-left-radius: 0.25rem;\n border-top-right-radius: 0;\n }\n .list-group-horizontal-xl > .list-group-item:last-child {\n border-top-right-radius: 0.25rem;\n border-bottom-left-radius: 0;\n }\n .list-group-horizontal-xl > .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-xl > .list-group-item + .list-group-item {\n border-top-width: 1px;\n border-left-width: 0;\n }\n .list-group-horizontal-xl > .list-group-item + .list-group-item.active {\n margin-left: -1px;\n border-left-width: 1px;\n }\n}\n\n.list-group-flush {\n border-radius: 0;\n}\n\n.list-group-flush > .list-group-item {\n border-width: 0 0 1px;\n}\n\n.list-group-flush > .list-group-item:last-child {\n border-bottom-width: 0;\n}\n\n.list-group-item-primary {\n color: #004085;\n background-color: #b8daff;\n}\n\n.list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus {\n color: #004085;\n background-color: #9fcdff;\n}\n\n.list-group-item-primary.list-group-item-action.active {\n color: #fff;\n background-color: #004085;\n border-color: #004085;\n}\n\n.list-group-item-secondary {\n color: #383d41;\n background-color: #d6d8db;\n}\n\n.list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus {\n color: #383d41;\n background-color: #c8cbcf;\n}\n\n.list-group-item-secondary.list-group-item-action.active {\n color: #fff;\n background-color: #383d41;\n border-color: #383d41;\n}\n\n.list-group-item-success {\n color: #155724;\n background-color: #c3e6cb;\n}\n\n.list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus {\n color: #155724;\n background-color: #b1dfbb;\n}\n\n.list-group-item-success.list-group-item-action.active {\n color: #fff;\n background-color: #155724;\n border-color: #155724;\n}\n\n.list-group-item-info {\n color: #0c5460;\n background-color: #bee5eb;\n}\n\n.list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus {\n color: #0c5460;\n background-color: #abdde5;\n}\n\n.list-group-item-info.list-group-item-action.active {\n color: #fff;\n background-color: #0c5460;\n border-color: #0c5460;\n}\n\n.list-group-item-warning {\n color: #856404;\n background-color: #ffeeba;\n}\n\n.list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus {\n color: #856404;\n background-color: #ffe8a1;\n}\n\n.list-group-item-warning.list-group-item-action.active {\n color: #fff;\n background-color: #856404;\n border-color: #856404;\n}\n\n.list-group-item-danger {\n color: #721c24;\n background-color: #f5c6cb;\n}\n\n.list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus {\n color: #721c24;\n background-color: #f1b0b7;\n}\n\n.list-group-item-danger.list-group-item-action.active {\n color: #fff;\n background-color: #721c24;\n border-color: #721c24;\n}\n\n.list-group-item-light {\n color: #818182;\n background-color: #fdfdfe;\n}\n\n.list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus {\n color: #818182;\n background-color: #ececf6;\n}\n\n.list-group-item-light.list-group-item-action.active {\n color: #fff;\n background-color: #818182;\n border-color: #818182;\n}\n\n.list-group-item-dark {\n color: #1b1e21;\n background-color: #c6c8ca;\n}\n\n.list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus {\n color: #1b1e21;\n background-color: #b9bbbe;\n}\n\n.list-group-item-dark.list-group-item-action.active {\n color: #fff;\n background-color: #1b1e21;\n border-color: #1b1e21;\n}\n\n.close {\n float: right;\n font-size: 1.5rem;\n font-weight: 700;\n line-height: 1;\n color: #000;\n text-shadow: 0 1px 0 #fff;\n opacity: .5;\n}\n\n.close:hover {\n color: #000;\n text-decoration: none;\n}\n\n.close:not(:disabled):not(.disabled):hover, .close:not(:disabled):not(.disabled):focus {\n opacity: .75;\n}\n\nbutton.close {\n padding: 0;\n background-color: transparent;\n border: 0;\n}\n\na.close.disabled {\n pointer-events: none;\n}\n\n.toast {\n flex-basis: 350px;\n max-width: 350px;\n font-size: 0.875rem;\n background-color: rgba(255, 255, 255, 0.85);\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.1);\n box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.1);\n opacity: 0;\n border-radius: 0.25rem;\n}\n\n.toast:not(:last-child) {\n margin-bottom: 0.75rem;\n}\n\n.toast.showing {\n opacity: 1;\n}\n\n.toast.show {\n display: block;\n opacity: 1;\n}\n\n.toast.hide {\n display: none;\n}\n\n.toast-header {\n display: flex;\n align-items: center;\n padding: 0.25rem 0.75rem;\n color: #6c757d;\n background-color: rgba(255, 255, 255, 0.85);\n background-clip: padding-box;\n border-bottom: 1px solid rgba(0, 0, 0, 0.05);\n border-top-left-radius: calc(0.25rem - 1px);\n border-top-right-radius: calc(0.25rem - 1px);\n}\n\n.toast-body {\n padding: 0.75rem;\n}\n\n.modal-open {\n overflow: hidden;\n}\n\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n\n.modal {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 1050;\n display: none;\n width: 100%;\n height: 100%;\n overflow: hidden;\n outline: 0;\n}\n\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 0.5rem;\n pointer-events: none;\n}\n\n.modal.fade .modal-dialog {\n transition: -webkit-transform 0.3s ease-out;\n transition: transform 0.3s ease-out;\n transition: transform 0.3s ease-out, -webkit-transform 0.3s ease-out;\n -webkit-transform: translate(0, -50px);\n transform: translate(0, -50px);\n}\n\n@media (prefers-reduced-motion: reduce) {\n .modal.fade .modal-dialog {\n transition: none;\n }\n}\n\n.modal.show .modal-dialog {\n -webkit-transform: none;\n transform: none;\n}\n\n.modal.modal-static .modal-dialog {\n -webkit-transform: scale(1.02);\n transform: scale(1.02);\n}\n\n.modal-dialog-scrollable {\n display: flex;\n max-height: calc(100% - 1rem);\n}\n\n.modal-dialog-scrollable .modal-content {\n max-height: calc(100vh - 1rem);\n overflow: hidden;\n}\n\n.modal-dialog-scrollable .modal-header,\n.modal-dialog-scrollable .modal-footer {\n flex-shrink: 0;\n}\n\n.modal-dialog-scrollable .modal-body {\n overflow-y: auto;\n}\n\n.modal-dialog-centered {\n display: flex;\n align-items: center;\n min-height: calc(100% - 1rem);\n}\n\n.modal-dialog-centered::before {\n display: block;\n height: calc(100vh - 1rem);\n height: -webkit-min-content;\n height: min-content;\n content: \"\";\n}\n\n.modal-dialog-centered.modal-dialog-scrollable {\n flex-direction: column;\n justify-content: center;\n height: 100%;\n}\n\n.modal-dialog-centered.modal-dialog-scrollable .modal-content {\n max-height: none;\n}\n\n.modal-dialog-centered.modal-dialog-scrollable::before {\n content: none;\n}\n\n.modal-content {\n position: relative;\n display: flex;\n flex-direction: column;\n width: 100%;\n pointer-events: auto;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 0.3rem;\n outline: 0;\n}\n\n.modal-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 1040;\n width: 100vw;\n height: 100vh;\n background-color: #000;\n}\n\n.modal-backdrop.fade {\n opacity: 0;\n}\n\n.modal-backdrop.show {\n opacity: 0.5;\n}\n\n.modal-header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n padding: 1rem 1rem;\n border-bottom: 1px solid #dee2e6;\n border-top-left-radius: calc(0.3rem - 1px);\n border-top-right-radius: calc(0.3rem - 1px);\n}\n\n.modal-header .close {\n padding: 1rem 1rem;\n margin: -1rem -1rem -1rem auto;\n}\n\n.modal-title {\n margin-bottom: 0;\n line-height: 1.5;\n}\n\n.modal-body {\n position: relative;\n flex: 1 1 auto;\n padding: 1rem;\n}\n\n.modal-footer {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: flex-end;\n padding: 0.75rem;\n border-top: 1px solid #dee2e6;\n border-bottom-right-radius: calc(0.3rem - 1px);\n border-bottom-left-radius: calc(0.3rem - 1px);\n}\n\n.modal-footer > * {\n margin: 0.25rem;\n}\n\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n\n@media (min-width: 576px) {\n .modal-dialog {\n max-width: 500px;\n margin: 1.75rem auto;\n }\n .modal-dialog-scrollable {\n max-height: calc(100% - 3.5rem);\n }\n .modal-dialog-scrollable .modal-content {\n max-height: calc(100vh - 3.5rem);\n }\n .modal-dialog-centered {\n min-height: calc(100% - 3.5rem);\n }\n .modal-dialog-centered::before {\n height: calc(100vh - 3.5rem);\n height: -webkit-min-content;\n height: min-content;\n }\n .modal-sm {\n max-width: 300px;\n }\n}\n\n@media (min-width: 992px) {\n .modal-lg,\n .modal-xl {\n max-width: 800px;\n }\n}\n\n@media (min-width: 1200px) {\n .modal-xl {\n max-width: 1140px;\n }\n}\n\n.tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n font-style: normal;\n font-weight: 400;\n line-height: 1.5;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n white-space: normal;\n line-break: auto;\n font-size: 0.875rem;\n word-wrap: break-word;\n opacity: 0;\n}\n\n.tooltip.show {\n opacity: 0.9;\n}\n\n.tooltip .arrow {\n position: absolute;\n display: block;\n width: 0.8rem;\n height: 0.4rem;\n}\n\n.tooltip .arrow::before {\n position: absolute;\n content: \"\";\n border-color: transparent;\n border-style: solid;\n}\n\n.bs-tooltip-top, .bs-tooltip-auto[x-placement^=\"top\"] {\n padding: 0.4rem 0;\n}\n\n.bs-tooltip-top .arrow, .bs-tooltip-auto[x-placement^=\"top\"] .arrow {\n bottom: 0;\n}\n\n.bs-tooltip-top .arrow::before, .bs-tooltip-auto[x-placement^=\"top\"] .arrow::before {\n top: 0;\n border-width: 0.4rem 0.4rem 0;\n border-top-color: #000;\n}\n\n.bs-tooltip-right, .bs-tooltip-auto[x-placement^=\"right\"] {\n padding: 0 0.4rem;\n}\n\n.bs-tooltip-right .arrow, .bs-tooltip-auto[x-placement^=\"right\"] .arrow {\n left: 0;\n width: 0.4rem;\n height: 0.8rem;\n}\n\n.bs-tooltip-right .arrow::before, .bs-tooltip-auto[x-placement^=\"right\"] .arrow::before {\n right: 0;\n border-width: 0.4rem 0.4rem 0.4rem 0;\n border-right-color: #000;\n}\n\n.bs-tooltip-bottom, .bs-tooltip-auto[x-placement^=\"bottom\"] {\n padding: 0.4rem 0;\n}\n\n.bs-tooltip-bottom .arrow, .bs-tooltip-auto[x-placement^=\"bottom\"] .arrow {\n top: 0;\n}\n\n.bs-tooltip-bottom .arrow::before, .bs-tooltip-auto[x-placement^=\"bottom\"] .arrow::before {\n bottom: 0;\n border-width: 0 0.4rem 0.4rem;\n border-bottom-color: #000;\n}\n\n.bs-tooltip-left, .bs-tooltip-auto[x-placement^=\"left\"] {\n padding: 0 0.4rem;\n}\n\n.bs-tooltip-left .arrow, .bs-tooltip-auto[x-placement^=\"left\"] .arrow {\n right: 0;\n width: 0.4rem;\n height: 0.8rem;\n}\n\n.bs-tooltip-left .arrow::before, .bs-tooltip-auto[x-placement^=\"left\"] .arrow::before {\n left: 0;\n border-width: 0.4rem 0 0.4rem 0.4rem;\n border-left-color: #000;\n}\n\n.tooltip-inner {\n max-width: 200px;\n padding: 0.25rem 0.5rem;\n color: #fff;\n text-align: center;\n background-color: #000;\n border-radius: 0.25rem;\n}\n\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1060;\n display: block;\n max-width: 276px;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n font-style: normal;\n font-weight: 400;\n line-height: 1.5;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n white-space: normal;\n line-break: auto;\n font-size: 0.875rem;\n word-wrap: break-word;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 0.3rem;\n}\n\n.popover .arrow {\n position: absolute;\n display: block;\n width: 1rem;\n height: 0.5rem;\n margin: 0 0.3rem;\n}\n\n.popover .arrow::before, .popover .arrow::after {\n position: absolute;\n display: block;\n content: \"\";\n border-color: transparent;\n border-style: solid;\n}\n\n.bs-popover-top, .bs-popover-auto[x-placement^=\"top\"] {\n margin-bottom: 0.5rem;\n}\n\n.bs-popover-top > .arrow, .bs-popover-auto[x-placement^=\"top\"] > .arrow {\n bottom: calc(-0.5rem - 1px);\n}\n\n.bs-popover-top > .arrow::before, .bs-popover-auto[x-placement^=\"top\"] > .arrow::before {\n bottom: 0;\n border-width: 0.5rem 0.5rem 0;\n border-top-color: rgba(0, 0, 0, 0.25);\n}\n\n.bs-popover-top > .arrow::after, .bs-popover-auto[x-placement^=\"top\"] > .arrow::after {\n bottom: 1px;\n border-width: 0.5rem 0.5rem 0;\n border-top-color: #fff;\n}\n\n.bs-popover-right, .bs-popover-auto[x-placement^=\"right\"] {\n margin-left: 0.5rem;\n}\n\n.bs-popover-right > .arrow, .bs-popover-auto[x-placement^=\"right\"] > .arrow {\n left: calc(-0.5rem - 1px);\n width: 0.5rem;\n height: 1rem;\n margin: 0.3rem 0;\n}\n\n.bs-popover-right > .arrow::before, .bs-popover-auto[x-placement^=\"right\"] > .arrow::before {\n left: 0;\n border-width: 0.5rem 0.5rem 0.5rem 0;\n border-right-color: rgba(0, 0, 0, 0.25);\n}\n\n.bs-popover-right > .arrow::after, .bs-popover-auto[x-placement^=\"right\"] > .arrow::after {\n left: 1px;\n border-width: 0.5rem 0.5rem 0.5rem 0;\n border-right-color: #fff;\n}\n\n.bs-popover-bottom, .bs-popover-auto[x-placement^=\"bottom\"] {\n margin-top: 0.5rem;\n}\n\n.bs-popover-bottom > .arrow, .bs-popover-auto[x-placement^=\"bottom\"] > .arrow {\n top: calc(-0.5rem - 1px);\n}\n\n.bs-popover-bottom > .arrow::before, .bs-popover-auto[x-placement^=\"bottom\"] > .arrow::before {\n top: 0;\n border-width: 0 0.5rem 0.5rem 0.5rem;\n border-bottom-color: rgba(0, 0, 0, 0.25);\n}\n\n.bs-popover-bottom > .arrow::after, .bs-popover-auto[x-placement^=\"bottom\"] > .arrow::after {\n top: 1px;\n border-width: 0 0.5rem 0.5rem 0.5rem;\n border-bottom-color: #fff;\n}\n\n.bs-popover-bottom .popover-header::before, .bs-popover-auto[x-placement^=\"bottom\"] .popover-header::before {\n position: absolute;\n top: 0;\n left: 50%;\n display: block;\n width: 1rem;\n margin-left: -0.5rem;\n content: \"\";\n border-bottom: 1px solid #f7f7f7;\n}\n\n.bs-popover-left, .bs-popover-auto[x-placement^=\"left\"] {\n margin-right: 0.5rem;\n}\n\n.bs-popover-left > .arrow, .bs-popover-auto[x-placement^=\"left\"] > .arrow {\n right: calc(-0.5rem - 1px);\n width: 0.5rem;\n height: 1rem;\n margin: 0.3rem 0;\n}\n\n.bs-popover-left > .arrow::before, .bs-popover-auto[x-placement^=\"left\"] > .arrow::before {\n right: 0;\n border-width: 0.5rem 0 0.5rem 0.5rem;\n border-left-color: rgba(0, 0, 0, 0.25);\n}\n\n.bs-popover-left > .arrow::after, .bs-popover-auto[x-placement^=\"left\"] > .arrow::after {\n right: 1px;\n border-width: 0.5rem 0 0.5rem 0.5rem;\n border-left-color: #fff;\n}\n\n.popover-header {\n padding: 0.5rem 0.75rem;\n margin-bottom: 0;\n font-size: 1rem;\n background-color: #f7f7f7;\n border-bottom: 1px solid #ebebeb;\n border-top-left-radius: calc(0.3rem - 1px);\n border-top-right-radius: calc(0.3rem - 1px);\n}\n\n.popover-header:empty {\n display: none;\n}\n\n.popover-body {\n padding: 0.5rem 0.75rem;\n color: #212529;\n}\n\n.carousel {\n position: relative;\n}\n\n.carousel.pointer-event {\n touch-action: pan-y;\n}\n\n.carousel-inner {\n position: relative;\n width: 100%;\n overflow: hidden;\n}\n\n.carousel-inner::after {\n display: block;\n clear: both;\n content: \"\";\n}\n\n.carousel-item {\n position: relative;\n display: none;\n float: left;\n width: 100%;\n margin-right: -100%;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n transition: -webkit-transform 0.6s ease-in-out;\n transition: transform 0.6s ease-in-out;\n transition: transform 0.6s ease-in-out, -webkit-transform 0.6s ease-in-out;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .carousel-item {\n transition: none;\n }\n}\n\n.carousel-item.active,\n.carousel-item-next,\n.carousel-item-prev {\n display: block;\n}\n\n.carousel-item-next:not(.carousel-item-left),\n.active.carousel-item-right {\n -webkit-transform: translateX(100%);\n transform: translateX(100%);\n}\n\n.carousel-item-prev:not(.carousel-item-right),\n.active.carousel-item-left {\n -webkit-transform: translateX(-100%);\n transform: translateX(-100%);\n}\n\n.carousel-fade .carousel-item {\n opacity: 0;\n transition-property: opacity;\n -webkit-transform: none;\n transform: none;\n}\n\n.carousel-fade .carousel-item.active,\n.carousel-fade .carousel-item-next.carousel-item-left,\n.carousel-fade .carousel-item-prev.carousel-item-right {\n z-index: 1;\n opacity: 1;\n}\n\n.carousel-fade .active.carousel-item-left,\n.carousel-fade .active.carousel-item-right {\n z-index: 0;\n opacity: 0;\n transition: opacity 0s 0.6s;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .carousel-fade .active.carousel-item-left,\n .carousel-fade .active.carousel-item-right {\n transition: none;\n }\n}\n\n.carousel-control-prev,\n.carousel-control-next {\n position: absolute;\n top: 0;\n bottom: 0;\n z-index: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 15%;\n color: #fff;\n text-align: center;\n opacity: 0.5;\n transition: opacity 0.15s ease;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .carousel-control-prev,\n .carousel-control-next {\n transition: none;\n }\n}\n\n.carousel-control-prev:hover, .carousel-control-prev:focus,\n.carousel-control-next:hover,\n.carousel-control-next:focus {\n color: #fff;\n text-decoration: none;\n outline: 0;\n opacity: 0.9;\n}\n\n.carousel-control-prev {\n left: 0;\n}\n\n.carousel-control-next {\n right: 0;\n}\n\n.carousel-control-prev-icon,\n.carousel-control-next-icon {\n display: inline-block;\n width: 20px;\n height: 20px;\n background: no-repeat 50% / 100% 100%;\n}\n\n.carousel-control-prev-icon {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e\");\n}\n\n.carousel-control-next-icon {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e\");\n}\n\n.carousel-indicators {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 15;\n display: flex;\n justify-content: center;\n padding-left: 0;\n margin-right: 15%;\n margin-left: 15%;\n list-style: none;\n}\n\n.carousel-indicators li {\n box-sizing: content-box;\n flex: 0 1 auto;\n width: 30px;\n height: 3px;\n margin-right: 3px;\n margin-left: 3px;\n text-indent: -999px;\n cursor: pointer;\n background-color: #fff;\n background-clip: padding-box;\n border-top: 10px solid transparent;\n border-bottom: 10px solid transparent;\n opacity: .5;\n transition: opacity 0.6s ease;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .carousel-indicators li {\n transition: none;\n }\n}\n\n.carousel-indicators .active {\n opacity: 1;\n}\n\n.carousel-caption {\n position: absolute;\n right: 15%;\n bottom: 20px;\n left: 15%;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: #fff;\n text-align: center;\n}\n\n@-webkit-keyframes spinner-border {\n to {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n@keyframes spinner-border {\n to {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n.spinner-border {\n display: inline-block;\n width: 2rem;\n height: 2rem;\n vertical-align: text-bottom;\n border: 0.25em solid currentColor;\n border-right-color: transparent;\n border-radius: 50%;\n -webkit-animation: spinner-border .75s linear infinite;\n animation: spinner-border .75s linear infinite;\n}\n\n.spinner-border-sm {\n width: 1rem;\n height: 1rem;\n border-width: 0.2em;\n}\n\n@-webkit-keyframes spinner-grow {\n 0% {\n -webkit-transform: scale(0);\n transform: scale(0);\n }\n 50% {\n opacity: 1;\n -webkit-transform: none;\n transform: none;\n }\n}\n\n@keyframes spinner-grow {\n 0% {\n -webkit-transform: scale(0);\n transform: scale(0);\n }\n 50% {\n opacity: 1;\n -webkit-transform: none;\n transform: none;\n }\n}\n\n.spinner-grow {\n display: inline-block;\n width: 2rem;\n height: 2rem;\n vertical-align: text-bottom;\n background-color: currentColor;\n border-radius: 50%;\n opacity: 0;\n -webkit-animation: spinner-grow .75s linear infinite;\n animation: spinner-grow .75s linear infinite;\n}\n\n.spinner-grow-sm {\n width: 1rem;\n height: 1rem;\n}\n\n.align-baseline {\n vertical-align: baseline !important;\n}\n\n.align-top {\n vertical-align: top !important;\n}\n\n.align-middle {\n vertical-align: middle !important;\n}\n\n.align-bottom {\n vertical-align: bottom !important;\n}\n\n.align-text-bottom {\n vertical-align: text-bottom !important;\n}\n\n.align-text-top {\n vertical-align: text-top !important;\n}\n\n.bg-primary {\n background-color: #007bff !important;\n}\n\na.bg-primary:hover, a.bg-primary:focus,\nbutton.bg-primary:hover,\nbutton.bg-primary:focus {\n background-color: #0062cc !important;\n}\n\n.bg-secondary {\n background-color: #6c757d !important;\n}\n\na.bg-secondary:hover, a.bg-secondary:focus,\nbutton.bg-secondary:hover,\nbutton.bg-secondary:focus {\n background-color: #545b62 !important;\n}\n\n.bg-success {\n background-color: #28a745 !important;\n}\n\na.bg-success:hover, a.bg-success:focus,\nbutton.bg-success:hover,\nbutton.bg-success:focus {\n background-color: #1e7e34 !important;\n}\n\n.bg-info {\n background-color: #17a2b8 !important;\n}\n\na.bg-info:hover, a.bg-info:focus,\nbutton.bg-info:hover,\nbutton.bg-info:focus {\n background-color: #117a8b !important;\n}\n\n.bg-warning {\n background-color: #ffc107 !important;\n}\n\na.bg-warning:hover, a.bg-warning:focus,\nbutton.bg-warning:hover,\nbutton.bg-warning:focus {\n background-color: #d39e00 !important;\n}\n\n.bg-danger {\n background-color: #dc3545 !important;\n}\n\na.bg-danger:hover, a.bg-danger:focus,\nbutton.bg-danger:hover,\nbutton.bg-danger:focus {\n background-color: #bd2130 !important;\n}\n\n.bg-light {\n background-color: #f8f9fa !important;\n}\n\na.bg-light:hover, a.bg-light:focus,\nbutton.bg-light:hover,\nbutton.bg-light:focus {\n background-color: #dae0e5 !important;\n}\n\n.bg-dark {\n background-color: #343a40 !important;\n}\n\na.bg-dark:hover, a.bg-dark:focus,\nbutton.bg-dark:hover,\nbutton.bg-dark:focus {\n background-color: #1d2124 !important;\n}\n\n.bg-white {\n background-color: #fff !important;\n}\n\n.bg-transparent {\n background-color: transparent !important;\n}\n\n.border {\n border: 1px solid #dee2e6 !important;\n}\n\n.border-top {\n border-top: 1px solid #dee2e6 !important;\n}\n\n.border-right {\n border-right: 1px solid #dee2e6 !important;\n}\n\n.border-bottom {\n border-bottom: 1px solid #dee2e6 !important;\n}\n\n.border-left {\n border-left: 1px solid #dee2e6 !important;\n}\n\n.border-0 {\n border: 0 !important;\n}\n\n.border-top-0 {\n border-top: 0 !important;\n}\n\n.border-right-0 {\n border-right: 0 !important;\n}\n\n.border-bottom-0 {\n border-bottom: 0 !important;\n}\n\n.border-left-0 {\n border-left: 0 !important;\n}\n\n.border-primary {\n border-color: #007bff !important;\n}\n\n.border-secondary {\n border-color: #6c757d !important;\n}\n\n.border-success {\n border-color: #28a745 !important;\n}\n\n.border-info {\n border-color: #17a2b8 !important;\n}\n\n.border-warning {\n border-color: #ffc107 !important;\n}\n\n.border-danger {\n border-color: #dc3545 !important;\n}\n\n.border-light {\n border-color: #f8f9fa !important;\n}\n\n.border-dark {\n border-color: #343a40 !important;\n}\n\n.border-white {\n border-color: #fff !important;\n}\n\n.rounded-sm {\n border-radius: 0.2rem !important;\n}\n\n.rounded {\n border-radius: 0.25rem !important;\n}\n\n.rounded-top {\n border-top-left-radius: 0.25rem !important;\n border-top-right-radius: 0.25rem !important;\n}\n\n.rounded-right {\n border-top-right-radius: 0.25rem !important;\n border-bottom-right-radius: 0.25rem !important;\n}\n\n.rounded-bottom {\n border-bottom-right-radius: 0.25rem !important;\n border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-left {\n border-top-left-radius: 0.25rem !important;\n border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-lg {\n border-radius: 0.3rem !important;\n}\n\n.rounded-circle {\n border-radius: 50% !important;\n}\n\n.rounded-pill {\n border-radius: 50rem !important;\n}\n\n.rounded-0 {\n border-radius: 0 !important;\n}\n\n.clearfix::after {\n display: block;\n clear: both;\n content: \"\";\n}\n\n.d-none {\n display: none !important;\n}\n\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-row {\n display: table-row !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline-flex {\n display: inline-flex !important;\n}\n\n@media (min-width: 576px) {\n .d-sm-none {\n display: none !important;\n }\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-row {\n display: table-row !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: inline-flex !important;\n }\n}\n\n@media (min-width: 768px) {\n .d-md-none {\n display: none !important;\n }\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-row {\n display: table-row !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: flex !important;\n }\n .d-md-inline-flex {\n display: inline-flex !important;\n }\n}\n\n@media (min-width: 992px) {\n .d-lg-none {\n display: none !important;\n }\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-row {\n display: table-row !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: inline-flex !important;\n }\n}\n\n@media (min-width: 1200px) {\n .d-xl-none {\n display: none !important;\n }\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-row {\n display: table-row !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: inline-flex !important;\n }\n}\n\n@media print {\n .d-print-none {\n display: none !important;\n }\n .d-print-inline {\n display: inline !important;\n }\n .d-print-inline-block {\n display: inline-block !important;\n }\n .d-print-block {\n display: block !important;\n }\n .d-print-table {\n display: table !important;\n }\n .d-print-table-row {\n display: table-row !important;\n }\n .d-print-table-cell {\n display: table-cell !important;\n }\n .d-print-flex {\n display: flex !important;\n }\n .d-print-inline-flex {\n display: inline-flex !important;\n }\n}\n\n.embed-responsive {\n position: relative;\n display: block;\n width: 100%;\n padding: 0;\n overflow: hidden;\n}\n\n.embed-responsive::before {\n display: block;\n content: \"\";\n}\n\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border: 0;\n}\n\n.embed-responsive-21by9::before {\n padding-top: 42.857143%;\n}\n\n.embed-responsive-16by9::before {\n padding-top: 56.25%;\n}\n\n.embed-responsive-4by3::before {\n padding-top: 75%;\n}\n\n.embed-responsive-1by1::before {\n padding-top: 100%;\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.flex-fill {\n flex: 1 1 auto !important;\n}\n\n.flex-grow-0 {\n flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n flex-shrink: 1 !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n@media (min-width: 576px) {\n .flex-sm-row {\n flex-direction: row !important;\n }\n .flex-sm-column {\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .flex-sm-fill {\n flex: 1 1 auto !important;\n }\n .flex-sm-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-sm-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-sm-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-sm-shrink-1 {\n flex-shrink: 1 !important;\n }\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n justify-content: center !important;\n }\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n align-items: center !important;\n }\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n align-content: center !important;\n }\n .align-content-sm-between {\n align-content: space-between !important;\n }\n .align-content-sm-around {\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n align-self: auto !important;\n }\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n align-self: center !important;\n }\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 768px) {\n .flex-md-row {\n flex-direction: row !important;\n }\n .flex-md-column {\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .flex-md-fill {\n flex: 1 1 auto !important;\n }\n .flex-md-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-md-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-md-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-md-shrink-1 {\n flex-shrink: 1 !important;\n }\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n justify-content: center !important;\n }\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n .align-items-md-start {\n align-items: flex-start !important;\n }\n .align-items-md-end {\n align-items: flex-end !important;\n }\n .align-items-md-center {\n align-items: center !important;\n }\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n .align-content-md-start {\n align-content: flex-start !important;\n }\n .align-content-md-end {\n align-content: flex-end !important;\n }\n .align-content-md-center {\n align-content: center !important;\n }\n .align-content-md-between {\n align-content: space-between !important;\n }\n .align-content-md-around {\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n .align-self-md-auto {\n align-self: auto !important;\n }\n .align-self-md-start {\n align-self: flex-start !important;\n }\n .align-self-md-end {\n align-self: flex-end !important;\n }\n .align-self-md-center {\n align-self: center !important;\n }\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 992px) {\n .flex-lg-row {\n flex-direction: row !important;\n }\n .flex-lg-column {\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .flex-lg-fill {\n flex: 1 1 auto !important;\n }\n .flex-lg-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-lg-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-lg-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-lg-shrink-1 {\n flex-shrink: 1 !important;\n }\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n justify-content: center !important;\n }\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n align-items: center !important;\n }\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n align-content: center !important;\n }\n .align-content-lg-between {\n align-content: space-between !important;\n }\n .align-content-lg-around {\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n align-self: auto !important;\n }\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n align-self: center !important;\n }\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 1200px) {\n .flex-xl-row {\n flex-direction: row !important;\n }\n .flex-xl-column {\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .flex-xl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n justify-content: center !important;\n }\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n align-items: center !important;\n }\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n align-content: center !important;\n }\n .align-content-xl-between {\n align-content: space-between !important;\n }\n .align-content-xl-around {\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n align-self: auto !important;\n }\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n align-self: center !important;\n }\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n}\n\n.float-left {\n float: left !important;\n}\n\n.float-right {\n float: right !important;\n}\n\n.float-none {\n float: none !important;\n}\n\n@media (min-width: 576px) {\n .float-sm-left {\n float: left !important;\n }\n .float-sm-right {\n float: right !important;\n }\n .float-sm-none {\n float: none !important;\n }\n}\n\n@media (min-width: 768px) {\n .float-md-left {\n float: left !important;\n }\n .float-md-right {\n float: right !important;\n }\n .float-md-none {\n float: none !important;\n }\n}\n\n@media (min-width: 992px) {\n .float-lg-left {\n float: left !important;\n }\n .float-lg-right {\n float: right !important;\n }\n .float-lg-none {\n float: none !important;\n }\n}\n\n@media (min-width: 1200px) {\n .float-xl-left {\n float: left !important;\n }\n .float-xl-right {\n float: right !important;\n }\n .float-xl-none {\n float: none !important;\n }\n}\n\n.user-select-all {\n -webkit-user-select: all !important;\n user-select: all !important;\n}\n\n.user-select-auto {\n -webkit-user-select: auto !important;\n user-select: auto !important;\n}\n\n.user-select-none {\n -webkit-user-select: none !important;\n user-select: none !important;\n}\n\n.overflow-auto {\n overflow: auto !important;\n}\n\n.overflow-hidden {\n overflow: hidden !important;\n}\n\n.position-static {\n position: static !important;\n}\n\n.position-relative {\n position: relative !important;\n}\n\n.position-absolute {\n position: absolute !important;\n}\n\n.position-fixed {\n position: fixed !important;\n}\n\n.position-sticky {\n position: -webkit-sticky !important;\n position: sticky !important;\n}\n\n.fixed-top {\n position: fixed;\n top: 0;\n right: 0;\n left: 0;\n z-index: 1030;\n}\n\n.fixed-bottom {\n position: fixed;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1030;\n}\n\n@supports ((position: -webkit-sticky) or (position: sticky)) {\n .sticky-top {\n position: -webkit-sticky;\n position: sticky;\n top: 0;\n z-index: 1020;\n }\n}\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n overflow: visible;\n clip: auto;\n white-space: normal;\n}\n\n.shadow-sm {\n box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;\n}\n\n.shadow {\n box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;\n}\n\n.shadow-lg {\n box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important;\n}\n\n.shadow-none {\n box-shadow: none !important;\n}\n\n.w-25 {\n width: 25% !important;\n}\n\n.w-50 {\n width: 50% !important;\n}\n\n.w-75 {\n width: 75% !important;\n}\n\n.w-100 {\n width: 100% !important;\n}\n\n.w-auto {\n width: auto !important;\n}\n\n.h-25 {\n height: 25% !important;\n}\n\n.h-50 {\n height: 50% !important;\n}\n\n.h-75 {\n height: 75% !important;\n}\n\n.h-100 {\n height: 100% !important;\n}\n\n.h-auto {\n height: auto !important;\n}\n\n.mw-100 {\n max-width: 100% !important;\n}\n\n.mh-100 {\n max-height: 100% !important;\n}\n\n.min-vw-100 {\n min-width: 100vw !important;\n}\n\n.min-vh-100 {\n min-height: 100vh !important;\n}\n\n.vw-100 {\n width: 100vw !important;\n}\n\n.vh-100 {\n height: 100vh !important;\n}\n\n.m-0 {\n margin: 0 !important;\n}\n\n.mt-0,\n.my-0 {\n margin-top: 0 !important;\n}\n\n.mr-0,\n.mx-0 {\n margin-right: 0 !important;\n}\n\n.mb-0,\n.my-0 {\n margin-bottom: 0 !important;\n}\n\n.ml-0,\n.mx-0 {\n margin-left: 0 !important;\n}\n\n.m-1 {\n margin: 0.25rem !important;\n}\n\n.mt-1,\n.my-1 {\n margin-top: 0.25rem !important;\n}\n\n.mr-1,\n.mx-1 {\n margin-right: 0.25rem !important;\n}\n\n.mb-1,\n.my-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.ml-1,\n.mx-1 {\n margin-left: 0.25rem !important;\n}\n\n.m-2 {\n margin: 0.5rem !important;\n}\n\n.mt-2,\n.my-2 {\n margin-top: 0.5rem !important;\n}\n\n.mr-2,\n.mx-2 {\n margin-right: 0.5rem !important;\n}\n\n.mb-2,\n.my-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.ml-2,\n.mx-2 {\n margin-left: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.mt-3,\n.my-3 {\n margin-top: 1rem !important;\n}\n\n.mr-3,\n.mx-3 {\n margin-right: 1rem !important;\n}\n\n.mb-3,\n.my-3 {\n margin-bottom: 1rem !important;\n}\n\n.ml-3,\n.mx-3 {\n margin-left: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.mt-4,\n.my-4 {\n margin-top: 1.5rem !important;\n}\n\n.mr-4,\n.mx-4 {\n margin-right: 1.5rem !important;\n}\n\n.mb-4,\n.my-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.ml-4,\n.mx-4 {\n margin-left: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.mt-5,\n.my-5 {\n margin-top: 3rem !important;\n}\n\n.mr-5,\n.mx-5 {\n margin-right: 3rem !important;\n}\n\n.mb-5,\n.my-5 {\n margin-bottom: 3rem !important;\n}\n\n.ml-5,\n.mx-5 {\n margin-left: 3rem !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.pt-0,\n.py-0 {\n padding-top: 0 !important;\n}\n\n.pr-0,\n.px-0 {\n padding-right: 0 !important;\n}\n\n.pb-0,\n.py-0 {\n padding-bottom: 0 !important;\n}\n\n.pl-0,\n.px-0 {\n padding-left: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem !important;\n}\n\n.pt-1,\n.py-1 {\n padding-top: 0.25rem !important;\n}\n\n.pr-1,\n.px-1 {\n padding-right: 0.25rem !important;\n}\n\n.pb-1,\n.py-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pl-1,\n.px-1 {\n padding-left: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem !important;\n}\n\n.pt-2,\n.py-2 {\n padding-top: 0.5rem !important;\n}\n\n.pr-2,\n.px-2 {\n padding-right: 0.5rem !important;\n}\n\n.pb-2,\n.py-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pl-2,\n.px-2 {\n padding-left: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.pt-3,\n.py-3 {\n padding-top: 1rem !important;\n}\n\n.pr-3,\n.px-3 {\n padding-right: 1rem !important;\n}\n\n.pb-3,\n.py-3 {\n padding-bottom: 1rem !important;\n}\n\n.pl-3,\n.px-3 {\n padding-left: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.pt-4,\n.py-4 {\n padding-top: 1.5rem !important;\n}\n\n.pr-4,\n.px-4 {\n padding-right: 1.5rem !important;\n}\n\n.pb-4,\n.py-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pl-4,\n.px-4 {\n padding-left: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.pt-5,\n.py-5 {\n padding-top: 3rem !important;\n}\n\n.pr-5,\n.px-5 {\n padding-right: 3rem !important;\n}\n\n.pb-5,\n.py-5 {\n padding-bottom: 3rem !important;\n}\n\n.pl-5,\n.px-5 {\n padding-left: 3rem !important;\n}\n\n.m-n1 {\n margin: -0.25rem !important;\n}\n\n.mt-n1,\n.my-n1 {\n margin-top: -0.25rem !important;\n}\n\n.mr-n1,\n.mx-n1 {\n margin-right: -0.25rem !important;\n}\n\n.mb-n1,\n.my-n1 {\n margin-bottom: -0.25rem !important;\n}\n\n.ml-n1,\n.mx-n1 {\n margin-left: -0.25rem !important;\n}\n\n.m-n2 {\n margin: -0.5rem !important;\n}\n\n.mt-n2,\n.my-n2 {\n margin-top: -0.5rem !important;\n}\n\n.mr-n2,\n.mx-n2 {\n margin-right: -0.5rem !important;\n}\n\n.mb-n2,\n.my-n2 {\n margin-bottom: -0.5rem !important;\n}\n\n.ml-n2,\n.mx-n2 {\n margin-left: -0.5rem !important;\n}\n\n.m-n3 {\n margin: -1rem !important;\n}\n\n.mt-n3,\n.my-n3 {\n margin-top: -1rem !important;\n}\n\n.mr-n3,\n.mx-n3 {\n margin-right: -1rem !important;\n}\n\n.mb-n3,\n.my-n3 {\n margin-bottom: -1rem !important;\n}\n\n.ml-n3,\n.mx-n3 {\n margin-left: -1rem !important;\n}\n\n.m-n4 {\n margin: -1.5rem !important;\n}\n\n.mt-n4,\n.my-n4 {\n margin-top: -1.5rem !important;\n}\n\n.mr-n4,\n.mx-n4 {\n margin-right: -1.5rem !important;\n}\n\n.mb-n4,\n.my-n4 {\n margin-bottom: -1.5rem !important;\n}\n\n.ml-n4,\n.mx-n4 {\n margin-left: -1.5rem !important;\n}\n\n.m-n5 {\n margin: -3rem !important;\n}\n\n.mt-n5,\n.my-n5 {\n margin-top: -3rem !important;\n}\n\n.mr-n5,\n.mx-n5 {\n margin-right: -3rem !important;\n}\n\n.mb-n5,\n.my-n5 {\n margin-bottom: -3rem !important;\n}\n\n.ml-n5,\n.mx-n5 {\n margin-left: -3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mt-auto,\n.my-auto {\n margin-top: auto !important;\n}\n\n.mr-auto,\n.mx-auto {\n margin-right: auto !important;\n}\n\n.mb-auto,\n.my-auto {\n margin-bottom: auto !important;\n}\n\n.ml-auto,\n.mx-auto {\n margin-left: auto !important;\n}\n\n@media (min-width: 576px) {\n .m-sm-0 {\n margin: 0 !important;\n }\n .mt-sm-0,\n .my-sm-0 {\n margin-top: 0 !important;\n }\n .mr-sm-0,\n .mx-sm-0 {\n margin-right: 0 !important;\n }\n .mb-sm-0,\n .my-sm-0 {\n margin-bottom: 0 !important;\n }\n .ml-sm-0,\n .mx-sm-0 {\n margin-left: 0 !important;\n }\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n .mt-sm-1,\n .my-sm-1 {\n margin-top: 0.25rem !important;\n }\n .mr-sm-1,\n .mx-sm-1 {\n margin-right: 0.25rem !important;\n }\n .mb-sm-1,\n .my-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-sm-1,\n .mx-sm-1 {\n margin-left: 0.25rem !important;\n }\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n .mt-sm-2,\n .my-sm-2 {\n margin-top: 0.5rem !important;\n }\n .mr-sm-2,\n .mx-sm-2 {\n margin-right: 0.5rem !important;\n }\n .mb-sm-2,\n .my-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-sm-2,\n .mx-sm-2 {\n margin-left: 0.5rem !important;\n }\n .m-sm-3 {\n margin: 1rem !important;\n }\n .mt-sm-3,\n .my-sm-3 {\n margin-top: 1rem !important;\n }\n .mr-sm-3,\n .mx-sm-3 {\n margin-right: 1rem !important;\n }\n .mb-sm-3,\n .my-sm-3 {\n margin-bottom: 1rem !important;\n }\n .ml-sm-3,\n .mx-sm-3 {\n margin-left: 1rem !important;\n }\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n .mt-sm-4,\n .my-sm-4 {\n margin-top: 1.5rem !important;\n }\n .mr-sm-4,\n .mx-sm-4 {\n margin-right: 1.5rem !important;\n }\n .mb-sm-4,\n .my-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-sm-4,\n .mx-sm-4 {\n margin-left: 1.5rem !important;\n }\n .m-sm-5 {\n margin: 3rem !important;\n }\n .mt-sm-5,\n .my-sm-5 {\n margin-top: 3rem !important;\n }\n .mr-sm-5,\n .mx-sm-5 {\n margin-right: 3rem !important;\n }\n .mb-sm-5,\n .my-sm-5 {\n margin-bottom: 3rem !important;\n }\n .ml-sm-5,\n .mx-sm-5 {\n margin-left: 3rem !important;\n }\n .p-sm-0 {\n padding: 0 !important;\n }\n .pt-sm-0,\n .py-sm-0 {\n padding-top: 0 !important;\n }\n .pr-sm-0,\n .px-sm-0 {\n padding-right: 0 !important;\n }\n .pb-sm-0,\n .py-sm-0 {\n padding-bottom: 0 !important;\n }\n .pl-sm-0,\n .px-sm-0 {\n padding-left: 0 !important;\n }\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n .pt-sm-1,\n .py-sm-1 {\n padding-top: 0.25rem !important;\n }\n .pr-sm-1,\n .px-sm-1 {\n padding-right: 0.25rem !important;\n }\n .pb-sm-1,\n .py-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-sm-1,\n .px-sm-1 {\n padding-left: 0.25rem !important;\n }\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n .pt-sm-2,\n .py-sm-2 {\n padding-top: 0.5rem !important;\n }\n .pr-sm-2,\n .px-sm-2 {\n padding-right: 0.5rem !important;\n }\n .pb-sm-2,\n .py-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-sm-2,\n .px-sm-2 {\n padding-left: 0.5rem !important;\n }\n .p-sm-3 {\n padding: 1rem !important;\n }\n .pt-sm-3,\n .py-sm-3 {\n padding-top: 1rem !important;\n }\n .pr-sm-3,\n .px-sm-3 {\n padding-right: 1rem !important;\n }\n .pb-sm-3,\n .py-sm-3 {\n padding-bottom: 1rem !important;\n }\n .pl-sm-3,\n .px-sm-3 {\n padding-left: 1rem !important;\n }\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n .pt-sm-4,\n .py-sm-4 {\n padding-top: 1.5rem !important;\n }\n .pr-sm-4,\n .px-sm-4 {\n padding-right: 1.5rem !important;\n }\n .pb-sm-4,\n .py-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-sm-4,\n .px-sm-4 {\n padding-left: 1.5rem !important;\n }\n .p-sm-5 {\n padding: 3rem !important;\n }\n .pt-sm-5,\n .py-sm-5 {\n padding-top: 3rem !important;\n }\n .pr-sm-5,\n .px-sm-5 {\n padding-right: 3rem !important;\n }\n .pb-sm-5,\n .py-sm-5 {\n padding-bottom: 3rem !important;\n }\n .pl-sm-5,\n .px-sm-5 {\n padding-left: 3rem !important;\n }\n .m-sm-n1 {\n margin: -0.25rem !important;\n }\n .mt-sm-n1,\n .my-sm-n1 {\n margin-top: -0.25rem !important;\n }\n .mr-sm-n1,\n .mx-sm-n1 {\n margin-right: -0.25rem !important;\n }\n .mb-sm-n1,\n .my-sm-n1 {\n margin-bottom: -0.25rem !important;\n }\n .ml-sm-n1,\n .mx-sm-n1 {\n margin-left: -0.25rem !important;\n }\n .m-sm-n2 {\n margin: -0.5rem !important;\n }\n .mt-sm-n2,\n .my-sm-n2 {\n margin-top: -0.5rem !important;\n }\n .mr-sm-n2,\n .mx-sm-n2 {\n margin-right: -0.5rem !important;\n }\n .mb-sm-n2,\n .my-sm-n2 {\n margin-bottom: -0.5rem !important;\n }\n .ml-sm-n2,\n .mx-sm-n2 {\n margin-left: -0.5rem !important;\n }\n .m-sm-n3 {\n margin: -1rem !important;\n }\n .mt-sm-n3,\n .my-sm-n3 {\n margin-top: -1rem !important;\n }\n .mr-sm-n3,\n .mx-sm-n3 {\n margin-right: -1rem !important;\n }\n .mb-sm-n3,\n .my-sm-n3 {\n margin-bottom: -1rem !important;\n }\n .ml-sm-n3,\n .mx-sm-n3 {\n margin-left: -1rem !important;\n }\n .m-sm-n4 {\n margin: -1.5rem !important;\n }\n .mt-sm-n4,\n .my-sm-n4 {\n margin-top: -1.5rem !important;\n }\n .mr-sm-n4,\n .mx-sm-n4 {\n margin-right: -1.5rem !important;\n }\n .mb-sm-n4,\n .my-sm-n4 {\n margin-bottom: -1.5rem !important;\n }\n .ml-sm-n4,\n .mx-sm-n4 {\n margin-left: -1.5rem !important;\n }\n .m-sm-n5 {\n margin: -3rem !important;\n }\n .mt-sm-n5,\n .my-sm-n5 {\n margin-top: -3rem !important;\n }\n .mr-sm-n5,\n .mx-sm-n5 {\n margin-right: -3rem !important;\n }\n .mb-sm-n5,\n .my-sm-n5 {\n margin-bottom: -3rem !important;\n }\n .ml-sm-n5,\n .mx-sm-n5 {\n margin-left: -3rem !important;\n }\n .m-sm-auto {\n margin: auto !important;\n }\n .mt-sm-auto,\n .my-sm-auto {\n margin-top: auto !important;\n }\n .mr-sm-auto,\n .mx-sm-auto {\n margin-right: auto !important;\n }\n .mb-sm-auto,\n .my-sm-auto {\n margin-bottom: auto !important;\n }\n .ml-sm-auto,\n .mx-sm-auto {\n margin-left: auto !important;\n }\n}\n\n@media (min-width: 768px) {\n .m-md-0 {\n margin: 0 !important;\n }\n .mt-md-0,\n .my-md-0 {\n margin-top: 0 !important;\n }\n .mr-md-0,\n .mx-md-0 {\n margin-right: 0 !important;\n }\n .mb-md-0,\n .my-md-0 {\n margin-bottom: 0 !important;\n }\n .ml-md-0,\n .mx-md-0 {\n margin-left: 0 !important;\n }\n .m-md-1 {\n margin: 0.25rem !important;\n }\n .mt-md-1,\n .my-md-1 {\n margin-top: 0.25rem !important;\n }\n .mr-md-1,\n .mx-md-1 {\n margin-right: 0.25rem !important;\n }\n .mb-md-1,\n .my-md-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-md-1,\n .mx-md-1 {\n margin-left: 0.25rem !important;\n }\n .m-md-2 {\n margin: 0.5rem !important;\n }\n .mt-md-2,\n .my-md-2 {\n margin-top: 0.5rem !important;\n }\n .mr-md-2,\n .mx-md-2 {\n margin-right: 0.5rem !important;\n }\n .mb-md-2,\n .my-md-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-md-2,\n .mx-md-2 {\n margin-left: 0.5rem !important;\n }\n .m-md-3 {\n margin: 1rem !important;\n }\n .mt-md-3,\n .my-md-3 {\n margin-top: 1rem !important;\n }\n .mr-md-3,\n .mx-md-3 {\n margin-right: 1rem !important;\n }\n .mb-md-3,\n .my-md-3 {\n margin-bottom: 1rem !important;\n }\n .ml-md-3,\n .mx-md-3 {\n margin-left: 1rem !important;\n }\n .m-md-4 {\n margin: 1.5rem !important;\n }\n .mt-md-4,\n .my-md-4 {\n margin-top: 1.5rem !important;\n }\n .mr-md-4,\n .mx-md-4 {\n margin-right: 1.5rem !important;\n }\n .mb-md-4,\n .my-md-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-md-4,\n .mx-md-4 {\n margin-left: 1.5rem !important;\n }\n .m-md-5 {\n margin: 3rem !important;\n }\n .mt-md-5,\n .my-md-5 {\n margin-top: 3rem !important;\n }\n .mr-md-5,\n .mx-md-5 {\n margin-right: 3rem !important;\n }\n .mb-md-5,\n .my-md-5 {\n margin-bottom: 3rem !important;\n }\n .ml-md-5,\n .mx-md-5 {\n margin-left: 3rem !important;\n }\n .p-md-0 {\n padding: 0 !important;\n }\n .pt-md-0,\n .py-md-0 {\n padding-top: 0 !important;\n }\n .pr-md-0,\n .px-md-0 {\n padding-right: 0 !important;\n }\n .pb-md-0,\n .py-md-0 {\n padding-bottom: 0 !important;\n }\n .pl-md-0,\n .px-md-0 {\n padding-left: 0 !important;\n }\n .p-md-1 {\n padding: 0.25rem !important;\n }\n .pt-md-1,\n .py-md-1 {\n padding-top: 0.25rem !important;\n }\n .pr-md-1,\n .px-md-1 {\n padding-right: 0.25rem !important;\n }\n .pb-md-1,\n .py-md-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-md-1,\n .px-md-1 {\n padding-left: 0.25rem !important;\n }\n .p-md-2 {\n padding: 0.5rem !important;\n }\n .pt-md-2,\n .py-md-2 {\n padding-top: 0.5rem !important;\n }\n .pr-md-2,\n .px-md-2 {\n padding-right: 0.5rem !important;\n }\n .pb-md-2,\n .py-md-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-md-2,\n .px-md-2 {\n padding-left: 0.5rem !important;\n }\n .p-md-3 {\n padding: 1rem !important;\n }\n .pt-md-3,\n .py-md-3 {\n padding-top: 1rem !important;\n }\n .pr-md-3,\n .px-md-3 {\n padding-right: 1rem !important;\n }\n .pb-md-3,\n .py-md-3 {\n padding-bottom: 1rem !important;\n }\n .pl-md-3,\n .px-md-3 {\n padding-left: 1rem !important;\n }\n .p-md-4 {\n padding: 1.5rem !important;\n }\n .pt-md-4,\n .py-md-4 {\n padding-top: 1.5rem !important;\n }\n .pr-md-4,\n .px-md-4 {\n padding-right: 1.5rem !important;\n }\n .pb-md-4,\n .py-md-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-md-4,\n .px-md-4 {\n padding-left: 1.5rem !important;\n }\n .p-md-5 {\n padding: 3rem !important;\n }\n .pt-md-5,\n .py-md-5 {\n padding-top: 3rem !important;\n }\n .pr-md-5,\n .px-md-5 {\n padding-right: 3rem !important;\n }\n .pb-md-5,\n .py-md-5 {\n padding-bottom: 3rem !important;\n }\n .pl-md-5,\n .px-md-5 {\n padding-left: 3rem !important;\n }\n .m-md-n1 {\n margin: -0.25rem !important;\n }\n .mt-md-n1,\n .my-md-n1 {\n margin-top: -0.25rem !important;\n }\n .mr-md-n1,\n .mx-md-n1 {\n margin-right: -0.25rem !important;\n }\n .mb-md-n1,\n .my-md-n1 {\n margin-bottom: -0.25rem !important;\n }\n .ml-md-n1,\n .mx-md-n1 {\n margin-left: -0.25rem !important;\n }\n .m-md-n2 {\n margin: -0.5rem !important;\n }\n .mt-md-n2,\n .my-md-n2 {\n margin-top: -0.5rem !important;\n }\n .mr-md-n2,\n .mx-md-n2 {\n margin-right: -0.5rem !important;\n }\n .mb-md-n2,\n .my-md-n2 {\n margin-bottom: -0.5rem !important;\n }\n .ml-md-n2,\n .mx-md-n2 {\n margin-left: -0.5rem !important;\n }\n .m-md-n3 {\n margin: -1rem !important;\n }\n .mt-md-n3,\n .my-md-n3 {\n margin-top: -1rem !important;\n }\n .mr-md-n3,\n .mx-md-n3 {\n margin-right: -1rem !important;\n }\n .mb-md-n3,\n .my-md-n3 {\n margin-bottom: -1rem !important;\n }\n .ml-md-n3,\n .mx-md-n3 {\n margin-left: -1rem !important;\n }\n .m-md-n4 {\n margin: -1.5rem !important;\n }\n .mt-md-n4,\n .my-md-n4 {\n margin-top: -1.5rem !important;\n }\n .mr-md-n4,\n .mx-md-n4 {\n margin-right: -1.5rem !important;\n }\n .mb-md-n4,\n .my-md-n4 {\n margin-bottom: -1.5rem !important;\n }\n .ml-md-n4,\n .mx-md-n4 {\n margin-left: -1.5rem !important;\n }\n .m-md-n5 {\n margin: -3rem !important;\n }\n .mt-md-n5,\n .my-md-n5 {\n margin-top: -3rem !important;\n }\n .mr-md-n5,\n .mx-md-n5 {\n margin-right: -3rem !important;\n }\n .mb-md-n5,\n .my-md-n5 {\n margin-bottom: -3rem !important;\n }\n .ml-md-n5,\n .mx-md-n5 {\n margin-left: -3rem !important;\n }\n .m-md-auto {\n margin: auto !important;\n }\n .mt-md-auto,\n .my-md-auto {\n margin-top: auto !important;\n }\n .mr-md-auto,\n .mx-md-auto {\n margin-right: auto !important;\n }\n .mb-md-auto,\n .my-md-auto {\n margin-bottom: auto !important;\n }\n .ml-md-auto,\n .mx-md-auto {\n margin-left: auto !important;\n }\n}\n\n@media (min-width: 992px) {\n .m-lg-0 {\n margin: 0 !important;\n }\n .mt-lg-0,\n .my-lg-0 {\n margin-top: 0 !important;\n }\n .mr-lg-0,\n .mx-lg-0 {\n margin-right: 0 !important;\n }\n .mb-lg-0,\n .my-lg-0 {\n margin-bottom: 0 !important;\n }\n .ml-lg-0,\n .mx-lg-0 {\n margin-left: 0 !important;\n }\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n .mt-lg-1,\n .my-lg-1 {\n margin-top: 0.25rem !important;\n }\n .mr-lg-1,\n .mx-lg-1 {\n margin-right: 0.25rem !important;\n }\n .mb-lg-1,\n .my-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-lg-1,\n .mx-lg-1 {\n margin-left: 0.25rem !important;\n }\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n .mt-lg-2,\n .my-lg-2 {\n margin-top: 0.5rem !important;\n }\n .mr-lg-2,\n .mx-lg-2 {\n margin-right: 0.5rem !important;\n }\n .mb-lg-2,\n .my-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-lg-2,\n .mx-lg-2 {\n margin-left: 0.5rem !important;\n }\n .m-lg-3 {\n margin: 1rem !important;\n }\n .mt-lg-3,\n .my-lg-3 {\n margin-top: 1rem !important;\n }\n .mr-lg-3,\n .mx-lg-3 {\n margin-right: 1rem !important;\n }\n .mb-lg-3,\n .my-lg-3 {\n margin-bottom: 1rem !important;\n }\n .ml-lg-3,\n .mx-lg-3 {\n margin-left: 1rem !important;\n }\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n .mt-lg-4,\n .my-lg-4 {\n margin-top: 1.5rem !important;\n }\n .mr-lg-4,\n .mx-lg-4 {\n margin-right: 1.5rem !important;\n }\n .mb-lg-4,\n .my-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-lg-4,\n .mx-lg-4 {\n margin-left: 1.5rem !important;\n }\n .m-lg-5 {\n margin: 3rem !important;\n }\n .mt-lg-5,\n .my-lg-5 {\n margin-top: 3rem !important;\n }\n .mr-lg-5,\n .mx-lg-5 {\n margin-right: 3rem !important;\n }\n .mb-lg-5,\n .my-lg-5 {\n margin-bottom: 3rem !important;\n }\n .ml-lg-5,\n .mx-lg-5 {\n margin-left: 3rem !important;\n }\n .p-lg-0 {\n padding: 0 !important;\n }\n .pt-lg-0,\n .py-lg-0 {\n padding-top: 0 !important;\n }\n .pr-lg-0,\n .px-lg-0 {\n padding-right: 0 !important;\n }\n .pb-lg-0,\n .py-lg-0 {\n padding-bottom: 0 !important;\n }\n .pl-lg-0,\n .px-lg-0 {\n padding-left: 0 !important;\n }\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n .pt-lg-1,\n .py-lg-1 {\n padding-top: 0.25rem !important;\n }\n .pr-lg-1,\n .px-lg-1 {\n padding-right: 0.25rem !important;\n }\n .pb-lg-1,\n .py-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-lg-1,\n .px-lg-1 {\n padding-left: 0.25rem !important;\n }\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n .pt-lg-2,\n .py-lg-2 {\n padding-top: 0.5rem !important;\n }\n .pr-lg-2,\n .px-lg-2 {\n padding-right: 0.5rem !important;\n }\n .pb-lg-2,\n .py-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-lg-2,\n .px-lg-2 {\n padding-left: 0.5rem !important;\n }\n .p-lg-3 {\n padding: 1rem !important;\n }\n .pt-lg-3,\n .py-lg-3 {\n padding-top: 1rem !important;\n }\n .pr-lg-3,\n .px-lg-3 {\n padding-right: 1rem !important;\n }\n .pb-lg-3,\n .py-lg-3 {\n padding-bottom: 1rem !important;\n }\n .pl-lg-3,\n .px-lg-3 {\n padding-left: 1rem !important;\n }\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n .pt-lg-4,\n .py-lg-4 {\n padding-top: 1.5rem !important;\n }\n .pr-lg-4,\n .px-lg-4 {\n padding-right: 1.5rem !important;\n }\n .pb-lg-4,\n .py-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-lg-4,\n .px-lg-4 {\n padding-left: 1.5rem !important;\n }\n .p-lg-5 {\n padding: 3rem !important;\n }\n .pt-lg-5,\n .py-lg-5 {\n padding-top: 3rem !important;\n }\n .pr-lg-5,\n .px-lg-5 {\n padding-right: 3rem !important;\n }\n .pb-lg-5,\n .py-lg-5 {\n padding-bottom: 3rem !important;\n }\n .pl-lg-5,\n .px-lg-5 {\n padding-left: 3rem !important;\n }\n .m-lg-n1 {\n margin: -0.25rem !important;\n }\n .mt-lg-n1,\n .my-lg-n1 {\n margin-top: -0.25rem !important;\n }\n .mr-lg-n1,\n .mx-lg-n1 {\n margin-right: -0.25rem !important;\n }\n .mb-lg-n1,\n .my-lg-n1 {\n margin-bottom: -0.25rem !important;\n }\n .ml-lg-n1,\n .mx-lg-n1 {\n margin-left: -0.25rem !important;\n }\n .m-lg-n2 {\n margin: -0.5rem !important;\n }\n .mt-lg-n2,\n .my-lg-n2 {\n margin-top: -0.5rem !important;\n }\n .mr-lg-n2,\n .mx-lg-n2 {\n margin-right: -0.5rem !important;\n }\n .mb-lg-n2,\n .my-lg-n2 {\n margin-bottom: -0.5rem !important;\n }\n .ml-lg-n2,\n .mx-lg-n2 {\n margin-left: -0.5rem !important;\n }\n .m-lg-n3 {\n margin: -1rem !important;\n }\n .mt-lg-n3,\n .my-lg-n3 {\n margin-top: -1rem !important;\n }\n .mr-lg-n3,\n .mx-lg-n3 {\n margin-right: -1rem !important;\n }\n .mb-lg-n3,\n .my-lg-n3 {\n margin-bottom: -1rem !important;\n }\n .ml-lg-n3,\n .mx-lg-n3 {\n margin-left: -1rem !important;\n }\n .m-lg-n4 {\n margin: -1.5rem !important;\n }\n .mt-lg-n4,\n .my-lg-n4 {\n margin-top: -1.5rem !important;\n }\n .mr-lg-n4,\n .mx-lg-n4 {\n margin-right: -1.5rem !important;\n }\n .mb-lg-n4,\n .my-lg-n4 {\n margin-bottom: -1.5rem !important;\n }\n .ml-lg-n4,\n .mx-lg-n4 {\n margin-left: -1.5rem !important;\n }\n .m-lg-n5 {\n margin: -3rem !important;\n }\n .mt-lg-n5,\n .my-lg-n5 {\n margin-top: -3rem !important;\n }\n .mr-lg-n5,\n .mx-lg-n5 {\n margin-right: -3rem !important;\n }\n .mb-lg-n5,\n .my-lg-n5 {\n margin-bottom: -3rem !important;\n }\n .ml-lg-n5,\n .mx-lg-n5 {\n margin-left: -3rem !important;\n }\n .m-lg-auto {\n margin: auto !important;\n }\n .mt-lg-auto,\n .my-lg-auto {\n margin-top: auto !important;\n }\n .mr-lg-auto,\n .mx-lg-auto {\n margin-right: auto !important;\n }\n .mb-lg-auto,\n .my-lg-auto {\n margin-bottom: auto !important;\n }\n .ml-lg-auto,\n .mx-lg-auto {\n margin-left: auto !important;\n }\n}\n\n@media (min-width: 1200px) {\n .m-xl-0 {\n margin: 0 !important;\n }\n .mt-xl-0,\n .my-xl-0 {\n margin-top: 0 !important;\n }\n .mr-xl-0,\n .mx-xl-0 {\n margin-right: 0 !important;\n }\n .mb-xl-0,\n .my-xl-0 {\n margin-bottom: 0 !important;\n }\n .ml-xl-0,\n .mx-xl-0 {\n margin-left: 0 !important;\n }\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n .mt-xl-1,\n .my-xl-1 {\n margin-top: 0.25rem !important;\n }\n .mr-xl-1,\n .mx-xl-1 {\n margin-right: 0.25rem !important;\n }\n .mb-xl-1,\n .my-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-xl-1,\n .mx-xl-1 {\n margin-left: 0.25rem !important;\n }\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n .mt-xl-2,\n .my-xl-2 {\n margin-top: 0.5rem !important;\n }\n .mr-xl-2,\n .mx-xl-2 {\n margin-right: 0.5rem !important;\n }\n .mb-xl-2,\n .my-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-xl-2,\n .mx-xl-2 {\n margin-left: 0.5rem !important;\n }\n .m-xl-3 {\n margin: 1rem !important;\n }\n .mt-xl-3,\n .my-xl-3 {\n margin-top: 1rem !important;\n }\n .mr-xl-3,\n .mx-xl-3 {\n margin-right: 1rem !important;\n }\n .mb-xl-3,\n .my-xl-3 {\n margin-bottom: 1rem !important;\n }\n .ml-xl-3,\n .mx-xl-3 {\n margin-left: 1rem !important;\n }\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n .mt-xl-4,\n .my-xl-4 {\n margin-top: 1.5rem !important;\n }\n .mr-xl-4,\n .mx-xl-4 {\n margin-right: 1.5rem !important;\n }\n .mb-xl-4,\n .my-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-xl-4,\n .mx-xl-4 {\n margin-left: 1.5rem !important;\n }\n .m-xl-5 {\n margin: 3rem !important;\n }\n .mt-xl-5,\n .my-xl-5 {\n margin-top: 3rem !important;\n }\n .mr-xl-5,\n .mx-xl-5 {\n margin-right: 3rem !important;\n }\n .mb-xl-5,\n .my-xl-5 {\n margin-bottom: 3rem !important;\n }\n .ml-xl-5,\n .mx-xl-5 {\n margin-left: 3rem !important;\n }\n .p-xl-0 {\n padding: 0 !important;\n }\n .pt-xl-0,\n .py-xl-0 {\n padding-top: 0 !important;\n }\n .pr-xl-0,\n .px-xl-0 {\n padding-right: 0 !important;\n }\n .pb-xl-0,\n .py-xl-0 {\n padding-bottom: 0 !important;\n }\n .pl-xl-0,\n .px-xl-0 {\n padding-left: 0 !important;\n }\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n .pt-xl-1,\n .py-xl-1 {\n padding-top: 0.25rem !important;\n }\n .pr-xl-1,\n .px-xl-1 {\n padding-right: 0.25rem !important;\n }\n .pb-xl-1,\n .py-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-xl-1,\n .px-xl-1 {\n padding-left: 0.25rem !important;\n }\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n .pt-xl-2,\n .py-xl-2 {\n padding-top: 0.5rem !important;\n }\n .pr-xl-2,\n .px-xl-2 {\n padding-right: 0.5rem !important;\n }\n .pb-xl-2,\n .py-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-xl-2,\n .px-xl-2 {\n padding-left: 0.5rem !important;\n }\n .p-xl-3 {\n padding: 1rem !important;\n }\n .pt-xl-3,\n .py-xl-3 {\n padding-top: 1rem !important;\n }\n .pr-xl-3,\n .px-xl-3 {\n padding-right: 1rem !important;\n }\n .pb-xl-3,\n .py-xl-3 {\n padding-bottom: 1rem !important;\n }\n .pl-xl-3,\n .px-xl-3 {\n padding-left: 1rem !important;\n }\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n .pt-xl-4,\n .py-xl-4 {\n padding-top: 1.5rem !important;\n }\n .pr-xl-4,\n .px-xl-4 {\n padding-right: 1.5rem !important;\n }\n .pb-xl-4,\n .py-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-xl-4,\n .px-xl-4 {\n padding-left: 1.5rem !important;\n }\n .p-xl-5 {\n padding: 3rem !important;\n }\n .pt-xl-5,\n .py-xl-5 {\n padding-top: 3rem !important;\n }\n .pr-xl-5,\n .px-xl-5 {\n padding-right: 3rem !important;\n }\n .pb-xl-5,\n .py-xl-5 {\n padding-bottom: 3rem !important;\n }\n .pl-xl-5,\n .px-xl-5 {\n padding-left: 3rem !important;\n }\n .m-xl-n1 {\n margin: -0.25rem !important;\n }\n .mt-xl-n1,\n .my-xl-n1 {\n margin-top: -0.25rem !important;\n }\n .mr-xl-n1,\n .mx-xl-n1 {\n margin-right: -0.25rem !important;\n }\n .mb-xl-n1,\n .my-xl-n1 {\n margin-bottom: -0.25rem !important;\n }\n .ml-xl-n1,\n .mx-xl-n1 {\n margin-left: -0.25rem !important;\n }\n .m-xl-n2 {\n margin: -0.5rem !important;\n }\n .mt-xl-n2,\n .my-xl-n2 {\n margin-top: -0.5rem !important;\n }\n .mr-xl-n2,\n .mx-xl-n2 {\n margin-right: -0.5rem !important;\n }\n .mb-xl-n2,\n .my-xl-n2 {\n margin-bottom: -0.5rem !important;\n }\n .ml-xl-n2,\n .mx-xl-n2 {\n margin-left: -0.5rem !important;\n }\n .m-xl-n3 {\n margin: -1rem !important;\n }\n .mt-xl-n3,\n .my-xl-n3 {\n margin-top: -1rem !important;\n }\n .mr-xl-n3,\n .mx-xl-n3 {\n margin-right: -1rem !important;\n }\n .mb-xl-n3,\n .my-xl-n3 {\n margin-bottom: -1rem !important;\n }\n .ml-xl-n3,\n .mx-xl-n3 {\n margin-left: -1rem !important;\n }\n .m-xl-n4 {\n margin: -1.5rem !important;\n }\n .mt-xl-n4,\n .my-xl-n4 {\n margin-top: -1.5rem !important;\n }\n .mr-xl-n4,\n .mx-xl-n4 {\n margin-right: -1.5rem !important;\n }\n .mb-xl-n4,\n .my-xl-n4 {\n margin-bottom: -1.5rem !important;\n }\n .ml-xl-n4,\n .mx-xl-n4 {\n margin-left: -1.5rem !important;\n }\n .m-xl-n5 {\n margin: -3rem !important;\n }\n .mt-xl-n5,\n .my-xl-n5 {\n margin-top: -3rem !important;\n }\n .mr-xl-n5,\n .mx-xl-n5 {\n margin-right: -3rem !important;\n }\n .mb-xl-n5,\n .my-xl-n5 {\n margin-bottom: -3rem !important;\n }\n .ml-xl-n5,\n .mx-xl-n5 {\n margin-left: -3rem !important;\n }\n .m-xl-auto {\n margin: auto !important;\n }\n .mt-xl-auto,\n .my-xl-auto {\n margin-top: auto !important;\n }\n .mr-xl-auto,\n .mx-xl-auto {\n margin-right: auto !important;\n }\n .mb-xl-auto,\n .my-xl-auto {\n margin-bottom: auto !important;\n }\n .ml-xl-auto,\n .mx-xl-auto {\n margin-left: auto !important;\n }\n}\n\n.stretched-link::after {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1;\n pointer-events: auto;\n content: \"\";\n background-color: rgba(0, 0, 0, 0);\n}\n\n.text-monospace {\n font-family: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !important;\n}\n\n.text-justify {\n text-align: justify !important;\n}\n\n.text-wrap {\n white-space: normal !important;\n}\n\n.text-nowrap {\n white-space: nowrap !important;\n}\n\n.text-truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.text-left {\n text-align: left !important;\n}\n\n.text-right {\n text-align: right !important;\n}\n\n.text-center {\n text-align: center !important;\n}\n\n@media (min-width: 576px) {\n .text-sm-left {\n text-align: left !important;\n }\n .text-sm-right {\n text-align: right !important;\n }\n .text-sm-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 768px) {\n .text-md-left {\n text-align: left !important;\n }\n .text-md-right {\n text-align: right !important;\n }\n .text-md-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 992px) {\n .text-lg-left {\n text-align: left !important;\n }\n .text-lg-right {\n text-align: right !important;\n }\n .text-lg-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 1200px) {\n .text-xl-left {\n text-align: left !important;\n }\n .text-xl-right {\n text-align: right !important;\n }\n .text-xl-center {\n text-align: center !important;\n }\n}\n\n.text-lowercase {\n text-transform: lowercase !important;\n}\n\n.text-uppercase {\n text-transform: uppercase !important;\n}\n\n.text-capitalize {\n text-transform: capitalize !important;\n}\n\n.font-weight-light {\n font-weight: 300 !important;\n}\n\n.font-weight-lighter {\n font-weight: lighter !important;\n}\n\n.font-weight-normal {\n font-weight: 400 !important;\n}\n\n.font-weight-bold {\n font-weight: 700 !important;\n}\n\n.font-weight-bolder {\n font-weight: bolder !important;\n}\n\n.font-italic {\n font-style: italic !important;\n}\n\n.text-white {\n color: #fff !important;\n}\n\n.text-primary {\n color: #007bff !important;\n}\n\na.text-primary:hover, a.text-primary:focus {\n color: #0056b3 !important;\n}\n\n.text-secondary {\n color: #6c757d !important;\n}\n\na.text-secondary:hover, a.text-secondary:focus {\n color: #494f54 !important;\n}\n\n.text-success {\n color: #28a745 !important;\n}\n\na.text-success:hover, a.text-success:focus {\n color: #19692c !important;\n}\n\n.text-info {\n color: #17a2b8 !important;\n}\n\na.text-info:hover, a.text-info:focus {\n color: #0f6674 !important;\n}\n\n.text-warning {\n color: #ffc107 !important;\n}\n\na.text-warning:hover, a.text-warning:focus {\n color: #ba8b00 !important;\n}\n\n.text-danger {\n color: #dc3545 !important;\n}\n\na.text-danger:hover, a.text-danger:focus {\n color: #a71d2a !important;\n}\n\n.text-light {\n color: #f8f9fa !important;\n}\n\na.text-light:hover, a.text-light:focus {\n color: #cbd3da !important;\n}\n\n.text-dark {\n color: #343a40 !important;\n}\n\na.text-dark:hover, a.text-dark:focus {\n color: #121416 !important;\n}\n\n.text-body {\n color: #212529 !important;\n}\n\n.text-muted {\n color: #6c757d !important;\n}\n\n.text-black-50 {\n color: rgba(0, 0, 0, 0.5) !important;\n}\n\n.text-white-50 {\n color: rgba(255, 255, 255, 0.5) !important;\n}\n\n.text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n\n.text-decoration-none {\n text-decoration: none !important;\n}\n\n.text-break {\n word-break: break-word !important;\n overflow-wrap: break-word !important;\n}\n\n.text-reset {\n color: inherit !important;\n}\n\n.visible {\n visibility: visible !important;\n}\n\n.invisible {\n visibility: hidden !important;\n}\n\n@media print {\n *,\n *::before,\n *::after {\n text-shadow: none !important;\n box-shadow: none !important;\n }\n a:not(.btn) {\n text-decoration: underline;\n }\n abbr[title]::after {\n content: \" (\" attr(title) \")\";\n }\n pre {\n white-space: pre-wrap !important;\n }\n pre,\n blockquote {\n border: 1px solid #adb5bd;\n page-break-inside: avoid;\n }\n thead {\n display: table-header-group;\n }\n tr,\n img {\n page-break-inside: avoid;\n }\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n h2,\n h3 {\n page-break-after: avoid;\n }\n @page {\n size: a3;\n }\n body {\n min-width: 992px !important;\n }\n .container {\n min-width: 992px !important;\n }\n .navbar {\n display: none;\n }\n .badge {\n border: 1px solid #000;\n }\n .table {\n border-collapse: collapse !important;\n }\n .table td,\n .table th {\n background-color: #fff !important;\n }\n .table-bordered th,\n .table-bordered td {\n border: 1px solid #dee2e6 !important;\n }\n .table-dark {\n color: inherit;\n }\n .table-dark th,\n .table-dark td,\n .table-dark thead th,\n .table-dark tbody + tbody {\n border-color: #dee2e6;\n }\n .table .thead-dark th {\n color: inherit;\n border-color: #dee2e6;\n }\n}\n/*# sourceMappingURL=bootstrap.css.map */\n/*!\n * Font Awesome Free 5.15.1 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n */\n.fa,\n.fas,\n.far,\n.fal,\n.fad,\n.fab {\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n display: inline-block;\n font-style: normal;\n -webkit-font-feature-settings: normal;\n font-feature-settings: normal;\n font-variant: normal;\n text-rendering: auto;\n line-height: 1; }\n\n.fa-lg {\n font-size: 1.33333em;\n line-height: 0.75em;\n vertical-align: -.0667em; }\n\n.fa-xs {\n font-size: .75em; }\n\n.fa-sm {\n font-size: .875em; }\n\n.fa-1x {\n font-size: 1em; }\n\n.fa-2x {\n font-size: 2em; }\n\n.fa-3x {\n font-size: 3em; }\n\n.fa-4x {\n font-size: 4em; }\n\n.fa-5x {\n font-size: 5em; }\n\n.fa-6x {\n font-size: 6em; }\n\n.fa-7x {\n font-size: 7em; }\n\n.fa-8x {\n font-size: 8em; }\n\n.fa-9x {\n font-size: 9em; }\n\n.fa-10x {\n font-size: 10em; }\n\n.fa-fw {\n text-align: center;\n width: 1.25em; }\n\n.fa-ul {\n list-style-type: none;\n margin-left: 2.5em;\n padding-left: 0; }\n .fa-ul > li {\n position: relative; }\n\n.fa-li {\n left: -2em;\n position: absolute;\n text-align: center;\n width: 2em;\n line-height: inherit; }\n\n.fa-border {\n border: solid 0.08em #eee;\n border-radius: .1em;\n padding: .2em .25em .15em; }\n\n.fa-pull-left {\n float: left; }\n\n.fa-pull-right {\n float: right; }\n\n.fa.fa-pull-left,\n.fas.fa-pull-left,\n.far.fa-pull-left,\n.fal.fa-pull-left,\n.fab.fa-pull-left {\n margin-right: .3em; }\n\n.fa.fa-pull-right,\n.fas.fa-pull-right,\n.far.fa-pull-right,\n.fal.fa-pull-right,\n.fab.fa-pull-right {\n margin-left: .3em; }\n\n.fa-spin {\n -webkit-animation: fa-spin 2s infinite linear;\n animation: fa-spin 2s infinite linear; }\n\n.fa-pulse {\n -webkit-animation: fa-spin 1s infinite steps(8);\n animation: fa-spin 1s infinite steps(8); }\n\n@-webkit-keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg); }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg); } }\n\n@keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg); }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg); } }\n\n.fa-rotate-90 {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\";\n -webkit-transform: rotate(90deg);\n transform: rotate(90deg); }\n\n.fa-rotate-180 {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\";\n -webkit-transform: rotate(180deg);\n transform: rotate(180deg); }\n\n.fa-rotate-270 {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\";\n -webkit-transform: rotate(270deg);\n transform: rotate(270deg); }\n\n.fa-flip-horizontal {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\";\n -webkit-transform: scale(-1, 1);\n transform: scale(-1, 1); }\n\n.fa-flip-vertical {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";\n -webkit-transform: scale(1, -1);\n transform: scale(1, -1); }\n\n.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";\n -webkit-transform: scale(-1, -1);\n transform: scale(-1, -1); }\n\n:root .fa-rotate-90,\n:root .fa-rotate-180,\n:root .fa-rotate-270,\n:root .fa-flip-horizontal,\n:root .fa-flip-vertical,\n:root .fa-flip-both {\n -webkit-filter: none;\n filter: none; }\n\n.fa-stack {\n display: inline-block;\n height: 2em;\n line-height: 2em;\n position: relative;\n vertical-align: middle;\n width: 2.5em; }\n\n.fa-stack-1x,\n.fa-stack-2x {\n left: 0;\n position: absolute;\n text-align: center;\n width: 100%; }\n\n.fa-stack-1x {\n line-height: inherit; }\n\n.fa-stack-2x {\n font-size: 2em; }\n\n.fa-inverse {\n color: #fff; }\n\n/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen\nreaders do not read off random characters that represent icons */\n.fa-500px:before {\n content: \"\\f26e\"; }\n\n.fa-accessible-icon:before {\n content: \"\\f368\"; }\n\n.fa-accusoft:before {\n content: \"\\f369\"; }\n\n.fa-acquisitions-incorporated:before {\n content: \"\\f6af\"; }\n\n.fa-ad:before {\n content: \"\\f641\"; }\n\n.fa-address-book:before {\n content: \"\\f2b9\"; }\n\n.fa-address-card:before {\n content: \"\\f2bb\"; }\n\n.fa-adjust:before {\n content: \"\\f042\"; }\n\n.fa-adn:before {\n content: \"\\f170\"; }\n\n.fa-adversal:before {\n content: \"\\f36a\"; }\n\n.fa-affiliatetheme:before {\n content: \"\\f36b\"; }\n\n.fa-air-freshener:before {\n content: \"\\f5d0\"; }\n\n.fa-airbnb:before {\n content: \"\\f834\"; }\n\n.fa-algolia:before {\n content: \"\\f36c\"; }\n\n.fa-align-center:before {\n content: \"\\f037\"; }\n\n.fa-align-justify:before {\n content: \"\\f039\"; }\n\n.fa-align-left:before {\n content: \"\\f036\"; }\n\n.fa-align-right:before {\n content: \"\\f038\"; }\n\n.fa-alipay:before {\n content: \"\\f642\"; }\n\n.fa-allergies:before {\n content: \"\\f461\"; }\n\n.fa-amazon:before {\n content: \"\\f270\"; }\n\n.fa-amazon-pay:before {\n content: \"\\f42c\"; }\n\n.fa-ambulance:before {\n content: \"\\f0f9\"; }\n\n.fa-american-sign-language-interpreting:before {\n content: \"\\f2a3\"; }\n\n.fa-amilia:before {\n content: \"\\f36d\"; }\n\n.fa-anchor:before {\n content: \"\\f13d\"; }\n\n.fa-android:before {\n content: \"\\f17b\"; }\n\n.fa-angellist:before {\n content: \"\\f209\"; }\n\n.fa-angle-double-down:before {\n content: \"\\f103\"; }\n\n.fa-angle-double-left:before {\n content: \"\\f100\"; }\n\n.fa-angle-double-right:before {\n content: \"\\f101\"; }\n\n.fa-angle-double-up:before {\n content: \"\\f102\"; }\n\n.fa-angle-down:before {\n content: \"\\f107\"; }\n\n.fa-angle-left:before {\n content: \"\\f104\"; }\n\n.fa-angle-right:before {\n content: \"\\f105\"; }\n\n.fa-angle-up:before {\n content: \"\\f106\"; }\n\n.fa-angry:before {\n content: \"\\f556\"; }\n\n.fa-angrycreative:before {\n content: \"\\f36e\"; }\n\n.fa-angular:before {\n content: \"\\f420\"; }\n\n.fa-ankh:before {\n content: \"\\f644\"; }\n\n.fa-app-store:before {\n content: \"\\f36f\"; }\n\n.fa-app-store-ios:before {\n content: \"\\f370\"; }\n\n.fa-apper:before {\n content: \"\\f371\"; }\n\n.fa-apple:before {\n content: \"\\f179\"; }\n\n.fa-apple-alt:before {\n content: \"\\f5d1\"; }\n\n.fa-apple-pay:before {\n content: \"\\f415\"; }\n\n.fa-archive:before {\n content: \"\\f187\"; }\n\n.fa-archway:before {\n content: \"\\f557\"; }\n\n.fa-arrow-alt-circle-down:before {\n content: \"\\f358\"; }\n\n.fa-arrow-alt-circle-left:before {\n content: \"\\f359\"; }\n\n.fa-arrow-alt-circle-right:before {\n content: \"\\f35a\"; }\n\n.fa-arrow-alt-circle-up:before {\n content: \"\\f35b\"; }\n\n.fa-arrow-circle-down:before {\n content: \"\\f0ab\"; }\n\n.fa-arrow-circle-left:before {\n content: \"\\f0a8\"; }\n\n.fa-arrow-circle-right:before {\n content: \"\\f0a9\"; }\n\n.fa-arrow-circle-up:before {\n content: \"\\f0aa\"; }\n\n.fa-arrow-down:before {\n content: \"\\f063\"; }\n\n.fa-arrow-left:before {\n content: \"\\f060\"; }\n\n.fa-arrow-right:before {\n content: \"\\f061\"; }\n\n.fa-arrow-up:before {\n content: \"\\f062\"; }\n\n.fa-arrows-alt:before {\n content: \"\\f0b2\"; }\n\n.fa-arrows-alt-h:before {\n content: \"\\f337\"; }\n\n.fa-arrows-alt-v:before {\n content: \"\\f338\"; }\n\n.fa-artstation:before {\n content: \"\\f77a\"; }\n\n.fa-assistive-listening-systems:before {\n content: \"\\f2a2\"; }\n\n.fa-asterisk:before {\n content: \"\\f069\"; }\n\n.fa-asymmetrik:before {\n content: \"\\f372\"; }\n\n.fa-at:before {\n content: \"\\f1fa\"; }\n\n.fa-atlas:before {\n content: \"\\f558\"; }\n\n.fa-atlassian:before {\n content: \"\\f77b\"; }\n\n.fa-atom:before {\n content: \"\\f5d2\"; }\n\n.fa-audible:before {\n content: \"\\f373\"; }\n\n.fa-audio-description:before {\n content: \"\\f29e\"; }\n\n.fa-autoprefixer:before {\n content: \"\\f41c\"; }\n\n.fa-avianex:before {\n content: \"\\f374\"; }\n\n.fa-aviato:before {\n content: \"\\f421\"; }\n\n.fa-award:before {\n content: \"\\f559\"; }\n\n.fa-aws:before {\n content: \"\\f375\"; }\n\n.fa-baby:before {\n content: \"\\f77c\"; }\n\n.fa-baby-carriage:before {\n content: \"\\f77d\"; }\n\n.fa-backspace:before {\n content: \"\\f55a\"; }\n\n.fa-backward:before {\n content: \"\\f04a\"; }\n\n.fa-bacon:before {\n content: \"\\f7e5\"; }\n\n.fa-bacteria:before {\n content: \"\\e059\"; }\n\n.fa-bacterium:before {\n content: \"\\e05a\"; }\n\n.fa-bahai:before {\n content: \"\\f666\"; }\n\n.fa-balance-scale:before {\n content: \"\\f24e\"; }\n\n.fa-balance-scale-left:before {\n content: \"\\f515\"; }\n\n.fa-balance-scale-right:before {\n content: \"\\f516\"; }\n\n.fa-ban:before {\n content: \"\\f05e\"; }\n\n.fa-band-aid:before {\n content: \"\\f462\"; }\n\n.fa-bandcamp:before {\n content: \"\\f2d5\"; }\n\n.fa-barcode:before {\n content: \"\\f02a\"; }\n\n.fa-bars:before {\n content: \"\\f0c9\"; }\n\n.fa-baseball-ball:before {\n content: \"\\f433\"; }\n\n.fa-basketball-ball:before {\n content: \"\\f434\"; }\n\n.fa-bath:before {\n content: \"\\f2cd\"; }\n\n.fa-battery-empty:before {\n content: \"\\f244\"; }\n\n.fa-battery-full:before {\n content: \"\\f240\"; }\n\n.fa-battery-half:before {\n content: \"\\f242\"; }\n\n.fa-battery-quarter:before {\n content: \"\\f243\"; }\n\n.fa-battery-three-quarters:before {\n content: \"\\f241\"; }\n\n.fa-battle-net:before {\n content: \"\\f835\"; }\n\n.fa-bed:before {\n content: \"\\f236\"; }\n\n.fa-beer:before {\n content: \"\\f0fc\"; }\n\n.fa-behance:before {\n content: \"\\f1b4\"; }\n\n.fa-behance-square:before {\n content: \"\\f1b5\"; }\n\n.fa-bell:before {\n content: \"\\f0f3\"; }\n\n.fa-bell-slash:before {\n content: \"\\f1f6\"; }\n\n.fa-bezier-curve:before {\n content: \"\\f55b\"; }\n\n.fa-bible:before {\n content: \"\\f647\"; }\n\n.fa-bicycle:before {\n content: \"\\f206\"; }\n\n.fa-biking:before {\n content: \"\\f84a\"; }\n\n.fa-bimobject:before {\n content: \"\\f378\"; }\n\n.fa-binoculars:before {\n content: \"\\f1e5\"; }\n\n.fa-biohazard:before {\n content: \"\\f780\"; }\n\n.fa-birthday-cake:before {\n content: \"\\f1fd\"; }\n\n.fa-bitbucket:before {\n content: \"\\f171\"; }\n\n.fa-bitcoin:before {\n content: \"\\f379\"; }\n\n.fa-bity:before {\n content: \"\\f37a\"; }\n\n.fa-black-tie:before {\n content: \"\\f27e\"; }\n\n.fa-blackberry:before {\n content: \"\\f37b\"; }\n\n.fa-blender:before {\n content: \"\\f517\"; }\n\n.fa-blender-phone:before {\n content: \"\\f6b6\"; }\n\n.fa-blind:before {\n content: \"\\f29d\"; }\n\n.fa-blog:before {\n content: \"\\f781\"; }\n\n.fa-blogger:before {\n content: \"\\f37c\"; }\n\n.fa-blogger-b:before {\n content: \"\\f37d\"; }\n\n.fa-bluetooth:before {\n content: \"\\f293\"; }\n\n.fa-bluetooth-b:before {\n content: \"\\f294\"; }\n\n.fa-bold:before {\n content: \"\\f032\"; }\n\n.fa-bolt:before {\n content: \"\\f0e7\"; }\n\n.fa-bomb:before {\n content: \"\\f1e2\"; }\n\n.fa-bone:before {\n content: \"\\f5d7\"; }\n\n.fa-bong:before {\n content: \"\\f55c\"; }\n\n.fa-book:before {\n content: \"\\f02d\"; }\n\n.fa-book-dead:before {\n content: \"\\f6b7\"; }\n\n.fa-book-medical:before {\n content: \"\\f7e6\"; }\n\n.fa-book-open:before {\n content: \"\\f518\"; }\n\n.fa-book-reader:before {\n content: \"\\f5da\"; }\n\n.fa-bookmark:before {\n content: \"\\f02e\"; }\n\n.fa-bootstrap:before {\n content: \"\\f836\"; }\n\n.fa-border-all:before {\n content: \"\\f84c\"; }\n\n.fa-border-none:before {\n content: \"\\f850\"; }\n\n.fa-border-style:before {\n content: \"\\f853\"; }\n\n.fa-bowling-ball:before {\n content: \"\\f436\"; }\n\n.fa-box:before {\n content: \"\\f466\"; }\n\n.fa-box-open:before {\n content: \"\\f49e\"; }\n\n.fa-box-tissue:before {\n content: \"\\e05b\"; }\n\n.fa-boxes:before {\n content: \"\\f468\"; }\n\n.fa-braille:before {\n content: \"\\f2a1\"; }\n\n.fa-brain:before {\n content: \"\\f5dc\"; }\n\n.fa-bread-slice:before {\n content: \"\\f7ec\"; }\n\n.fa-briefcase:before {\n content: \"\\f0b1\"; }\n\n.fa-briefcase-medical:before {\n content: \"\\f469\"; }\n\n.fa-broadcast-tower:before {\n content: \"\\f519\"; }\n\n.fa-broom:before {\n content: \"\\f51a\"; }\n\n.fa-brush:before {\n content: \"\\f55d\"; }\n\n.fa-btc:before {\n content: \"\\f15a\"; }\n\n.fa-buffer:before {\n content: \"\\f837\"; }\n\n.fa-bug:before {\n content: \"\\f188\"; }\n\n.fa-building:before {\n content: \"\\f1ad\"; }\n\n.fa-bullhorn:before {\n content: \"\\f0a1\"; }\n\n.fa-bullseye:before {\n content: \"\\f140\"; }\n\n.fa-burn:before {\n content: \"\\f46a\"; }\n\n.fa-buromobelexperte:before {\n content: \"\\f37f\"; }\n\n.fa-bus:before {\n content: \"\\f207\"; }\n\n.fa-bus-alt:before {\n content: \"\\f55e\"; }\n\n.fa-business-time:before {\n content: \"\\f64a\"; }\n\n.fa-buy-n-large:before {\n content: \"\\f8a6\"; }\n\n.fa-buysellads:before {\n content: \"\\f20d\"; }\n\n.fa-calculator:before {\n content: \"\\f1ec\"; }\n\n.fa-calendar:before {\n content: \"\\f133\"; }\n\n.fa-calendar-alt:before {\n content: \"\\f073\"; }\n\n.fa-calendar-check:before {\n content: \"\\f274\"; }\n\n.fa-calendar-day:before {\n content: \"\\f783\"; }\n\n.fa-calendar-minus:before {\n content: \"\\f272\"; }\n\n.fa-calendar-plus:before {\n content: \"\\f271\"; }\n\n.fa-calendar-times:before {\n content: \"\\f273\"; }\n\n.fa-calendar-week:before {\n content: \"\\f784\"; }\n\n.fa-camera:before {\n content: \"\\f030\"; }\n\n.fa-camera-retro:before {\n content: \"\\f083\"; }\n\n.fa-campground:before {\n content: \"\\f6bb\"; }\n\n.fa-canadian-maple-leaf:before {\n content: \"\\f785\"; }\n\n.fa-candy-cane:before {\n content: \"\\f786\"; }\n\n.fa-cannabis:before {\n content: \"\\f55f\"; }\n\n.fa-capsules:before {\n content: \"\\f46b\"; }\n\n.fa-car:before {\n content: \"\\f1b9\"; }\n\n.fa-car-alt:before {\n content: \"\\f5de\"; }\n\n.fa-car-battery:before {\n content: \"\\f5df\"; }\n\n.fa-car-crash:before {\n content: \"\\f5e1\"; }\n\n.fa-car-side:before {\n content: \"\\f5e4\"; }\n\n.fa-caravan:before {\n content: \"\\f8ff\"; }\n\n.fa-caret-down:before {\n content: \"\\f0d7\"; }\n\n.fa-caret-left:before {\n content: \"\\f0d9\"; }\n\n.fa-caret-right:before {\n content: \"\\f0da\"; }\n\n.fa-caret-square-down:before {\n content: \"\\f150\"; }\n\n.fa-caret-square-left:before {\n content: \"\\f191\"; }\n\n.fa-caret-square-right:before {\n content: \"\\f152\"; }\n\n.fa-caret-square-up:before {\n content: \"\\f151\"; }\n\n.fa-caret-up:before {\n content: \"\\f0d8\"; }\n\n.fa-carrot:before {\n content: \"\\f787\"; }\n\n.fa-cart-arrow-down:before {\n content: \"\\f218\"; }\n\n.fa-cart-plus:before {\n content: \"\\f217\"; }\n\n.fa-cash-register:before {\n content: \"\\f788\"; }\n\n.fa-cat:before {\n content: \"\\f6be\"; }\n\n.fa-cc-amazon-pay:before {\n content: \"\\f42d\"; }\n\n.fa-cc-amex:before {\n content: \"\\f1f3\"; }\n\n.fa-cc-apple-pay:before {\n content: \"\\f416\"; }\n\n.fa-cc-diners-club:before {\n content: \"\\f24c\"; }\n\n.fa-cc-discover:before {\n content: \"\\f1f2\"; }\n\n.fa-cc-jcb:before {\n content: \"\\f24b\"; }\n\n.fa-cc-mastercard:before {\n content: \"\\f1f1\"; }\n\n.fa-cc-paypal:before {\n content: \"\\f1f4\"; }\n\n.fa-cc-stripe:before {\n content: \"\\f1f5\"; }\n\n.fa-cc-visa:before {\n content: \"\\f1f0\"; }\n\n.fa-centercode:before {\n content: \"\\f380\"; }\n\n.fa-centos:before {\n content: \"\\f789\"; }\n\n.fa-certificate:before {\n content: \"\\f0a3\"; }\n\n.fa-chair:before {\n content: \"\\f6c0\"; }\n\n.fa-chalkboard:before {\n content: \"\\f51b\"; }\n\n.fa-chalkboard-teacher:before {\n content: \"\\f51c\"; }\n\n.fa-charging-station:before {\n content: \"\\f5e7\"; }\n\n.fa-chart-area:before {\n content: \"\\f1fe\"; }\n\n.fa-chart-bar:before {\n content: \"\\f080\"; }\n\n.fa-chart-line:before {\n content: \"\\f201\"; }\n\n.fa-chart-pie:before {\n content: \"\\f200\"; }\n\n.fa-check:before {\n content: \"\\f00c\"; }\n\n.fa-check-circle:before {\n content: \"\\f058\"; }\n\n.fa-check-double:before {\n content: \"\\f560\"; }\n\n.fa-check-square:before {\n content: \"\\f14a\"; }\n\n.fa-cheese:before {\n content: \"\\f7ef\"; }\n\n.fa-chess:before {\n content: \"\\f439\"; }\n\n.fa-chess-bishop:before {\n content: \"\\f43a\"; }\n\n.fa-chess-board:before {\n content: \"\\f43c\"; }\n\n.fa-chess-king:before {\n content: \"\\f43f\"; }\n\n.fa-chess-knight:before {\n content: \"\\f441\"; }\n\n.fa-chess-pawn:before {\n content: \"\\f443\"; }\n\n.fa-chess-queen:before {\n content: \"\\f445\"; }\n\n.fa-chess-rook:before {\n content: \"\\f447\"; }\n\n.fa-chevron-circle-down:before {\n content: \"\\f13a\"; }\n\n.fa-chevron-circle-left:before {\n content: \"\\f137\"; }\n\n.fa-chevron-circle-right:before {\n content: \"\\f138\"; }\n\n.fa-chevron-circle-up:before {\n content: \"\\f139\"; }\n\n.fa-chevron-down:before {\n content: \"\\f078\"; }\n\n.fa-chevron-left:before {\n content: \"\\f053\"; }\n\n.fa-chevron-right:before {\n content: \"\\f054\"; }\n\n.fa-chevron-up:before {\n content: \"\\f077\"; }\n\n.fa-child:before {\n content: \"\\f1ae\"; }\n\n.fa-chrome:before {\n content: \"\\f268\"; }\n\n.fa-chromecast:before {\n content: \"\\f838\"; }\n\n.fa-church:before {\n content: \"\\f51d\"; }\n\n.fa-circle:before {\n content: \"\\f111\"; }\n\n.fa-circle-notch:before {\n content: \"\\f1ce\"; }\n\n.fa-city:before {\n content: \"\\f64f\"; }\n\n.fa-clinic-medical:before {\n content: \"\\f7f2\"; }\n\n.fa-clipboard:before {\n content: \"\\f328\"; }\n\n.fa-clipboard-check:before {\n content: \"\\f46c\"; }\n\n.fa-clipboard-list:before {\n content: \"\\f46d\"; }\n\n.fa-clock:before {\n content: \"\\f017\"; }\n\n.fa-clone:before {\n content: \"\\f24d\"; }\n\n.fa-closed-captioning:before {\n content: \"\\f20a\"; }\n\n.fa-cloud:before {\n content: \"\\f0c2\"; }\n\n.fa-cloud-download-alt:before {\n content: \"\\f381\"; }\n\n.fa-cloud-meatball:before {\n content: \"\\f73b\"; }\n\n.fa-cloud-moon:before {\n content: \"\\f6c3\"; }\n\n.fa-cloud-moon-rain:before {\n content: \"\\f73c\"; }\n\n.fa-cloud-rain:before {\n content: \"\\f73d\"; }\n\n.fa-cloud-showers-heavy:before {\n content: \"\\f740\"; }\n\n.fa-cloud-sun:before {\n content: \"\\f6c4\"; }\n\n.fa-cloud-sun-rain:before {\n content: \"\\f743\"; }\n\n.fa-cloud-upload-alt:before {\n content: \"\\f382\"; }\n\n.fa-cloudflare:before {\n content: \"\\e07d\"; }\n\n.fa-cloudscale:before {\n content: \"\\f383\"; }\n\n.fa-cloudsmith:before {\n content: \"\\f384\"; }\n\n.fa-cloudversify:before {\n content: \"\\f385\"; }\n\n.fa-cocktail:before {\n content: \"\\f561\"; }\n\n.fa-code:before {\n content: \"\\f121\"; }\n\n.fa-code-branch:before {\n content: \"\\f126\"; }\n\n.fa-codepen:before {\n content: \"\\f1cb\"; }\n\n.fa-codiepie:before {\n content: \"\\f284\"; }\n\n.fa-coffee:before {\n content: \"\\f0f4\"; }\n\n.fa-cog:before {\n content: \"\\f013\"; }\n\n.fa-cogs:before {\n content: \"\\f085\"; }\n\n.fa-coins:before {\n content: \"\\f51e\"; }\n\n.fa-columns:before {\n content: \"\\f0db\"; }\n\n.fa-comment:before {\n content: \"\\f075\"; }\n\n.fa-comment-alt:before {\n content: \"\\f27a\"; }\n\n.fa-comment-dollar:before {\n content: \"\\f651\"; }\n\n.fa-comment-dots:before {\n content: \"\\f4ad\"; }\n\n.fa-comment-medical:before {\n content: \"\\f7f5\"; }\n\n.fa-comment-slash:before {\n content: \"\\f4b3\"; }\n\n.fa-comments:before {\n content: \"\\f086\"; }\n\n.fa-comments-dollar:before {\n content: \"\\f653\"; }\n\n.fa-compact-disc:before {\n content: \"\\f51f\"; }\n\n.fa-compass:before {\n content: \"\\f14e\"; }\n\n.fa-compress:before {\n content: \"\\f066\"; }\n\n.fa-compress-alt:before {\n content: \"\\f422\"; }\n\n.fa-compress-arrows-alt:before {\n content: \"\\f78c\"; }\n\n.fa-concierge-bell:before {\n content: \"\\f562\"; }\n\n.fa-confluence:before {\n content: \"\\f78d\"; }\n\n.fa-connectdevelop:before {\n content: \"\\f20e\"; }\n\n.fa-contao:before {\n content: \"\\f26d\"; }\n\n.fa-cookie:before {\n content: \"\\f563\"; }\n\n.fa-cookie-bite:before {\n content: \"\\f564\"; }\n\n.fa-copy:before {\n content: \"\\f0c5\"; }\n\n.fa-copyright:before {\n content: \"\\f1f9\"; }\n\n.fa-cotton-bureau:before {\n content: \"\\f89e\"; }\n\n.fa-couch:before {\n content: \"\\f4b8\"; }\n\n.fa-cpanel:before {\n content: \"\\f388\"; }\n\n.fa-creative-commons:before {\n content: \"\\f25e\"; }\n\n.fa-creative-commons-by:before {\n content: \"\\f4e7\"; }\n\n.fa-creative-commons-nc:before {\n content: \"\\f4e8\"; }\n\n.fa-creative-commons-nc-eu:before {\n content: \"\\f4e9\"; }\n\n.fa-creative-commons-nc-jp:before {\n content: \"\\f4ea\"; }\n\n.fa-creative-commons-nd:before {\n content: \"\\f4eb\"; }\n\n.fa-creative-commons-pd:before {\n content: \"\\f4ec\"; }\n\n.fa-creative-commons-pd-alt:before {\n content: \"\\f4ed\"; }\n\n.fa-creative-commons-remix:before {\n content: \"\\f4ee\"; }\n\n.fa-creative-commons-sa:before {\n content: \"\\f4ef\"; }\n\n.fa-creative-commons-sampling:before {\n content: \"\\f4f0\"; }\n\n.fa-creative-commons-sampling-plus:before {\n content: \"\\f4f1\"; }\n\n.fa-creative-commons-share:before {\n content: \"\\f4f2\"; }\n\n.fa-creative-commons-zero:before {\n content: \"\\f4f3\"; }\n\n.fa-credit-card:before {\n content: \"\\f09d\"; }\n\n.fa-critical-role:before {\n content: \"\\f6c9\"; }\n\n.fa-crop:before {\n content: \"\\f125\"; }\n\n.fa-crop-alt:before {\n content: \"\\f565\"; }\n\n.fa-cross:before {\n content: \"\\f654\"; }\n\n.fa-crosshairs:before {\n content: \"\\f05b\"; }\n\n.fa-crow:before {\n content: \"\\f520\"; }\n\n.fa-crown:before {\n content: \"\\f521\"; }\n\n.fa-crutch:before {\n content: \"\\f7f7\"; }\n\n.fa-css3:before {\n content: \"\\f13c\"; }\n\n.fa-css3-alt:before {\n content: \"\\f38b\"; }\n\n.fa-cube:before {\n content: \"\\f1b2\"; }\n\n.fa-cubes:before {\n content: \"\\f1b3\"; }\n\n.fa-cut:before {\n content: \"\\f0c4\"; }\n\n.fa-cuttlefish:before {\n content: \"\\f38c\"; }\n\n.fa-d-and-d:before {\n content: \"\\f38d\"; }\n\n.fa-d-and-d-beyond:before {\n content: \"\\f6ca\"; }\n\n.fa-dailymotion:before {\n content: \"\\e052\"; }\n\n.fa-dashcube:before {\n content: \"\\f210\"; }\n\n.fa-database:before {\n content: \"\\f1c0\"; }\n\n.fa-deaf:before {\n content: \"\\f2a4\"; }\n\n.fa-deezer:before {\n content: \"\\e077\"; }\n\n.fa-delicious:before {\n content: \"\\f1a5\"; }\n\n.fa-democrat:before {\n content: \"\\f747\"; }\n\n.fa-deploydog:before {\n content: \"\\f38e\"; }\n\n.fa-deskpro:before {\n content: \"\\f38f\"; }\n\n.fa-desktop:before {\n content: \"\\f108\"; }\n\n.fa-dev:before {\n content: \"\\f6cc\"; }\n\n.fa-deviantart:before {\n content: \"\\f1bd\"; }\n\n.fa-dharmachakra:before {\n content: \"\\f655\"; }\n\n.fa-dhl:before {\n content: \"\\f790\"; }\n\n.fa-diagnoses:before {\n content: \"\\f470\"; }\n\n.fa-diaspora:before {\n content: \"\\f791\"; }\n\n.fa-dice:before {\n content: \"\\f522\"; }\n\n.fa-dice-d20:before {\n content: \"\\f6cf\"; }\n\n.fa-dice-d6:before {\n content: \"\\f6d1\"; }\n\n.fa-dice-five:before {\n content: \"\\f523\"; }\n\n.fa-dice-four:before {\n content: \"\\f524\"; }\n\n.fa-dice-one:before {\n content: \"\\f525\"; }\n\n.fa-dice-six:before {\n content: \"\\f526\"; }\n\n.fa-dice-three:before {\n content: \"\\f527\"; }\n\n.fa-dice-two:before {\n content: \"\\f528\"; }\n\n.fa-digg:before {\n content: \"\\f1a6\"; }\n\n.fa-digital-ocean:before {\n content: \"\\f391\"; }\n\n.fa-digital-tachograph:before {\n content: \"\\f566\"; }\n\n.fa-directions:before {\n content: \"\\f5eb\"; }\n\n.fa-discord:before {\n content: \"\\f392\"; }\n\n.fa-discourse:before {\n content: \"\\f393\"; }\n\n.fa-disease:before {\n content: \"\\f7fa\"; }\n\n.fa-divide:before {\n content: \"\\f529\"; }\n\n.fa-dizzy:before {\n content: \"\\f567\"; }\n\n.fa-dna:before {\n content: \"\\f471\"; }\n\n.fa-dochub:before {\n content: \"\\f394\"; }\n\n.fa-docker:before {\n content: \"\\f395\"; }\n\n.fa-dog:before {\n content: \"\\f6d3\"; }\n\n.fa-dollar-sign:before {\n content: \"\\f155\"; }\n\n.fa-dolly:before {\n content: \"\\f472\"; }\n\n.fa-dolly-flatbed:before {\n content: \"\\f474\"; }\n\n.fa-donate:before {\n content: \"\\f4b9\"; }\n\n.fa-door-closed:before {\n content: \"\\f52a\"; }\n\n.fa-door-open:before {\n content: \"\\f52b\"; }\n\n.fa-dot-circle:before {\n content: \"\\f192\"; }\n\n.fa-dove:before {\n content: \"\\f4ba\"; }\n\n.fa-download:before {\n content: \"\\f019\"; }\n\n.fa-draft2digital:before {\n content: \"\\f396\"; }\n\n.fa-drafting-compass:before {\n content: \"\\f568\"; }\n\n.fa-dragon:before {\n content: \"\\f6d5\"; }\n\n.fa-draw-polygon:before {\n content: \"\\f5ee\"; }\n\n.fa-dribbble:before {\n content: \"\\f17d\"; }\n\n.fa-dribbble-square:before {\n content: \"\\f397\"; }\n\n.fa-dropbox:before {\n content: \"\\f16b\"; }\n\n.fa-drum:before {\n content: \"\\f569\"; }\n\n.fa-drum-steelpan:before {\n content: \"\\f56a\"; }\n\n.fa-drumstick-bite:before {\n content: \"\\f6d7\"; }\n\n.fa-drupal:before {\n content: \"\\f1a9\"; }\n\n.fa-dumbbell:before {\n content: \"\\f44b\"; }\n\n.fa-dumpster:before {\n content: \"\\f793\"; }\n\n.fa-dumpster-fire:before {\n content: \"\\f794\"; }\n\n.fa-dungeon:before {\n content: \"\\f6d9\"; }\n\n.fa-dyalog:before {\n content: \"\\f399\"; }\n\n.fa-earlybirds:before {\n content: \"\\f39a\"; }\n\n.fa-ebay:before {\n content: \"\\f4f4\"; }\n\n.fa-edge:before {\n content: \"\\f282\"; }\n\n.fa-edge-legacy:before {\n content: \"\\e078\"; }\n\n.fa-edit:before {\n content: \"\\f044\"; }\n\n.fa-egg:before {\n content: \"\\f7fb\"; }\n\n.fa-eject:before {\n content: \"\\f052\"; }\n\n.fa-elementor:before {\n content: \"\\f430\"; }\n\n.fa-ellipsis-h:before {\n content: \"\\f141\"; }\n\n.fa-ellipsis-v:before {\n content: \"\\f142\"; }\n\n.fa-ello:before {\n content: \"\\f5f1\"; }\n\n.fa-ember:before {\n content: \"\\f423\"; }\n\n.fa-empire:before {\n content: \"\\f1d1\"; }\n\n.fa-envelope:before {\n content: \"\\f0e0\"; }\n\n.fa-envelope-open:before {\n content: \"\\f2b6\"; }\n\n.fa-envelope-open-text:before {\n content: \"\\f658\"; }\n\n.fa-envelope-square:before {\n content: \"\\f199\"; }\n\n.fa-envira:before {\n content: \"\\f299\"; }\n\n.fa-equals:before {\n content: \"\\f52c\"; }\n\n.fa-eraser:before {\n content: \"\\f12d\"; }\n\n.fa-erlang:before {\n content: \"\\f39d\"; }\n\n.fa-ethereum:before {\n content: \"\\f42e\"; }\n\n.fa-ethernet:before {\n content: \"\\f796\"; }\n\n.fa-etsy:before {\n content: \"\\f2d7\"; }\n\n.fa-euro-sign:before {\n content: \"\\f153\"; }\n\n.fa-evernote:before {\n content: \"\\f839\"; }\n\n.fa-exchange-alt:before {\n content: \"\\f362\"; }\n\n.fa-exclamation:before {\n content: \"\\f12a\"; }\n\n.fa-exclamation-circle:before {\n content: \"\\f06a\"; }\n\n.fa-exclamation-triangle:before {\n content: \"\\f071\"; }\n\n.fa-expand:before {\n content: \"\\f065\"; }\n\n.fa-expand-alt:before {\n content: \"\\f424\"; }\n\n.fa-expand-arrows-alt:before {\n content: \"\\f31e\"; }\n\n.fa-expeditedssl:before {\n content: \"\\f23e\"; }\n\n.fa-external-link-alt:before {\n content: \"\\f35d\"; }\n\n.fa-external-link-square-alt:before {\n content: \"\\f360\"; }\n\n.fa-eye:before {\n content: \"\\f06e\"; }\n\n.fa-eye-dropper:before {\n content: \"\\f1fb\"; }\n\n.fa-eye-slash:before {\n content: \"\\f070\"; }\n\n.fa-facebook:before {\n content: \"\\f09a\"; }\n\n.fa-facebook-f:before {\n content: \"\\f39e\"; }\n\n.fa-facebook-messenger:before {\n content: \"\\f39f\"; }\n\n.fa-facebook-square:before {\n content: \"\\f082\"; }\n\n.fa-fan:before {\n content: \"\\f863\"; }\n\n.fa-fantasy-flight-games:before {\n content: \"\\f6dc\"; }\n\n.fa-fast-backward:before {\n content: \"\\f049\"; }\n\n.fa-fast-forward:before {\n content: \"\\f050\"; }\n\n.fa-faucet:before {\n content: \"\\e005\"; }\n\n.fa-fax:before {\n content: \"\\f1ac\"; }\n\n.fa-feather:before {\n content: \"\\f52d\"; }\n\n.fa-feather-alt:before {\n content: \"\\f56b\"; }\n\n.fa-fedex:before {\n content: \"\\f797\"; }\n\n.fa-fedora:before {\n content: \"\\f798\"; }\n\n.fa-female:before {\n content: \"\\f182\"; }\n\n.fa-fighter-jet:before {\n content: \"\\f0fb\"; }\n\n.fa-figma:before {\n content: \"\\f799\"; }\n\n.fa-file:before {\n content: \"\\f15b\"; }\n\n.fa-file-alt:before {\n content: \"\\f15c\"; }\n\n.fa-file-archive:before {\n content: \"\\f1c6\"; }\n\n.fa-file-audio:before {\n content: \"\\f1c7\"; }\n\n.fa-file-code:before {\n content: \"\\f1c9\"; }\n\n.fa-file-contract:before {\n content: \"\\f56c\"; }\n\n.fa-file-csv:before {\n content: \"\\f6dd\"; }\n\n.fa-file-download:before {\n content: \"\\f56d\"; }\n\n.fa-file-excel:before {\n content: \"\\f1c3\"; }\n\n.fa-file-export:before {\n content: \"\\f56e\"; }\n\n.fa-file-image:before {\n content: \"\\f1c5\"; }\n\n.fa-file-import:before {\n content: \"\\f56f\"; }\n\n.fa-file-invoice:before {\n content: \"\\f570\"; }\n\n.fa-file-invoice-dollar:before {\n content: \"\\f571\"; }\n\n.fa-file-medical:before {\n content: \"\\f477\"; }\n\n.fa-file-medical-alt:before {\n content: \"\\f478\"; }\n\n.fa-file-pdf:before {\n content: \"\\f1c1\"; }\n\n.fa-file-powerpoint:before {\n content: \"\\f1c4\"; }\n\n.fa-file-prescription:before {\n content: \"\\f572\"; }\n\n.fa-file-signature:before {\n content: \"\\f573\"; }\n\n.fa-file-upload:before {\n content: \"\\f574\"; }\n\n.fa-file-video:before {\n content: \"\\f1c8\"; }\n\n.fa-file-word:before {\n content: \"\\f1c2\"; }\n\n.fa-fill:before {\n content: \"\\f575\"; }\n\n.fa-fill-drip:before {\n content: \"\\f576\"; }\n\n.fa-film:before {\n content: \"\\f008\"; }\n\n.fa-filter:before {\n content: \"\\f0b0\"; }\n\n.fa-fingerprint:before {\n content: \"\\f577\"; }\n\n.fa-fire:before {\n content: \"\\f06d\"; }\n\n.fa-fire-alt:before {\n content: \"\\f7e4\"; }\n\n.fa-fire-extinguisher:before {\n content: \"\\f134\"; }\n\n.fa-firefox:before {\n content: \"\\f269\"; }\n\n.fa-firefox-browser:before {\n content: \"\\e007\"; }\n\n.fa-first-aid:before {\n content: \"\\f479\"; }\n\n.fa-first-order:before {\n content: \"\\f2b0\"; }\n\n.fa-first-order-alt:before {\n content: \"\\f50a\"; }\n\n.fa-firstdraft:before {\n content: \"\\f3a1\"; }\n\n.fa-fish:before {\n content: \"\\f578\"; }\n\n.fa-fist-raised:before {\n content: \"\\f6de\"; }\n\n.fa-flag:before {\n content: \"\\f024\"; }\n\n.fa-flag-checkered:before {\n content: \"\\f11e\"; }\n\n.fa-flag-usa:before {\n content: \"\\f74d\"; }\n\n.fa-flask:before {\n content: \"\\f0c3\"; }\n\n.fa-flickr:before {\n content: \"\\f16e\"; }\n\n.fa-flipboard:before {\n content: \"\\f44d\"; }\n\n.fa-flushed:before {\n content: \"\\f579\"; }\n\n.fa-fly:before {\n content: \"\\f417\"; }\n\n.fa-folder:before {\n content: \"\\f07b\"; }\n\n.fa-folder-minus:before {\n content: \"\\f65d\"; }\n\n.fa-folder-open:before {\n content: \"\\f07c\"; }\n\n.fa-folder-plus:before {\n content: \"\\f65e\"; }\n\n.fa-font:before {\n content: \"\\f031\"; }\n\n.fa-font-awesome:before {\n content: \"\\f2b4\"; }\n\n.fa-font-awesome-alt:before {\n content: \"\\f35c\"; }\n\n.fa-font-awesome-flag:before {\n content: \"\\f425\"; }\n\n.fa-font-awesome-logo-full:before {\n content: \"\\f4e6\"; }\n\n.fa-fonticons:before {\n content: \"\\f280\"; }\n\n.fa-fonticons-fi:before {\n content: \"\\f3a2\"; }\n\n.fa-football-ball:before {\n content: \"\\f44e\"; }\n\n.fa-fort-awesome:before {\n content: \"\\f286\"; }\n\n.fa-fort-awesome-alt:before {\n content: \"\\f3a3\"; }\n\n.fa-forumbee:before {\n content: \"\\f211\"; }\n\n.fa-forward:before {\n content: \"\\f04e\"; }\n\n.fa-foursquare:before {\n content: \"\\f180\"; }\n\n.fa-free-code-camp:before {\n content: \"\\f2c5\"; }\n\n.fa-freebsd:before {\n content: \"\\f3a4\"; }\n\n.fa-frog:before {\n content: \"\\f52e\"; }\n\n.fa-frown:before {\n content: \"\\f119\"; }\n\n.fa-frown-open:before {\n content: \"\\f57a\"; }\n\n.fa-fulcrum:before {\n content: \"\\f50b\"; }\n\n.fa-funnel-dollar:before {\n content: \"\\f662\"; }\n\n.fa-futbol:before {\n content: \"\\f1e3\"; }\n\n.fa-galactic-republic:before {\n content: \"\\f50c\"; }\n\n.fa-galactic-senate:before {\n content: \"\\f50d\"; }\n\n.fa-gamepad:before {\n content: \"\\f11b\"; }\n\n.fa-gas-pump:before {\n content: \"\\f52f\"; }\n\n.fa-gavel:before {\n content: \"\\f0e3\"; }\n\n.fa-gem:before {\n content: \"\\f3a5\"; }\n\n.fa-genderless:before {\n content: \"\\f22d\"; }\n\n.fa-get-pocket:before {\n content: \"\\f265\"; }\n\n.fa-gg:before {\n content: \"\\f260\"; }\n\n.fa-gg-circle:before {\n content: \"\\f261\"; }\n\n.fa-ghost:before {\n content: \"\\f6e2\"; }\n\n.fa-gift:before {\n content: \"\\f06b\"; }\n\n.fa-gifts:before {\n content: \"\\f79c\"; }\n\n.fa-git:before {\n content: \"\\f1d3\"; }\n\n.fa-git-alt:before {\n content: \"\\f841\"; }\n\n.fa-git-square:before {\n content: \"\\f1d2\"; }\n\n.fa-github:before {\n content: \"\\f09b\"; }\n\n.fa-github-alt:before {\n content: \"\\f113\"; }\n\n.fa-github-square:before {\n content: \"\\f092\"; }\n\n.fa-gitkraken:before {\n content: \"\\f3a6\"; }\n\n.fa-gitlab:before {\n content: \"\\f296\"; }\n\n.fa-gitter:before {\n content: \"\\f426\"; }\n\n.fa-glass-cheers:before {\n content: \"\\f79f\"; }\n\n.fa-glass-martini:before {\n content: \"\\f000\"; }\n\n.fa-glass-martini-alt:before {\n content: \"\\f57b\"; }\n\n.fa-glass-whiskey:before {\n content: \"\\f7a0\"; }\n\n.fa-glasses:before {\n content: \"\\f530\"; }\n\n.fa-glide:before {\n content: \"\\f2a5\"; }\n\n.fa-glide-g:before {\n content: \"\\f2a6\"; }\n\n.fa-globe:before {\n content: \"\\f0ac\"; }\n\n.fa-globe-africa:before {\n content: \"\\f57c\"; }\n\n.fa-globe-americas:before {\n content: \"\\f57d\"; }\n\n.fa-globe-asia:before {\n content: \"\\f57e\"; }\n\n.fa-globe-europe:before {\n content: \"\\f7a2\"; }\n\n.fa-gofore:before {\n content: \"\\f3a7\"; }\n\n.fa-golf-ball:before {\n content: \"\\f450\"; }\n\n.fa-goodreads:before {\n content: \"\\f3a8\"; }\n\n.fa-goodreads-g:before {\n content: \"\\f3a9\"; }\n\n.fa-google:before {\n content: \"\\f1a0\"; }\n\n.fa-google-drive:before {\n content: \"\\f3aa\"; }\n\n.fa-google-pay:before {\n content: \"\\e079\"; }\n\n.fa-google-play:before {\n content: \"\\f3ab\"; }\n\n.fa-google-plus:before {\n content: \"\\f2b3\"; }\n\n.fa-google-plus-g:before {\n content: \"\\f0d5\"; }\n\n.fa-google-plus-square:before {\n content: \"\\f0d4\"; }\n\n.fa-google-wallet:before {\n content: \"\\f1ee\"; }\n\n.fa-gopuram:before {\n content: \"\\f664\"; }\n\n.fa-graduation-cap:before {\n content: \"\\f19d\"; }\n\n.fa-gratipay:before {\n content: \"\\f184\"; }\n\n.fa-grav:before {\n content: \"\\f2d6\"; }\n\n.fa-greater-than:before {\n content: \"\\f531\"; }\n\n.fa-greater-than-equal:before {\n content: \"\\f532\"; }\n\n.fa-grimace:before {\n content: \"\\f57f\"; }\n\n.fa-grin:before {\n content: \"\\f580\"; }\n\n.fa-grin-alt:before {\n content: \"\\f581\"; }\n\n.fa-grin-beam:before {\n content: \"\\f582\"; }\n\n.fa-grin-beam-sweat:before {\n content: \"\\f583\"; }\n\n.fa-grin-hearts:before {\n content: \"\\f584\"; }\n\n.fa-grin-squint:before {\n content: \"\\f585\"; }\n\n.fa-grin-squint-tears:before {\n content: \"\\f586\"; }\n\n.fa-grin-stars:before {\n content: \"\\f587\"; }\n\n.fa-grin-tears:before {\n content: \"\\f588\"; }\n\n.fa-grin-tongue:before {\n content: \"\\f589\"; }\n\n.fa-grin-tongue-squint:before {\n content: \"\\f58a\"; }\n\n.fa-grin-tongue-wink:before {\n content: \"\\f58b\"; }\n\n.fa-grin-wink:before {\n content: \"\\f58c\"; }\n\n.fa-grip-horizontal:before {\n content: \"\\f58d\"; }\n\n.fa-grip-lines:before {\n content: \"\\f7a4\"; }\n\n.fa-grip-lines-vertical:before {\n content: \"\\f7a5\"; }\n\n.fa-grip-vertical:before {\n content: \"\\f58e\"; }\n\n.fa-gripfire:before {\n content: \"\\f3ac\"; }\n\n.fa-grunt:before {\n content: \"\\f3ad\"; }\n\n.fa-guilded:before {\n content: \"\\e07e\"; }\n\n.fa-guitar:before {\n content: \"\\f7a6\"; }\n\n.fa-gulp:before {\n content: \"\\f3ae\"; }\n\n.fa-h-square:before {\n content: \"\\f0fd\"; }\n\n.fa-hacker-news:before {\n content: \"\\f1d4\"; }\n\n.fa-hacker-news-square:before {\n content: \"\\f3af\"; }\n\n.fa-hackerrank:before {\n content: \"\\f5f7\"; }\n\n.fa-hamburger:before {\n content: \"\\f805\"; }\n\n.fa-hammer:before {\n content: \"\\f6e3\"; }\n\n.fa-hamsa:before {\n content: \"\\f665\"; }\n\n.fa-hand-holding:before {\n content: \"\\f4bd\"; }\n\n.fa-hand-holding-heart:before {\n content: \"\\f4be\"; }\n\n.fa-hand-holding-medical:before {\n content: \"\\e05c\"; }\n\n.fa-hand-holding-usd:before {\n content: \"\\f4c0\"; }\n\n.fa-hand-holding-water:before {\n content: \"\\f4c1\"; }\n\n.fa-hand-lizard:before {\n content: \"\\f258\"; }\n\n.fa-hand-middle-finger:before {\n content: \"\\f806\"; }\n\n.fa-hand-paper:before {\n content: \"\\f256\"; }\n\n.fa-hand-peace:before {\n content: \"\\f25b\"; }\n\n.fa-hand-point-down:before {\n content: \"\\f0a7\"; }\n\n.fa-hand-point-left:before {\n content: \"\\f0a5\"; }\n\n.fa-hand-point-right:before {\n content: \"\\f0a4\"; }\n\n.fa-hand-point-up:before {\n content: \"\\f0a6\"; }\n\n.fa-hand-pointer:before {\n content: \"\\f25a\"; }\n\n.fa-hand-rock:before {\n content: \"\\f255\"; }\n\n.fa-hand-scissors:before {\n content: \"\\f257\"; }\n\n.fa-hand-sparkles:before {\n content: \"\\e05d\"; }\n\n.fa-hand-spock:before {\n content: \"\\f259\"; }\n\n.fa-hands:before {\n content: \"\\f4c2\"; }\n\n.fa-hands-helping:before {\n content: \"\\f4c4\"; }\n\n.fa-hands-wash:before {\n content: \"\\e05e\"; }\n\n.fa-handshake:before {\n content: \"\\f2b5\"; }\n\n.fa-handshake-alt-slash:before {\n content: \"\\e05f\"; }\n\n.fa-handshake-slash:before {\n content: \"\\e060\"; }\n\n.fa-hanukiah:before {\n content: \"\\f6e6\"; }\n\n.fa-hard-hat:before {\n content: \"\\f807\"; }\n\n.fa-hashtag:before {\n content: \"\\f292\"; }\n\n.fa-hat-cowboy:before {\n content: \"\\f8c0\"; }\n\n.fa-hat-cowboy-side:before {\n content: \"\\f8c1\"; }\n\n.fa-hat-wizard:before {\n content: \"\\f6e8\"; }\n\n.fa-hdd:before {\n content: \"\\f0a0\"; }\n\n.fa-head-side-cough:before {\n content: \"\\e061\"; }\n\n.fa-head-side-cough-slash:before {\n content: \"\\e062\"; }\n\n.fa-head-side-mask:before {\n content: \"\\e063\"; }\n\n.fa-head-side-virus:before {\n content: \"\\e064\"; }\n\n.fa-heading:before {\n content: \"\\f1dc\"; }\n\n.fa-headphones:before {\n content: \"\\f025\"; }\n\n.fa-headphones-alt:before {\n content: \"\\f58f\"; }\n\n.fa-headset:before {\n content: \"\\f590\"; }\n\n.fa-heart:before {\n content: \"\\f004\"; }\n\n.fa-heart-broken:before {\n content: \"\\f7a9\"; }\n\n.fa-heartbeat:before {\n content: \"\\f21e\"; }\n\n.fa-helicopter:before {\n content: \"\\f533\"; }\n\n.fa-highlighter:before {\n content: \"\\f591\"; }\n\n.fa-hiking:before {\n content: \"\\f6ec\"; }\n\n.fa-hippo:before {\n content: \"\\f6ed\"; }\n\n.fa-hips:before {\n content: \"\\f452\"; }\n\n.fa-hire-a-helper:before {\n content: \"\\f3b0\"; }\n\n.fa-history:before {\n content: \"\\f1da\"; }\n\n.fa-hive:before {\n content: \"\\e07f\"; }\n\n.fa-hockey-puck:before {\n content: \"\\f453\"; }\n\n.fa-holly-berry:before {\n content: \"\\f7aa\"; }\n\n.fa-home:before {\n content: \"\\f015\"; }\n\n.fa-hooli:before {\n content: \"\\f427\"; }\n\n.fa-hornbill:before {\n content: \"\\f592\"; }\n\n.fa-horse:before {\n content: \"\\f6f0\"; }\n\n.fa-horse-head:before {\n content: \"\\f7ab\"; }\n\n.fa-hospital:before {\n content: \"\\f0f8\"; }\n\n.fa-hospital-alt:before {\n content: \"\\f47d\"; }\n\n.fa-hospital-symbol:before {\n content: \"\\f47e\"; }\n\n.fa-hospital-user:before {\n content: \"\\f80d\"; }\n\n.fa-hot-tub:before {\n content: \"\\f593\"; }\n\n.fa-hotdog:before {\n content: \"\\f80f\"; }\n\n.fa-hotel:before {\n content: \"\\f594\"; }\n\n.fa-hotjar:before {\n content: \"\\f3b1\"; }\n\n.fa-hourglass:before {\n content: \"\\f254\"; }\n\n.fa-hourglass-end:before {\n content: \"\\f253\"; }\n\n.fa-hourglass-half:before {\n content: \"\\f252\"; }\n\n.fa-hourglass-start:before {\n content: \"\\f251\"; }\n\n.fa-house-damage:before {\n content: \"\\f6f1\"; }\n\n.fa-house-user:before {\n content: \"\\e065\"; }\n\n.fa-houzz:before {\n content: \"\\f27c\"; }\n\n.fa-hryvnia:before {\n content: \"\\f6f2\"; }\n\n.fa-html5:before {\n content: \"\\f13b\"; }\n\n.fa-hubspot:before {\n content: \"\\f3b2\"; }\n\n.fa-i-cursor:before {\n content: \"\\f246\"; }\n\n.fa-ice-cream:before {\n content: \"\\f810\"; }\n\n.fa-icicles:before {\n content: \"\\f7ad\"; }\n\n.fa-icons:before {\n content: \"\\f86d\"; }\n\n.fa-id-badge:before {\n content: \"\\f2c1\"; }\n\n.fa-id-card:before {\n content: \"\\f2c2\"; }\n\n.fa-id-card-alt:before {\n content: \"\\f47f\"; }\n\n.fa-ideal:before {\n content: \"\\e013\"; }\n\n.fa-igloo:before {\n content: \"\\f7ae\"; }\n\n.fa-image:before {\n content: \"\\f03e\"; }\n\n.fa-images:before {\n content: \"\\f302\"; }\n\n.fa-imdb:before {\n content: \"\\f2d8\"; }\n\n.fa-inbox:before {\n content: \"\\f01c\"; }\n\n.fa-indent:before {\n content: \"\\f03c\"; }\n\n.fa-industry:before {\n content: \"\\f275\"; }\n\n.fa-infinity:before {\n content: \"\\f534\"; }\n\n.fa-info:before {\n content: \"\\f129\"; }\n\n.fa-info-circle:before {\n content: \"\\f05a\"; }\n\n.fa-innosoft:before {\n content: \"\\e080\"; }\n\n.fa-instagram:before {\n content: \"\\f16d\"; }\n\n.fa-instagram-square:before {\n content: \"\\e055\"; }\n\n.fa-instalod:before {\n content: \"\\e081\"; }\n\n.fa-intercom:before {\n content: \"\\f7af\"; }\n\n.fa-internet-explorer:before {\n content: \"\\f26b\"; }\n\n.fa-invision:before {\n content: \"\\f7b0\"; }\n\n.fa-ioxhost:before {\n content: \"\\f208\"; }\n\n.fa-italic:before {\n content: \"\\f033\"; }\n\n.fa-itch-io:before {\n content: \"\\f83a\"; }\n\n.fa-itunes:before {\n content: \"\\f3b4\"; }\n\n.fa-itunes-note:before {\n content: \"\\f3b5\"; }\n\n.fa-java:before {\n content: \"\\f4e4\"; }\n\n.fa-jedi:before {\n content: \"\\f669\"; }\n\n.fa-jedi-order:before {\n content: \"\\f50e\"; }\n\n.fa-jenkins:before {\n content: \"\\f3b6\"; }\n\n.fa-jira:before {\n content: \"\\f7b1\"; }\n\n.fa-joget:before {\n content: \"\\f3b7\"; }\n\n.fa-joint:before {\n content: \"\\f595\"; }\n\n.fa-joomla:before {\n content: \"\\f1aa\"; }\n\n.fa-journal-whills:before {\n content: \"\\f66a\"; }\n\n.fa-js:before {\n content: \"\\f3b8\"; }\n\n.fa-js-square:before {\n content: \"\\f3b9\"; }\n\n.fa-jsfiddle:before {\n content: \"\\f1cc\"; }\n\n.fa-kaaba:before {\n content: \"\\f66b\"; }\n\n.fa-kaggle:before {\n content: \"\\f5fa\"; }\n\n.fa-key:before {\n content: \"\\f084\"; }\n\n.fa-keybase:before {\n content: \"\\f4f5\"; }\n\n.fa-keyboard:before {\n content: \"\\f11c\"; }\n\n.fa-keycdn:before {\n content: \"\\f3ba\"; }\n\n.fa-khanda:before {\n content: \"\\f66d\"; }\n\n.fa-kickstarter:before {\n content: \"\\f3bb\"; }\n\n.fa-kickstarter-k:before {\n content: \"\\f3bc\"; }\n\n.fa-kiss:before {\n content: \"\\f596\"; }\n\n.fa-kiss-beam:before {\n content: \"\\f597\"; }\n\n.fa-kiss-wink-heart:before {\n content: \"\\f598\"; }\n\n.fa-kiwi-bird:before {\n content: \"\\f535\"; }\n\n.fa-korvue:before {\n content: \"\\f42f\"; }\n\n.fa-landmark:before {\n content: \"\\f66f\"; }\n\n.fa-language:before {\n content: \"\\f1ab\"; }\n\n.fa-laptop:before {\n content: \"\\f109\"; }\n\n.fa-laptop-code:before {\n content: \"\\f5fc\"; }\n\n.fa-laptop-house:before {\n content: \"\\e066\"; }\n\n.fa-laptop-medical:before {\n content: \"\\f812\"; }\n\n.fa-laravel:before {\n content: \"\\f3bd\"; }\n\n.fa-lastfm:before {\n content: \"\\f202\"; }\n\n.fa-lastfm-square:before {\n content: \"\\f203\"; }\n\n.fa-laugh:before {\n content: \"\\f599\"; }\n\n.fa-laugh-beam:before {\n content: \"\\f59a\"; }\n\n.fa-laugh-squint:before {\n content: \"\\f59b\"; }\n\n.fa-laugh-wink:before {\n content: \"\\f59c\"; }\n\n.fa-layer-group:before {\n content: \"\\f5fd\"; }\n\n.fa-leaf:before {\n content: \"\\f06c\"; }\n\n.fa-leanpub:before {\n content: \"\\f212\"; }\n\n.fa-lemon:before {\n content: \"\\f094\"; }\n\n.fa-less:before {\n content: \"\\f41d\"; }\n\n.fa-less-than:before {\n content: \"\\f536\"; }\n\n.fa-less-than-equal:before {\n content: \"\\f537\"; }\n\n.fa-level-down-alt:before {\n content: \"\\f3be\"; }\n\n.fa-level-up-alt:before {\n content: \"\\f3bf\"; }\n\n.fa-life-ring:before {\n content: \"\\f1cd\"; }\n\n.fa-lightbulb:before {\n content: \"\\f0eb\"; }\n\n.fa-line:before {\n content: \"\\f3c0\"; }\n\n.fa-link:before {\n content: \"\\f0c1\"; }\n\n.fa-linkedin:before {\n content: \"\\f08c\"; }\n\n.fa-linkedin-in:before {\n content: \"\\f0e1\"; }\n\n.fa-linode:before {\n content: \"\\f2b8\"; }\n\n.fa-linux:before {\n content: \"\\f17c\"; }\n\n.fa-lira-sign:before {\n content: \"\\f195\"; }\n\n.fa-list:before {\n content: \"\\f03a\"; }\n\n.fa-list-alt:before {\n content: \"\\f022\"; }\n\n.fa-list-ol:before {\n content: \"\\f0cb\"; }\n\n.fa-list-ul:before {\n content: \"\\f0ca\"; }\n\n.fa-location-arrow:before {\n content: \"\\f124\"; }\n\n.fa-lock:before {\n content: \"\\f023\"; }\n\n.fa-lock-open:before {\n content: \"\\f3c1\"; }\n\n.fa-long-arrow-alt-down:before {\n content: \"\\f309\"; }\n\n.fa-long-arrow-alt-left:before {\n content: \"\\f30a\"; }\n\n.fa-long-arrow-alt-right:before {\n content: \"\\f30b\"; }\n\n.fa-long-arrow-alt-up:before {\n content: \"\\f30c\"; }\n\n.fa-low-vision:before {\n content: \"\\f2a8\"; }\n\n.fa-luggage-cart:before {\n content: \"\\f59d\"; }\n\n.fa-lungs:before {\n content: \"\\f604\"; }\n\n.fa-lungs-virus:before {\n content: \"\\e067\"; }\n\n.fa-lyft:before {\n content: \"\\f3c3\"; }\n\n.fa-magento:before {\n content: \"\\f3c4\"; }\n\n.fa-magic:before {\n content: \"\\f0d0\"; }\n\n.fa-magnet:before {\n content: \"\\f076\"; }\n\n.fa-mail-bulk:before {\n content: \"\\f674\"; }\n\n.fa-mailchimp:before {\n content: \"\\f59e\"; }\n\n.fa-male:before {\n content: \"\\f183\"; }\n\n.fa-mandalorian:before {\n content: \"\\f50f\"; }\n\n.fa-map:before {\n content: \"\\f279\"; }\n\n.fa-map-marked:before {\n content: \"\\f59f\"; }\n\n.fa-map-marked-alt:before {\n content: \"\\f5a0\"; }\n\n.fa-map-marker:before {\n content: \"\\f041\"; }\n\n.fa-map-marker-alt:before {\n content: \"\\f3c5\"; }\n\n.fa-map-pin:before {\n content: \"\\f276\"; }\n\n.fa-map-signs:before {\n content: \"\\f277\"; }\n\n.fa-markdown:before {\n content: \"\\f60f\"; }\n\n.fa-marker:before {\n content: \"\\f5a1\"; }\n\n.fa-mars:before {\n content: \"\\f222\"; }\n\n.fa-mars-double:before {\n content: \"\\f227\"; }\n\n.fa-mars-stroke:before {\n content: \"\\f229\"; }\n\n.fa-mars-stroke-h:before {\n content: \"\\f22b\"; }\n\n.fa-mars-stroke-v:before {\n content: \"\\f22a\"; }\n\n.fa-mask:before {\n content: \"\\f6fa\"; }\n\n.fa-mastodon:before {\n content: \"\\f4f6\"; }\n\n.fa-maxcdn:before {\n content: \"\\f136\"; }\n\n.fa-mdb:before {\n content: \"\\f8ca\"; }\n\n.fa-medal:before {\n content: \"\\f5a2\"; }\n\n.fa-medapps:before {\n content: \"\\f3c6\"; }\n\n.fa-medium:before {\n content: \"\\f23a\"; }\n\n.fa-medium-m:before {\n content: \"\\f3c7\"; }\n\n.fa-medkit:before {\n content: \"\\f0fa\"; }\n\n.fa-medrt:before {\n content: \"\\f3c8\"; }\n\n.fa-meetup:before {\n content: \"\\f2e0\"; }\n\n.fa-megaport:before {\n content: \"\\f5a3\"; }\n\n.fa-meh:before {\n content: \"\\f11a\"; }\n\n.fa-meh-blank:before {\n content: \"\\f5a4\"; }\n\n.fa-meh-rolling-eyes:before {\n content: \"\\f5a5\"; }\n\n.fa-memory:before {\n content: \"\\f538\"; }\n\n.fa-mendeley:before {\n content: \"\\f7b3\"; }\n\n.fa-menorah:before {\n content: \"\\f676\"; }\n\n.fa-mercury:before {\n content: \"\\f223\"; }\n\n.fa-meteor:before {\n content: \"\\f753\"; }\n\n.fa-microblog:before {\n content: \"\\e01a\"; }\n\n.fa-microchip:before {\n content: \"\\f2db\"; }\n\n.fa-microphone:before {\n content: \"\\f130\"; }\n\n.fa-microphone-alt:before {\n content: \"\\f3c9\"; }\n\n.fa-microphone-alt-slash:before {\n content: \"\\f539\"; }\n\n.fa-microphone-slash:before {\n content: \"\\f131\"; }\n\n.fa-microscope:before {\n content: \"\\f610\"; }\n\n.fa-microsoft:before {\n content: \"\\f3ca\"; }\n\n.fa-minus:before {\n content: \"\\f068\"; }\n\n.fa-minus-circle:before {\n content: \"\\f056\"; }\n\n.fa-minus-square:before {\n content: \"\\f146\"; }\n\n.fa-mitten:before {\n content: \"\\f7b5\"; }\n\n.fa-mix:before {\n content: \"\\f3cb\"; }\n\n.fa-mixcloud:before {\n content: \"\\f289\"; }\n\n.fa-mixer:before {\n content: \"\\e056\"; }\n\n.fa-mizuni:before {\n content: \"\\f3cc\"; }\n\n.fa-mobile:before {\n content: \"\\f10b\"; }\n\n.fa-mobile-alt:before {\n content: \"\\f3cd\"; }\n\n.fa-modx:before {\n content: \"\\f285\"; }\n\n.fa-monero:before {\n content: \"\\f3d0\"; }\n\n.fa-money-bill:before {\n content: \"\\f0d6\"; }\n\n.fa-money-bill-alt:before {\n content: \"\\f3d1\"; }\n\n.fa-money-bill-wave:before {\n content: \"\\f53a\"; }\n\n.fa-money-bill-wave-alt:before {\n content: \"\\f53b\"; }\n\n.fa-money-check:before {\n content: \"\\f53c\"; }\n\n.fa-money-check-alt:before {\n content: \"\\f53d\"; }\n\n.fa-monument:before {\n content: \"\\f5a6\"; }\n\n.fa-moon:before {\n content: \"\\f186\"; }\n\n.fa-mortar-pestle:before {\n content: \"\\f5a7\"; }\n\n.fa-mosque:before {\n content: \"\\f678\"; }\n\n.fa-motorcycle:before {\n content: \"\\f21c\"; }\n\n.fa-mountain:before {\n content: \"\\f6fc\"; }\n\n.fa-mouse:before {\n content: \"\\f8cc\"; }\n\n.fa-mouse-pointer:before {\n content: \"\\f245\"; }\n\n.fa-mug-hot:before {\n content: \"\\f7b6\"; }\n\n.fa-music:before {\n content: \"\\f001\"; }\n\n.fa-napster:before {\n content: \"\\f3d2\"; }\n\n.fa-neos:before {\n content: \"\\f612\"; }\n\n.fa-network-wired:before {\n content: \"\\f6ff\"; }\n\n.fa-neuter:before {\n content: \"\\f22c\"; }\n\n.fa-newspaper:before {\n content: \"\\f1ea\"; }\n\n.fa-nimblr:before {\n content: \"\\f5a8\"; }\n\n.fa-node:before {\n content: \"\\f419\"; }\n\n.fa-node-js:before {\n content: \"\\f3d3\"; }\n\n.fa-not-equal:before {\n content: \"\\f53e\"; }\n\n.fa-notes-medical:before {\n content: \"\\f481\"; }\n\n.fa-npm:before {\n content: \"\\f3d4\"; }\n\n.fa-ns8:before {\n content: \"\\f3d5\"; }\n\n.fa-nutritionix:before {\n content: \"\\f3d6\"; }\n\n.fa-object-group:before {\n content: \"\\f247\"; }\n\n.fa-object-ungroup:before {\n content: \"\\f248\"; }\n\n.fa-octopus-deploy:before {\n content: \"\\e082\"; }\n\n.fa-odnoklassniki:before {\n content: \"\\f263\"; }\n\n.fa-odnoklassniki-square:before {\n content: \"\\f264\"; }\n\n.fa-oil-can:before {\n content: \"\\f613\"; }\n\n.fa-old-republic:before {\n content: \"\\f510\"; }\n\n.fa-om:before {\n content: \"\\f679\"; }\n\n.fa-opencart:before {\n content: \"\\f23d\"; }\n\n.fa-openid:before {\n content: \"\\f19b\"; }\n\n.fa-opera:before {\n content: \"\\f26a\"; }\n\n.fa-optin-monster:before {\n content: \"\\f23c\"; }\n\n.fa-orcid:before {\n content: \"\\f8d2\"; }\n\n.fa-osi:before {\n content: \"\\f41a\"; }\n\n.fa-otter:before {\n content: \"\\f700\"; }\n\n.fa-outdent:before {\n content: \"\\f03b\"; }\n\n.fa-page4:before {\n content: \"\\f3d7\"; }\n\n.fa-pagelines:before {\n content: \"\\f18c\"; }\n\n.fa-pager:before {\n content: \"\\f815\"; }\n\n.fa-paint-brush:before {\n content: \"\\f1fc\"; }\n\n.fa-paint-roller:before {\n content: \"\\f5aa\"; }\n\n.fa-palette:before {\n content: \"\\f53f\"; }\n\n.fa-palfed:before {\n content: \"\\f3d8\"; }\n\n.fa-pallet:before {\n content: \"\\f482\"; }\n\n.fa-paper-plane:before {\n content: \"\\f1d8\"; }\n\n.fa-paperclip:before {\n content: \"\\f0c6\"; }\n\n.fa-parachute-box:before {\n content: \"\\f4cd\"; }\n\n.fa-paragraph:before {\n content: \"\\f1dd\"; }\n\n.fa-parking:before {\n content: \"\\f540\"; }\n\n.fa-passport:before {\n content: \"\\f5ab\"; }\n\n.fa-pastafarianism:before {\n content: \"\\f67b\"; }\n\n.fa-paste:before {\n content: \"\\f0ea\"; }\n\n.fa-patreon:before {\n content: \"\\f3d9\"; }\n\n.fa-pause:before {\n content: \"\\f04c\"; }\n\n.fa-pause-circle:before {\n content: \"\\f28b\"; }\n\n.fa-paw:before {\n content: \"\\f1b0\"; }\n\n.fa-paypal:before {\n content: \"\\f1ed\"; }\n\n.fa-peace:before {\n content: \"\\f67c\"; }\n\n.fa-pen:before {\n content: \"\\f304\"; }\n\n.fa-pen-alt:before {\n content: \"\\f305\"; }\n\n.fa-pen-fancy:before {\n content: \"\\f5ac\"; }\n\n.fa-pen-nib:before {\n content: \"\\f5ad\"; }\n\n.fa-pen-square:before {\n content: \"\\f14b\"; }\n\n.fa-pencil-alt:before {\n content: \"\\f303\"; }\n\n.fa-pencil-ruler:before {\n content: \"\\f5ae\"; }\n\n.fa-penny-arcade:before {\n content: \"\\f704\"; }\n\n.fa-people-arrows:before {\n content: \"\\e068\"; }\n\n.fa-people-carry:before {\n content: \"\\f4ce\"; }\n\n.fa-pepper-hot:before {\n content: \"\\f816\"; }\n\n.fa-perbyte:before {\n content: \"\\e083\"; }\n\n.fa-percent:before {\n content: \"\\f295\"; }\n\n.fa-percentage:before {\n content: \"\\f541\"; }\n\n.fa-periscope:before {\n content: \"\\f3da\"; }\n\n.fa-person-booth:before {\n content: \"\\f756\"; }\n\n.fa-phabricator:before {\n content: \"\\f3db\"; }\n\n.fa-phoenix-framework:before {\n content: \"\\f3dc\"; }\n\n.fa-phoenix-squadron:before {\n content: \"\\f511\"; }\n\n.fa-phone:before {\n content: \"\\f095\"; }\n\n.fa-phone-alt:before {\n content: \"\\f879\"; }\n\n.fa-phone-slash:before {\n content: \"\\f3dd\"; }\n\n.fa-phone-square:before {\n content: \"\\f098\"; }\n\n.fa-phone-square-alt:before {\n content: \"\\f87b\"; }\n\n.fa-phone-volume:before {\n content: \"\\f2a0\"; }\n\n.fa-photo-video:before {\n content: \"\\f87c\"; }\n\n.fa-php:before {\n content: \"\\f457\"; }\n\n.fa-pied-piper:before {\n content: \"\\f2ae\"; }\n\n.fa-pied-piper-alt:before {\n content: \"\\f1a8\"; }\n\n.fa-pied-piper-hat:before {\n content: \"\\f4e5\"; }\n\n.fa-pied-piper-pp:before {\n content: \"\\f1a7\"; }\n\n.fa-pied-piper-square:before {\n content: \"\\e01e\"; }\n\n.fa-piggy-bank:before {\n content: \"\\f4d3\"; }\n\n.fa-pills:before {\n content: \"\\f484\"; }\n\n.fa-pinterest:before {\n content: \"\\f0d2\"; }\n\n.fa-pinterest-p:before {\n content: \"\\f231\"; }\n\n.fa-pinterest-square:before {\n content: \"\\f0d3\"; }\n\n.fa-pizza-slice:before {\n content: \"\\f818\"; }\n\n.fa-place-of-worship:before {\n content: \"\\f67f\"; }\n\n.fa-plane:before {\n content: \"\\f072\"; }\n\n.fa-plane-arrival:before {\n content: \"\\f5af\"; }\n\n.fa-plane-departure:before {\n content: \"\\f5b0\"; }\n\n.fa-plane-slash:before {\n content: \"\\e069\"; }\n\n.fa-play:before {\n content: \"\\f04b\"; }\n\n.fa-play-circle:before {\n content: \"\\f144\"; }\n\n.fa-playstation:before {\n content: \"\\f3df\"; }\n\n.fa-plug:before {\n content: \"\\f1e6\"; }\n\n.fa-plus:before {\n content: \"\\f067\"; }\n\n.fa-plus-circle:before {\n content: \"\\f055\"; }\n\n.fa-plus-square:before {\n content: \"\\f0fe\"; }\n\n.fa-podcast:before {\n content: \"\\f2ce\"; }\n\n.fa-poll:before {\n content: \"\\f681\"; }\n\n.fa-poll-h:before {\n content: \"\\f682\"; }\n\n.fa-poo:before {\n content: \"\\f2fe\"; }\n\n.fa-poo-storm:before {\n content: \"\\f75a\"; }\n\n.fa-poop:before {\n content: \"\\f619\"; }\n\n.fa-portrait:before {\n content: \"\\f3e0\"; }\n\n.fa-pound-sign:before {\n content: \"\\f154\"; }\n\n.fa-power-off:before {\n content: \"\\f011\"; }\n\n.fa-pray:before {\n content: \"\\f683\"; }\n\n.fa-praying-hands:before {\n content: \"\\f684\"; }\n\n.fa-prescription:before {\n content: \"\\f5b1\"; }\n\n.fa-prescription-bottle:before {\n content: \"\\f485\"; }\n\n.fa-prescription-bottle-alt:before {\n content: \"\\f486\"; }\n\n.fa-print:before {\n content: \"\\f02f\"; }\n\n.fa-procedures:before {\n content: \"\\f487\"; }\n\n.fa-product-hunt:before {\n content: \"\\f288\"; }\n\n.fa-project-diagram:before {\n content: \"\\f542\"; }\n\n.fa-pump-medical:before {\n content: \"\\e06a\"; }\n\n.fa-pump-soap:before {\n content: \"\\e06b\"; }\n\n.fa-pushed:before {\n content: \"\\f3e1\"; }\n\n.fa-puzzle-piece:before {\n content: \"\\f12e\"; }\n\n.fa-python:before {\n content: \"\\f3e2\"; }\n\n.fa-qq:before {\n content: \"\\f1d6\"; }\n\n.fa-qrcode:before {\n content: \"\\f029\"; }\n\n.fa-question:before {\n content: \"\\f128\"; }\n\n.fa-question-circle:before {\n content: \"\\f059\"; }\n\n.fa-quidditch:before {\n content: \"\\f458\"; }\n\n.fa-quinscape:before {\n content: \"\\f459\"; }\n\n.fa-quora:before {\n content: \"\\f2c4\"; }\n\n.fa-quote-left:before {\n content: \"\\f10d\"; }\n\n.fa-quote-right:before {\n content: \"\\f10e\"; }\n\n.fa-quran:before {\n content: \"\\f687\"; }\n\n.fa-r-project:before {\n content: \"\\f4f7\"; }\n\n.fa-radiation:before {\n content: \"\\f7b9\"; }\n\n.fa-radiation-alt:before {\n content: \"\\f7ba\"; }\n\n.fa-rainbow:before {\n content: \"\\f75b\"; }\n\n.fa-random:before {\n content: \"\\f074\"; }\n\n.fa-raspberry-pi:before {\n content: \"\\f7bb\"; }\n\n.fa-ravelry:before {\n content: \"\\f2d9\"; }\n\n.fa-react:before {\n content: \"\\f41b\"; }\n\n.fa-reacteurope:before {\n content: \"\\f75d\"; }\n\n.fa-readme:before {\n content: \"\\f4d5\"; }\n\n.fa-rebel:before {\n content: \"\\f1d0\"; }\n\n.fa-receipt:before {\n content: \"\\f543\"; }\n\n.fa-record-vinyl:before {\n content: \"\\f8d9\"; }\n\n.fa-recycle:before {\n content: \"\\f1b8\"; }\n\n.fa-red-river:before {\n content: \"\\f3e3\"; }\n\n.fa-reddit:before {\n content: \"\\f1a1\"; }\n\n.fa-reddit-alien:before {\n content: \"\\f281\"; }\n\n.fa-reddit-square:before {\n content: \"\\f1a2\"; }\n\n.fa-redhat:before {\n content: \"\\f7bc\"; }\n\n.fa-redo:before {\n content: \"\\f01e\"; }\n\n.fa-redo-alt:before {\n content: \"\\f2f9\"; }\n\n.fa-registered:before {\n content: \"\\f25d\"; }\n\n.fa-remove-format:before {\n content: \"\\f87d\"; }\n\n.fa-renren:before {\n content: \"\\f18b\"; }\n\n.fa-reply:before {\n content: \"\\f3e5\"; }\n\n.fa-reply-all:before {\n content: \"\\f122\"; }\n\n.fa-replyd:before {\n content: \"\\f3e6\"; }\n\n.fa-republican:before {\n content: \"\\f75e\"; }\n\n.fa-researchgate:before {\n content: \"\\f4f8\"; }\n\n.fa-resolving:before {\n content: \"\\f3e7\"; }\n\n.fa-restroom:before {\n content: \"\\f7bd\"; }\n\n.fa-retweet:before {\n content: \"\\f079\"; }\n\n.fa-rev:before {\n content: \"\\f5b2\"; }\n\n.fa-ribbon:before {\n content: \"\\f4d6\"; }\n\n.fa-ring:before {\n content: \"\\f70b\"; }\n\n.fa-road:before {\n content: \"\\f018\"; }\n\n.fa-robot:before {\n content: \"\\f544\"; }\n\n.fa-rocket:before {\n content: \"\\f135\"; }\n\n.fa-rocketchat:before {\n content: \"\\f3e8\"; }\n\n.fa-rockrms:before {\n content: \"\\f3e9\"; }\n\n.fa-route:before {\n content: \"\\f4d7\"; }\n\n.fa-rss:before {\n content: \"\\f09e\"; }\n\n.fa-rss-square:before {\n content: \"\\f143\"; }\n\n.fa-ruble-sign:before {\n content: \"\\f158\"; }\n\n.fa-ruler:before {\n content: \"\\f545\"; }\n\n.fa-ruler-combined:before {\n content: \"\\f546\"; }\n\n.fa-ruler-horizontal:before {\n content: \"\\f547\"; }\n\n.fa-ruler-vertical:before {\n content: \"\\f548\"; }\n\n.fa-running:before {\n content: \"\\f70c\"; }\n\n.fa-rupee-sign:before {\n content: \"\\f156\"; }\n\n.fa-rust:before {\n content: \"\\e07a\"; }\n\n.fa-sad-cry:before {\n content: \"\\f5b3\"; }\n\n.fa-sad-tear:before {\n content: \"\\f5b4\"; }\n\n.fa-safari:before {\n content: \"\\f267\"; }\n\n.fa-salesforce:before {\n content: \"\\f83b\"; }\n\n.fa-sass:before {\n content: \"\\f41e\"; }\n\n.fa-satellite:before {\n content: \"\\f7bf\"; }\n\n.fa-satellite-dish:before {\n content: \"\\f7c0\"; }\n\n.fa-save:before {\n content: \"\\f0c7\"; }\n\n.fa-schlix:before {\n content: \"\\f3ea\"; }\n\n.fa-school:before {\n content: \"\\f549\"; }\n\n.fa-screwdriver:before {\n content: \"\\f54a\"; }\n\n.fa-scribd:before {\n content: \"\\f28a\"; }\n\n.fa-scroll:before {\n content: \"\\f70e\"; }\n\n.fa-sd-card:before {\n content: \"\\f7c2\"; }\n\n.fa-search:before {\n content: \"\\f002\"; }\n\n.fa-search-dollar:before {\n content: \"\\f688\"; }\n\n.fa-search-location:before {\n content: \"\\f689\"; }\n\n.fa-search-minus:before {\n content: \"\\f010\"; }\n\n.fa-search-plus:before {\n content: \"\\f00e\"; }\n\n.fa-searchengin:before {\n content: \"\\f3eb\"; }\n\n.fa-seedling:before {\n content: \"\\f4d8\"; }\n\n.fa-sellcast:before {\n content: \"\\f2da\"; }\n\n.fa-sellsy:before {\n content: \"\\f213\"; }\n\n.fa-server:before {\n content: \"\\f233\"; }\n\n.fa-servicestack:before {\n content: \"\\f3ec\"; }\n\n.fa-shapes:before {\n content: \"\\f61f\"; }\n\n.fa-share:before {\n content: \"\\f064\"; }\n\n.fa-share-alt:before {\n content: \"\\f1e0\"; }\n\n.fa-share-alt-square:before {\n content: \"\\f1e1\"; }\n\n.fa-share-square:before {\n content: \"\\f14d\"; }\n\n.fa-shekel-sign:before {\n content: \"\\f20b\"; }\n\n.fa-shield-alt:before {\n content: \"\\f3ed\"; }\n\n.fa-shield-virus:before {\n content: \"\\e06c\"; }\n\n.fa-ship:before {\n content: \"\\f21a\"; }\n\n.fa-shipping-fast:before {\n content: \"\\f48b\"; }\n\n.fa-shirtsinbulk:before {\n content: \"\\f214\"; }\n\n.fa-shoe-prints:before {\n content: \"\\f54b\"; }\n\n.fa-shopify:before {\n content: \"\\e057\"; }\n\n.fa-shopping-bag:before {\n content: \"\\f290\"; }\n\n.fa-shopping-basket:before {\n content: \"\\f291\"; }\n\n.fa-shopping-cart:before {\n content: \"\\f07a\"; }\n\n.fa-shopware:before {\n content: \"\\f5b5\"; }\n\n.fa-shower:before {\n content: \"\\f2cc\"; }\n\n.fa-shuttle-van:before {\n content: \"\\f5b6\"; }\n\n.fa-sign:before {\n content: \"\\f4d9\"; }\n\n.fa-sign-in-alt:before {\n content: \"\\f2f6\"; }\n\n.fa-sign-language:before {\n content: \"\\f2a7\"; }\n\n.fa-sign-out-alt:before {\n content: \"\\f2f5\"; }\n\n.fa-signal:before {\n content: \"\\f012\"; }\n\n.fa-signature:before {\n content: \"\\f5b7\"; }\n\n.fa-sim-card:before {\n content: \"\\f7c4\"; }\n\n.fa-simplybuilt:before {\n content: \"\\f215\"; }\n\n.fa-sink:before {\n content: \"\\e06d\"; }\n\n.fa-sistrix:before {\n content: \"\\f3ee\"; }\n\n.fa-sitemap:before {\n content: \"\\f0e8\"; }\n\n.fa-sith:before {\n content: \"\\f512\"; }\n\n.fa-skating:before {\n content: \"\\f7c5\"; }\n\n.fa-sketch:before {\n content: \"\\f7c6\"; }\n\n.fa-skiing:before {\n content: \"\\f7c9\"; }\n\n.fa-skiing-nordic:before {\n content: \"\\f7ca\"; }\n\n.fa-skull:before {\n content: \"\\f54c\"; }\n\n.fa-skull-crossbones:before {\n content: \"\\f714\"; }\n\n.fa-skyatlas:before {\n content: \"\\f216\"; }\n\n.fa-skype:before {\n content: \"\\f17e\"; }\n\n.fa-slack:before {\n content: \"\\f198\"; }\n\n.fa-slack-hash:before {\n content: \"\\f3ef\"; }\n\n.fa-slash:before {\n content: \"\\f715\"; }\n\n.fa-sleigh:before {\n content: \"\\f7cc\"; }\n\n.fa-sliders-h:before {\n content: \"\\f1de\"; }\n\n.fa-slideshare:before {\n content: \"\\f1e7\"; }\n\n.fa-smile:before {\n content: \"\\f118\"; }\n\n.fa-smile-beam:before {\n content: \"\\f5b8\"; }\n\n.fa-smile-wink:before {\n content: \"\\f4da\"; }\n\n.fa-smog:before {\n content: \"\\f75f\"; }\n\n.fa-smoking:before {\n content: \"\\f48d\"; }\n\n.fa-smoking-ban:before {\n content: \"\\f54d\"; }\n\n.fa-sms:before {\n content: \"\\f7cd\"; }\n\n.fa-snapchat:before {\n content: \"\\f2ab\"; }\n\n.fa-snapchat-ghost:before {\n content: \"\\f2ac\"; }\n\n.fa-snapchat-square:before {\n content: \"\\f2ad\"; }\n\n.fa-snowboarding:before {\n content: \"\\f7ce\"; }\n\n.fa-snowflake:before {\n content: \"\\f2dc\"; }\n\n.fa-snowman:before {\n content: \"\\f7d0\"; }\n\n.fa-snowplow:before {\n content: \"\\f7d2\"; }\n\n.fa-soap:before {\n content: \"\\e06e\"; }\n\n.fa-socks:before {\n content: \"\\f696\"; }\n\n.fa-solar-panel:before {\n content: \"\\f5ba\"; }\n\n.fa-sort:before {\n content: \"\\f0dc\"; }\n\n.fa-sort-alpha-down:before {\n content: \"\\f15d\"; }\n\n.fa-sort-alpha-down-alt:before {\n content: \"\\f881\"; }\n\n.fa-sort-alpha-up:before {\n content: \"\\f15e\"; }\n\n.fa-sort-alpha-up-alt:before {\n content: \"\\f882\"; }\n\n.fa-sort-amount-down:before {\n content: \"\\f160\"; }\n\n.fa-sort-amount-down-alt:before {\n content: \"\\f884\"; }\n\n.fa-sort-amount-up:before {\n content: \"\\f161\"; }\n\n.fa-sort-amount-up-alt:before {\n content: \"\\f885\"; }\n\n.fa-sort-down:before {\n content: \"\\f0dd\"; }\n\n.fa-sort-numeric-down:before {\n content: \"\\f162\"; }\n\n.fa-sort-numeric-down-alt:before {\n content: \"\\f886\"; }\n\n.fa-sort-numeric-up:before {\n content: \"\\f163\"; }\n\n.fa-sort-numeric-up-alt:before {\n content: \"\\f887\"; }\n\n.fa-sort-up:before {\n content: \"\\f0de\"; }\n\n.fa-soundcloud:before {\n content: \"\\f1be\"; }\n\n.fa-sourcetree:before {\n content: \"\\f7d3\"; }\n\n.fa-spa:before {\n content: \"\\f5bb\"; }\n\n.fa-space-shuttle:before {\n content: \"\\f197\"; }\n\n.fa-speakap:before {\n content: \"\\f3f3\"; }\n\n.fa-speaker-deck:before {\n content: \"\\f83c\"; }\n\n.fa-spell-check:before {\n content: \"\\f891\"; }\n\n.fa-spider:before {\n content: \"\\f717\"; }\n\n.fa-spinner:before {\n content: \"\\f110\"; }\n\n.fa-splotch:before {\n content: \"\\f5bc\"; }\n\n.fa-spotify:before {\n content: \"\\f1bc\"; }\n\n.fa-spray-can:before {\n content: \"\\f5bd\"; }\n\n.fa-square:before {\n content: \"\\f0c8\"; }\n\n.fa-square-full:before {\n content: \"\\f45c\"; }\n\n.fa-square-root-alt:before {\n content: \"\\f698\"; }\n\n.fa-squarespace:before {\n content: \"\\f5be\"; }\n\n.fa-stack-exchange:before {\n content: \"\\f18d\"; }\n\n.fa-stack-overflow:before {\n content: \"\\f16c\"; }\n\n.fa-stackpath:before {\n content: \"\\f842\"; }\n\n.fa-stamp:before {\n content: \"\\f5bf\"; }\n\n.fa-star:before {\n content: \"\\f005\"; }\n\n.fa-star-and-crescent:before {\n content: \"\\f699\"; }\n\n.fa-star-half:before {\n content: \"\\f089\"; }\n\n.fa-star-half-alt:before {\n content: \"\\f5c0\"; }\n\n.fa-star-of-david:before {\n content: \"\\f69a\"; }\n\n.fa-star-of-life:before {\n content: \"\\f621\"; }\n\n.fa-staylinked:before {\n content: \"\\f3f5\"; }\n\n.fa-steam:before {\n content: \"\\f1b6\"; }\n\n.fa-steam-square:before {\n content: \"\\f1b7\"; }\n\n.fa-steam-symbol:before {\n content: \"\\f3f6\"; }\n\n.fa-step-backward:before {\n content: \"\\f048\"; }\n\n.fa-step-forward:before {\n content: \"\\f051\"; }\n\n.fa-stethoscope:before {\n content: \"\\f0f1\"; }\n\n.fa-sticker-mule:before {\n content: \"\\f3f7\"; }\n\n.fa-sticky-note:before {\n content: \"\\f249\"; }\n\n.fa-stop:before {\n content: \"\\f04d\"; }\n\n.fa-stop-circle:before {\n content: \"\\f28d\"; }\n\n.fa-stopwatch:before {\n content: \"\\f2f2\"; }\n\n.fa-stopwatch-20:before {\n content: \"\\e06f\"; }\n\n.fa-store:before {\n content: \"\\f54e\"; }\n\n.fa-store-alt:before {\n content: \"\\f54f\"; }\n\n.fa-store-alt-slash:before {\n content: \"\\e070\"; }\n\n.fa-store-slash:before {\n content: \"\\e071\"; }\n\n.fa-strava:before {\n content: \"\\f428\"; }\n\n.fa-stream:before {\n content: \"\\f550\"; }\n\n.fa-street-view:before {\n content: \"\\f21d\"; }\n\n.fa-strikethrough:before {\n content: \"\\f0cc\"; }\n\n.fa-stripe:before {\n content: \"\\f429\"; }\n\n.fa-stripe-s:before {\n content: \"\\f42a\"; }\n\n.fa-stroopwafel:before {\n content: \"\\f551\"; }\n\n.fa-studiovinari:before {\n content: \"\\f3f8\"; }\n\n.fa-stumbleupon:before {\n content: \"\\f1a4\"; }\n\n.fa-stumbleupon-circle:before {\n content: \"\\f1a3\"; }\n\n.fa-subscript:before {\n content: \"\\f12c\"; }\n\n.fa-subway:before {\n content: \"\\f239\"; }\n\n.fa-suitcase:before {\n content: \"\\f0f2\"; }\n\n.fa-suitcase-rolling:before {\n content: \"\\f5c1\"; }\n\n.fa-sun:before {\n content: \"\\f185\"; }\n\n.fa-superpowers:before {\n content: \"\\f2dd\"; }\n\n.fa-superscript:before {\n content: \"\\f12b\"; }\n\n.fa-supple:before {\n content: \"\\f3f9\"; }\n\n.fa-surprise:before {\n content: \"\\f5c2\"; }\n\n.fa-suse:before {\n content: \"\\f7d6\"; }\n\n.fa-swatchbook:before {\n content: \"\\f5c3\"; }\n\n.fa-swift:before {\n content: \"\\f8e1\"; }\n\n.fa-swimmer:before {\n content: \"\\f5c4\"; }\n\n.fa-swimming-pool:before {\n content: \"\\f5c5\"; }\n\n.fa-symfony:before {\n content: \"\\f83d\"; }\n\n.fa-synagogue:before {\n content: \"\\f69b\"; }\n\n.fa-sync:before {\n content: \"\\f021\"; }\n\n.fa-sync-alt:before {\n content: \"\\f2f1\"; }\n\n.fa-syringe:before {\n content: \"\\f48e\"; }\n\n.fa-table:before {\n content: \"\\f0ce\"; }\n\n.fa-table-tennis:before {\n content: \"\\f45d\"; }\n\n.fa-tablet:before {\n content: \"\\f10a\"; }\n\n.fa-tablet-alt:before {\n content: \"\\f3fa\"; }\n\n.fa-tablets:before {\n content: \"\\f490\"; }\n\n.fa-tachometer-alt:before {\n content: \"\\f3fd\"; }\n\n.fa-tag:before {\n content: \"\\f02b\"; }\n\n.fa-tags:before {\n content: \"\\f02c\"; }\n\n.fa-tape:before {\n content: \"\\f4db\"; }\n\n.fa-tasks:before {\n content: \"\\f0ae\"; }\n\n.fa-taxi:before {\n content: \"\\f1ba\"; }\n\n.fa-teamspeak:before {\n content: \"\\f4f9\"; }\n\n.fa-teeth:before {\n content: \"\\f62e\"; }\n\n.fa-teeth-open:before {\n content: \"\\f62f\"; }\n\n.fa-telegram:before {\n content: \"\\f2c6\"; }\n\n.fa-telegram-plane:before {\n content: \"\\f3fe\"; }\n\n.fa-temperature-high:before {\n content: \"\\f769\"; }\n\n.fa-temperature-low:before {\n content: \"\\f76b\"; }\n\n.fa-tencent-weibo:before {\n content: \"\\f1d5\"; }\n\n.fa-tenge:before {\n content: \"\\f7d7\"; }\n\n.fa-terminal:before {\n content: \"\\f120\"; }\n\n.fa-text-height:before {\n content: \"\\f034\"; }\n\n.fa-text-width:before {\n content: \"\\f035\"; }\n\n.fa-th:before {\n content: \"\\f00a\"; }\n\n.fa-th-large:before {\n content: \"\\f009\"; }\n\n.fa-th-list:before {\n content: \"\\f00b\"; }\n\n.fa-the-red-yeti:before {\n content: \"\\f69d\"; }\n\n.fa-theater-masks:before {\n content: \"\\f630\"; }\n\n.fa-themeco:before {\n content: \"\\f5c6\"; }\n\n.fa-themeisle:before {\n content: \"\\f2b2\"; }\n\n.fa-thermometer:before {\n content: \"\\f491\"; }\n\n.fa-thermometer-empty:before {\n content: \"\\f2cb\"; }\n\n.fa-thermometer-full:before {\n content: \"\\f2c7\"; }\n\n.fa-thermometer-half:before {\n content: \"\\f2c9\"; }\n\n.fa-thermometer-quarter:before {\n content: \"\\f2ca\"; }\n\n.fa-thermometer-three-quarters:before {\n content: \"\\f2c8\"; }\n\n.fa-think-peaks:before {\n content: \"\\f731\"; }\n\n.fa-thumbs-down:before {\n content: \"\\f165\"; }\n\n.fa-thumbs-up:before {\n content: \"\\f164\"; }\n\n.fa-thumbtack:before {\n content: \"\\f08d\"; }\n\n.fa-ticket-alt:before {\n content: \"\\f3ff\"; }\n\n.fa-tiktok:before {\n content: \"\\e07b\"; }\n\n.fa-times:before {\n content: \"\\f00d\"; }\n\n.fa-times-circle:before {\n content: \"\\f057\"; }\n\n.fa-tint:before {\n content: \"\\f043\"; }\n\n.fa-tint-slash:before {\n content: \"\\f5c7\"; }\n\n.fa-tired:before {\n content: \"\\f5c8\"; }\n\n.fa-toggle-off:before {\n content: \"\\f204\"; }\n\n.fa-toggle-on:before {\n content: \"\\f205\"; }\n\n.fa-toilet:before {\n content: \"\\f7d8\"; }\n\n.fa-toilet-paper:before {\n content: \"\\f71e\"; }\n\n.fa-toilet-paper-slash:before {\n content: \"\\e072\"; }\n\n.fa-toolbox:before {\n content: \"\\f552\"; }\n\n.fa-tools:before {\n content: \"\\f7d9\"; }\n\n.fa-tooth:before {\n content: \"\\f5c9\"; }\n\n.fa-torah:before {\n content: \"\\f6a0\"; }\n\n.fa-torii-gate:before {\n content: \"\\f6a1\"; }\n\n.fa-tractor:before {\n content: \"\\f722\"; }\n\n.fa-trade-federation:before {\n content: \"\\f513\"; }\n\n.fa-trademark:before {\n content: \"\\f25c\"; }\n\n.fa-traffic-light:before {\n content: \"\\f637\"; }\n\n.fa-trailer:before {\n content: \"\\e041\"; }\n\n.fa-train:before {\n content: \"\\f238\"; }\n\n.fa-tram:before {\n content: \"\\f7da\"; }\n\n.fa-transgender:before {\n content: \"\\f224\"; }\n\n.fa-transgender-alt:before {\n content: \"\\f225\"; }\n\n.fa-trash:before {\n content: \"\\f1f8\"; }\n\n.fa-trash-alt:before {\n content: \"\\f2ed\"; }\n\n.fa-trash-restore:before {\n content: \"\\f829\"; }\n\n.fa-trash-restore-alt:before {\n content: \"\\f82a\"; }\n\n.fa-tree:before {\n content: \"\\f1bb\"; }\n\n.fa-trello:before {\n content: \"\\f181\"; }\n\n.fa-tripadvisor:before {\n content: \"\\f262\"; }\n\n.fa-trophy:before {\n content: \"\\f091\"; }\n\n.fa-truck:before {\n content: \"\\f0d1\"; }\n\n.fa-truck-loading:before {\n content: \"\\f4de\"; }\n\n.fa-truck-monster:before {\n content: \"\\f63b\"; }\n\n.fa-truck-moving:before {\n content: \"\\f4df\"; }\n\n.fa-truck-pickup:before {\n content: \"\\f63c\"; }\n\n.fa-tshirt:before {\n content: \"\\f553\"; }\n\n.fa-tty:before {\n content: \"\\f1e4\"; }\n\n.fa-tumblr:before {\n content: \"\\f173\"; }\n\n.fa-tumblr-square:before {\n content: \"\\f174\"; }\n\n.fa-tv:before {\n content: \"\\f26c\"; }\n\n.fa-twitch:before {\n content: \"\\f1e8\"; }\n\n.fa-twitter:before {\n content: \"\\f099\"; }\n\n.fa-twitter-square:before {\n content: \"\\f081\"; }\n\n.fa-typo3:before {\n content: \"\\f42b\"; }\n\n.fa-uber:before {\n content: \"\\f402\"; }\n\n.fa-ubuntu:before {\n content: \"\\f7df\"; }\n\n.fa-uikit:before {\n content: \"\\f403\"; }\n\n.fa-umbraco:before {\n content: \"\\f8e8\"; }\n\n.fa-umbrella:before {\n content: \"\\f0e9\"; }\n\n.fa-umbrella-beach:before {\n content: \"\\f5ca\"; }\n\n.fa-uncharted:before {\n content: \"\\e084\"; }\n\n.fa-underline:before {\n content: \"\\f0cd\"; }\n\n.fa-undo:before {\n content: \"\\f0e2\"; }\n\n.fa-undo-alt:before {\n content: \"\\f2ea\"; }\n\n.fa-uniregistry:before {\n content: \"\\f404\"; }\n\n.fa-unity:before {\n content: \"\\e049\"; }\n\n.fa-universal-access:before {\n content: \"\\f29a\"; }\n\n.fa-university:before {\n content: \"\\f19c\"; }\n\n.fa-unlink:before {\n content: \"\\f127\"; }\n\n.fa-unlock:before {\n content: \"\\f09c\"; }\n\n.fa-unlock-alt:before {\n content: \"\\f13e\"; }\n\n.fa-unsplash:before {\n content: \"\\e07c\"; }\n\n.fa-untappd:before {\n content: \"\\f405\"; }\n\n.fa-upload:before {\n content: \"\\f093\"; }\n\n.fa-ups:before {\n content: \"\\f7e0\"; }\n\n.fa-usb:before {\n content: \"\\f287\"; }\n\n.fa-user:before {\n content: \"\\f007\"; }\n\n.fa-user-alt:before {\n content: \"\\f406\"; }\n\n.fa-user-alt-slash:before {\n content: \"\\f4fa\"; }\n\n.fa-user-astronaut:before {\n content: \"\\f4fb\"; }\n\n.fa-user-check:before {\n content: \"\\f4fc\"; }\n\n.fa-user-circle:before {\n content: \"\\f2bd\"; }\n\n.fa-user-clock:before {\n content: \"\\f4fd\"; }\n\n.fa-user-cog:before {\n content: \"\\f4fe\"; }\n\n.fa-user-edit:before {\n content: \"\\f4ff\"; }\n\n.fa-user-friends:before {\n content: \"\\f500\"; }\n\n.fa-user-graduate:before {\n content: \"\\f501\"; }\n\n.fa-user-injured:before {\n content: \"\\f728\"; }\n\n.fa-user-lock:before {\n content: \"\\f502\"; }\n\n.fa-user-md:before {\n content: \"\\f0f0\"; }\n\n.fa-user-minus:before {\n content: \"\\f503\"; }\n\n.fa-user-ninja:before {\n content: \"\\f504\"; }\n\n.fa-user-nurse:before {\n content: \"\\f82f\"; }\n\n.fa-user-plus:before {\n content: \"\\f234\"; }\n\n.fa-user-secret:before {\n content: \"\\f21b\"; }\n\n.fa-user-shield:before {\n content: \"\\f505\"; }\n\n.fa-user-slash:before {\n content: \"\\f506\"; }\n\n.fa-user-tag:before {\n content: \"\\f507\"; }\n\n.fa-user-tie:before {\n content: \"\\f508\"; }\n\n.fa-user-times:before {\n content: \"\\f235\"; }\n\n.fa-users:before {\n content: \"\\f0c0\"; }\n\n.fa-users-cog:before {\n content: \"\\f509\"; }\n\n.fa-users-slash:before {\n content: \"\\e073\"; }\n\n.fa-usps:before {\n content: \"\\f7e1\"; }\n\n.fa-ussunnah:before {\n content: \"\\f407\"; }\n\n.fa-utensil-spoon:before {\n content: \"\\f2e5\"; }\n\n.fa-utensils:before {\n content: \"\\f2e7\"; }\n\n.fa-vaadin:before {\n content: \"\\f408\"; }\n\n.fa-vector-square:before {\n content: \"\\f5cb\"; }\n\n.fa-venus:before {\n content: \"\\f221\"; }\n\n.fa-venus-double:before {\n content: \"\\f226\"; }\n\n.fa-venus-mars:before {\n content: \"\\f228\"; }\n\n.fa-vest:before {\n content: \"\\e085\"; }\n\n.fa-vest-patches:before {\n content: \"\\e086\"; }\n\n.fa-viacoin:before {\n content: \"\\f237\"; }\n\n.fa-viadeo:before {\n content: \"\\f2a9\"; }\n\n.fa-viadeo-square:before {\n content: \"\\f2aa\"; }\n\n.fa-vial:before {\n content: \"\\f492\"; }\n\n.fa-vials:before {\n content: \"\\f493\"; }\n\n.fa-viber:before {\n content: \"\\f409\"; }\n\n.fa-video:before {\n content: \"\\f03d\"; }\n\n.fa-video-slash:before {\n content: \"\\f4e2\"; }\n\n.fa-vihara:before {\n content: \"\\f6a7\"; }\n\n.fa-vimeo:before {\n content: \"\\f40a\"; }\n\n.fa-vimeo-square:before {\n content: \"\\f194\"; }\n\n.fa-vimeo-v:before {\n content: \"\\f27d\"; }\n\n.fa-vine:before {\n content: \"\\f1ca\"; }\n\n.fa-virus:before {\n content: \"\\e074\"; }\n\n.fa-virus-slash:before {\n content: \"\\e075\"; }\n\n.fa-viruses:before {\n content: \"\\e076\"; }\n\n.fa-vk:before {\n content: \"\\f189\"; }\n\n.fa-vnv:before {\n content: \"\\f40b\"; }\n\n.fa-voicemail:before {\n content: \"\\f897\"; }\n\n.fa-volleyball-ball:before {\n content: \"\\f45f\"; }\n\n.fa-volume-down:before {\n content: \"\\f027\"; }\n\n.fa-volume-mute:before {\n content: \"\\f6a9\"; }\n\n.fa-volume-off:before {\n content: \"\\f026\"; }\n\n.fa-volume-up:before {\n content: \"\\f028\"; }\n\n.fa-vote-yea:before {\n content: \"\\f772\"; }\n\n.fa-vr-cardboard:before {\n content: \"\\f729\"; }\n\n.fa-vuejs:before {\n content: \"\\f41f\"; }\n\n.fa-walking:before {\n content: \"\\f554\"; }\n\n.fa-wallet:before {\n content: \"\\f555\"; }\n\n.fa-warehouse:before {\n content: \"\\f494\"; }\n\n.fa-watchman-monitoring:before {\n content: \"\\e087\"; }\n\n.fa-water:before {\n content: \"\\f773\"; }\n\n.fa-wave-square:before {\n content: \"\\f83e\"; }\n\n.fa-waze:before {\n content: \"\\f83f\"; }\n\n.fa-weebly:before {\n content: \"\\f5cc\"; }\n\n.fa-weibo:before {\n content: \"\\f18a\"; }\n\n.fa-weight:before {\n content: \"\\f496\"; }\n\n.fa-weight-hanging:before {\n content: \"\\f5cd\"; }\n\n.fa-weixin:before {\n content: \"\\f1d7\"; }\n\n.fa-whatsapp:before {\n content: \"\\f232\"; }\n\n.fa-whatsapp-square:before {\n content: \"\\f40c\"; }\n\n.fa-wheelchair:before {\n content: \"\\f193\"; }\n\n.fa-whmcs:before {\n content: \"\\f40d\"; }\n\n.fa-wifi:before {\n content: \"\\f1eb\"; }\n\n.fa-wikipedia-w:before {\n content: \"\\f266\"; }\n\n.fa-wind:before {\n content: \"\\f72e\"; }\n\n.fa-window-close:before {\n content: \"\\f410\"; }\n\n.fa-window-maximize:before {\n content: \"\\f2d0\"; }\n\n.fa-window-minimize:before {\n content: \"\\f2d1\"; }\n\n.fa-window-restore:before {\n content: \"\\f2d2\"; }\n\n.fa-windows:before {\n content: \"\\f17a\"; }\n\n.fa-wine-bottle:before {\n content: \"\\f72f\"; }\n\n.fa-wine-glass:before {\n content: \"\\f4e3\"; }\n\n.fa-wine-glass-alt:before {\n content: \"\\f5ce\"; }\n\n.fa-wix:before {\n content: \"\\f5cf\"; }\n\n.fa-wizards-of-the-coast:before {\n content: \"\\f730\"; }\n\n.fa-wodu:before {\n content: \"\\e088\"; }\n\n.fa-wolf-pack-battalion:before {\n content: \"\\f514\"; }\n\n.fa-won-sign:before {\n content: \"\\f159\"; }\n\n.fa-wordpress:before {\n content: \"\\f19a\"; }\n\n.fa-wordpress-simple:before {\n content: \"\\f411\"; }\n\n.fa-wpbeginner:before {\n content: \"\\f297\"; }\n\n.fa-wpexplorer:before {\n content: \"\\f2de\"; }\n\n.fa-wpforms:before {\n content: \"\\f298\"; }\n\n.fa-wpressr:before {\n content: \"\\f3e4\"; }\n\n.fa-wrench:before {\n content: \"\\f0ad\"; }\n\n.fa-x-ray:before {\n content: \"\\f497\"; }\n\n.fa-xbox:before {\n content: \"\\f412\"; }\n\n.fa-xing:before {\n content: \"\\f168\"; }\n\n.fa-xing-square:before {\n content: \"\\f169\"; }\n\n.fa-y-combinator:before {\n content: \"\\f23b\"; }\n\n.fa-yahoo:before {\n content: \"\\f19e\"; }\n\n.fa-yammer:before {\n content: \"\\f840\"; }\n\n.fa-yandex:before {\n content: \"\\f413\"; }\n\n.fa-yandex-international:before {\n content: \"\\f414\"; }\n\n.fa-yarn:before {\n content: \"\\f7e3\"; }\n\n.fa-yelp:before {\n content: \"\\f1e9\"; }\n\n.fa-yen-sign:before {\n content: \"\\f157\"; }\n\n.fa-yin-yang:before {\n content: \"\\f6ad\"; }\n\n.fa-yoast:before {\n content: \"\\f2b1\"; }\n\n.fa-youtube:before {\n content: \"\\f167\"; }\n\n.fa-youtube-square:before {\n content: \"\\f431\"; }\n\n.fa-zhihu:before {\n content: \"\\f63f\"; }\n\n.sr-only {\n border: 0;\n clip: rect(0, 0, 0, 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n width: 1px; }\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n clip: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n position: static;\n width: auto; }\n@font-face {\n font-family: 'Font Awesome 5 Brands';\n font-style: normal;\n font-weight: 400;\n font-display: block;\n src: url(../../static/media/fa-brands-400.0fea2496.eot);\n src: url(../../static/media/fa-brands-400.0fea2496.eot?#iefix) format(\"embedded-opentype\"), url(../../static/media/fa-brands-400.c967a94c.woff2) format(\"woff2\"), url(../../static/media/fa-brands-400.dc2cbadd.woff) format(\"woff\"), url(../../static/media/fa-brands-400.ec82f282.ttf) format(\"truetype\"), url(../../static/media/fa-brands-400.e33e2cf6.svg#fontawesome) format(\"svg\"); }\n\n.fab {\n font-family: 'Font Awesome 5 Brands';\n font-weight: 400; }\n@font-face {\n font-family: 'Font Awesome 5 Free';\n font-style: normal;\n font-weight: 400;\n font-display: block;\n src: url(../../static/media/fa-regular-400.08f9891a.eot);\n src: url(../../static/media/fa-regular-400.08f9891a.eot?#iefix) format(\"embedded-opentype\"), url(../../static/media/fa-regular-400.1008b522.woff2) format(\"woff2\"), url(../../static/media/fa-regular-400.1069ea55.woff) format(\"woff\"), url(../../static/media/fa-regular-400.1495f578.ttf) format(\"truetype\"), url(../../static/media/fa-regular-400.06b9d19c.svg#fontawesome) format(\"svg\"); }\n\n.far {\n font-family: 'Font Awesome 5 Free';\n font-weight: 400; }\n@font-face {\n font-family: 'Font Awesome 5 Free';\n font-style: normal;\n font-weight: 900;\n font-display: block;\n src: url(../../static/media/fa-solid-900.3a24a60e.eot);\n src: url(../../static/media/fa-solid-900.3a24a60e.eot?#iefix) format(\"embedded-opentype\"), url(../../static/media/fa-solid-900.3ceb50e7.woff2) format(\"woff2\"), url(../../static/media/fa-solid-900.46fdbd2d.woff) format(\"woff\"), url(../../static/media/fa-solid-900.10ecefc2.ttf) format(\"truetype\"), url(../../static/media/fa-solid-900.371dbce0.svg#fontawesome) format(\"svg\"); }\n\n.fa,\n.fas {\n font-family: 'Font Awesome 5 Free';\n font-weight: 900; }\n\n/*\n\nAtom One Dark by Daniel Gamage\nOriginal One Dark Syntax theme from https://github.com/atom/one-dark-syntax\n\nbase: #282c34\nmono-1: #abb2bf\nmono-2: #818896\nmono-3: #5c6370\nhue-1: #56b6c2\nhue-2: #61aeee\nhue-3: #c678dd\nhue-4: #98c379\nhue-5: #e06c75\nhue-5-2: #be5046\nhue-6: #d19a66\nhue-6-2: #e6c07b\n\n*/\n\n.hljs {\n display: block;\n overflow-x: auto;\n padding: 0.5em;\n color: #abb2bf;\n background: #282c34;\n}\n\n.hljs-comment,\n.hljs-quote {\n color: #5c6370;\n font-style: italic;\n}\n\n.hljs-doctag,\n.hljs-keyword,\n.hljs-formula {\n color: #c678dd;\n}\n\n.hljs-section,\n.hljs-name,\n.hljs-selector-tag,\n.hljs-deletion,\n.hljs-subst {\n color: #e06c75;\n}\n\n.hljs-literal {\n color: #56b6c2;\n}\n\n.hljs-string,\n.hljs-regexp,\n.hljs-addition,\n.hljs-attribute,\n.hljs-meta-string {\n color: #98c379;\n}\n\n.hljs-built_in,\n.hljs-class .hljs-title {\n color: #e6c07b;\n}\n\n.hljs-attr,\n.hljs-variable,\n.hljs-template-variable,\n.hljs-type,\n.hljs-selector-class,\n.hljs-selector-attr,\n.hljs-selector-pseudo,\n.hljs-number {\n color: #d19a66;\n}\n\n.hljs-symbol,\n.hljs-bullet,\n.hljs-link,\n.hljs-meta,\n.hljs-selector-id,\n.hljs-title {\n color: #61aeee;\n}\n\n.hljs-emphasis {\n font-style: italic;\n}\n\n.hljs-strong {\n font-weight: bold;\n}\n\n.hljs-link {\n text-decoration: underline;\n}\n\n:root {\n --toastify-color-light: #fff;\n --toastify-color-dark: #121212;\n --toastify-color-info: #3498db;\n --toastify-color-success: #07bc0c;\n --toastify-color-warning: #f1c40f;\n --toastify-color-error: #e74c3c;\n --toastify-color-transparent: rgba(255, 255, 255, 0.7);\n --toastify-icon-color-info: var(--toastify-color-info);\n --toastify-icon-color-success: var(--toastify-color-success);\n --toastify-icon-color-warning: var(--toastify-color-warning);\n --toastify-icon-color-error: var(--toastify-color-error);\n --toastify-toast-width: 320px;\n --toastify-toast-background: #fff;\n --toastify-toast-min-height: 64px;\n --toastify-toast-max-height: 800px;\n --toastify-font-family: sans-serif;\n --toastify-z-index: 9999;\n --toastify-text-color-light: #757575;\n --toastify-text-color-dark: #fff;\n --toastify-text-color-info: #fff;\n --toastify-text-color-success: #fff;\n --toastify-text-color-warning: #fff;\n --toastify-text-color-error: #fff;\n --toastify-spinner-color: #616161;\n --toastify-spinner-color-empty-area: #e0e0e0;\n --toastify-color-progress-light: linear-gradient(\n to right,\n #4cd964,\n #5ac8fa,\n #007aff,\n #34aadc,\n #5856d6,\n #ff2d55\n );\n --toastify-color-progress-dark: #bb86fc;\n --toastify-color-progress-info: var(--toastify-color-info);\n --toastify-color-progress-success: var(--toastify-color-success);\n --toastify-color-progress-warning: var(--toastify-color-warning);\n --toastify-color-progress-error: var(--toastify-color-error);\n}\n\n.Toastify__toast-container {\n z-index: 9999;\n z-index: var(--toastify-z-index);\n -webkit-transform: translate3d(0, 0, 9999 px);\n -webkit-transform: translate3d(0, 0, var(--toastify-z-index) px);\n position: fixed;\n padding: 4px;\n width: 320px;\n width: var(--toastify-toast-width);\n box-sizing: border-box;\n color: #fff;\n}\n.Toastify__toast-container--top-left {\n top: 1em;\n left: 1em;\n}\n.Toastify__toast-container--top-center {\n top: 1em;\n left: 50%;\n -webkit-transform: translateX(-50%);\n transform: translateX(-50%);\n}\n.Toastify__toast-container--top-right {\n top: 1em;\n right: 1em;\n}\n.Toastify__toast-container--bottom-left {\n bottom: 1em;\n left: 1em;\n}\n.Toastify__toast-container--bottom-center {\n bottom: 1em;\n left: 50%;\n -webkit-transform: translateX(-50%);\n transform: translateX(-50%);\n}\n.Toastify__toast-container--bottom-right {\n bottom: 1em;\n right: 1em;\n}\n\n@media only screen and (max-width : 480px) {\n .Toastify__toast-container {\n width: 100vw;\n padding: 0;\n left: 0;\n margin: 0;\n }\n .Toastify__toast-container--top-left, .Toastify__toast-container--top-center, .Toastify__toast-container--top-right {\n top: 0;\n -webkit-transform: translateX(0);\n transform: translateX(0);\n }\n .Toastify__toast-container--bottom-left, .Toastify__toast-container--bottom-center, .Toastify__toast-container--bottom-right {\n bottom: 0;\n -webkit-transform: translateX(0);\n transform: translateX(0);\n }\n .Toastify__toast-container--rtl {\n right: 0;\n left: initial;\n }\n}\n.Toastify__toast {\n position: relative;\n min-height: 64px;\n min-height: var(--toastify-toast-min-height);\n box-sizing: border-box;\n margin-bottom: 1rem;\n padding: 8px;\n border-radius: 4px;\n box-shadow: 0 1px 10px 0 rgba(0, 0, 0, 0.1), 0 2px 15px 0 rgba(0, 0, 0, 0.05);\n display: flex;\n justify-content: space-between;\n max-height: 800px;\n max-height: var(--toastify-toast-max-height);\n overflow: hidden;\n font-family: sans-serif;\n font-family: var(--toastify-font-family);\n cursor: pointer;\n direction: ltr;\n}\n.Toastify__toast--rtl {\n direction: rtl;\n}\n.Toastify__toast-body {\n margin: auto 0;\n flex: 1 1 auto;\n padding: 6px;\n display: flex;\n align-items: center;\n}\n.Toastify__toast-body > div:last-child {\n flex: 1 1;\n}\n.Toastify__toast-icon {\n -webkit-margin-end: 10px;\n margin-inline-end: 10px;\n width: 20px;\n flex-shrink: 0;\n display: flex;\n}\n\n.Toastify--animate {\n -webkit-animation-fill-mode: both;\n animation-fill-mode: both;\n -webkit-animation-duration: 0.7s;\n animation-duration: 0.7s;\n}\n\n.Toastify--animate-icon {\n -webkit-animation-fill-mode: both;\n animation-fill-mode: both;\n -webkit-animation-duration: 0.3s;\n animation-duration: 0.3s;\n}\n\n@media only screen and (max-width : 480px) {\n .Toastify__toast {\n margin-bottom: 0;\n border-radius: 0;\n }\n}\n.Toastify__toast-theme--dark {\n background: #121212;\n background: var(--toastify-color-dark);\n color: #fff;\n color: var(--toastify-text-color-dark);\n}\n.Toastify__toast-theme--light {\n background: #fff;\n background: var(--toastify-color-light);\n color: #757575;\n color: var(--toastify-text-color-light);\n}\n.Toastify__toast-theme--colored.Toastify__toast--default {\n background: #fff;\n background: var(--toastify-color-light);\n color: #757575;\n color: var(--toastify-text-color-light);\n}\n.Toastify__toast-theme--colored.Toastify__toast--info {\n color: #fff;\n color: var(--toastify-text-color-info);\n background: #3498db;\n background: var(--toastify-color-info);\n}\n.Toastify__toast-theme--colored.Toastify__toast--success {\n color: #fff;\n color: var(--toastify-text-color-success);\n background: #07bc0c;\n background: var(--toastify-color-success);\n}\n.Toastify__toast-theme--colored.Toastify__toast--warning {\n color: #fff;\n color: var(--toastify-text-color-warning);\n background: #f1c40f;\n background: var(--toastify-color-warning);\n}\n.Toastify__toast-theme--colored.Toastify__toast--error {\n color: #fff;\n color: var(--toastify-text-color-error);\n background: #e74c3c;\n background: var(--toastify-color-error);\n}\n\n.Toastify__progress-bar-theme--light {\n background: linear-gradient(\n to right,\n #4cd964,\n #5ac8fa,\n #007aff,\n #34aadc,\n #5856d6,\n #ff2d55\n );\n background: var(--toastify-color-progress-light);\n}\n.Toastify__progress-bar-theme--dark {\n background: #bb86fc;\n background: var(--toastify-color-progress-dark);\n}\n.Toastify__progress-bar--info {\n background: #3498db;\n background: var(--toastify-color-progress-info);\n}\n.Toastify__progress-bar--success {\n background: #07bc0c;\n background: var(--toastify-color-progress-success);\n}\n.Toastify__progress-bar--warning {\n background: #f1c40f;\n background: var(--toastify-color-progress-warning);\n}\n.Toastify__progress-bar--error {\n background: #e74c3c;\n background: var(--toastify-color-progress-error);\n}\n.Toastify__progress-bar-theme--colored.Toastify__progress-bar--info, .Toastify__progress-bar-theme--colored.Toastify__progress-bar--success, .Toastify__progress-bar-theme--colored.Toastify__progress-bar--warning, .Toastify__progress-bar-theme--colored.Toastify__progress-bar--error {\n background: rgba(255, 255, 255, 0.7);\n background: var(--toastify-color-transparent);\n}\n\n.Toastify__close-button {\n color: #fff;\n background: transparent;\n outline: none;\n border: none;\n padding: 0;\n cursor: pointer;\n opacity: 0.7;\n transition: 0.3s ease;\n align-self: flex-start;\n}\n.Toastify__close-button--light {\n color: #000;\n opacity: 0.3;\n}\n.Toastify__close-button > svg {\n fill: currentColor;\n height: 16px;\n width: 14px;\n}\n.Toastify__close-button:hover, .Toastify__close-button:focus {\n opacity: 1;\n}\n\n@-webkit-keyframes Toastify__trackProgress {\n 0% {\n -webkit-transform: scaleX(1);\n transform: scaleX(1);\n }\n 100% {\n -webkit-transform: scaleX(0);\n transform: scaleX(0);\n }\n}\n\n@keyframes Toastify__trackProgress {\n 0% {\n -webkit-transform: scaleX(1);\n transform: scaleX(1);\n }\n 100% {\n -webkit-transform: scaleX(0);\n transform: scaleX(0);\n }\n}\n.Toastify__progress-bar {\n position: absolute;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 5px;\n z-index: 9999;\n z-index: var(--toastify-z-index);\n opacity: 0.7;\n -webkit-transform-origin: left;\n transform-origin: left;\n}\n.Toastify__progress-bar--animated {\n -webkit-animation: Toastify__trackProgress linear 1 forwards;\n animation: Toastify__trackProgress linear 1 forwards;\n}\n.Toastify__progress-bar--controlled {\n transition: -webkit-transform 0.2s;\n transition: transform 0.2s;\n transition: transform 0.2s, -webkit-transform 0.2s;\n}\n.Toastify__progress-bar--rtl {\n right: 0;\n left: initial;\n -webkit-transform-origin: right;\n transform-origin: right;\n}\n\n.Toastify__spinner {\n width: 20px;\n height: 20px;\n box-sizing: border-box;\n border: 2px solid;\n border-radius: 100%;\n border-color: #e0e0e0;\n border-color: var(--toastify-spinner-color-empty-area);\n border-right-color: #616161;\n border-right-color: var(--toastify-spinner-color);\n -webkit-animation: Toastify__spin 0.65s linear infinite;\n animation: Toastify__spin 0.65s linear infinite;\n}\n\n@-webkit-keyframes Toastify__bounceInRight {\n from, 60%, 75%, 90%, to {\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n }\n from {\n opacity: 0;\n -webkit-transform: translate3d(3000px, 0, 0);\n transform: translate3d(3000px, 0, 0);\n }\n 60% {\n opacity: 1;\n -webkit-transform: translate3d(-25px, 0, 0);\n transform: translate3d(-25px, 0, 0);\n }\n 75% {\n -webkit-transform: translate3d(10px, 0, 0);\n transform: translate3d(10px, 0, 0);\n }\n 90% {\n -webkit-transform: translate3d(-5px, 0, 0);\n transform: translate3d(-5px, 0, 0);\n }\n to {\n -webkit-transform: none;\n transform: none;\n }\n}\n\n@keyframes Toastify__bounceInRight {\n from, 60%, 75%, 90%, to {\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n }\n from {\n opacity: 0;\n -webkit-transform: translate3d(3000px, 0, 0);\n transform: translate3d(3000px, 0, 0);\n }\n 60% {\n opacity: 1;\n -webkit-transform: translate3d(-25px, 0, 0);\n transform: translate3d(-25px, 0, 0);\n }\n 75% {\n -webkit-transform: translate3d(10px, 0, 0);\n transform: translate3d(10px, 0, 0);\n }\n 90% {\n -webkit-transform: translate3d(-5px, 0, 0);\n transform: translate3d(-5px, 0, 0);\n }\n to {\n -webkit-transform: none;\n transform: none;\n }\n}\n@-webkit-keyframes Toastify__bounceOutRight {\n 20% {\n opacity: 1;\n -webkit-transform: translate3d(-20px, 0, 0);\n transform: translate3d(-20px, 0, 0);\n }\n to {\n opacity: 0;\n -webkit-transform: translate3d(2000px, 0, 0);\n transform: translate3d(2000px, 0, 0);\n }\n}\n@keyframes Toastify__bounceOutRight {\n 20% {\n opacity: 1;\n -webkit-transform: translate3d(-20px, 0, 0);\n transform: translate3d(-20px, 0, 0);\n }\n to {\n opacity: 0;\n -webkit-transform: translate3d(2000px, 0, 0);\n transform: translate3d(2000px, 0, 0);\n }\n}\n@-webkit-keyframes Toastify__bounceInLeft {\n from, 60%, 75%, 90%, to {\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n }\n 0% {\n opacity: 0;\n -webkit-transform: translate3d(-3000px, 0, 0);\n transform: translate3d(-3000px, 0, 0);\n }\n 60% {\n opacity: 1;\n -webkit-transform: translate3d(25px, 0, 0);\n transform: translate3d(25px, 0, 0);\n }\n 75% {\n -webkit-transform: translate3d(-10px, 0, 0);\n transform: translate3d(-10px, 0, 0);\n }\n 90% {\n -webkit-transform: translate3d(5px, 0, 0);\n transform: translate3d(5px, 0, 0);\n }\n to {\n -webkit-transform: none;\n transform: none;\n }\n}\n@keyframes Toastify__bounceInLeft {\n from, 60%, 75%, 90%, to {\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n }\n 0% {\n opacity: 0;\n -webkit-transform: translate3d(-3000px, 0, 0);\n transform: translate3d(-3000px, 0, 0);\n }\n 60% {\n opacity: 1;\n -webkit-transform: translate3d(25px, 0, 0);\n transform: translate3d(25px, 0, 0);\n }\n 75% {\n -webkit-transform: translate3d(-10px, 0, 0);\n transform: translate3d(-10px, 0, 0);\n }\n 90% {\n -webkit-transform: translate3d(5px, 0, 0);\n transform: translate3d(5px, 0, 0);\n }\n to {\n -webkit-transform: none;\n transform: none;\n }\n}\n@-webkit-keyframes Toastify__bounceOutLeft {\n 20% {\n opacity: 1;\n -webkit-transform: translate3d(20px, 0, 0);\n transform: translate3d(20px, 0, 0);\n }\n to {\n opacity: 0;\n -webkit-transform: translate3d(-2000px, 0, 0);\n transform: translate3d(-2000px, 0, 0);\n }\n}\n@keyframes Toastify__bounceOutLeft {\n 20% {\n opacity: 1;\n -webkit-transform: translate3d(20px, 0, 0);\n transform: translate3d(20px, 0, 0);\n }\n to {\n opacity: 0;\n -webkit-transform: translate3d(-2000px, 0, 0);\n transform: translate3d(-2000px, 0, 0);\n }\n}\n@-webkit-keyframes Toastify__bounceInUp {\n from, 60%, 75%, 90%, to {\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n }\n from {\n opacity: 0;\n -webkit-transform: translate3d(0, 3000px, 0);\n transform: translate3d(0, 3000px, 0);\n }\n 60% {\n opacity: 1;\n -webkit-transform: translate3d(0, -20px, 0);\n transform: translate3d(0, -20px, 0);\n }\n 75% {\n -webkit-transform: translate3d(0, 10px, 0);\n transform: translate3d(0, 10px, 0);\n }\n 90% {\n -webkit-transform: translate3d(0, -5px, 0);\n transform: translate3d(0, -5px, 0);\n }\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n@keyframes Toastify__bounceInUp {\n from, 60%, 75%, 90%, to {\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n }\n from {\n opacity: 0;\n -webkit-transform: translate3d(0, 3000px, 0);\n transform: translate3d(0, 3000px, 0);\n }\n 60% {\n opacity: 1;\n -webkit-transform: translate3d(0, -20px, 0);\n transform: translate3d(0, -20px, 0);\n }\n 75% {\n -webkit-transform: translate3d(0, 10px, 0);\n transform: translate3d(0, 10px, 0);\n }\n 90% {\n -webkit-transform: translate3d(0, -5px, 0);\n transform: translate3d(0, -5px, 0);\n }\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n@-webkit-keyframes Toastify__bounceOutUp {\n 20% {\n -webkit-transform: translate3d(0, -10px, 0);\n transform: translate3d(0, -10px, 0);\n }\n 40%, 45% {\n opacity: 1;\n -webkit-transform: translate3d(0, 20px, 0);\n transform: translate3d(0, 20px, 0);\n }\n to {\n opacity: 0;\n -webkit-transform: translate3d(0, -2000px, 0);\n transform: translate3d(0, -2000px, 0);\n }\n}\n@keyframes Toastify__bounceOutUp {\n 20% {\n -webkit-transform: translate3d(0, -10px, 0);\n transform: translate3d(0, -10px, 0);\n }\n 40%, 45% {\n opacity: 1;\n -webkit-transform: translate3d(0, 20px, 0);\n transform: translate3d(0, 20px, 0);\n }\n to {\n opacity: 0;\n -webkit-transform: translate3d(0, -2000px, 0);\n transform: translate3d(0, -2000px, 0);\n }\n}\n@-webkit-keyframes Toastify__bounceInDown {\n from, 60%, 75%, 90%, to {\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n }\n 0% {\n opacity: 0;\n -webkit-transform: translate3d(0, -3000px, 0);\n transform: translate3d(0, -3000px, 0);\n }\n 60% {\n opacity: 1;\n -webkit-transform: translate3d(0, 25px, 0);\n transform: translate3d(0, 25px, 0);\n }\n 75% {\n -webkit-transform: translate3d(0, -10px, 0);\n transform: translate3d(0, -10px, 0);\n }\n 90% {\n -webkit-transform: translate3d(0, 5px, 0);\n transform: translate3d(0, 5px, 0);\n }\n to {\n -webkit-transform: none;\n transform: none;\n }\n}\n@keyframes Toastify__bounceInDown {\n from, 60%, 75%, 90%, to {\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n }\n 0% {\n opacity: 0;\n -webkit-transform: translate3d(0, -3000px, 0);\n transform: translate3d(0, -3000px, 0);\n }\n 60% {\n opacity: 1;\n -webkit-transform: translate3d(0, 25px, 0);\n transform: translate3d(0, 25px, 0);\n }\n 75% {\n -webkit-transform: translate3d(0, -10px, 0);\n transform: translate3d(0, -10px, 0);\n }\n 90% {\n -webkit-transform: translate3d(0, 5px, 0);\n transform: translate3d(0, 5px, 0);\n }\n to {\n -webkit-transform: none;\n transform: none;\n }\n}\n@-webkit-keyframes Toastify__bounceOutDown {\n 20% {\n -webkit-transform: translate3d(0, 10px, 0);\n transform: translate3d(0, 10px, 0);\n }\n 40%, 45% {\n opacity: 1;\n -webkit-transform: translate3d(0, -20px, 0);\n transform: translate3d(0, -20px, 0);\n }\n to {\n opacity: 0;\n -webkit-transform: translate3d(0, 2000px, 0);\n transform: translate3d(0, 2000px, 0);\n }\n}\n@keyframes Toastify__bounceOutDown {\n 20% {\n -webkit-transform: translate3d(0, 10px, 0);\n transform: translate3d(0, 10px, 0);\n }\n 40%, 45% {\n opacity: 1;\n -webkit-transform: translate3d(0, -20px, 0);\n transform: translate3d(0, -20px, 0);\n }\n to {\n opacity: 0;\n -webkit-transform: translate3d(0, 2000px, 0);\n transform: translate3d(0, 2000px, 0);\n }\n}\n.Toastify__bounce-enter--top-left, .Toastify__bounce-enter--bottom-left {\n -webkit-animation-name: Toastify__bounceInLeft;\n animation-name: Toastify__bounceInLeft;\n}\n.Toastify__bounce-enter--top-right, .Toastify__bounce-enter--bottom-right {\n -webkit-animation-name: Toastify__bounceInRight;\n animation-name: Toastify__bounceInRight;\n}\n.Toastify__bounce-enter--top-center {\n -webkit-animation-name: Toastify__bounceInDown;\n animation-name: Toastify__bounceInDown;\n}\n.Toastify__bounce-enter--bottom-center {\n -webkit-animation-name: Toastify__bounceInUp;\n animation-name: Toastify__bounceInUp;\n}\n\n.Toastify__bounce-exit--top-left, .Toastify__bounce-exit--bottom-left {\n -webkit-animation-name: Toastify__bounceOutLeft;\n animation-name: Toastify__bounceOutLeft;\n}\n.Toastify__bounce-exit--top-right, .Toastify__bounce-exit--bottom-right {\n -webkit-animation-name: Toastify__bounceOutRight;\n animation-name: Toastify__bounceOutRight;\n}\n.Toastify__bounce-exit--top-center {\n -webkit-animation-name: Toastify__bounceOutUp;\n animation-name: Toastify__bounceOutUp;\n}\n.Toastify__bounce-exit--bottom-center {\n -webkit-animation-name: Toastify__bounceOutDown;\n animation-name: Toastify__bounceOutDown;\n}\n\n@-webkit-keyframes Toastify__zoomIn {\n from {\n opacity: 0;\n -webkit-transform: scale3d(0.3, 0.3, 0.3);\n transform: scale3d(0.3, 0.3, 0.3);\n }\n 50% {\n opacity: 1;\n }\n}\n\n@keyframes Toastify__zoomIn {\n from {\n opacity: 0;\n -webkit-transform: scale3d(0.3, 0.3, 0.3);\n transform: scale3d(0.3, 0.3, 0.3);\n }\n 50% {\n opacity: 1;\n }\n}\n@-webkit-keyframes Toastify__zoomOut {\n from {\n opacity: 1;\n }\n 50% {\n opacity: 0;\n -webkit-transform: scale3d(0.3, 0.3, 0.3);\n transform: scale3d(0.3, 0.3, 0.3);\n }\n to {\n opacity: 0;\n }\n}\n@keyframes Toastify__zoomOut {\n from {\n opacity: 1;\n }\n 50% {\n opacity: 0;\n -webkit-transform: scale3d(0.3, 0.3, 0.3);\n transform: scale3d(0.3, 0.3, 0.3);\n }\n to {\n opacity: 0;\n }\n}\n.Toastify__zoom-enter {\n -webkit-animation-name: Toastify__zoomIn;\n animation-name: Toastify__zoomIn;\n}\n\n.Toastify__zoom-exit {\n -webkit-animation-name: Toastify__zoomOut;\n animation-name: Toastify__zoomOut;\n}\n\n@-webkit-keyframes Toastify__flipIn {\n from {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n opacity: 0;\n }\n 40% {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n }\n 60% {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\n transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\n opacity: 1;\n }\n 80% {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\n transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\n }\n to {\n -webkit-transform: perspective(400px);\n transform: perspective(400px);\n }\n}\n\n@keyframes Toastify__flipIn {\n from {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n opacity: 0;\n }\n 40% {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n }\n 60% {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\n transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\n opacity: 1;\n }\n 80% {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\n transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\n }\n to {\n -webkit-transform: perspective(400px);\n transform: perspective(400px);\n }\n}\n@-webkit-keyframes Toastify__flipOut {\n from {\n -webkit-transform: perspective(400px);\n transform: perspective(400px);\n }\n 30% {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n opacity: 1;\n }\n to {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n opacity: 0;\n }\n}\n@keyframes Toastify__flipOut {\n from {\n -webkit-transform: perspective(400px);\n transform: perspective(400px);\n }\n 30% {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n opacity: 1;\n }\n to {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n opacity: 0;\n }\n}\n.Toastify__flip-enter {\n -webkit-animation-name: Toastify__flipIn;\n animation-name: Toastify__flipIn;\n}\n\n.Toastify__flip-exit {\n -webkit-animation-name: Toastify__flipOut;\n animation-name: Toastify__flipOut;\n}\n\n@-webkit-keyframes Toastify__slideInRight {\n from {\n -webkit-transform: translate3d(110%, 0, 0);\n transform: translate3d(110%, 0, 0);\n visibility: visible;\n }\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n@keyframes Toastify__slideInRight {\n from {\n -webkit-transform: translate3d(110%, 0, 0);\n transform: translate3d(110%, 0, 0);\n visibility: visible;\n }\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n@-webkit-keyframes Toastify__slideInLeft {\n from {\n -webkit-transform: translate3d(-110%, 0, 0);\n transform: translate3d(-110%, 0, 0);\n visibility: visible;\n }\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n@keyframes Toastify__slideInLeft {\n from {\n -webkit-transform: translate3d(-110%, 0, 0);\n transform: translate3d(-110%, 0, 0);\n visibility: visible;\n }\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n@-webkit-keyframes Toastify__slideInUp {\n from {\n -webkit-transform: translate3d(0, 110%, 0);\n transform: translate3d(0, 110%, 0);\n visibility: visible;\n }\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n@keyframes Toastify__slideInUp {\n from {\n -webkit-transform: translate3d(0, 110%, 0);\n transform: translate3d(0, 110%, 0);\n visibility: visible;\n }\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n@-webkit-keyframes Toastify__slideInDown {\n from {\n -webkit-transform: translate3d(0, -110%, 0);\n transform: translate3d(0, -110%, 0);\n visibility: visible;\n }\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n@keyframes Toastify__slideInDown {\n from {\n -webkit-transform: translate3d(0, -110%, 0);\n transform: translate3d(0, -110%, 0);\n visibility: visible;\n }\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n@-webkit-keyframes Toastify__slideOutRight {\n from {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n to {\n visibility: hidden;\n -webkit-transform: translate3d(110%, 0, 0);\n transform: translate3d(110%, 0, 0);\n }\n}\n@keyframes Toastify__slideOutRight {\n from {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n to {\n visibility: hidden;\n -webkit-transform: translate3d(110%, 0, 0);\n transform: translate3d(110%, 0, 0);\n }\n}\n@-webkit-keyframes Toastify__slideOutLeft {\n from {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n to {\n visibility: hidden;\n -webkit-transform: translate3d(-110%, 0, 0);\n transform: translate3d(-110%, 0, 0);\n }\n}\n@keyframes Toastify__slideOutLeft {\n from {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n to {\n visibility: hidden;\n -webkit-transform: translate3d(-110%, 0, 0);\n transform: translate3d(-110%, 0, 0);\n }\n}\n@-webkit-keyframes Toastify__slideOutDown {\n from {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n to {\n visibility: hidden;\n -webkit-transform: translate3d(0, 500px, 0);\n transform: translate3d(0, 500px, 0);\n }\n}\n@keyframes Toastify__slideOutDown {\n from {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n to {\n visibility: hidden;\n -webkit-transform: translate3d(0, 500px, 0);\n transform: translate3d(0, 500px, 0);\n }\n}\n@-webkit-keyframes Toastify__slideOutUp {\n from {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n to {\n visibility: hidden;\n -webkit-transform: translate3d(0, -500px, 0);\n transform: translate3d(0, -500px, 0);\n }\n}\n@keyframes Toastify__slideOutUp {\n from {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n to {\n visibility: hidden;\n -webkit-transform: translate3d(0, -500px, 0);\n transform: translate3d(0, -500px, 0);\n }\n}\n.Toastify__slide-enter--top-left, .Toastify__slide-enter--bottom-left {\n -webkit-animation-name: Toastify__slideInLeft;\n animation-name: Toastify__slideInLeft;\n}\n.Toastify__slide-enter--top-right, .Toastify__slide-enter--bottom-right {\n -webkit-animation-name: Toastify__slideInRight;\n animation-name: Toastify__slideInRight;\n}\n.Toastify__slide-enter--top-center {\n -webkit-animation-name: Toastify__slideInDown;\n animation-name: Toastify__slideInDown;\n}\n.Toastify__slide-enter--bottom-center {\n -webkit-animation-name: Toastify__slideInUp;\n animation-name: Toastify__slideInUp;\n}\n\n.Toastify__slide-exit--top-left, .Toastify__slide-exit--bottom-left {\n -webkit-animation-name: Toastify__slideOutLeft;\n animation-name: Toastify__slideOutLeft;\n}\n.Toastify__slide-exit--top-right, .Toastify__slide-exit--bottom-right {\n -webkit-animation-name: Toastify__slideOutRight;\n animation-name: Toastify__slideOutRight;\n}\n.Toastify__slide-exit--top-center {\n -webkit-animation-name: Toastify__slideOutUp;\n animation-name: Toastify__slideOutUp;\n}\n.Toastify__slide-exit--bottom-center {\n -webkit-animation-name: Toastify__slideOutDown;\n animation-name: Toastify__slideOutDown;\n}\n\n@-webkit-keyframes Toastify__spin {\n from {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n to {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n@keyframes Toastify__spin {\n from {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n to {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n/*# sourceMappingURL=ReactToastify.css.map */\n","/*!\n * Bootstrap v4.5.2 (https://getbootstrap.com/)\n * Copyright 2011-2020 The Bootstrap Authors\n * Copyright 2011-2020 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n\n@import \"functions\";\n@import \"variables\";\n@import \"mixins\";\n@import \"root\";\n@import \"reboot\";\n@import \"type\";\n@import \"images\";\n@import \"code\";\n@import \"grid\";\n@import \"tables\";\n@import \"forms\";\n@import \"buttons\";\n@import \"transitions\";\n@import \"dropdown\";\n@import \"button-group\";\n@import \"input-group\";\n@import \"custom-forms\";\n@import \"nav\";\n@import \"navbar\";\n@import \"card\";\n@import \"breadcrumb\";\n@import \"pagination\";\n@import \"badge\";\n@import \"jumbotron\";\n@import \"alert\";\n@import \"progress\";\n@import \"media\";\n@import \"list-group\";\n@import \"close\";\n@import \"toasts\";\n@import \"modal\";\n@import \"tooltip\";\n@import \"popover\";\n@import \"carousel\";\n@import \"spinners\";\n@import \"utilities\";\n@import \"print\";\n","/*!\n * Bootstrap v4.5.2 (https://getbootstrap.com/)\n * Copyright 2011-2020 The Bootstrap Authors\n * Copyright 2011-2020 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n:root {\n --blue: #007bff;\n --indigo: #6610f2;\n --purple: #6f42c1;\n --pink: #e83e8c;\n --red: #dc3545;\n --orange: #fd7e14;\n --yellow: #ffc107;\n --green: #28a745;\n --teal: #20c997;\n --cyan: #17a2b8;\n --white: #fff;\n --gray: #6c757d;\n --gray-dark: #343a40;\n --primary: #007bff;\n --secondary: #6c757d;\n --success: #28a745;\n --info: #17a2b8;\n --warning: #ffc107;\n --danger: #dc3545;\n --light: #f8f9fa;\n --dark: #343a40;\n --breakpoint-xs: 0;\n --breakpoint-sm: 576px;\n --breakpoint-md: 768px;\n --breakpoint-lg: 992px;\n --breakpoint-xl: 1200px;\n --font-family-sans-serif: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\nhtml {\n font-family: sans-serif;\n line-height: 1.15;\n -webkit-text-size-adjust: 100%;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\narticle, aside, figcaption, figure, footer, header, hgroup, main, nav, section {\n display: block;\n}\n\nbody {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #212529;\n text-align: left;\n background-color: #fff;\n}\n\n[tabindex=\"-1\"]:focus:not(:focus-visible) {\n outline: 0 !important;\n}\n\nhr {\n box-sizing: content-box;\n height: 0;\n overflow: visible;\n}\n\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: 0.5rem;\n}\n\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nabbr[title],\nabbr[data-original-title] {\n text-decoration: underline;\n text-decoration: underline dotted;\n cursor: help;\n border-bottom: 0;\n text-decoration-skip-ink: none;\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: 700;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0;\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\nb,\nstrong {\n font-weight: bolder;\n}\n\nsmall {\n font-size: 80%;\n}\n\nsub,\nsup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -.25em;\n}\n\nsup {\n top: -.5em;\n}\n\na {\n color: #007bff;\n text-decoration: none;\n background-color: transparent;\n}\n\na:hover {\n color: #0056b3;\n text-decoration: underline;\n}\n\na:not([href]):not([class]) {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([class]):hover {\n color: inherit;\n text-decoration: none;\n}\n\npre,\ncode,\nkbd,\nsamp {\n font-family: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n font-size: 1em;\n}\n\npre {\n margin-top: 0;\n margin-bottom: 1rem;\n overflow: auto;\n -ms-overflow-style: scrollbar;\n}\n\nfigure {\n margin: 0 0 1rem;\n}\n\nimg {\n vertical-align: middle;\n border-style: none;\n}\n\nsvg {\n overflow: hidden;\n vertical-align: middle;\n}\n\ntable {\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n color: #6c757d;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n text-align: inherit;\n}\n\nlabel {\n display: inline-block;\n margin-bottom: 0.5rem;\n}\n\nbutton {\n border-radius: 0;\n}\n\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\nbutton,\ninput {\n overflow: visible;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\n[role=\"button\"] {\n cursor: pointer;\n}\n\nselect {\n word-wrap: normal;\n}\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\nbutton:not(:disabled),\n[type=\"button\"]:not(:disabled),\n[type=\"reset\"]:not(:disabled),\n[type=\"submit\"]:not(:disabled) {\n cursor: pointer;\n}\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n box-sizing: border-box;\n padding: 0;\n}\n\ntextarea {\n overflow: auto;\n resize: vertical;\n}\n\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n max-width: 100%;\n padding: 0;\n margin-bottom: .5rem;\n font-size: 1.5rem;\n line-height: inherit;\n color: inherit;\n white-space: normal;\n}\n\nprogress {\n vertical-align: baseline;\n}\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type=\"search\"] {\n outline-offset: -2px;\n -webkit-appearance: none;\n}\n\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n::-webkit-file-upload-button {\n font: inherit;\n -webkit-appearance: button;\n}\n\noutput {\n display: inline-block;\n}\n\nsummary {\n display: list-item;\n cursor: pointer;\n}\n\ntemplate {\n display: none;\n}\n\n[hidden] {\n display: none !important;\n}\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n margin-bottom: 0.5rem;\n font-weight: 500;\n line-height: 1.2;\n}\n\nh1, .h1 {\n font-size: 2.5rem;\n}\n\nh2, .h2 {\n font-size: 2rem;\n}\n\nh3, .h3 {\n font-size: 1.75rem;\n}\n\nh4, .h4 {\n font-size: 1.5rem;\n}\n\nh5, .h5 {\n font-size: 1.25rem;\n}\n\nh6, .h6 {\n font-size: 1rem;\n}\n\n.lead {\n font-size: 1.25rem;\n font-weight: 300;\n}\n\n.display-1 {\n font-size: 6rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\n.display-2 {\n font-size: 5.5rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\n.display-3 {\n font-size: 4.5rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\n.display-4 {\n font-size: 3.5rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\nhr {\n margin-top: 1rem;\n margin-bottom: 1rem;\n border: 0;\n border-top: 1px solid rgba(0, 0, 0, 0.1);\n}\n\nsmall,\n.small {\n font-size: 80%;\n font-weight: 400;\n}\n\nmark,\n.mark {\n padding: 0.2em;\n background-color: #fcf8e3;\n}\n\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n\n.list-inline {\n padding-left: 0;\n list-style: none;\n}\n\n.list-inline-item {\n display: inline-block;\n}\n\n.list-inline-item:not(:last-child) {\n margin-right: 0.5rem;\n}\n\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\n\n.blockquote {\n margin-bottom: 1rem;\n font-size: 1.25rem;\n}\n\n.blockquote-footer {\n display: block;\n font-size: 80%;\n color: #6c757d;\n}\n\n.blockquote-footer::before {\n content: \"\\2014\\00A0\";\n}\n\n.img-fluid {\n max-width: 100%;\n height: auto;\n}\n\n.img-thumbnail {\n padding: 0.25rem;\n background-color: #fff;\n border: 1px solid #dee2e6;\n border-radius: 0.25rem;\n max-width: 100%;\n height: auto;\n}\n\n.figure {\n display: inline-block;\n}\n\n.figure-img {\n margin-bottom: 0.5rem;\n line-height: 1;\n}\n\n.figure-caption {\n font-size: 90%;\n color: #6c757d;\n}\n\ncode {\n font-size: 87.5%;\n color: #e83e8c;\n word-wrap: break-word;\n}\n\na > code {\n color: inherit;\n}\n\nkbd {\n padding: 0.2rem 0.4rem;\n font-size: 87.5%;\n color: #fff;\n background-color: #212529;\n border-radius: 0.2rem;\n}\n\nkbd kbd {\n padding: 0;\n font-size: 100%;\n font-weight: 700;\n}\n\npre {\n display: block;\n font-size: 87.5%;\n color: #212529;\n}\n\npre code {\n font-size: inherit;\n color: inherit;\n word-break: normal;\n}\n\n.pre-scrollable {\n max-height: 340px;\n overflow-y: scroll;\n}\n\n.container,\n.container-fluid,\n.container-sm,\n.container-md,\n.container-lg,\n.container-xl {\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n}\n\n@media (min-width: 576px) {\n .container, .container-sm {\n max-width: 540px;\n }\n}\n\n@media (min-width: 768px) {\n .container, .container-sm, .container-md {\n max-width: 720px;\n }\n}\n\n@media (min-width: 992px) {\n .container, .container-sm, .container-md, .container-lg {\n max-width: 960px;\n }\n}\n\n@media (min-width: 1200px) {\n .container, .container-sm, .container-md, .container-lg, .container-xl {\n max-width: 1140px;\n }\n}\n\n.row {\n display: flex;\n flex-wrap: wrap;\n margin-right: -15px;\n margin-left: -15px;\n}\n\n.no-gutters {\n margin-right: 0;\n margin-left: 0;\n}\n\n.no-gutters > .col,\n.no-gutters > [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0;\n}\n\n.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,\n.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,\n.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,\n.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,\n.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,\n.col-xl-auto {\n position: relative;\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n}\n\n.col {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n}\n\n.row-cols-1 > * {\n flex: 0 0 100%;\n max-width: 100%;\n}\n\n.row-cols-2 > * {\n flex: 0 0 50%;\n max-width: 50%;\n}\n\n.row-cols-3 > * {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n}\n\n.row-cols-4 > * {\n flex: 0 0 25%;\n max-width: 25%;\n}\n\n.row-cols-5 > * {\n flex: 0 0 20%;\n max-width: 20%;\n}\n\n.row-cols-6 > * {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n}\n\n.col-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n}\n\n.col-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n}\n\n.col-3 {\n flex: 0 0 25%;\n max-width: 25%;\n}\n\n.col-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n}\n\n.col-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n}\n\n.col-6 {\n flex: 0 0 50%;\n max-width: 50%;\n}\n\n.col-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n}\n\n.col-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n}\n\n.col-9 {\n flex: 0 0 75%;\n max-width: 75%;\n}\n\n.col-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n}\n\n.col-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n}\n\n.col-12 {\n flex: 0 0 100%;\n max-width: 100%;\n}\n\n.order-first {\n order: -1;\n}\n\n.order-last {\n order: 13;\n}\n\n.order-0 {\n order: 0;\n}\n\n.order-1 {\n order: 1;\n}\n\n.order-2 {\n order: 2;\n}\n\n.order-3 {\n order: 3;\n}\n\n.order-4 {\n order: 4;\n}\n\n.order-5 {\n order: 5;\n}\n\n.order-6 {\n order: 6;\n}\n\n.order-7 {\n order: 7;\n}\n\n.order-8 {\n order: 8;\n}\n\n.order-9 {\n order: 9;\n}\n\n.order-10 {\n order: 10;\n}\n\n.order-11 {\n order: 11;\n}\n\n.order-12 {\n order: 12;\n}\n\n.offset-1 {\n margin-left: 8.333333%;\n}\n\n.offset-2 {\n margin-left: 16.666667%;\n}\n\n.offset-3 {\n margin-left: 25%;\n}\n\n.offset-4 {\n margin-left: 33.333333%;\n}\n\n.offset-5 {\n margin-left: 41.666667%;\n}\n\n.offset-6 {\n margin-left: 50%;\n}\n\n.offset-7 {\n margin-left: 58.333333%;\n}\n\n.offset-8 {\n margin-left: 66.666667%;\n}\n\n.offset-9 {\n margin-left: 75%;\n}\n\n.offset-10 {\n margin-left: 83.333333%;\n}\n\n.offset-11 {\n margin-left: 91.666667%;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .row-cols-sm-1 > * {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .row-cols-sm-2 > * {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .row-cols-sm-3 > * {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .row-cols-sm-4 > * {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .row-cols-sm-5 > * {\n flex: 0 0 20%;\n max-width: 20%;\n }\n .row-cols-sm-6 > * {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n .col-sm-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-sm-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-sm-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-sm-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-sm-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-sm-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-sm-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-sm-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-sm-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-sm-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-sm-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-sm-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-sm-first {\n order: -1;\n }\n .order-sm-last {\n order: 13;\n }\n .order-sm-0 {\n order: 0;\n }\n .order-sm-1 {\n order: 1;\n }\n .order-sm-2 {\n order: 2;\n }\n .order-sm-3 {\n order: 3;\n }\n .order-sm-4 {\n order: 4;\n }\n .order-sm-5 {\n order: 5;\n }\n .order-sm-6 {\n order: 6;\n }\n .order-sm-7 {\n order: 7;\n }\n .order-sm-8 {\n order: 8;\n }\n .order-sm-9 {\n order: 9;\n }\n .order-sm-10 {\n order: 10;\n }\n .order-sm-11 {\n order: 11;\n }\n .order-sm-12 {\n order: 12;\n }\n .offset-sm-0 {\n margin-left: 0;\n }\n .offset-sm-1 {\n margin-left: 8.333333%;\n }\n .offset-sm-2 {\n margin-left: 16.666667%;\n }\n .offset-sm-3 {\n margin-left: 25%;\n }\n .offset-sm-4 {\n margin-left: 33.333333%;\n }\n .offset-sm-5 {\n margin-left: 41.666667%;\n }\n .offset-sm-6 {\n margin-left: 50%;\n }\n .offset-sm-7 {\n margin-left: 58.333333%;\n }\n .offset-sm-8 {\n margin-left: 66.666667%;\n }\n .offset-sm-9 {\n margin-left: 75%;\n }\n .offset-sm-10 {\n margin-left: 83.333333%;\n }\n .offset-sm-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: 768px) {\n .col-md {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .row-cols-md-1 > * {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .row-cols-md-2 > * {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .row-cols-md-3 > * {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .row-cols-md-4 > * {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .row-cols-md-5 > * {\n flex: 0 0 20%;\n max-width: 20%;\n }\n .row-cols-md-6 > * {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n .col-md-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-md-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-md-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-md-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-md-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-md-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-md-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-md-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-md-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-md-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-md-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-md-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-md-first {\n order: -1;\n }\n .order-md-last {\n order: 13;\n }\n .order-md-0 {\n order: 0;\n }\n .order-md-1 {\n order: 1;\n }\n .order-md-2 {\n order: 2;\n }\n .order-md-3 {\n order: 3;\n }\n .order-md-4 {\n order: 4;\n }\n .order-md-5 {\n order: 5;\n }\n .order-md-6 {\n order: 6;\n }\n .order-md-7 {\n order: 7;\n }\n .order-md-8 {\n order: 8;\n }\n .order-md-9 {\n order: 9;\n }\n .order-md-10 {\n order: 10;\n }\n .order-md-11 {\n order: 11;\n }\n .order-md-12 {\n order: 12;\n }\n .offset-md-0 {\n margin-left: 0;\n }\n .offset-md-1 {\n margin-left: 8.333333%;\n }\n .offset-md-2 {\n margin-left: 16.666667%;\n }\n .offset-md-3 {\n margin-left: 25%;\n }\n .offset-md-4 {\n margin-left: 33.333333%;\n }\n .offset-md-5 {\n margin-left: 41.666667%;\n }\n .offset-md-6 {\n margin-left: 50%;\n }\n .offset-md-7 {\n margin-left: 58.333333%;\n }\n .offset-md-8 {\n margin-left: 66.666667%;\n }\n .offset-md-9 {\n margin-left: 75%;\n }\n .offset-md-10 {\n margin-left: 83.333333%;\n }\n .offset-md-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: 992px) {\n .col-lg {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .row-cols-lg-1 > * {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .row-cols-lg-2 > * {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .row-cols-lg-3 > * {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .row-cols-lg-4 > * {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .row-cols-lg-5 > * {\n flex: 0 0 20%;\n max-width: 20%;\n }\n .row-cols-lg-6 > * {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n .col-lg-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-lg-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-lg-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-lg-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-lg-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-lg-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-lg-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-lg-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-lg-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-lg-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-lg-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-lg-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-lg-first {\n order: -1;\n }\n .order-lg-last {\n order: 13;\n }\n .order-lg-0 {\n order: 0;\n }\n .order-lg-1 {\n order: 1;\n }\n .order-lg-2 {\n order: 2;\n }\n .order-lg-3 {\n order: 3;\n }\n .order-lg-4 {\n order: 4;\n }\n .order-lg-5 {\n order: 5;\n }\n .order-lg-6 {\n order: 6;\n }\n .order-lg-7 {\n order: 7;\n }\n .order-lg-8 {\n order: 8;\n }\n .order-lg-9 {\n order: 9;\n }\n .order-lg-10 {\n order: 10;\n }\n .order-lg-11 {\n order: 11;\n }\n .order-lg-12 {\n order: 12;\n }\n .offset-lg-0 {\n margin-left: 0;\n }\n .offset-lg-1 {\n margin-left: 8.333333%;\n }\n .offset-lg-2 {\n margin-left: 16.666667%;\n }\n .offset-lg-3 {\n margin-left: 25%;\n }\n .offset-lg-4 {\n margin-left: 33.333333%;\n }\n .offset-lg-5 {\n margin-left: 41.666667%;\n }\n .offset-lg-6 {\n margin-left: 50%;\n }\n .offset-lg-7 {\n margin-left: 58.333333%;\n }\n .offset-lg-8 {\n margin-left: 66.666667%;\n }\n .offset-lg-9 {\n margin-left: 75%;\n }\n .offset-lg-10 {\n margin-left: 83.333333%;\n }\n .offset-lg-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: 1200px) {\n .col-xl {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .row-cols-xl-1 > * {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .row-cols-xl-2 > * {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .row-cols-xl-3 > * {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .row-cols-xl-4 > * {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .row-cols-xl-5 > * {\n flex: 0 0 20%;\n max-width: 20%;\n }\n .row-cols-xl-6 > * {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n .col-xl-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-xl-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-xl-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-xl-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-xl-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-xl-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-xl-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-xl-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-xl-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-xl-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-xl-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-xl-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-xl-first {\n order: -1;\n }\n .order-xl-last {\n order: 13;\n }\n .order-xl-0 {\n order: 0;\n }\n .order-xl-1 {\n order: 1;\n }\n .order-xl-2 {\n order: 2;\n }\n .order-xl-3 {\n order: 3;\n }\n .order-xl-4 {\n order: 4;\n }\n .order-xl-5 {\n order: 5;\n }\n .order-xl-6 {\n order: 6;\n }\n .order-xl-7 {\n order: 7;\n }\n .order-xl-8 {\n order: 8;\n }\n .order-xl-9 {\n order: 9;\n }\n .order-xl-10 {\n order: 10;\n }\n .order-xl-11 {\n order: 11;\n }\n .order-xl-12 {\n order: 12;\n }\n .offset-xl-0 {\n margin-left: 0;\n }\n .offset-xl-1 {\n margin-left: 8.333333%;\n }\n .offset-xl-2 {\n margin-left: 16.666667%;\n }\n .offset-xl-3 {\n margin-left: 25%;\n }\n .offset-xl-4 {\n margin-left: 33.333333%;\n }\n .offset-xl-5 {\n margin-left: 41.666667%;\n }\n .offset-xl-6 {\n margin-left: 50%;\n }\n .offset-xl-7 {\n margin-left: 58.333333%;\n }\n .offset-xl-8 {\n margin-left: 66.666667%;\n }\n .offset-xl-9 {\n margin-left: 75%;\n }\n .offset-xl-10 {\n margin-left: 83.333333%;\n }\n .offset-xl-11 {\n margin-left: 91.666667%;\n }\n}\n\n.table {\n width: 100%;\n margin-bottom: 1rem;\n color: #212529;\n}\n\n.table th,\n.table td {\n padding: 0.75rem;\n vertical-align: top;\n border-top: 1px solid #dee2e6;\n}\n\n.table thead th {\n vertical-align: bottom;\n border-bottom: 2px solid #dee2e6;\n}\n\n.table tbody + tbody {\n border-top: 2px solid #dee2e6;\n}\n\n.table-sm th,\n.table-sm td {\n padding: 0.3rem;\n}\n\n.table-bordered {\n border: 1px solid #dee2e6;\n}\n\n.table-bordered th,\n.table-bordered td {\n border: 1px solid #dee2e6;\n}\n\n.table-bordered thead th,\n.table-bordered thead td {\n border-bottom-width: 2px;\n}\n\n.table-borderless th,\n.table-borderless td,\n.table-borderless thead th,\n.table-borderless tbody + tbody {\n border: 0;\n}\n\n.table-striped tbody tr:nth-of-type(odd) {\n background-color: rgba(0, 0, 0, 0.05);\n}\n\n.table-hover tbody tr:hover {\n color: #212529;\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-primary,\n.table-primary > th,\n.table-primary > td {\n background-color: #b8daff;\n}\n\n.table-primary th,\n.table-primary td,\n.table-primary thead th,\n.table-primary tbody + tbody {\n border-color: #7abaff;\n}\n\n.table-hover .table-primary:hover {\n background-color: #9fcdff;\n}\n\n.table-hover .table-primary:hover > td,\n.table-hover .table-primary:hover > th {\n background-color: #9fcdff;\n}\n\n.table-secondary,\n.table-secondary > th,\n.table-secondary > td {\n background-color: #d6d8db;\n}\n\n.table-secondary th,\n.table-secondary td,\n.table-secondary thead th,\n.table-secondary tbody + tbody {\n border-color: #b3b7bb;\n}\n\n.table-hover .table-secondary:hover {\n background-color: #c8cbcf;\n}\n\n.table-hover .table-secondary:hover > td,\n.table-hover .table-secondary:hover > th {\n background-color: #c8cbcf;\n}\n\n.table-success,\n.table-success > th,\n.table-success > td {\n background-color: #c3e6cb;\n}\n\n.table-success th,\n.table-success td,\n.table-success thead th,\n.table-success tbody + tbody {\n border-color: #8fd19e;\n}\n\n.table-hover .table-success:hover {\n background-color: #b1dfbb;\n}\n\n.table-hover .table-success:hover > td,\n.table-hover .table-success:hover > th {\n background-color: #b1dfbb;\n}\n\n.table-info,\n.table-info > th,\n.table-info > td {\n background-color: #bee5eb;\n}\n\n.table-info th,\n.table-info td,\n.table-info thead th,\n.table-info tbody + tbody {\n border-color: #86cfda;\n}\n\n.table-hover .table-info:hover {\n background-color: #abdde5;\n}\n\n.table-hover .table-info:hover > td,\n.table-hover .table-info:hover > th {\n background-color: #abdde5;\n}\n\n.table-warning,\n.table-warning > th,\n.table-warning > td {\n background-color: #ffeeba;\n}\n\n.table-warning th,\n.table-warning td,\n.table-warning thead th,\n.table-warning tbody + tbody {\n border-color: #ffdf7e;\n}\n\n.table-hover .table-warning:hover {\n background-color: #ffe8a1;\n}\n\n.table-hover .table-warning:hover > td,\n.table-hover .table-warning:hover > th {\n background-color: #ffe8a1;\n}\n\n.table-danger,\n.table-danger > th,\n.table-danger > td {\n background-color: #f5c6cb;\n}\n\n.table-danger th,\n.table-danger td,\n.table-danger thead th,\n.table-danger tbody + tbody {\n border-color: #ed969e;\n}\n\n.table-hover .table-danger:hover {\n background-color: #f1b0b7;\n}\n\n.table-hover .table-danger:hover > td,\n.table-hover .table-danger:hover > th {\n background-color: #f1b0b7;\n}\n\n.table-light,\n.table-light > th,\n.table-light > td {\n background-color: #fdfdfe;\n}\n\n.table-light th,\n.table-light td,\n.table-light thead th,\n.table-light tbody + tbody {\n border-color: #fbfcfc;\n}\n\n.table-hover .table-light:hover {\n background-color: #ececf6;\n}\n\n.table-hover .table-light:hover > td,\n.table-hover .table-light:hover > th {\n background-color: #ececf6;\n}\n\n.table-dark,\n.table-dark > th,\n.table-dark > td {\n background-color: #c6c8ca;\n}\n\n.table-dark th,\n.table-dark td,\n.table-dark thead th,\n.table-dark tbody + tbody {\n border-color: #95999c;\n}\n\n.table-hover .table-dark:hover {\n background-color: #b9bbbe;\n}\n\n.table-hover .table-dark:hover > td,\n.table-hover .table-dark:hover > th {\n background-color: #b9bbbe;\n}\n\n.table-active,\n.table-active > th,\n.table-active > td {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-hover .table-active:hover {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-hover .table-active:hover > td,\n.table-hover .table-active:hover > th {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table .thead-dark th {\n color: #fff;\n background-color: #343a40;\n border-color: #454d55;\n}\n\n.table .thead-light th {\n color: #495057;\n background-color: #e9ecef;\n border-color: #dee2e6;\n}\n\n.table-dark {\n color: #fff;\n background-color: #343a40;\n}\n\n.table-dark th,\n.table-dark td,\n.table-dark thead th {\n border-color: #454d55;\n}\n\n.table-dark.table-bordered {\n border: 0;\n}\n\n.table-dark.table-striped tbody tr:nth-of-type(odd) {\n background-color: rgba(255, 255, 255, 0.05);\n}\n\n.table-dark.table-hover tbody tr:hover {\n color: #fff;\n background-color: rgba(255, 255, 255, 0.075);\n}\n\n@media (max-width: 575.98px) {\n .table-responsive-sm {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n .table-responsive-sm > .table-bordered {\n border: 0;\n }\n}\n\n@media (max-width: 767.98px) {\n .table-responsive-md {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n .table-responsive-md > .table-bordered {\n border: 0;\n }\n}\n\n@media (max-width: 991.98px) {\n .table-responsive-lg {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n .table-responsive-lg > .table-bordered {\n border: 0;\n }\n}\n\n@media (max-width: 1199.98px) {\n .table-responsive-xl {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n .table-responsive-xl > .table-bordered {\n border: 0;\n }\n}\n\n.table-responsive {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n}\n\n.table-responsive > .table-bordered {\n border: 0;\n}\n\n.form-control {\n display: block;\n width: 100%;\n height: calc(1.5em + 0.75rem + 2px);\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #495057;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .form-control {\n transition: none;\n }\n}\n\n.form-control::-ms-expand {\n background-color: transparent;\n border: 0;\n}\n\n.form-control:-moz-focusring {\n color: transparent;\n text-shadow: 0 0 0 #495057;\n}\n\n.form-control:focus {\n color: #495057;\n background-color: #fff;\n border-color: #80bdff;\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.form-control::placeholder {\n color: #6c757d;\n opacity: 1;\n}\n\n.form-control:disabled, .form-control[readonly] {\n background-color: #e9ecef;\n opacity: 1;\n}\n\ninput[type=\"date\"].form-control,\ninput[type=\"time\"].form-control,\ninput[type=\"datetime-local\"].form-control,\ninput[type=\"month\"].form-control {\n appearance: none;\n}\n\nselect.form-control:focus::-ms-value {\n color: #495057;\n background-color: #fff;\n}\n\n.form-control-file,\n.form-control-range {\n display: block;\n width: 100%;\n}\n\n.col-form-label {\n padding-top: calc(0.375rem + 1px);\n padding-bottom: calc(0.375rem + 1px);\n margin-bottom: 0;\n font-size: inherit;\n line-height: 1.5;\n}\n\n.col-form-label-lg {\n padding-top: calc(0.5rem + 1px);\n padding-bottom: calc(0.5rem + 1px);\n font-size: 1.25rem;\n line-height: 1.5;\n}\n\n.col-form-label-sm {\n padding-top: calc(0.25rem + 1px);\n padding-bottom: calc(0.25rem + 1px);\n font-size: 0.875rem;\n line-height: 1.5;\n}\n\n.form-control-plaintext {\n display: block;\n width: 100%;\n padding: 0.375rem 0;\n margin-bottom: 0;\n font-size: 1rem;\n line-height: 1.5;\n color: #212529;\n background-color: transparent;\n border: solid transparent;\n border-width: 1px 0;\n}\n\n.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg {\n padding-right: 0;\n padding-left: 0;\n}\n\n.form-control-sm {\n height: calc(1.5em + 0.5rem + 2px);\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem;\n}\n\n.form-control-lg {\n height: calc(1.5em + 1rem + 2px);\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem;\n}\n\nselect.form-control[size], select.form-control[multiple] {\n height: auto;\n}\n\ntextarea.form-control {\n height: auto;\n}\n\n.form-group {\n margin-bottom: 1rem;\n}\n\n.form-text {\n display: block;\n margin-top: 0.25rem;\n}\n\n.form-row {\n display: flex;\n flex-wrap: wrap;\n margin-right: -5px;\n margin-left: -5px;\n}\n\n.form-row > .col,\n.form-row > [class*=\"col-\"] {\n padding-right: 5px;\n padding-left: 5px;\n}\n\n.form-check {\n position: relative;\n display: block;\n padding-left: 1.25rem;\n}\n\n.form-check-input {\n position: absolute;\n margin-top: 0.3rem;\n margin-left: -1.25rem;\n}\n\n.form-check-input[disabled] ~ .form-check-label,\n.form-check-input:disabled ~ .form-check-label {\n color: #6c757d;\n}\n\n.form-check-label {\n margin-bottom: 0;\n}\n\n.form-check-inline {\n display: inline-flex;\n align-items: center;\n padding-left: 0;\n margin-right: 0.75rem;\n}\n\n.form-check-inline .form-check-input {\n position: static;\n margin-top: 0;\n margin-right: 0.3125rem;\n margin-left: 0;\n}\n\n.valid-feedback {\n display: none;\n width: 100%;\n margin-top: 0.25rem;\n font-size: 80%;\n color: #28a745;\n}\n\n.valid-tooltip {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 5;\n display: none;\n max-width: 100%;\n padding: 0.25rem 0.5rem;\n margin-top: .1rem;\n font-size: 0.875rem;\n line-height: 1.5;\n color: #fff;\n background-color: rgba(40, 167, 69, 0.9);\n border-radius: 0.25rem;\n}\n\n.was-validated :valid ~ .valid-feedback,\n.was-validated :valid ~ .valid-tooltip,\n.is-valid ~ .valid-feedback,\n.is-valid ~ .valid-tooltip {\n display: block;\n}\n\n.was-validated .form-control:valid, .form-control.is-valid {\n border-color: #28a745;\n padding-right: calc(1.5em + 0.75rem);\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\");\n background-repeat: no-repeat;\n background-position: right calc(0.375em + 0.1875rem) center;\n background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n\n.was-validated .form-control:valid:focus, .form-control.is-valid:focus {\n border-color: #28a745;\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n\n.was-validated textarea.form-control:valid, textarea.form-control.is-valid {\n padding-right: calc(1.5em + 0.75rem);\n background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);\n}\n\n.was-validated .custom-select:valid, .custom-select.is-valid {\n border-color: #28a745;\n padding-right: calc(0.75em + 2.3125rem);\n background: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e\") no-repeat right 0.75rem center/8px 10px, url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n\n.was-validated .custom-select:valid:focus, .custom-select.is-valid:focus {\n border-color: #28a745;\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n\n.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {\n color: #28a745;\n}\n\n.was-validated .form-check-input:valid ~ .valid-feedback,\n.was-validated .form-check-input:valid ~ .valid-tooltip, .form-check-input.is-valid ~ .valid-feedback,\n.form-check-input.is-valid ~ .valid-tooltip {\n display: block;\n}\n\n.was-validated .custom-control-input:valid ~ .custom-control-label, .custom-control-input.is-valid ~ .custom-control-label {\n color: #28a745;\n}\n\n.was-validated .custom-control-input:valid ~ .custom-control-label::before, .custom-control-input.is-valid ~ .custom-control-label::before {\n border-color: #28a745;\n}\n\n.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before, .custom-control-input.is-valid:checked ~ .custom-control-label::before {\n border-color: #34ce57;\n background-color: #34ce57;\n}\n\n.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before, .custom-control-input.is-valid:focus ~ .custom-control-label::before {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n\n.was-validated .custom-control-input:valid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-valid:focus:not(:checked) ~ .custom-control-label::before {\n border-color: #28a745;\n}\n\n.was-validated .custom-file-input:valid ~ .custom-file-label, .custom-file-input.is-valid ~ .custom-file-label {\n border-color: #28a745;\n}\n\n.was-validated .custom-file-input:valid:focus ~ .custom-file-label, .custom-file-input.is-valid:focus ~ .custom-file-label {\n border-color: #28a745;\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n\n.invalid-feedback {\n display: none;\n width: 100%;\n margin-top: 0.25rem;\n font-size: 80%;\n color: #dc3545;\n}\n\n.invalid-tooltip {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 5;\n display: none;\n max-width: 100%;\n padding: 0.25rem 0.5rem;\n margin-top: .1rem;\n font-size: 0.875rem;\n line-height: 1.5;\n color: #fff;\n background-color: rgba(220, 53, 69, 0.9);\n border-radius: 0.25rem;\n}\n\n.was-validated :invalid ~ .invalid-feedback,\n.was-validated :invalid ~ .invalid-tooltip,\n.is-invalid ~ .invalid-feedback,\n.is-invalid ~ .invalid-tooltip {\n display: block;\n}\n\n.was-validated .form-control:invalid, .form-control.is-invalid {\n border-color: #dc3545;\n padding-right: calc(1.5em + 0.75rem);\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\");\n background-repeat: no-repeat;\n background-position: right calc(0.375em + 0.1875rem) center;\n background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n\n.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus {\n border-color: #dc3545;\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n\n.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid {\n padding-right: calc(1.5em + 0.75rem);\n background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);\n}\n\n.was-validated .custom-select:invalid, .custom-select.is-invalid {\n border-color: #dc3545;\n padding-right: calc(0.75em + 2.3125rem);\n background: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e\") no-repeat right 0.75rem center/8px 10px, url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n\n.was-validated .custom-select:invalid:focus, .custom-select.is-invalid:focus {\n border-color: #dc3545;\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n\n.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {\n color: #dc3545;\n}\n\n.was-validated .form-check-input:invalid ~ .invalid-feedback,\n.was-validated .form-check-input:invalid ~ .invalid-tooltip, .form-check-input.is-invalid ~ .invalid-feedback,\n.form-check-input.is-invalid ~ .invalid-tooltip {\n display: block;\n}\n\n.was-validated .custom-control-input:invalid ~ .custom-control-label, .custom-control-input.is-invalid ~ .custom-control-label {\n color: #dc3545;\n}\n\n.was-validated .custom-control-input:invalid ~ .custom-control-label::before, .custom-control-input.is-invalid ~ .custom-control-label::before {\n border-color: #dc3545;\n}\n\n.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before, .custom-control-input.is-invalid:checked ~ .custom-control-label::before {\n border-color: #e4606d;\n background-color: #e4606d;\n}\n\n.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before, .custom-control-input.is-invalid:focus ~ .custom-control-label::before {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n\n.was-validated .custom-control-input:invalid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-invalid:focus:not(:checked) ~ .custom-control-label::before {\n border-color: #dc3545;\n}\n\n.was-validated .custom-file-input:invalid ~ .custom-file-label, .custom-file-input.is-invalid ~ .custom-file-label {\n border-color: #dc3545;\n}\n\n.was-validated .custom-file-input:invalid:focus ~ .custom-file-label, .custom-file-input.is-invalid:focus ~ .custom-file-label {\n border-color: #dc3545;\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n\n.form-inline {\n display: flex;\n flex-flow: row wrap;\n align-items: center;\n}\n\n.form-inline .form-check {\n width: 100%;\n}\n\n@media (min-width: 576px) {\n .form-inline label {\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 0;\n }\n .form-inline .form-group {\n display: flex;\n flex: 0 0 auto;\n flex-flow: row wrap;\n align-items: center;\n margin-bottom: 0;\n }\n .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .form-inline .form-control-plaintext {\n display: inline-block;\n }\n .form-inline .input-group,\n .form-inline .custom-select {\n width: auto;\n }\n .form-inline .form-check {\n display: flex;\n align-items: center;\n justify-content: center;\n width: auto;\n padding-left: 0;\n }\n .form-inline .form-check-input {\n position: relative;\n flex-shrink: 0;\n margin-top: 0;\n margin-right: 0.25rem;\n margin-left: 0;\n }\n .form-inline .custom-control {\n align-items: center;\n justify-content: center;\n }\n .form-inline .custom-control-label {\n margin-bottom: 0;\n }\n}\n\n.btn {\n display: inline-block;\n font-weight: 400;\n color: #212529;\n text-align: center;\n vertical-align: middle;\n user-select: none;\n background-color: transparent;\n border: 1px solid transparent;\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n line-height: 1.5;\n border-radius: 0.25rem;\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .btn {\n transition: none;\n }\n}\n\n.btn:hover {\n color: #212529;\n text-decoration: none;\n}\n\n.btn:focus, .btn.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.btn.disabled, .btn:disabled {\n opacity: 0.65;\n}\n\n.btn:not(:disabled):not(.disabled) {\n cursor: pointer;\n}\n\na.btn.disabled,\nfieldset:disabled a.btn {\n pointer-events: none;\n}\n\n.btn-primary {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-primary:hover {\n color: #fff;\n background-color: #0069d9;\n border-color: #0062cc;\n}\n\n.btn-primary:focus, .btn-primary.focus {\n color: #fff;\n background-color: #0069d9;\n border-color: #0062cc;\n box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);\n}\n\n.btn-primary.disabled, .btn-primary:disabled {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-primary:not(:disabled):not(.disabled):active, .btn-primary:not(:disabled):not(.disabled).active,\n.show > .btn-primary.dropdown-toggle {\n color: #fff;\n background-color: #0062cc;\n border-color: #005cbf;\n}\n\n.btn-primary:not(:disabled):not(.disabled):active:focus, .btn-primary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-primary.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);\n}\n\n.btn-secondary {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n\n.btn-secondary:hover {\n color: #fff;\n background-color: #5a6268;\n border-color: #545b62;\n}\n\n.btn-secondary:focus, .btn-secondary.focus {\n color: #fff;\n background-color: #5a6268;\n border-color: #545b62;\n box-shadow: 0 0 0 0.2rem rgba(130, 138, 145, 0.5);\n}\n\n.btn-secondary.disabled, .btn-secondary:disabled {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n\n.btn-secondary:not(:disabled):not(.disabled):active, .btn-secondary:not(:disabled):not(.disabled).active,\n.show > .btn-secondary.dropdown-toggle {\n color: #fff;\n background-color: #545b62;\n border-color: #4e555b;\n}\n\n.btn-secondary:not(:disabled):not(.disabled):active:focus, .btn-secondary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-secondary.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(130, 138, 145, 0.5);\n}\n\n.btn-success {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-success:hover {\n color: #fff;\n background-color: #218838;\n border-color: #1e7e34;\n}\n\n.btn-success:focus, .btn-success.focus {\n color: #fff;\n background-color: #218838;\n border-color: #1e7e34;\n box-shadow: 0 0 0 0.2rem rgba(72, 180, 97, 0.5);\n}\n\n.btn-success.disabled, .btn-success:disabled {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-success:not(:disabled):not(.disabled):active, .btn-success:not(:disabled):not(.disabled).active,\n.show > .btn-success.dropdown-toggle {\n color: #fff;\n background-color: #1e7e34;\n border-color: #1c7430;\n}\n\n.btn-success:not(:disabled):not(.disabled):active:focus, .btn-success:not(:disabled):not(.disabled).active:focus,\n.show > .btn-success.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(72, 180, 97, 0.5);\n}\n\n.btn-info {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-info:hover {\n color: #fff;\n background-color: #138496;\n border-color: #117a8b;\n}\n\n.btn-info:focus, .btn-info.focus {\n color: #fff;\n background-color: #138496;\n border-color: #117a8b;\n box-shadow: 0 0 0 0.2rem rgba(58, 176, 195, 0.5);\n}\n\n.btn-info.disabled, .btn-info:disabled {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-info:not(:disabled):not(.disabled):active, .btn-info:not(:disabled):not(.disabled).active,\n.show > .btn-info.dropdown-toggle {\n color: #fff;\n background-color: #117a8b;\n border-color: #10707f;\n}\n\n.btn-info:not(:disabled):not(.disabled):active:focus, .btn-info:not(:disabled):not(.disabled).active:focus,\n.show > .btn-info.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(58, 176, 195, 0.5);\n}\n\n.btn-warning {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-warning:hover {\n color: #212529;\n background-color: #e0a800;\n border-color: #d39e00;\n}\n\n.btn-warning:focus, .btn-warning.focus {\n color: #212529;\n background-color: #e0a800;\n border-color: #d39e00;\n box-shadow: 0 0 0 0.2rem rgba(222, 170, 12, 0.5);\n}\n\n.btn-warning.disabled, .btn-warning:disabled {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-warning:not(:disabled):not(.disabled):active, .btn-warning:not(:disabled):not(.disabled).active,\n.show > .btn-warning.dropdown-toggle {\n color: #212529;\n background-color: #d39e00;\n border-color: #c69500;\n}\n\n.btn-warning:not(:disabled):not(.disabled):active:focus, .btn-warning:not(:disabled):not(.disabled).active:focus,\n.show > .btn-warning.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(222, 170, 12, 0.5);\n}\n\n.btn-danger {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-danger:hover {\n color: #fff;\n background-color: #c82333;\n border-color: #bd2130;\n}\n\n.btn-danger:focus, .btn-danger.focus {\n color: #fff;\n background-color: #c82333;\n border-color: #bd2130;\n box-shadow: 0 0 0 0.2rem rgba(225, 83, 97, 0.5);\n}\n\n.btn-danger.disabled, .btn-danger:disabled {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-danger:not(:disabled):not(.disabled):active, .btn-danger:not(:disabled):not(.disabled).active,\n.show > .btn-danger.dropdown-toggle {\n color: #fff;\n background-color: #bd2130;\n border-color: #b21f2d;\n}\n\n.btn-danger:not(:disabled):not(.disabled):active:focus, .btn-danger:not(:disabled):not(.disabled).active:focus,\n.show > .btn-danger.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(225, 83, 97, 0.5);\n}\n\n.btn-light {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-light:hover {\n color: #212529;\n background-color: #e2e6ea;\n border-color: #dae0e5;\n}\n\n.btn-light:focus, .btn-light.focus {\n color: #212529;\n background-color: #e2e6ea;\n border-color: #dae0e5;\n box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5);\n}\n\n.btn-light.disabled, .btn-light:disabled {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-light:not(:disabled):not(.disabled):active, .btn-light:not(:disabled):not(.disabled).active,\n.show > .btn-light.dropdown-toggle {\n color: #212529;\n background-color: #dae0e5;\n border-color: #d3d9df;\n}\n\n.btn-light:not(:disabled):not(.disabled):active:focus, .btn-light:not(:disabled):not(.disabled).active:focus,\n.show > .btn-light.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5);\n}\n\n.btn-dark {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-dark:hover {\n color: #fff;\n background-color: #23272b;\n border-color: #1d2124;\n}\n\n.btn-dark:focus, .btn-dark.focus {\n color: #fff;\n background-color: #23272b;\n border-color: #1d2124;\n box-shadow: 0 0 0 0.2rem rgba(82, 88, 93, 0.5);\n}\n\n.btn-dark.disabled, .btn-dark:disabled {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-dark:not(:disabled):not(.disabled):active, .btn-dark:not(:disabled):not(.disabled).active,\n.show > .btn-dark.dropdown-toggle {\n color: #fff;\n background-color: #1d2124;\n border-color: #171a1d;\n}\n\n.btn-dark:not(:disabled):not(.disabled):active:focus, .btn-dark:not(:disabled):not(.disabled).active:focus,\n.show > .btn-dark.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(82, 88, 93, 0.5);\n}\n\n.btn-outline-primary {\n color: #007bff;\n border-color: #007bff;\n}\n\n.btn-outline-primary:hover {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-outline-primary:focus, .btn-outline-primary.focus {\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n\n.btn-outline-primary.disabled, .btn-outline-primary:disabled {\n color: #007bff;\n background-color: transparent;\n}\n\n.btn-outline-primary:not(:disabled):not(.disabled):active, .btn-outline-primary:not(:disabled):not(.disabled).active,\n.show > .btn-outline-primary.dropdown-toggle {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-outline-primary:not(:disabled):not(.disabled):active:focus, .btn-outline-primary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-primary.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n\n.btn-outline-secondary {\n color: #6c757d;\n border-color: #6c757d;\n}\n\n.btn-outline-secondary:hover {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n\n.btn-outline-secondary:focus, .btn-outline-secondary.focus {\n box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\n}\n\n.btn-outline-secondary.disabled, .btn-outline-secondary:disabled {\n color: #6c757d;\n background-color: transparent;\n}\n\n.btn-outline-secondary:not(:disabled):not(.disabled):active, .btn-outline-secondary:not(:disabled):not(.disabled).active,\n.show > .btn-outline-secondary.dropdown-toggle {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n\n.btn-outline-secondary:not(:disabled):not(.disabled):active:focus, .btn-outline-secondary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-secondary.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\n}\n\n.btn-outline-success {\n color: #28a745;\n border-color: #28a745;\n}\n\n.btn-outline-success:hover {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-outline-success:focus, .btn-outline-success.focus {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n}\n\n.btn-outline-success.disabled, .btn-outline-success:disabled {\n color: #28a745;\n background-color: transparent;\n}\n\n.btn-outline-success:not(:disabled):not(.disabled):active, .btn-outline-success:not(:disabled):not(.disabled).active,\n.show > .btn-outline-success.dropdown-toggle {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-outline-success:not(:disabled):not(.disabled):active:focus, .btn-outline-success:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-success.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n}\n\n.btn-outline-info {\n color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-outline-info:hover {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-outline-info:focus, .btn-outline-info.focus {\n box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n}\n\n.btn-outline-info.disabled, .btn-outline-info:disabled {\n color: #17a2b8;\n background-color: transparent;\n}\n\n.btn-outline-info:not(:disabled):not(.disabled):active, .btn-outline-info:not(:disabled):not(.disabled).active,\n.show > .btn-outline-info.dropdown-toggle {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-outline-info:not(:disabled):not(.disabled):active:focus, .btn-outline-info:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-info.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n}\n\n.btn-outline-warning {\n color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-outline-warning:hover {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-outline-warning:focus, .btn-outline-warning.focus {\n box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n}\n\n.btn-outline-warning.disabled, .btn-outline-warning:disabled {\n color: #ffc107;\n background-color: transparent;\n}\n\n.btn-outline-warning:not(:disabled):not(.disabled):active, .btn-outline-warning:not(:disabled):not(.disabled).active,\n.show > .btn-outline-warning.dropdown-toggle {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-outline-warning:not(:disabled):not(.disabled):active:focus, .btn-outline-warning:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-warning.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n}\n\n.btn-outline-danger {\n color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-outline-danger:hover {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-outline-danger:focus, .btn-outline-danger.focus {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n}\n\n.btn-outline-danger.disabled, .btn-outline-danger:disabled {\n color: #dc3545;\n background-color: transparent;\n}\n\n.btn-outline-danger:not(:disabled):not(.disabled):active, .btn-outline-danger:not(:disabled):not(.disabled).active,\n.show > .btn-outline-danger.dropdown-toggle {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-outline-danger:not(:disabled):not(.disabled):active:focus, .btn-outline-danger:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-danger.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n}\n\n.btn-outline-light {\n color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-outline-light:hover {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-outline-light:focus, .btn-outline-light.focus {\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n}\n\n.btn-outline-light.disabled, .btn-outline-light:disabled {\n color: #f8f9fa;\n background-color: transparent;\n}\n\n.btn-outline-light:not(:disabled):not(.disabled):active, .btn-outline-light:not(:disabled):not(.disabled).active,\n.show > .btn-outline-light.dropdown-toggle {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-outline-light:not(:disabled):not(.disabled):active:focus, .btn-outline-light:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-light.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n}\n\n.btn-outline-dark {\n color: #343a40;\n border-color: #343a40;\n}\n\n.btn-outline-dark:hover {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-outline-dark:focus, .btn-outline-dark.focus {\n box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n}\n\n.btn-outline-dark.disabled, .btn-outline-dark:disabled {\n color: #343a40;\n background-color: transparent;\n}\n\n.btn-outline-dark:not(:disabled):not(.disabled):active, .btn-outline-dark:not(:disabled):not(.disabled).active,\n.show > .btn-outline-dark.dropdown-toggle {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-outline-dark:not(:disabled):not(.disabled):active:focus, .btn-outline-dark:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-dark.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n}\n\n.btn-link {\n font-weight: 400;\n color: #007bff;\n text-decoration: none;\n}\n\n.btn-link:hover {\n color: #0056b3;\n text-decoration: underline;\n}\n\n.btn-link:focus, .btn-link.focus {\n text-decoration: underline;\n}\n\n.btn-link:disabled, .btn-link.disabled {\n color: #6c757d;\n pointer-events: none;\n}\n\n.btn-lg, .btn-group-lg > .btn {\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem;\n}\n\n.btn-sm, .btn-group-sm > .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem;\n}\n\n.btn-block {\n display: block;\n width: 100%;\n}\n\n.btn-block + .btn-block {\n margin-top: 0.5rem;\n}\n\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n width: 100%;\n}\n\n.fade {\n transition: opacity 0.15s linear;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .fade {\n transition: none;\n }\n}\n\n.fade:not(.show) {\n opacity: 0;\n}\n\n.collapse:not(.show) {\n display: none;\n}\n\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n transition: height 0.35s ease;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .collapsing {\n transition: none;\n }\n}\n\n.dropup,\n.dropright,\n.dropdown,\n.dropleft {\n position: relative;\n}\n\n.dropdown-toggle {\n white-space: nowrap;\n}\n\n.dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid;\n border-right: 0.3em solid transparent;\n border-bottom: 0;\n border-left: 0.3em solid transparent;\n}\n\n.dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 10rem;\n padding: 0.5rem 0;\n margin: 0.125rem 0 0;\n font-size: 1rem;\n color: #212529;\n text-align: left;\n list-style: none;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0.25rem;\n}\n\n.dropdown-menu-left {\n right: auto;\n left: 0;\n}\n\n.dropdown-menu-right {\n right: 0;\n left: auto;\n}\n\n@media (min-width: 576px) {\n .dropdown-menu-sm-left {\n right: auto;\n left: 0;\n }\n .dropdown-menu-sm-right {\n right: 0;\n left: auto;\n }\n}\n\n@media (min-width: 768px) {\n .dropdown-menu-md-left {\n right: auto;\n left: 0;\n }\n .dropdown-menu-md-right {\n right: 0;\n left: auto;\n }\n}\n\n@media (min-width: 992px) {\n .dropdown-menu-lg-left {\n right: auto;\n left: 0;\n }\n .dropdown-menu-lg-right {\n right: 0;\n left: auto;\n }\n}\n\n@media (min-width: 1200px) {\n .dropdown-menu-xl-left {\n right: auto;\n left: 0;\n }\n .dropdown-menu-xl-right {\n right: 0;\n left: auto;\n }\n}\n\n.dropup .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-top: 0;\n margin-bottom: 0.125rem;\n}\n\n.dropup .dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0;\n border-right: 0.3em solid transparent;\n border-bottom: 0.3em solid;\n border-left: 0.3em solid transparent;\n}\n\n.dropup .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropright .dropdown-menu {\n top: 0;\n right: auto;\n left: 100%;\n margin-top: 0;\n margin-left: 0.125rem;\n}\n\n.dropright .dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid transparent;\n border-right: 0;\n border-bottom: 0.3em solid transparent;\n border-left: 0.3em solid;\n}\n\n.dropright .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropright .dropdown-toggle::after {\n vertical-align: 0;\n}\n\n.dropleft .dropdown-menu {\n top: 0;\n right: 100%;\n left: auto;\n margin-top: 0;\n margin-right: 0.125rem;\n}\n\n.dropleft .dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n}\n\n.dropleft .dropdown-toggle::after {\n display: none;\n}\n\n.dropleft .dropdown-toggle::before {\n display: inline-block;\n margin-right: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid transparent;\n border-right: 0.3em solid;\n border-bottom: 0.3em solid transparent;\n}\n\n.dropleft .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropleft .dropdown-toggle::before {\n vertical-align: 0;\n}\n\n.dropdown-menu[x-placement^=\"top\"], .dropdown-menu[x-placement^=\"right\"], .dropdown-menu[x-placement^=\"bottom\"], .dropdown-menu[x-placement^=\"left\"] {\n right: auto;\n bottom: auto;\n}\n\n.dropdown-divider {\n height: 0;\n margin: 0.5rem 0;\n overflow: hidden;\n border-top: 1px solid #e9ecef;\n}\n\n.dropdown-item {\n display: block;\n width: 100%;\n padding: 0.25rem 1.5rem;\n clear: both;\n font-weight: 400;\n color: #212529;\n text-align: inherit;\n white-space: nowrap;\n background-color: transparent;\n border: 0;\n}\n\n.dropdown-item:hover, .dropdown-item:focus {\n color: #16181b;\n text-decoration: none;\n background-color: #f8f9fa;\n}\n\n.dropdown-item.active, .dropdown-item:active {\n color: #fff;\n text-decoration: none;\n background-color: #007bff;\n}\n\n.dropdown-item.disabled, .dropdown-item:disabled {\n color: #6c757d;\n pointer-events: none;\n background-color: transparent;\n}\n\n.dropdown-menu.show {\n display: block;\n}\n\n.dropdown-header {\n display: block;\n padding: 0.5rem 1.5rem;\n margin-bottom: 0;\n font-size: 0.875rem;\n color: #6c757d;\n white-space: nowrap;\n}\n\n.dropdown-item-text {\n display: block;\n padding: 0.25rem 1.5rem;\n color: #212529;\n}\n\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-flex;\n vertical-align: middle;\n}\n\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n position: relative;\n flex: 1 1 auto;\n}\n\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover {\n z-index: 1;\n}\n\n.btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active,\n.btn-group-vertical > .btn:focus,\n.btn-group-vertical > .btn:active,\n.btn-group-vertical > .btn.active {\n z-index: 1;\n}\n\n.btn-toolbar {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-start;\n}\n\n.btn-toolbar .input-group {\n width: auto;\n}\n\n.btn-group > .btn:not(:first-child),\n.btn-group > .btn-group:not(:first-child) {\n margin-left: -1px;\n}\n\n.btn-group > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group > .btn-group:not(:last-child) > .btn {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.btn-group > .btn:not(:first-child),\n.btn-group > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.dropdown-toggle-split {\n padding-right: 0.5625rem;\n padding-left: 0.5625rem;\n}\n\n.dropdown-toggle-split::after,\n.dropup .dropdown-toggle-split::after,\n.dropright .dropdown-toggle-split::after {\n margin-left: 0;\n}\n\n.dropleft .dropdown-toggle-split::before {\n margin-right: 0;\n}\n\n.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {\n padding-right: 0.375rem;\n padding-left: 0.375rem;\n}\n\n.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {\n padding-right: 0.75rem;\n padding-left: 0.75rem;\n}\n\n.btn-group-vertical {\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n}\n\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group {\n width: 100%;\n}\n\n.btn-group-vertical > .btn:not(:first-child),\n.btn-group-vertical > .btn-group:not(:first-child) {\n margin-top: -1px;\n}\n\n.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group-vertical > .btn-group:not(:last-child) > .btn {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.btn-group-vertical > .btn:not(:first-child),\n.btn-group-vertical > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.btn-group-toggle > .btn,\n.btn-group-toggle > .btn-group > .btn {\n margin-bottom: 0;\n}\n\n.btn-group-toggle > .btn input[type=\"radio\"],\n.btn-group-toggle > .btn input[type=\"checkbox\"],\n.btn-group-toggle > .btn-group > .btn input[type=\"radio\"],\n.btn-group-toggle > .btn-group > .btn input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n\n.input-group {\n position: relative;\n display: flex;\n flex-wrap: wrap;\n align-items: stretch;\n width: 100%;\n}\n\n.input-group > .form-control,\n.input-group > .form-control-plaintext,\n.input-group > .custom-select,\n.input-group > .custom-file {\n position: relative;\n flex: 1 1 auto;\n width: 1%;\n min-width: 0;\n margin-bottom: 0;\n}\n\n.input-group > .form-control + .form-control,\n.input-group > .form-control + .custom-select,\n.input-group > .form-control + .custom-file,\n.input-group > .form-control-plaintext + .form-control,\n.input-group > .form-control-plaintext + .custom-select,\n.input-group > .form-control-plaintext + .custom-file,\n.input-group > .custom-select + .form-control,\n.input-group > .custom-select + .custom-select,\n.input-group > .custom-select + .custom-file,\n.input-group > .custom-file + .form-control,\n.input-group > .custom-file + .custom-select,\n.input-group > .custom-file + .custom-file {\n margin-left: -1px;\n}\n\n.input-group > .form-control:focus,\n.input-group > .custom-select:focus,\n.input-group > .custom-file .custom-file-input:focus ~ .custom-file-label {\n z-index: 3;\n}\n\n.input-group > .custom-file .custom-file-input:focus {\n z-index: 4;\n}\n\n.input-group > .form-control:not(:last-child),\n.input-group > .custom-select:not(:last-child) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.input-group > .form-control:not(:first-child),\n.input-group > .custom-select:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.input-group > .custom-file {\n display: flex;\n align-items: center;\n}\n\n.input-group > .custom-file:not(:last-child) .custom-file-label,\n.input-group > .custom-file:not(:last-child) .custom-file-label::after {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.input-group > .custom-file:not(:first-child) .custom-file-label {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.input-group-prepend,\n.input-group-append {\n display: flex;\n}\n\n.input-group-prepend .btn,\n.input-group-append .btn {\n position: relative;\n z-index: 2;\n}\n\n.input-group-prepend .btn:focus,\n.input-group-append .btn:focus {\n z-index: 3;\n}\n\n.input-group-prepend .btn + .btn,\n.input-group-prepend .btn + .input-group-text,\n.input-group-prepend .input-group-text + .input-group-text,\n.input-group-prepend .input-group-text + .btn,\n.input-group-append .btn + .btn,\n.input-group-append .btn + .input-group-text,\n.input-group-append .input-group-text + .input-group-text,\n.input-group-append .input-group-text + .btn {\n margin-left: -1px;\n}\n\n.input-group-prepend {\n margin-right: -1px;\n}\n\n.input-group-append {\n margin-left: -1px;\n}\n\n.input-group-text {\n display: flex;\n align-items: center;\n padding: 0.375rem 0.75rem;\n margin-bottom: 0;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #495057;\n text-align: center;\n white-space: nowrap;\n background-color: #e9ecef;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n}\n\n.input-group-text input[type=\"radio\"],\n.input-group-text input[type=\"checkbox\"] {\n margin-top: 0;\n}\n\n.input-group-lg > .form-control:not(textarea),\n.input-group-lg > .custom-select {\n height: calc(1.5em + 1rem + 2px);\n}\n\n.input-group-lg > .form-control,\n.input-group-lg > .custom-select,\n.input-group-lg > .input-group-prepend > .input-group-text,\n.input-group-lg > .input-group-append > .input-group-text,\n.input-group-lg > .input-group-prepend > .btn,\n.input-group-lg > .input-group-append > .btn {\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem;\n}\n\n.input-group-sm > .form-control:not(textarea),\n.input-group-sm > .custom-select {\n height: calc(1.5em + 0.5rem + 2px);\n}\n\n.input-group-sm > .form-control,\n.input-group-sm > .custom-select,\n.input-group-sm > .input-group-prepend > .input-group-text,\n.input-group-sm > .input-group-append > .input-group-text,\n.input-group-sm > .input-group-prepend > .btn,\n.input-group-sm > .input-group-append > .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem;\n}\n\n.input-group-lg > .custom-select,\n.input-group-sm > .custom-select {\n padding-right: 1.75rem;\n}\n\n.input-group > .input-group-prepend > .btn,\n.input-group > .input-group-prepend > .input-group-text,\n.input-group > .input-group-append:not(:last-child) > .btn,\n.input-group > .input-group-append:not(:last-child) > .input-group-text,\n.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.input-group > .input-group-append > .btn,\n.input-group > .input-group-append > .input-group-text,\n.input-group > .input-group-prepend:not(:first-child) > .btn,\n.input-group > .input-group-prepend:not(:first-child) > .input-group-text,\n.input-group > .input-group-prepend:first-child > .btn:not(:first-child),\n.input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.custom-control {\n position: relative;\n z-index: 1;\n display: block;\n min-height: 1.5rem;\n padding-left: 1.5rem;\n}\n\n.custom-control-inline {\n display: inline-flex;\n margin-right: 1rem;\n}\n\n.custom-control-input {\n position: absolute;\n left: 0;\n z-index: -1;\n width: 1rem;\n height: 1.25rem;\n opacity: 0;\n}\n\n.custom-control-input:checked ~ .custom-control-label::before {\n color: #fff;\n border-color: #007bff;\n background-color: #007bff;\n}\n\n.custom-control-input:focus ~ .custom-control-label::before {\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-control-input:focus:not(:checked) ~ .custom-control-label::before {\n border-color: #80bdff;\n}\n\n.custom-control-input:not(:disabled):active ~ .custom-control-label::before {\n color: #fff;\n background-color: #b3d7ff;\n border-color: #b3d7ff;\n}\n\n.custom-control-input[disabled] ~ .custom-control-label, .custom-control-input:disabled ~ .custom-control-label {\n color: #6c757d;\n}\n\n.custom-control-input[disabled] ~ .custom-control-label::before, .custom-control-input:disabled ~ .custom-control-label::before {\n background-color: #e9ecef;\n}\n\n.custom-control-label {\n position: relative;\n margin-bottom: 0;\n vertical-align: top;\n}\n\n.custom-control-label::before {\n position: absolute;\n top: 0.25rem;\n left: -1.5rem;\n display: block;\n width: 1rem;\n height: 1rem;\n pointer-events: none;\n content: \"\";\n background-color: #fff;\n border: #adb5bd solid 1px;\n}\n\n.custom-control-label::after {\n position: absolute;\n top: 0.25rem;\n left: -1.5rem;\n display: block;\n width: 1rem;\n height: 1rem;\n content: \"\";\n background: no-repeat 50% / 50% 50%;\n}\n\n.custom-checkbox .custom-control-label::before {\n border-radius: 0.25rem;\n}\n\n.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e\");\n}\n\n.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before {\n border-color: #007bff;\n background-color: #007bff;\n}\n\n.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e\");\n}\n\n.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before {\n background-color: rgba(0, 123, 255, 0.5);\n}\n\n.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before {\n background-color: rgba(0, 123, 255, 0.5);\n}\n\n.custom-radio .custom-control-label::before {\n border-radius: 50%;\n}\n\n.custom-radio .custom-control-input:checked ~ .custom-control-label::after {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e\");\n}\n\n.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before {\n background-color: rgba(0, 123, 255, 0.5);\n}\n\n.custom-switch {\n padding-left: 2.25rem;\n}\n\n.custom-switch .custom-control-label::before {\n left: -2.25rem;\n width: 1.75rem;\n pointer-events: all;\n border-radius: 0.5rem;\n}\n\n.custom-switch .custom-control-label::after {\n top: calc(0.25rem + 2px);\n left: calc(-2.25rem + 2px);\n width: calc(1rem - 4px);\n height: calc(1rem - 4px);\n background-color: #adb5bd;\n border-radius: 0.5rem;\n transition: transform 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .custom-switch .custom-control-label::after {\n transition: none;\n }\n}\n\n.custom-switch .custom-control-input:checked ~ .custom-control-label::after {\n background-color: #fff;\n transform: translateX(0.75rem);\n}\n\n.custom-switch .custom-control-input:disabled:checked ~ .custom-control-label::before {\n background-color: rgba(0, 123, 255, 0.5);\n}\n\n.custom-select {\n display: inline-block;\n width: 100%;\n height: calc(1.5em + 0.75rem + 2px);\n padding: 0.375rem 1.75rem 0.375rem 0.75rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #495057;\n vertical-align: middle;\n background: #fff url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e\") no-repeat right 0.75rem center/8px 10px;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n appearance: none;\n}\n\n.custom-select:focus {\n border-color: #80bdff;\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-select:focus::-ms-value {\n color: #495057;\n background-color: #fff;\n}\n\n.custom-select[multiple], .custom-select[size]:not([size=\"1\"]) {\n height: auto;\n padding-right: 0.75rem;\n background-image: none;\n}\n\n.custom-select:disabled {\n color: #6c757d;\n background-color: #e9ecef;\n}\n\n.custom-select::-ms-expand {\n display: none;\n}\n\n.custom-select:-moz-focusring {\n color: transparent;\n text-shadow: 0 0 0 #495057;\n}\n\n.custom-select-sm {\n height: calc(1.5em + 0.5rem + 2px);\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n padding-left: 0.5rem;\n font-size: 0.875rem;\n}\n\n.custom-select-lg {\n height: calc(1.5em + 1rem + 2px);\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n padding-left: 1rem;\n font-size: 1.25rem;\n}\n\n.custom-file {\n position: relative;\n display: inline-block;\n width: 100%;\n height: calc(1.5em + 0.75rem + 2px);\n margin-bottom: 0;\n}\n\n.custom-file-input {\n position: relative;\n z-index: 2;\n width: 100%;\n height: calc(1.5em + 0.75rem + 2px);\n margin: 0;\n opacity: 0;\n}\n\n.custom-file-input:focus ~ .custom-file-label {\n border-color: #80bdff;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-file-input[disabled] ~ .custom-file-label,\n.custom-file-input:disabled ~ .custom-file-label {\n background-color: #e9ecef;\n}\n\n.custom-file-input:lang(en) ~ .custom-file-label::after {\n content: \"Browse\";\n}\n\n.custom-file-input ~ .custom-file-label[data-browse]::after {\n content: attr(data-browse);\n}\n\n.custom-file-label {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n z-index: 1;\n height: calc(1.5em + 0.75rem + 2px);\n padding: 0.375rem 0.75rem;\n font-weight: 400;\n line-height: 1.5;\n color: #495057;\n background-color: #fff;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n}\n\n.custom-file-label::after {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n z-index: 3;\n display: block;\n height: calc(1.5em + 0.75rem);\n padding: 0.375rem 0.75rem;\n line-height: 1.5;\n color: #495057;\n content: \"Browse\";\n background-color: #e9ecef;\n border-left: inherit;\n border-radius: 0 0.25rem 0.25rem 0;\n}\n\n.custom-range {\n width: 100%;\n height: 1.4rem;\n padding: 0;\n background-color: transparent;\n appearance: none;\n}\n\n.custom-range:focus {\n outline: none;\n}\n\n.custom-range:focus::-webkit-slider-thumb {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-range:focus::-moz-range-thumb {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-range:focus::-ms-thumb {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-range::-moz-focus-outer {\n border: 0;\n}\n\n.custom-range::-webkit-slider-thumb {\n width: 1rem;\n height: 1rem;\n margin-top: -0.25rem;\n background-color: #007bff;\n border: 0;\n border-radius: 1rem;\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n appearance: none;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .custom-range::-webkit-slider-thumb {\n transition: none;\n }\n}\n\n.custom-range::-webkit-slider-thumb:active {\n background-color: #b3d7ff;\n}\n\n.custom-range::-webkit-slider-runnable-track {\n width: 100%;\n height: 0.5rem;\n color: transparent;\n cursor: pointer;\n background-color: #dee2e6;\n border-color: transparent;\n border-radius: 1rem;\n}\n\n.custom-range::-moz-range-thumb {\n width: 1rem;\n height: 1rem;\n background-color: #007bff;\n border: 0;\n border-radius: 1rem;\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n appearance: none;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .custom-range::-moz-range-thumb {\n transition: none;\n }\n}\n\n.custom-range::-moz-range-thumb:active {\n background-color: #b3d7ff;\n}\n\n.custom-range::-moz-range-track {\n width: 100%;\n height: 0.5rem;\n color: transparent;\n cursor: pointer;\n background-color: #dee2e6;\n border-color: transparent;\n border-radius: 1rem;\n}\n\n.custom-range::-ms-thumb {\n width: 1rem;\n height: 1rem;\n margin-top: 0;\n margin-right: 0.2rem;\n margin-left: 0.2rem;\n background-color: #007bff;\n border: 0;\n border-radius: 1rem;\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n appearance: none;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .custom-range::-ms-thumb {\n transition: none;\n }\n}\n\n.custom-range::-ms-thumb:active {\n background-color: #b3d7ff;\n}\n\n.custom-range::-ms-track {\n width: 100%;\n height: 0.5rem;\n color: transparent;\n cursor: pointer;\n background-color: transparent;\n border-color: transparent;\n border-width: 0.5rem;\n}\n\n.custom-range::-ms-fill-lower {\n background-color: #dee2e6;\n border-radius: 1rem;\n}\n\n.custom-range::-ms-fill-upper {\n margin-right: 15px;\n background-color: #dee2e6;\n border-radius: 1rem;\n}\n\n.custom-range:disabled::-webkit-slider-thumb {\n background-color: #adb5bd;\n}\n\n.custom-range:disabled::-webkit-slider-runnable-track {\n cursor: default;\n}\n\n.custom-range:disabled::-moz-range-thumb {\n background-color: #adb5bd;\n}\n\n.custom-range:disabled::-moz-range-track {\n cursor: default;\n}\n\n.custom-range:disabled::-ms-thumb {\n background-color: #adb5bd;\n}\n\n.custom-control-label::before,\n.custom-file-label,\n.custom-select {\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .custom-control-label::before,\n .custom-file-label,\n .custom-select {\n transition: none;\n }\n}\n\n.nav {\n display: flex;\n flex-wrap: wrap;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n\n.nav-link {\n display: block;\n padding: 0.5rem 1rem;\n}\n\n.nav-link:hover, .nav-link:focus {\n text-decoration: none;\n}\n\n.nav-link.disabled {\n color: #6c757d;\n pointer-events: none;\n cursor: default;\n}\n\n.nav-tabs {\n border-bottom: 1px solid #dee2e6;\n}\n\n.nav-tabs .nav-item {\n margin-bottom: -1px;\n}\n\n.nav-tabs .nav-link {\n border: 1px solid transparent;\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n\n.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus {\n border-color: #e9ecef #e9ecef #dee2e6;\n}\n\n.nav-tabs .nav-link.disabled {\n color: #6c757d;\n background-color: transparent;\n border-color: transparent;\n}\n\n.nav-tabs .nav-link.active,\n.nav-tabs .nav-item.show .nav-link {\n color: #495057;\n background-color: #fff;\n border-color: #dee2e6 #dee2e6 #fff;\n}\n\n.nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.nav-pills .nav-link {\n border-radius: 0.25rem;\n}\n\n.nav-pills .nav-link.active,\n.nav-pills .show > .nav-link {\n color: #fff;\n background-color: #007bff;\n}\n\n.nav-fill > .nav-link,\n.nav-fill .nav-item {\n flex: 1 1 auto;\n text-align: center;\n}\n\n.nav-justified > .nav-link,\n.nav-justified .nav-item {\n flex-basis: 0;\n flex-grow: 1;\n text-align: center;\n}\n\n.tab-content > .tab-pane {\n display: none;\n}\n\n.tab-content > .active {\n display: block;\n}\n\n.navbar {\n position: relative;\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n padding: 0.5rem 1rem;\n}\n\n.navbar .container,\n.navbar .container-fluid, .navbar .container-sm, .navbar .container-md, .navbar .container-lg, .navbar .container-xl {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n}\n\n.navbar-brand {\n display: inline-block;\n padding-top: 0.3125rem;\n padding-bottom: 0.3125rem;\n margin-right: 1rem;\n font-size: 1.25rem;\n line-height: inherit;\n white-space: nowrap;\n}\n\n.navbar-brand:hover, .navbar-brand:focus {\n text-decoration: none;\n}\n\n.navbar-nav {\n display: flex;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n\n.navbar-nav .nav-link {\n padding-right: 0;\n padding-left: 0;\n}\n\n.navbar-nav .dropdown-menu {\n position: static;\n float: none;\n}\n\n.navbar-text {\n display: inline-block;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n\n.navbar-collapse {\n flex-basis: 100%;\n flex-grow: 1;\n align-items: center;\n}\n\n.navbar-toggler {\n padding: 0.25rem 0.75rem;\n font-size: 1.25rem;\n line-height: 1;\n background-color: transparent;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n}\n\n.navbar-toggler:hover, .navbar-toggler:focus {\n text-decoration: none;\n}\n\n.navbar-toggler-icon {\n display: inline-block;\n width: 1.5em;\n height: 1.5em;\n vertical-align: middle;\n content: \"\";\n background: no-repeat center center;\n background-size: 100% 100%;\n}\n\n@media (max-width: 575.98px) {\n .navbar-expand-sm > .container,\n .navbar-expand-sm > .container-fluid, .navbar-expand-sm > .container-sm, .navbar-expand-sm > .container-md, .navbar-expand-sm > .container-lg, .navbar-expand-sm > .container-xl {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 576px) {\n .navbar-expand-sm {\n flex-flow: row nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-sm .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-sm .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-sm .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n }\n .navbar-expand-sm > .container,\n .navbar-expand-sm > .container-fluid, .navbar-expand-sm > .container-sm, .navbar-expand-sm > .container-md, .navbar-expand-sm > .container-lg, .navbar-expand-sm > .container-xl {\n flex-wrap: nowrap;\n }\n .navbar-expand-sm .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-sm .navbar-toggler {\n display: none;\n }\n}\n\n@media (max-width: 767.98px) {\n .navbar-expand-md > .container,\n .navbar-expand-md > .container-fluid, .navbar-expand-md > .container-sm, .navbar-expand-md > .container-md, .navbar-expand-md > .container-lg, .navbar-expand-md > .container-xl {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 768px) {\n .navbar-expand-md {\n flex-flow: row nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-md .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-md .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-md .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n }\n .navbar-expand-md > .container,\n .navbar-expand-md > .container-fluid, .navbar-expand-md > .container-sm, .navbar-expand-md > .container-md, .navbar-expand-md > .container-lg, .navbar-expand-md > .container-xl {\n flex-wrap: nowrap;\n }\n .navbar-expand-md .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-md .navbar-toggler {\n display: none;\n }\n}\n\n@media (max-width: 991.98px) {\n .navbar-expand-lg > .container,\n .navbar-expand-lg > .container-fluid, .navbar-expand-lg > .container-sm, .navbar-expand-lg > .container-md, .navbar-expand-lg > .container-lg, .navbar-expand-lg > .container-xl {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 992px) {\n .navbar-expand-lg {\n flex-flow: row nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-lg .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-lg .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-lg .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n }\n .navbar-expand-lg > .container,\n .navbar-expand-lg > .container-fluid, .navbar-expand-lg > .container-sm, .navbar-expand-lg > .container-md, .navbar-expand-lg > .container-lg, .navbar-expand-lg > .container-xl {\n flex-wrap: nowrap;\n }\n .navbar-expand-lg .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-lg .navbar-toggler {\n display: none;\n }\n}\n\n@media (max-width: 1199.98px) {\n .navbar-expand-xl > .container,\n .navbar-expand-xl > .container-fluid, .navbar-expand-xl > .container-sm, .navbar-expand-xl > .container-md, .navbar-expand-xl > .container-lg, .navbar-expand-xl > .container-xl {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 1200px) {\n .navbar-expand-xl {\n flex-flow: row nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-xl .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-xl .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-xl .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n }\n .navbar-expand-xl > .container,\n .navbar-expand-xl > .container-fluid, .navbar-expand-xl > .container-sm, .navbar-expand-xl > .container-md, .navbar-expand-xl > .container-lg, .navbar-expand-xl > .container-xl {\n flex-wrap: nowrap;\n }\n .navbar-expand-xl .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-xl .navbar-toggler {\n display: none;\n }\n}\n\n.navbar-expand {\n flex-flow: row nowrap;\n justify-content: flex-start;\n}\n\n.navbar-expand > .container,\n.navbar-expand > .container-fluid, .navbar-expand > .container-sm, .navbar-expand > .container-md, .navbar-expand > .container-lg, .navbar-expand > .container-xl {\n padding-right: 0;\n padding-left: 0;\n}\n\n.navbar-expand .navbar-nav {\n flex-direction: row;\n}\n\n.navbar-expand .navbar-nav .dropdown-menu {\n position: absolute;\n}\n\n.navbar-expand .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n}\n\n.navbar-expand > .container,\n.navbar-expand > .container-fluid, .navbar-expand > .container-sm, .navbar-expand > .container-md, .navbar-expand > .container-lg, .navbar-expand > .container-xl {\n flex-wrap: nowrap;\n}\n\n.navbar-expand .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n}\n\n.navbar-expand .navbar-toggler {\n display: none;\n}\n\n.navbar-light .navbar-brand {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-nav .nav-link {\n color: rgba(0, 0, 0, 0.5);\n}\n\n.navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus {\n color: rgba(0, 0, 0, 0.7);\n}\n\n.navbar-light .navbar-nav .nav-link.disabled {\n color: rgba(0, 0, 0, 0.3);\n}\n\n.navbar-light .navbar-nav .show > .nav-link,\n.navbar-light .navbar-nav .active > .nav-link,\n.navbar-light .navbar-nav .nav-link.show,\n.navbar-light .navbar-nav .nav-link.active {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-toggler {\n color: rgba(0, 0, 0, 0.5);\n border-color: rgba(0, 0, 0, 0.1);\n}\n\n.navbar-light .navbar-toggler-icon {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n}\n\n.navbar-light .navbar-text {\n color: rgba(0, 0, 0, 0.5);\n}\n\n.navbar-light .navbar-text a {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-text a:hover, .navbar-light .navbar-text a:focus {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-dark .navbar-brand {\n color: #fff;\n}\n\n.navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus {\n color: #fff;\n}\n\n.navbar-dark .navbar-nav .nav-link {\n color: rgba(255, 255, 255, 0.5);\n}\n\n.navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus {\n color: rgba(255, 255, 255, 0.75);\n}\n\n.navbar-dark .navbar-nav .nav-link.disabled {\n color: rgba(255, 255, 255, 0.25);\n}\n\n.navbar-dark .navbar-nav .show > .nav-link,\n.navbar-dark .navbar-nav .active > .nav-link,\n.navbar-dark .navbar-nav .nav-link.show,\n.navbar-dark .navbar-nav .nav-link.active {\n color: #fff;\n}\n\n.navbar-dark .navbar-toggler {\n color: rgba(255, 255, 255, 0.5);\n border-color: rgba(255, 255, 255, 0.1);\n}\n\n.navbar-dark .navbar-toggler-icon {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n}\n\n.navbar-dark .navbar-text {\n color: rgba(255, 255, 255, 0.5);\n}\n\n.navbar-dark .navbar-text a {\n color: #fff;\n}\n\n.navbar-dark .navbar-text a:hover, .navbar-dark .navbar-text a:focus {\n color: #fff;\n}\n\n.card {\n position: relative;\n display: flex;\n flex-direction: column;\n min-width: 0;\n word-wrap: break-word;\n background-color: #fff;\n background-clip: border-box;\n border: 1px solid rgba(0, 0, 0, 0.125);\n border-radius: 0.25rem;\n}\n\n.card > hr {\n margin-right: 0;\n margin-left: 0;\n}\n\n.card > .list-group {\n border-top: inherit;\n border-bottom: inherit;\n}\n\n.card > .list-group:first-child {\n border-top-width: 0;\n border-top-left-radius: calc(0.25rem - 1px);\n border-top-right-radius: calc(0.25rem - 1px);\n}\n\n.card > .list-group:last-child {\n border-bottom-width: 0;\n border-bottom-right-radius: calc(0.25rem - 1px);\n border-bottom-left-radius: calc(0.25rem - 1px);\n}\n\n.card > .card-header + .list-group,\n.card > .list-group + .card-footer {\n border-top: 0;\n}\n\n.card-body {\n flex: 1 1 auto;\n min-height: 1px;\n padding: 1.25rem;\n}\n\n.card-title {\n margin-bottom: 0.75rem;\n}\n\n.card-subtitle {\n margin-top: -0.375rem;\n margin-bottom: 0;\n}\n\n.card-text:last-child {\n margin-bottom: 0;\n}\n\n.card-link:hover {\n text-decoration: none;\n}\n\n.card-link + .card-link {\n margin-left: 1.25rem;\n}\n\n.card-header {\n padding: 0.75rem 1.25rem;\n margin-bottom: 0;\n background-color: rgba(0, 0, 0, 0.03);\n border-bottom: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-header:first-child {\n border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0;\n}\n\n.card-footer {\n padding: 0.75rem 1.25rem;\n background-color: rgba(0, 0, 0, 0.03);\n border-top: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-footer:last-child {\n border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px);\n}\n\n.card-header-tabs {\n margin-right: -0.625rem;\n margin-bottom: -0.75rem;\n margin-left: -0.625rem;\n border-bottom: 0;\n}\n\n.card-header-pills {\n margin-right: -0.625rem;\n margin-left: -0.625rem;\n}\n\n.card-img-overlay {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n padding: 1.25rem;\n border-radius: calc(0.25rem - 1px);\n}\n\n.card-img,\n.card-img-top,\n.card-img-bottom {\n flex-shrink: 0;\n width: 100%;\n}\n\n.card-img,\n.card-img-top {\n border-top-left-radius: calc(0.25rem - 1px);\n border-top-right-radius: calc(0.25rem - 1px);\n}\n\n.card-img,\n.card-img-bottom {\n border-bottom-right-radius: calc(0.25rem - 1px);\n border-bottom-left-radius: calc(0.25rem - 1px);\n}\n\n.card-deck .card {\n margin-bottom: 15px;\n}\n\n@media (min-width: 576px) {\n .card-deck {\n display: flex;\n flex-flow: row wrap;\n margin-right: -15px;\n margin-left: -15px;\n }\n .card-deck .card {\n flex: 1 0 0%;\n margin-right: 15px;\n margin-bottom: 0;\n margin-left: 15px;\n }\n}\n\n.card-group > .card {\n margin-bottom: 15px;\n}\n\n@media (min-width: 576px) {\n .card-group {\n display: flex;\n flex-flow: row wrap;\n }\n .card-group > .card {\n flex: 1 0 0%;\n margin-bottom: 0;\n }\n .card-group > .card + .card {\n margin-left: 0;\n border-left: 0;\n }\n .card-group > .card:not(:last-child) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n .card-group > .card:not(:last-child) .card-img-top,\n .card-group > .card:not(:last-child) .card-header {\n border-top-right-radius: 0;\n }\n .card-group > .card:not(:last-child) .card-img-bottom,\n .card-group > .card:not(:last-child) .card-footer {\n border-bottom-right-radius: 0;\n }\n .card-group > .card:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n .card-group > .card:not(:first-child) .card-img-top,\n .card-group > .card:not(:first-child) .card-header {\n border-top-left-radius: 0;\n }\n .card-group > .card:not(:first-child) .card-img-bottom,\n .card-group > .card:not(:first-child) .card-footer {\n border-bottom-left-radius: 0;\n }\n}\n\n.card-columns .card {\n margin-bottom: 0.75rem;\n}\n\n@media (min-width: 576px) {\n .card-columns {\n column-count: 3;\n column-gap: 1.25rem;\n orphans: 1;\n widows: 1;\n }\n .card-columns .card {\n display: inline-block;\n width: 100%;\n }\n}\n\n.accordion {\n overflow-anchor: none;\n}\n\n.accordion > .card {\n overflow: hidden;\n}\n\n.accordion > .card:not(:last-of-type) {\n border-bottom: 0;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.accordion > .card:not(:first-of-type) {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.accordion > .card > .card-header {\n border-radius: 0;\n margin-bottom: -1px;\n}\n\n.breadcrumb {\n display: flex;\n flex-wrap: wrap;\n padding: 0.75rem 1rem;\n margin-bottom: 1rem;\n list-style: none;\n background-color: #e9ecef;\n border-radius: 0.25rem;\n}\n\n.breadcrumb-item {\n display: flex;\n}\n\n.breadcrumb-item + .breadcrumb-item {\n padding-left: 0.5rem;\n}\n\n.breadcrumb-item + .breadcrumb-item::before {\n display: inline-block;\n padding-right: 0.5rem;\n color: #6c757d;\n content: \"/\";\n}\n\n.breadcrumb-item + .breadcrumb-item:hover::before {\n text-decoration: underline;\n}\n\n.breadcrumb-item + .breadcrumb-item:hover::before {\n text-decoration: none;\n}\n\n.breadcrumb-item.active {\n color: #6c757d;\n}\n\n.pagination {\n display: flex;\n padding-left: 0;\n list-style: none;\n border-radius: 0.25rem;\n}\n\n.page-link {\n position: relative;\n display: block;\n padding: 0.5rem 0.75rem;\n margin-left: -1px;\n line-height: 1.25;\n color: #007bff;\n background-color: #fff;\n border: 1px solid #dee2e6;\n}\n\n.page-link:hover {\n z-index: 2;\n color: #0056b3;\n text-decoration: none;\n background-color: #e9ecef;\n border-color: #dee2e6;\n}\n\n.page-link:focus {\n z-index: 3;\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.page-item:first-child .page-link {\n margin-left: 0;\n border-top-left-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.page-item:last-child .page-link {\n border-top-right-radius: 0.25rem;\n border-bottom-right-radius: 0.25rem;\n}\n\n.page-item.active .page-link {\n z-index: 3;\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.page-item.disabled .page-link {\n color: #6c757d;\n pointer-events: none;\n cursor: auto;\n background-color: #fff;\n border-color: #dee2e6;\n}\n\n.pagination-lg .page-link {\n padding: 0.75rem 1.5rem;\n font-size: 1.25rem;\n line-height: 1.5;\n}\n\n.pagination-lg .page-item:first-child .page-link {\n border-top-left-radius: 0.3rem;\n border-bottom-left-radius: 0.3rem;\n}\n\n.pagination-lg .page-item:last-child .page-link {\n border-top-right-radius: 0.3rem;\n border-bottom-right-radius: 0.3rem;\n}\n\n.pagination-sm .page-link {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n}\n\n.pagination-sm .page-item:first-child .page-link {\n border-top-left-radius: 0.2rem;\n border-bottom-left-radius: 0.2rem;\n}\n\n.pagination-sm .page-item:last-child .page-link {\n border-top-right-radius: 0.2rem;\n border-bottom-right-radius: 0.2rem;\n}\n\n.badge {\n display: inline-block;\n padding: 0.25em 0.4em;\n font-size: 75%;\n font-weight: 700;\n line-height: 1;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: 0.25rem;\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .badge {\n transition: none;\n }\n}\n\na.badge:hover, a.badge:focus {\n text-decoration: none;\n}\n\n.badge:empty {\n display: none;\n}\n\n.btn .badge {\n position: relative;\n top: -1px;\n}\n\n.badge-pill {\n padding-right: 0.6em;\n padding-left: 0.6em;\n border-radius: 10rem;\n}\n\n.badge-primary {\n color: #fff;\n background-color: #007bff;\n}\n\na.badge-primary:hover, a.badge-primary:focus {\n color: #fff;\n background-color: #0062cc;\n}\n\na.badge-primary:focus, a.badge-primary.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n\n.badge-secondary {\n color: #fff;\n background-color: #6c757d;\n}\n\na.badge-secondary:hover, a.badge-secondary:focus {\n color: #fff;\n background-color: #545b62;\n}\n\na.badge-secondary:focus, a.badge-secondary.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\n}\n\n.badge-success {\n color: #fff;\n background-color: #28a745;\n}\n\na.badge-success:hover, a.badge-success:focus {\n color: #fff;\n background-color: #1e7e34;\n}\n\na.badge-success:focus, a.badge-success.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n}\n\n.badge-info {\n color: #fff;\n background-color: #17a2b8;\n}\n\na.badge-info:hover, a.badge-info:focus {\n color: #fff;\n background-color: #117a8b;\n}\n\na.badge-info:focus, a.badge-info.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n}\n\n.badge-warning {\n color: #212529;\n background-color: #ffc107;\n}\n\na.badge-warning:hover, a.badge-warning:focus {\n color: #212529;\n background-color: #d39e00;\n}\n\na.badge-warning:focus, a.badge-warning.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n}\n\n.badge-danger {\n color: #fff;\n background-color: #dc3545;\n}\n\na.badge-danger:hover, a.badge-danger:focus {\n color: #fff;\n background-color: #bd2130;\n}\n\na.badge-danger:focus, a.badge-danger.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n}\n\n.badge-light {\n color: #212529;\n background-color: #f8f9fa;\n}\n\na.badge-light:hover, a.badge-light:focus {\n color: #212529;\n background-color: #dae0e5;\n}\n\na.badge-light:focus, a.badge-light.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n}\n\n.badge-dark {\n color: #fff;\n background-color: #343a40;\n}\n\na.badge-dark:hover, a.badge-dark:focus {\n color: #fff;\n background-color: #1d2124;\n}\n\na.badge-dark:focus, a.badge-dark.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n}\n\n.jumbotron {\n padding: 2rem 1rem;\n margin-bottom: 2rem;\n background-color: #e9ecef;\n border-radius: 0.3rem;\n}\n\n@media (min-width: 576px) {\n .jumbotron {\n padding: 4rem 2rem;\n }\n}\n\n.jumbotron-fluid {\n padding-right: 0;\n padding-left: 0;\n border-radius: 0;\n}\n\n.alert {\n position: relative;\n padding: 0.75rem 1.25rem;\n margin-bottom: 1rem;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n}\n\n.alert-heading {\n color: inherit;\n}\n\n.alert-link {\n font-weight: 700;\n}\n\n.alert-dismissible {\n padding-right: 4rem;\n}\n\n.alert-dismissible .close {\n position: absolute;\n top: 0;\n right: 0;\n padding: 0.75rem 1.25rem;\n color: inherit;\n}\n\n.alert-primary {\n color: #004085;\n background-color: #cce5ff;\n border-color: #b8daff;\n}\n\n.alert-primary hr {\n border-top-color: #9fcdff;\n}\n\n.alert-primary .alert-link {\n color: #002752;\n}\n\n.alert-secondary {\n color: #383d41;\n background-color: #e2e3e5;\n border-color: #d6d8db;\n}\n\n.alert-secondary hr {\n border-top-color: #c8cbcf;\n}\n\n.alert-secondary .alert-link {\n color: #202326;\n}\n\n.alert-success {\n color: #155724;\n background-color: #d4edda;\n border-color: #c3e6cb;\n}\n\n.alert-success hr {\n border-top-color: #b1dfbb;\n}\n\n.alert-success .alert-link {\n color: #0b2e13;\n}\n\n.alert-info {\n color: #0c5460;\n background-color: #d1ecf1;\n border-color: #bee5eb;\n}\n\n.alert-info hr {\n border-top-color: #abdde5;\n}\n\n.alert-info .alert-link {\n color: #062c33;\n}\n\n.alert-warning {\n color: #856404;\n background-color: #fff3cd;\n border-color: #ffeeba;\n}\n\n.alert-warning hr {\n border-top-color: #ffe8a1;\n}\n\n.alert-warning .alert-link {\n color: #533f03;\n}\n\n.alert-danger {\n color: #721c24;\n background-color: #f8d7da;\n border-color: #f5c6cb;\n}\n\n.alert-danger hr {\n border-top-color: #f1b0b7;\n}\n\n.alert-danger .alert-link {\n color: #491217;\n}\n\n.alert-light {\n color: #818182;\n background-color: #fefefe;\n border-color: #fdfdfe;\n}\n\n.alert-light hr {\n border-top-color: #ececf6;\n}\n\n.alert-light .alert-link {\n color: #686868;\n}\n\n.alert-dark {\n color: #1b1e21;\n background-color: #d6d8d9;\n border-color: #c6c8ca;\n}\n\n.alert-dark hr {\n border-top-color: #b9bbbe;\n}\n\n.alert-dark .alert-link {\n color: #040505;\n}\n\n@keyframes progress-bar-stripes {\n from {\n background-position: 1rem 0;\n }\n to {\n background-position: 0 0;\n }\n}\n\n.progress {\n display: flex;\n height: 1rem;\n overflow: hidden;\n line-height: 0;\n font-size: 0.75rem;\n background-color: #e9ecef;\n border-radius: 0.25rem;\n}\n\n.progress-bar {\n display: flex;\n flex-direction: column;\n justify-content: center;\n overflow: hidden;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n background-color: #007bff;\n transition: width 0.6s ease;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .progress-bar {\n transition: none;\n }\n}\n\n.progress-bar-striped {\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-size: 1rem 1rem;\n}\n\n.progress-bar-animated {\n animation: progress-bar-stripes 1s linear infinite;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .progress-bar-animated {\n animation: none;\n }\n}\n\n.media {\n display: flex;\n align-items: flex-start;\n}\n\n.media-body {\n flex: 1;\n}\n\n.list-group {\n display: flex;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n border-radius: 0.25rem;\n}\n\n.list-group-item-action {\n width: 100%;\n color: #495057;\n text-align: inherit;\n}\n\n.list-group-item-action:hover, .list-group-item-action:focus {\n z-index: 1;\n color: #495057;\n text-decoration: none;\n background-color: #f8f9fa;\n}\n\n.list-group-item-action:active {\n color: #212529;\n background-color: #e9ecef;\n}\n\n.list-group-item {\n position: relative;\n display: block;\n padding: 0.75rem 1.25rem;\n background-color: #fff;\n border: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.list-group-item:first-child {\n border-top-left-radius: inherit;\n border-top-right-radius: inherit;\n}\n\n.list-group-item:last-child {\n border-bottom-right-radius: inherit;\n border-bottom-left-radius: inherit;\n}\n\n.list-group-item.disabled, .list-group-item:disabled {\n color: #6c757d;\n pointer-events: none;\n background-color: #fff;\n}\n\n.list-group-item.active {\n z-index: 2;\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.list-group-item + .list-group-item {\n border-top-width: 0;\n}\n\n.list-group-item + .list-group-item.active {\n margin-top: -1px;\n border-top-width: 1px;\n}\n\n.list-group-horizontal {\n flex-direction: row;\n}\n\n.list-group-horizontal > .list-group-item:first-child {\n border-bottom-left-radius: 0.25rem;\n border-top-right-radius: 0;\n}\n\n.list-group-horizontal > .list-group-item:last-child {\n border-top-right-radius: 0.25rem;\n border-bottom-left-radius: 0;\n}\n\n.list-group-horizontal > .list-group-item.active {\n margin-top: 0;\n}\n\n.list-group-horizontal > .list-group-item + .list-group-item {\n border-top-width: 1px;\n border-left-width: 0;\n}\n\n.list-group-horizontal > .list-group-item + .list-group-item.active {\n margin-left: -1px;\n border-left-width: 1px;\n}\n\n@media (min-width: 576px) {\n .list-group-horizontal-sm {\n flex-direction: row;\n }\n .list-group-horizontal-sm > .list-group-item:first-child {\n border-bottom-left-radius: 0.25rem;\n border-top-right-radius: 0;\n }\n .list-group-horizontal-sm > .list-group-item:last-child {\n border-top-right-radius: 0.25rem;\n border-bottom-left-radius: 0;\n }\n .list-group-horizontal-sm > .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-sm > .list-group-item + .list-group-item {\n border-top-width: 1px;\n border-left-width: 0;\n }\n .list-group-horizontal-sm > .list-group-item + .list-group-item.active {\n margin-left: -1px;\n border-left-width: 1px;\n }\n}\n\n@media (min-width: 768px) {\n .list-group-horizontal-md {\n flex-direction: row;\n }\n .list-group-horizontal-md > .list-group-item:first-child {\n border-bottom-left-radius: 0.25rem;\n border-top-right-radius: 0;\n }\n .list-group-horizontal-md > .list-group-item:last-child {\n border-top-right-radius: 0.25rem;\n border-bottom-left-radius: 0;\n }\n .list-group-horizontal-md > .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-md > .list-group-item + .list-group-item {\n border-top-width: 1px;\n border-left-width: 0;\n }\n .list-group-horizontal-md > .list-group-item + .list-group-item.active {\n margin-left: -1px;\n border-left-width: 1px;\n }\n}\n\n@media (min-width: 992px) {\n .list-group-horizontal-lg {\n flex-direction: row;\n }\n .list-group-horizontal-lg > .list-group-item:first-child {\n border-bottom-left-radius: 0.25rem;\n border-top-right-radius: 0;\n }\n .list-group-horizontal-lg > .list-group-item:last-child {\n border-top-right-radius: 0.25rem;\n border-bottom-left-radius: 0;\n }\n .list-group-horizontal-lg > .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-lg > .list-group-item + .list-group-item {\n border-top-width: 1px;\n border-left-width: 0;\n }\n .list-group-horizontal-lg > .list-group-item + .list-group-item.active {\n margin-left: -1px;\n border-left-width: 1px;\n }\n}\n\n@media (min-width: 1200px) {\n .list-group-horizontal-xl {\n flex-direction: row;\n }\n .list-group-horizontal-xl > .list-group-item:first-child {\n border-bottom-left-radius: 0.25rem;\n border-top-right-radius: 0;\n }\n .list-group-horizontal-xl > .list-group-item:last-child {\n border-top-right-radius: 0.25rem;\n border-bottom-left-radius: 0;\n }\n .list-group-horizontal-xl > .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-xl > .list-group-item + .list-group-item {\n border-top-width: 1px;\n border-left-width: 0;\n }\n .list-group-horizontal-xl > .list-group-item + .list-group-item.active {\n margin-left: -1px;\n border-left-width: 1px;\n }\n}\n\n.list-group-flush {\n border-radius: 0;\n}\n\n.list-group-flush > .list-group-item {\n border-width: 0 0 1px;\n}\n\n.list-group-flush > .list-group-item:last-child {\n border-bottom-width: 0;\n}\n\n.list-group-item-primary {\n color: #004085;\n background-color: #b8daff;\n}\n\n.list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus {\n color: #004085;\n background-color: #9fcdff;\n}\n\n.list-group-item-primary.list-group-item-action.active {\n color: #fff;\n background-color: #004085;\n border-color: #004085;\n}\n\n.list-group-item-secondary {\n color: #383d41;\n background-color: #d6d8db;\n}\n\n.list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus {\n color: #383d41;\n background-color: #c8cbcf;\n}\n\n.list-group-item-secondary.list-group-item-action.active {\n color: #fff;\n background-color: #383d41;\n border-color: #383d41;\n}\n\n.list-group-item-success {\n color: #155724;\n background-color: #c3e6cb;\n}\n\n.list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus {\n color: #155724;\n background-color: #b1dfbb;\n}\n\n.list-group-item-success.list-group-item-action.active {\n color: #fff;\n background-color: #155724;\n border-color: #155724;\n}\n\n.list-group-item-info {\n color: #0c5460;\n background-color: #bee5eb;\n}\n\n.list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus {\n color: #0c5460;\n background-color: #abdde5;\n}\n\n.list-group-item-info.list-group-item-action.active {\n color: #fff;\n background-color: #0c5460;\n border-color: #0c5460;\n}\n\n.list-group-item-warning {\n color: #856404;\n background-color: #ffeeba;\n}\n\n.list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus {\n color: #856404;\n background-color: #ffe8a1;\n}\n\n.list-group-item-warning.list-group-item-action.active {\n color: #fff;\n background-color: #856404;\n border-color: #856404;\n}\n\n.list-group-item-danger {\n color: #721c24;\n background-color: #f5c6cb;\n}\n\n.list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus {\n color: #721c24;\n background-color: #f1b0b7;\n}\n\n.list-group-item-danger.list-group-item-action.active {\n color: #fff;\n background-color: #721c24;\n border-color: #721c24;\n}\n\n.list-group-item-light {\n color: #818182;\n background-color: #fdfdfe;\n}\n\n.list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus {\n color: #818182;\n background-color: #ececf6;\n}\n\n.list-group-item-light.list-group-item-action.active {\n color: #fff;\n background-color: #818182;\n border-color: #818182;\n}\n\n.list-group-item-dark {\n color: #1b1e21;\n background-color: #c6c8ca;\n}\n\n.list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus {\n color: #1b1e21;\n background-color: #b9bbbe;\n}\n\n.list-group-item-dark.list-group-item-action.active {\n color: #fff;\n background-color: #1b1e21;\n border-color: #1b1e21;\n}\n\n.close {\n float: right;\n font-size: 1.5rem;\n font-weight: 700;\n line-height: 1;\n color: #000;\n text-shadow: 0 1px 0 #fff;\n opacity: .5;\n}\n\n.close:hover {\n color: #000;\n text-decoration: none;\n}\n\n.close:not(:disabled):not(.disabled):hover, .close:not(:disabled):not(.disabled):focus {\n opacity: .75;\n}\n\nbutton.close {\n padding: 0;\n background-color: transparent;\n border: 0;\n}\n\na.close.disabled {\n pointer-events: none;\n}\n\n.toast {\n flex-basis: 350px;\n max-width: 350px;\n font-size: 0.875rem;\n background-color: rgba(255, 255, 255, 0.85);\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.1);\n box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.1);\n opacity: 0;\n border-radius: 0.25rem;\n}\n\n.toast:not(:last-child) {\n margin-bottom: 0.75rem;\n}\n\n.toast.showing {\n opacity: 1;\n}\n\n.toast.show {\n display: block;\n opacity: 1;\n}\n\n.toast.hide {\n display: none;\n}\n\n.toast-header {\n display: flex;\n align-items: center;\n padding: 0.25rem 0.75rem;\n color: #6c757d;\n background-color: rgba(255, 255, 255, 0.85);\n background-clip: padding-box;\n border-bottom: 1px solid rgba(0, 0, 0, 0.05);\n border-top-left-radius: calc(0.25rem - 1px);\n border-top-right-radius: calc(0.25rem - 1px);\n}\n\n.toast-body {\n padding: 0.75rem;\n}\n\n.modal-open {\n overflow: hidden;\n}\n\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n\n.modal {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 1050;\n display: none;\n width: 100%;\n height: 100%;\n overflow: hidden;\n outline: 0;\n}\n\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 0.5rem;\n pointer-events: none;\n}\n\n.modal.fade .modal-dialog {\n transition: transform 0.3s ease-out;\n transform: translate(0, -50px);\n}\n\n@media (prefers-reduced-motion: reduce) {\n .modal.fade .modal-dialog {\n transition: none;\n }\n}\n\n.modal.show .modal-dialog {\n transform: none;\n}\n\n.modal.modal-static .modal-dialog {\n transform: scale(1.02);\n}\n\n.modal-dialog-scrollable {\n display: flex;\n max-height: calc(100% - 1rem);\n}\n\n.modal-dialog-scrollable .modal-content {\n max-height: calc(100vh - 1rem);\n overflow: hidden;\n}\n\n.modal-dialog-scrollable .modal-header,\n.modal-dialog-scrollable .modal-footer {\n flex-shrink: 0;\n}\n\n.modal-dialog-scrollable .modal-body {\n overflow-y: auto;\n}\n\n.modal-dialog-centered {\n display: flex;\n align-items: center;\n min-height: calc(100% - 1rem);\n}\n\n.modal-dialog-centered::before {\n display: block;\n height: calc(100vh - 1rem);\n height: min-content;\n content: \"\";\n}\n\n.modal-dialog-centered.modal-dialog-scrollable {\n flex-direction: column;\n justify-content: center;\n height: 100%;\n}\n\n.modal-dialog-centered.modal-dialog-scrollable .modal-content {\n max-height: none;\n}\n\n.modal-dialog-centered.modal-dialog-scrollable::before {\n content: none;\n}\n\n.modal-content {\n position: relative;\n display: flex;\n flex-direction: column;\n width: 100%;\n pointer-events: auto;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 0.3rem;\n outline: 0;\n}\n\n.modal-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 1040;\n width: 100vw;\n height: 100vh;\n background-color: #000;\n}\n\n.modal-backdrop.fade {\n opacity: 0;\n}\n\n.modal-backdrop.show {\n opacity: 0.5;\n}\n\n.modal-header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n padding: 1rem 1rem;\n border-bottom: 1px solid #dee2e6;\n border-top-left-radius: calc(0.3rem - 1px);\n border-top-right-radius: calc(0.3rem - 1px);\n}\n\n.modal-header .close {\n padding: 1rem 1rem;\n margin: -1rem -1rem -1rem auto;\n}\n\n.modal-title {\n margin-bottom: 0;\n line-height: 1.5;\n}\n\n.modal-body {\n position: relative;\n flex: 1 1 auto;\n padding: 1rem;\n}\n\n.modal-footer {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: flex-end;\n padding: 0.75rem;\n border-top: 1px solid #dee2e6;\n border-bottom-right-radius: calc(0.3rem - 1px);\n border-bottom-left-radius: calc(0.3rem - 1px);\n}\n\n.modal-footer > * {\n margin: 0.25rem;\n}\n\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n\n@media (min-width: 576px) {\n .modal-dialog {\n max-width: 500px;\n margin: 1.75rem auto;\n }\n .modal-dialog-scrollable {\n max-height: calc(100% - 3.5rem);\n }\n .modal-dialog-scrollable .modal-content {\n max-height: calc(100vh - 3.5rem);\n }\n .modal-dialog-centered {\n min-height: calc(100% - 3.5rem);\n }\n .modal-dialog-centered::before {\n height: calc(100vh - 3.5rem);\n height: min-content;\n }\n .modal-sm {\n max-width: 300px;\n }\n}\n\n@media (min-width: 992px) {\n .modal-lg,\n .modal-xl {\n max-width: 800px;\n }\n}\n\n@media (min-width: 1200px) {\n .modal-xl {\n max-width: 1140px;\n }\n}\n\n.tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n font-style: normal;\n font-weight: 400;\n line-height: 1.5;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n white-space: normal;\n line-break: auto;\n font-size: 0.875rem;\n word-wrap: break-word;\n opacity: 0;\n}\n\n.tooltip.show {\n opacity: 0.9;\n}\n\n.tooltip .arrow {\n position: absolute;\n display: block;\n width: 0.8rem;\n height: 0.4rem;\n}\n\n.tooltip .arrow::before {\n position: absolute;\n content: \"\";\n border-color: transparent;\n border-style: solid;\n}\n\n.bs-tooltip-top, .bs-tooltip-auto[x-placement^=\"top\"] {\n padding: 0.4rem 0;\n}\n\n.bs-tooltip-top .arrow, .bs-tooltip-auto[x-placement^=\"top\"] .arrow {\n bottom: 0;\n}\n\n.bs-tooltip-top .arrow::before, .bs-tooltip-auto[x-placement^=\"top\"] .arrow::before {\n top: 0;\n border-width: 0.4rem 0.4rem 0;\n border-top-color: #000;\n}\n\n.bs-tooltip-right, .bs-tooltip-auto[x-placement^=\"right\"] {\n padding: 0 0.4rem;\n}\n\n.bs-tooltip-right .arrow, .bs-tooltip-auto[x-placement^=\"right\"] .arrow {\n left: 0;\n width: 0.4rem;\n height: 0.8rem;\n}\n\n.bs-tooltip-right .arrow::before, .bs-tooltip-auto[x-placement^=\"right\"] .arrow::before {\n right: 0;\n border-width: 0.4rem 0.4rem 0.4rem 0;\n border-right-color: #000;\n}\n\n.bs-tooltip-bottom, .bs-tooltip-auto[x-placement^=\"bottom\"] {\n padding: 0.4rem 0;\n}\n\n.bs-tooltip-bottom .arrow, .bs-tooltip-auto[x-placement^=\"bottom\"] .arrow {\n top: 0;\n}\n\n.bs-tooltip-bottom .arrow::before, .bs-tooltip-auto[x-placement^=\"bottom\"] .arrow::before {\n bottom: 0;\n border-width: 0 0.4rem 0.4rem;\n border-bottom-color: #000;\n}\n\n.bs-tooltip-left, .bs-tooltip-auto[x-placement^=\"left\"] {\n padding: 0 0.4rem;\n}\n\n.bs-tooltip-left .arrow, .bs-tooltip-auto[x-placement^=\"left\"] .arrow {\n right: 0;\n width: 0.4rem;\n height: 0.8rem;\n}\n\n.bs-tooltip-left .arrow::before, .bs-tooltip-auto[x-placement^=\"left\"] .arrow::before {\n left: 0;\n border-width: 0.4rem 0 0.4rem 0.4rem;\n border-left-color: #000;\n}\n\n.tooltip-inner {\n max-width: 200px;\n padding: 0.25rem 0.5rem;\n color: #fff;\n text-align: center;\n background-color: #000;\n border-radius: 0.25rem;\n}\n\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1060;\n display: block;\n max-width: 276px;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n font-style: normal;\n font-weight: 400;\n line-height: 1.5;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n white-space: normal;\n line-break: auto;\n font-size: 0.875rem;\n word-wrap: break-word;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 0.3rem;\n}\n\n.popover .arrow {\n position: absolute;\n display: block;\n width: 1rem;\n height: 0.5rem;\n margin: 0 0.3rem;\n}\n\n.popover .arrow::before, .popover .arrow::after {\n position: absolute;\n display: block;\n content: \"\";\n border-color: transparent;\n border-style: solid;\n}\n\n.bs-popover-top, .bs-popover-auto[x-placement^=\"top\"] {\n margin-bottom: 0.5rem;\n}\n\n.bs-popover-top > .arrow, .bs-popover-auto[x-placement^=\"top\"] > .arrow {\n bottom: calc(-0.5rem - 1px);\n}\n\n.bs-popover-top > .arrow::before, .bs-popover-auto[x-placement^=\"top\"] > .arrow::before {\n bottom: 0;\n border-width: 0.5rem 0.5rem 0;\n border-top-color: rgba(0, 0, 0, 0.25);\n}\n\n.bs-popover-top > .arrow::after, .bs-popover-auto[x-placement^=\"top\"] > .arrow::after {\n bottom: 1px;\n border-width: 0.5rem 0.5rem 0;\n border-top-color: #fff;\n}\n\n.bs-popover-right, .bs-popover-auto[x-placement^=\"right\"] {\n margin-left: 0.5rem;\n}\n\n.bs-popover-right > .arrow, .bs-popover-auto[x-placement^=\"right\"] > .arrow {\n left: calc(-0.5rem - 1px);\n width: 0.5rem;\n height: 1rem;\n margin: 0.3rem 0;\n}\n\n.bs-popover-right > .arrow::before, .bs-popover-auto[x-placement^=\"right\"] > .arrow::before {\n left: 0;\n border-width: 0.5rem 0.5rem 0.5rem 0;\n border-right-color: rgba(0, 0, 0, 0.25);\n}\n\n.bs-popover-right > .arrow::after, .bs-popover-auto[x-placement^=\"right\"] > .arrow::after {\n left: 1px;\n border-width: 0.5rem 0.5rem 0.5rem 0;\n border-right-color: #fff;\n}\n\n.bs-popover-bottom, .bs-popover-auto[x-placement^=\"bottom\"] {\n margin-top: 0.5rem;\n}\n\n.bs-popover-bottom > .arrow, .bs-popover-auto[x-placement^=\"bottom\"] > .arrow {\n top: calc(-0.5rem - 1px);\n}\n\n.bs-popover-bottom > .arrow::before, .bs-popover-auto[x-placement^=\"bottom\"] > .arrow::before {\n top: 0;\n border-width: 0 0.5rem 0.5rem 0.5rem;\n border-bottom-color: rgba(0, 0, 0, 0.25);\n}\n\n.bs-popover-bottom > .arrow::after, .bs-popover-auto[x-placement^=\"bottom\"] > .arrow::after {\n top: 1px;\n border-width: 0 0.5rem 0.5rem 0.5rem;\n border-bottom-color: #fff;\n}\n\n.bs-popover-bottom .popover-header::before, .bs-popover-auto[x-placement^=\"bottom\"] .popover-header::before {\n position: absolute;\n top: 0;\n left: 50%;\n display: block;\n width: 1rem;\n margin-left: -0.5rem;\n content: \"\";\n border-bottom: 1px solid #f7f7f7;\n}\n\n.bs-popover-left, .bs-popover-auto[x-placement^=\"left\"] {\n margin-right: 0.5rem;\n}\n\n.bs-popover-left > .arrow, .bs-popover-auto[x-placement^=\"left\"] > .arrow {\n right: calc(-0.5rem - 1px);\n width: 0.5rem;\n height: 1rem;\n margin: 0.3rem 0;\n}\n\n.bs-popover-left > .arrow::before, .bs-popover-auto[x-placement^=\"left\"] > .arrow::before {\n right: 0;\n border-width: 0.5rem 0 0.5rem 0.5rem;\n border-left-color: rgba(0, 0, 0, 0.25);\n}\n\n.bs-popover-left > .arrow::after, .bs-popover-auto[x-placement^=\"left\"] > .arrow::after {\n right: 1px;\n border-width: 0.5rem 0 0.5rem 0.5rem;\n border-left-color: #fff;\n}\n\n.popover-header {\n padding: 0.5rem 0.75rem;\n margin-bottom: 0;\n font-size: 1rem;\n background-color: #f7f7f7;\n border-bottom: 1px solid #ebebeb;\n border-top-left-radius: calc(0.3rem - 1px);\n border-top-right-radius: calc(0.3rem - 1px);\n}\n\n.popover-header:empty {\n display: none;\n}\n\n.popover-body {\n padding: 0.5rem 0.75rem;\n color: #212529;\n}\n\n.carousel {\n position: relative;\n}\n\n.carousel.pointer-event {\n touch-action: pan-y;\n}\n\n.carousel-inner {\n position: relative;\n width: 100%;\n overflow: hidden;\n}\n\n.carousel-inner::after {\n display: block;\n clear: both;\n content: \"\";\n}\n\n.carousel-item {\n position: relative;\n display: none;\n float: left;\n width: 100%;\n margin-right: -100%;\n backface-visibility: hidden;\n transition: transform 0.6s ease-in-out;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .carousel-item {\n transition: none;\n }\n}\n\n.carousel-item.active,\n.carousel-item-next,\n.carousel-item-prev {\n display: block;\n}\n\n.carousel-item-next:not(.carousel-item-left),\n.active.carousel-item-right {\n transform: translateX(100%);\n}\n\n.carousel-item-prev:not(.carousel-item-right),\n.active.carousel-item-left {\n transform: translateX(-100%);\n}\n\n.carousel-fade .carousel-item {\n opacity: 0;\n transition-property: opacity;\n transform: none;\n}\n\n.carousel-fade .carousel-item.active,\n.carousel-fade .carousel-item-next.carousel-item-left,\n.carousel-fade .carousel-item-prev.carousel-item-right {\n z-index: 1;\n opacity: 1;\n}\n\n.carousel-fade .active.carousel-item-left,\n.carousel-fade .active.carousel-item-right {\n z-index: 0;\n opacity: 0;\n transition: opacity 0s 0.6s;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .carousel-fade .active.carousel-item-left,\n .carousel-fade .active.carousel-item-right {\n transition: none;\n }\n}\n\n.carousel-control-prev,\n.carousel-control-next {\n position: absolute;\n top: 0;\n bottom: 0;\n z-index: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 15%;\n color: #fff;\n text-align: center;\n opacity: 0.5;\n transition: opacity 0.15s ease;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .carousel-control-prev,\n .carousel-control-next {\n transition: none;\n }\n}\n\n.carousel-control-prev:hover, .carousel-control-prev:focus,\n.carousel-control-next:hover,\n.carousel-control-next:focus {\n color: #fff;\n text-decoration: none;\n outline: 0;\n opacity: 0.9;\n}\n\n.carousel-control-prev {\n left: 0;\n}\n\n.carousel-control-next {\n right: 0;\n}\n\n.carousel-control-prev-icon,\n.carousel-control-next-icon {\n display: inline-block;\n width: 20px;\n height: 20px;\n background: no-repeat 50% / 100% 100%;\n}\n\n.carousel-control-prev-icon {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e\");\n}\n\n.carousel-control-next-icon {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e\");\n}\n\n.carousel-indicators {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 15;\n display: flex;\n justify-content: center;\n padding-left: 0;\n margin-right: 15%;\n margin-left: 15%;\n list-style: none;\n}\n\n.carousel-indicators li {\n box-sizing: content-box;\n flex: 0 1 auto;\n width: 30px;\n height: 3px;\n margin-right: 3px;\n margin-left: 3px;\n text-indent: -999px;\n cursor: pointer;\n background-color: #fff;\n background-clip: padding-box;\n border-top: 10px solid transparent;\n border-bottom: 10px solid transparent;\n opacity: .5;\n transition: opacity 0.6s ease;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .carousel-indicators li {\n transition: none;\n }\n}\n\n.carousel-indicators .active {\n opacity: 1;\n}\n\n.carousel-caption {\n position: absolute;\n right: 15%;\n bottom: 20px;\n left: 15%;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: #fff;\n text-align: center;\n}\n\n@keyframes spinner-border {\n to {\n transform: rotate(360deg);\n }\n}\n\n.spinner-border {\n display: inline-block;\n width: 2rem;\n height: 2rem;\n vertical-align: text-bottom;\n border: 0.25em solid currentColor;\n border-right-color: transparent;\n border-radius: 50%;\n animation: spinner-border .75s linear infinite;\n}\n\n.spinner-border-sm {\n width: 1rem;\n height: 1rem;\n border-width: 0.2em;\n}\n\n@keyframes spinner-grow {\n 0% {\n transform: scale(0);\n }\n 50% {\n opacity: 1;\n transform: none;\n }\n}\n\n.spinner-grow {\n display: inline-block;\n width: 2rem;\n height: 2rem;\n vertical-align: text-bottom;\n background-color: currentColor;\n border-radius: 50%;\n opacity: 0;\n animation: spinner-grow .75s linear infinite;\n}\n\n.spinner-grow-sm {\n width: 1rem;\n height: 1rem;\n}\n\n.align-baseline {\n vertical-align: baseline !important;\n}\n\n.align-top {\n vertical-align: top !important;\n}\n\n.align-middle {\n vertical-align: middle !important;\n}\n\n.align-bottom {\n vertical-align: bottom !important;\n}\n\n.align-text-bottom {\n vertical-align: text-bottom !important;\n}\n\n.align-text-top {\n vertical-align: text-top !important;\n}\n\n.bg-primary {\n background-color: #007bff !important;\n}\n\na.bg-primary:hover, a.bg-primary:focus,\nbutton.bg-primary:hover,\nbutton.bg-primary:focus {\n background-color: #0062cc !important;\n}\n\n.bg-secondary {\n background-color: #6c757d !important;\n}\n\na.bg-secondary:hover, a.bg-secondary:focus,\nbutton.bg-secondary:hover,\nbutton.bg-secondary:focus {\n background-color: #545b62 !important;\n}\n\n.bg-success {\n background-color: #28a745 !important;\n}\n\na.bg-success:hover, a.bg-success:focus,\nbutton.bg-success:hover,\nbutton.bg-success:focus {\n background-color: #1e7e34 !important;\n}\n\n.bg-info {\n background-color: #17a2b8 !important;\n}\n\na.bg-info:hover, a.bg-info:focus,\nbutton.bg-info:hover,\nbutton.bg-info:focus {\n background-color: #117a8b !important;\n}\n\n.bg-warning {\n background-color: #ffc107 !important;\n}\n\na.bg-warning:hover, a.bg-warning:focus,\nbutton.bg-warning:hover,\nbutton.bg-warning:focus {\n background-color: #d39e00 !important;\n}\n\n.bg-danger {\n background-color: #dc3545 !important;\n}\n\na.bg-danger:hover, a.bg-danger:focus,\nbutton.bg-danger:hover,\nbutton.bg-danger:focus {\n background-color: #bd2130 !important;\n}\n\n.bg-light {\n background-color: #f8f9fa !important;\n}\n\na.bg-light:hover, a.bg-light:focus,\nbutton.bg-light:hover,\nbutton.bg-light:focus {\n background-color: #dae0e5 !important;\n}\n\n.bg-dark {\n background-color: #343a40 !important;\n}\n\na.bg-dark:hover, a.bg-dark:focus,\nbutton.bg-dark:hover,\nbutton.bg-dark:focus {\n background-color: #1d2124 !important;\n}\n\n.bg-white {\n background-color: #fff !important;\n}\n\n.bg-transparent {\n background-color: transparent !important;\n}\n\n.border {\n border: 1px solid #dee2e6 !important;\n}\n\n.border-top {\n border-top: 1px solid #dee2e6 !important;\n}\n\n.border-right {\n border-right: 1px solid #dee2e6 !important;\n}\n\n.border-bottom {\n border-bottom: 1px solid #dee2e6 !important;\n}\n\n.border-left {\n border-left: 1px solid #dee2e6 !important;\n}\n\n.border-0 {\n border: 0 !important;\n}\n\n.border-top-0 {\n border-top: 0 !important;\n}\n\n.border-right-0 {\n border-right: 0 !important;\n}\n\n.border-bottom-0 {\n border-bottom: 0 !important;\n}\n\n.border-left-0 {\n border-left: 0 !important;\n}\n\n.border-primary {\n border-color: #007bff !important;\n}\n\n.border-secondary {\n border-color: #6c757d !important;\n}\n\n.border-success {\n border-color: #28a745 !important;\n}\n\n.border-info {\n border-color: #17a2b8 !important;\n}\n\n.border-warning {\n border-color: #ffc107 !important;\n}\n\n.border-danger {\n border-color: #dc3545 !important;\n}\n\n.border-light {\n border-color: #f8f9fa !important;\n}\n\n.border-dark {\n border-color: #343a40 !important;\n}\n\n.border-white {\n border-color: #fff !important;\n}\n\n.rounded-sm {\n border-radius: 0.2rem !important;\n}\n\n.rounded {\n border-radius: 0.25rem !important;\n}\n\n.rounded-top {\n border-top-left-radius: 0.25rem !important;\n border-top-right-radius: 0.25rem !important;\n}\n\n.rounded-right {\n border-top-right-radius: 0.25rem !important;\n border-bottom-right-radius: 0.25rem !important;\n}\n\n.rounded-bottom {\n border-bottom-right-radius: 0.25rem !important;\n border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-left {\n border-top-left-radius: 0.25rem !important;\n border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-lg {\n border-radius: 0.3rem !important;\n}\n\n.rounded-circle {\n border-radius: 50% !important;\n}\n\n.rounded-pill {\n border-radius: 50rem !important;\n}\n\n.rounded-0 {\n border-radius: 0 !important;\n}\n\n.clearfix::after {\n display: block;\n clear: both;\n content: \"\";\n}\n\n.d-none {\n display: none !important;\n}\n\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-row {\n display: table-row !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline-flex {\n display: inline-flex !important;\n}\n\n@media (min-width: 576px) {\n .d-sm-none {\n display: none !important;\n }\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-row {\n display: table-row !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: inline-flex !important;\n }\n}\n\n@media (min-width: 768px) {\n .d-md-none {\n display: none !important;\n }\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-row {\n display: table-row !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: flex !important;\n }\n .d-md-inline-flex {\n display: inline-flex !important;\n }\n}\n\n@media (min-width: 992px) {\n .d-lg-none {\n display: none !important;\n }\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-row {\n display: table-row !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: inline-flex !important;\n }\n}\n\n@media (min-width: 1200px) {\n .d-xl-none {\n display: none !important;\n }\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-row {\n display: table-row !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: inline-flex !important;\n }\n}\n\n@media print {\n .d-print-none {\n display: none !important;\n }\n .d-print-inline {\n display: inline !important;\n }\n .d-print-inline-block {\n display: inline-block !important;\n }\n .d-print-block {\n display: block !important;\n }\n .d-print-table {\n display: table !important;\n }\n .d-print-table-row {\n display: table-row !important;\n }\n .d-print-table-cell {\n display: table-cell !important;\n }\n .d-print-flex {\n display: flex !important;\n }\n .d-print-inline-flex {\n display: inline-flex !important;\n }\n}\n\n.embed-responsive {\n position: relative;\n display: block;\n width: 100%;\n padding: 0;\n overflow: hidden;\n}\n\n.embed-responsive::before {\n display: block;\n content: \"\";\n}\n\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border: 0;\n}\n\n.embed-responsive-21by9::before {\n padding-top: 42.857143%;\n}\n\n.embed-responsive-16by9::before {\n padding-top: 56.25%;\n}\n\n.embed-responsive-4by3::before {\n padding-top: 75%;\n}\n\n.embed-responsive-1by1::before {\n padding-top: 100%;\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.flex-fill {\n flex: 1 1 auto !important;\n}\n\n.flex-grow-0 {\n flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n flex-shrink: 1 !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n@media (min-width: 576px) {\n .flex-sm-row {\n flex-direction: row !important;\n }\n .flex-sm-column {\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .flex-sm-fill {\n flex: 1 1 auto !important;\n }\n .flex-sm-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-sm-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-sm-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-sm-shrink-1 {\n flex-shrink: 1 !important;\n }\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n justify-content: center !important;\n }\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n align-items: center !important;\n }\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n align-content: center !important;\n }\n .align-content-sm-between {\n align-content: space-between !important;\n }\n .align-content-sm-around {\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n align-self: auto !important;\n }\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n align-self: center !important;\n }\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 768px) {\n .flex-md-row {\n flex-direction: row !important;\n }\n .flex-md-column {\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .flex-md-fill {\n flex: 1 1 auto !important;\n }\n .flex-md-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-md-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-md-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-md-shrink-1 {\n flex-shrink: 1 !important;\n }\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n justify-content: center !important;\n }\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n .align-items-md-start {\n align-items: flex-start !important;\n }\n .align-items-md-end {\n align-items: flex-end !important;\n }\n .align-items-md-center {\n align-items: center !important;\n }\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n .align-content-md-start {\n align-content: flex-start !important;\n }\n .align-content-md-end {\n align-content: flex-end !important;\n }\n .align-content-md-center {\n align-content: center !important;\n }\n .align-content-md-between {\n align-content: space-between !important;\n }\n .align-content-md-around {\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n .align-self-md-auto {\n align-self: auto !important;\n }\n .align-self-md-start {\n align-self: flex-start !important;\n }\n .align-self-md-end {\n align-self: flex-end !important;\n }\n .align-self-md-center {\n align-self: center !important;\n }\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 992px) {\n .flex-lg-row {\n flex-direction: row !important;\n }\n .flex-lg-column {\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .flex-lg-fill {\n flex: 1 1 auto !important;\n }\n .flex-lg-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-lg-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-lg-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-lg-shrink-1 {\n flex-shrink: 1 !important;\n }\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n justify-content: center !important;\n }\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n align-items: center !important;\n }\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n align-content: center !important;\n }\n .align-content-lg-between {\n align-content: space-between !important;\n }\n .align-content-lg-around {\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n align-self: auto !important;\n }\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n align-self: center !important;\n }\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 1200px) {\n .flex-xl-row {\n flex-direction: row !important;\n }\n .flex-xl-column {\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .flex-xl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n justify-content: center !important;\n }\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n align-items: center !important;\n }\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n align-content: center !important;\n }\n .align-content-xl-between {\n align-content: space-between !important;\n }\n .align-content-xl-around {\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n align-self: auto !important;\n }\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n align-self: center !important;\n }\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n}\n\n.float-left {\n float: left !important;\n}\n\n.float-right {\n float: right !important;\n}\n\n.float-none {\n float: none !important;\n}\n\n@media (min-width: 576px) {\n .float-sm-left {\n float: left !important;\n }\n .float-sm-right {\n float: right !important;\n }\n .float-sm-none {\n float: none !important;\n }\n}\n\n@media (min-width: 768px) {\n .float-md-left {\n float: left !important;\n }\n .float-md-right {\n float: right !important;\n }\n .float-md-none {\n float: none !important;\n }\n}\n\n@media (min-width: 992px) {\n .float-lg-left {\n float: left !important;\n }\n .float-lg-right {\n float: right !important;\n }\n .float-lg-none {\n float: none !important;\n }\n}\n\n@media (min-width: 1200px) {\n .float-xl-left {\n float: left !important;\n }\n .float-xl-right {\n float: right !important;\n }\n .float-xl-none {\n float: none !important;\n }\n}\n\n.user-select-all {\n user-select: all !important;\n}\n\n.user-select-auto {\n user-select: auto !important;\n}\n\n.user-select-none {\n user-select: none !important;\n}\n\n.overflow-auto {\n overflow: auto !important;\n}\n\n.overflow-hidden {\n overflow: hidden !important;\n}\n\n.position-static {\n position: static !important;\n}\n\n.position-relative {\n position: relative !important;\n}\n\n.position-absolute {\n position: absolute !important;\n}\n\n.position-fixed {\n position: fixed !important;\n}\n\n.position-sticky {\n position: sticky !important;\n}\n\n.fixed-top {\n position: fixed;\n top: 0;\n right: 0;\n left: 0;\n z-index: 1030;\n}\n\n.fixed-bottom {\n position: fixed;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1030;\n}\n\n@supports (position: sticky) {\n .sticky-top {\n position: sticky;\n top: 0;\n z-index: 1020;\n }\n}\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n overflow: visible;\n clip: auto;\n white-space: normal;\n}\n\n.shadow-sm {\n box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;\n}\n\n.shadow {\n box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;\n}\n\n.shadow-lg {\n box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important;\n}\n\n.shadow-none {\n box-shadow: none !important;\n}\n\n.w-25 {\n width: 25% !important;\n}\n\n.w-50 {\n width: 50% !important;\n}\n\n.w-75 {\n width: 75% !important;\n}\n\n.w-100 {\n width: 100% !important;\n}\n\n.w-auto {\n width: auto !important;\n}\n\n.h-25 {\n height: 25% !important;\n}\n\n.h-50 {\n height: 50% !important;\n}\n\n.h-75 {\n height: 75% !important;\n}\n\n.h-100 {\n height: 100% !important;\n}\n\n.h-auto {\n height: auto !important;\n}\n\n.mw-100 {\n max-width: 100% !important;\n}\n\n.mh-100 {\n max-height: 100% !important;\n}\n\n.min-vw-100 {\n min-width: 100vw !important;\n}\n\n.min-vh-100 {\n min-height: 100vh !important;\n}\n\n.vw-100 {\n width: 100vw !important;\n}\n\n.vh-100 {\n height: 100vh !important;\n}\n\n.m-0 {\n margin: 0 !important;\n}\n\n.mt-0,\n.my-0 {\n margin-top: 0 !important;\n}\n\n.mr-0,\n.mx-0 {\n margin-right: 0 !important;\n}\n\n.mb-0,\n.my-0 {\n margin-bottom: 0 !important;\n}\n\n.ml-0,\n.mx-0 {\n margin-left: 0 !important;\n}\n\n.m-1 {\n margin: 0.25rem !important;\n}\n\n.mt-1,\n.my-1 {\n margin-top: 0.25rem !important;\n}\n\n.mr-1,\n.mx-1 {\n margin-right: 0.25rem !important;\n}\n\n.mb-1,\n.my-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.ml-1,\n.mx-1 {\n margin-left: 0.25rem !important;\n}\n\n.m-2 {\n margin: 0.5rem !important;\n}\n\n.mt-2,\n.my-2 {\n margin-top: 0.5rem !important;\n}\n\n.mr-2,\n.mx-2 {\n margin-right: 0.5rem !important;\n}\n\n.mb-2,\n.my-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.ml-2,\n.mx-2 {\n margin-left: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.mt-3,\n.my-3 {\n margin-top: 1rem !important;\n}\n\n.mr-3,\n.mx-3 {\n margin-right: 1rem !important;\n}\n\n.mb-3,\n.my-3 {\n margin-bottom: 1rem !important;\n}\n\n.ml-3,\n.mx-3 {\n margin-left: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.mt-4,\n.my-4 {\n margin-top: 1.5rem !important;\n}\n\n.mr-4,\n.mx-4 {\n margin-right: 1.5rem !important;\n}\n\n.mb-4,\n.my-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.ml-4,\n.mx-4 {\n margin-left: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.mt-5,\n.my-5 {\n margin-top: 3rem !important;\n}\n\n.mr-5,\n.mx-5 {\n margin-right: 3rem !important;\n}\n\n.mb-5,\n.my-5 {\n margin-bottom: 3rem !important;\n}\n\n.ml-5,\n.mx-5 {\n margin-left: 3rem !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.pt-0,\n.py-0 {\n padding-top: 0 !important;\n}\n\n.pr-0,\n.px-0 {\n padding-right: 0 !important;\n}\n\n.pb-0,\n.py-0 {\n padding-bottom: 0 !important;\n}\n\n.pl-0,\n.px-0 {\n padding-left: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem !important;\n}\n\n.pt-1,\n.py-1 {\n padding-top: 0.25rem !important;\n}\n\n.pr-1,\n.px-1 {\n padding-right: 0.25rem !important;\n}\n\n.pb-1,\n.py-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pl-1,\n.px-1 {\n padding-left: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem !important;\n}\n\n.pt-2,\n.py-2 {\n padding-top: 0.5rem !important;\n}\n\n.pr-2,\n.px-2 {\n padding-right: 0.5rem !important;\n}\n\n.pb-2,\n.py-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pl-2,\n.px-2 {\n padding-left: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.pt-3,\n.py-3 {\n padding-top: 1rem !important;\n}\n\n.pr-3,\n.px-3 {\n padding-right: 1rem !important;\n}\n\n.pb-3,\n.py-3 {\n padding-bottom: 1rem !important;\n}\n\n.pl-3,\n.px-3 {\n padding-left: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.pt-4,\n.py-4 {\n padding-top: 1.5rem !important;\n}\n\n.pr-4,\n.px-4 {\n padding-right: 1.5rem !important;\n}\n\n.pb-4,\n.py-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pl-4,\n.px-4 {\n padding-left: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.pt-5,\n.py-5 {\n padding-top: 3rem !important;\n}\n\n.pr-5,\n.px-5 {\n padding-right: 3rem !important;\n}\n\n.pb-5,\n.py-5 {\n padding-bottom: 3rem !important;\n}\n\n.pl-5,\n.px-5 {\n padding-left: 3rem !important;\n}\n\n.m-n1 {\n margin: -0.25rem !important;\n}\n\n.mt-n1,\n.my-n1 {\n margin-top: -0.25rem !important;\n}\n\n.mr-n1,\n.mx-n1 {\n margin-right: -0.25rem !important;\n}\n\n.mb-n1,\n.my-n1 {\n margin-bottom: -0.25rem !important;\n}\n\n.ml-n1,\n.mx-n1 {\n margin-left: -0.25rem !important;\n}\n\n.m-n2 {\n margin: -0.5rem !important;\n}\n\n.mt-n2,\n.my-n2 {\n margin-top: -0.5rem !important;\n}\n\n.mr-n2,\n.mx-n2 {\n margin-right: -0.5rem !important;\n}\n\n.mb-n2,\n.my-n2 {\n margin-bottom: -0.5rem !important;\n}\n\n.ml-n2,\n.mx-n2 {\n margin-left: -0.5rem !important;\n}\n\n.m-n3 {\n margin: -1rem !important;\n}\n\n.mt-n3,\n.my-n3 {\n margin-top: -1rem !important;\n}\n\n.mr-n3,\n.mx-n3 {\n margin-right: -1rem !important;\n}\n\n.mb-n3,\n.my-n3 {\n margin-bottom: -1rem !important;\n}\n\n.ml-n3,\n.mx-n3 {\n margin-left: -1rem !important;\n}\n\n.m-n4 {\n margin: -1.5rem !important;\n}\n\n.mt-n4,\n.my-n4 {\n margin-top: -1.5rem !important;\n}\n\n.mr-n4,\n.mx-n4 {\n margin-right: -1.5rem !important;\n}\n\n.mb-n4,\n.my-n4 {\n margin-bottom: -1.5rem !important;\n}\n\n.ml-n4,\n.mx-n4 {\n margin-left: -1.5rem !important;\n}\n\n.m-n5 {\n margin: -3rem !important;\n}\n\n.mt-n5,\n.my-n5 {\n margin-top: -3rem !important;\n}\n\n.mr-n5,\n.mx-n5 {\n margin-right: -3rem !important;\n}\n\n.mb-n5,\n.my-n5 {\n margin-bottom: -3rem !important;\n}\n\n.ml-n5,\n.mx-n5 {\n margin-left: -3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mt-auto,\n.my-auto {\n margin-top: auto !important;\n}\n\n.mr-auto,\n.mx-auto {\n margin-right: auto !important;\n}\n\n.mb-auto,\n.my-auto {\n margin-bottom: auto !important;\n}\n\n.ml-auto,\n.mx-auto {\n margin-left: auto !important;\n}\n\n@media (min-width: 576px) {\n .m-sm-0 {\n margin: 0 !important;\n }\n .mt-sm-0,\n .my-sm-0 {\n margin-top: 0 !important;\n }\n .mr-sm-0,\n .mx-sm-0 {\n margin-right: 0 !important;\n }\n .mb-sm-0,\n .my-sm-0 {\n margin-bottom: 0 !important;\n }\n .ml-sm-0,\n .mx-sm-0 {\n margin-left: 0 !important;\n }\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n .mt-sm-1,\n .my-sm-1 {\n margin-top: 0.25rem !important;\n }\n .mr-sm-1,\n .mx-sm-1 {\n margin-right: 0.25rem !important;\n }\n .mb-sm-1,\n .my-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-sm-1,\n .mx-sm-1 {\n margin-left: 0.25rem !important;\n }\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n .mt-sm-2,\n .my-sm-2 {\n margin-top: 0.5rem !important;\n }\n .mr-sm-2,\n .mx-sm-2 {\n margin-right: 0.5rem !important;\n }\n .mb-sm-2,\n .my-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-sm-2,\n .mx-sm-2 {\n margin-left: 0.5rem !important;\n }\n .m-sm-3 {\n margin: 1rem !important;\n }\n .mt-sm-3,\n .my-sm-3 {\n margin-top: 1rem !important;\n }\n .mr-sm-3,\n .mx-sm-3 {\n margin-right: 1rem !important;\n }\n .mb-sm-3,\n .my-sm-3 {\n margin-bottom: 1rem !important;\n }\n .ml-sm-3,\n .mx-sm-3 {\n margin-left: 1rem !important;\n }\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n .mt-sm-4,\n .my-sm-4 {\n margin-top: 1.5rem !important;\n }\n .mr-sm-4,\n .mx-sm-4 {\n margin-right: 1.5rem !important;\n }\n .mb-sm-4,\n .my-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-sm-4,\n .mx-sm-4 {\n margin-left: 1.5rem !important;\n }\n .m-sm-5 {\n margin: 3rem !important;\n }\n .mt-sm-5,\n .my-sm-5 {\n margin-top: 3rem !important;\n }\n .mr-sm-5,\n .mx-sm-5 {\n margin-right: 3rem !important;\n }\n .mb-sm-5,\n .my-sm-5 {\n margin-bottom: 3rem !important;\n }\n .ml-sm-5,\n .mx-sm-5 {\n margin-left: 3rem !important;\n }\n .p-sm-0 {\n padding: 0 !important;\n }\n .pt-sm-0,\n .py-sm-0 {\n padding-top: 0 !important;\n }\n .pr-sm-0,\n .px-sm-0 {\n padding-right: 0 !important;\n }\n .pb-sm-0,\n .py-sm-0 {\n padding-bottom: 0 !important;\n }\n .pl-sm-0,\n .px-sm-0 {\n padding-left: 0 !important;\n }\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n .pt-sm-1,\n .py-sm-1 {\n padding-top: 0.25rem !important;\n }\n .pr-sm-1,\n .px-sm-1 {\n padding-right: 0.25rem !important;\n }\n .pb-sm-1,\n .py-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-sm-1,\n .px-sm-1 {\n padding-left: 0.25rem !important;\n }\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n .pt-sm-2,\n .py-sm-2 {\n padding-top: 0.5rem !important;\n }\n .pr-sm-2,\n .px-sm-2 {\n padding-right: 0.5rem !important;\n }\n .pb-sm-2,\n .py-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-sm-2,\n .px-sm-2 {\n padding-left: 0.5rem !important;\n }\n .p-sm-3 {\n padding: 1rem !important;\n }\n .pt-sm-3,\n .py-sm-3 {\n padding-top: 1rem !important;\n }\n .pr-sm-3,\n .px-sm-3 {\n padding-right: 1rem !important;\n }\n .pb-sm-3,\n .py-sm-3 {\n padding-bottom: 1rem !important;\n }\n .pl-sm-3,\n .px-sm-3 {\n padding-left: 1rem !important;\n }\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n .pt-sm-4,\n .py-sm-4 {\n padding-top: 1.5rem !important;\n }\n .pr-sm-4,\n .px-sm-4 {\n padding-right: 1.5rem !important;\n }\n .pb-sm-4,\n .py-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-sm-4,\n .px-sm-4 {\n padding-left: 1.5rem !important;\n }\n .p-sm-5 {\n padding: 3rem !important;\n }\n .pt-sm-5,\n .py-sm-5 {\n padding-top: 3rem !important;\n }\n .pr-sm-5,\n .px-sm-5 {\n padding-right: 3rem !important;\n }\n .pb-sm-5,\n .py-sm-5 {\n padding-bottom: 3rem !important;\n }\n .pl-sm-5,\n .px-sm-5 {\n padding-left: 3rem !important;\n }\n .m-sm-n1 {\n margin: -0.25rem !important;\n }\n .mt-sm-n1,\n .my-sm-n1 {\n margin-top: -0.25rem !important;\n }\n .mr-sm-n1,\n .mx-sm-n1 {\n margin-right: -0.25rem !important;\n }\n .mb-sm-n1,\n .my-sm-n1 {\n margin-bottom: -0.25rem !important;\n }\n .ml-sm-n1,\n .mx-sm-n1 {\n margin-left: -0.25rem !important;\n }\n .m-sm-n2 {\n margin: -0.5rem !important;\n }\n .mt-sm-n2,\n .my-sm-n2 {\n margin-top: -0.5rem !important;\n }\n .mr-sm-n2,\n .mx-sm-n2 {\n margin-right: -0.5rem !important;\n }\n .mb-sm-n2,\n .my-sm-n2 {\n margin-bottom: -0.5rem !important;\n }\n .ml-sm-n2,\n .mx-sm-n2 {\n margin-left: -0.5rem !important;\n }\n .m-sm-n3 {\n margin: -1rem !important;\n }\n .mt-sm-n3,\n .my-sm-n3 {\n margin-top: -1rem !important;\n }\n .mr-sm-n3,\n .mx-sm-n3 {\n margin-right: -1rem !important;\n }\n .mb-sm-n3,\n .my-sm-n3 {\n margin-bottom: -1rem !important;\n }\n .ml-sm-n3,\n .mx-sm-n3 {\n margin-left: -1rem !important;\n }\n .m-sm-n4 {\n margin: -1.5rem !important;\n }\n .mt-sm-n4,\n .my-sm-n4 {\n margin-top: -1.5rem !important;\n }\n .mr-sm-n4,\n .mx-sm-n4 {\n margin-right: -1.5rem !important;\n }\n .mb-sm-n4,\n .my-sm-n4 {\n margin-bottom: -1.5rem !important;\n }\n .ml-sm-n4,\n .mx-sm-n4 {\n margin-left: -1.5rem !important;\n }\n .m-sm-n5 {\n margin: -3rem !important;\n }\n .mt-sm-n5,\n .my-sm-n5 {\n margin-top: -3rem !important;\n }\n .mr-sm-n5,\n .mx-sm-n5 {\n margin-right: -3rem !important;\n }\n .mb-sm-n5,\n .my-sm-n5 {\n margin-bottom: -3rem !important;\n }\n .ml-sm-n5,\n .mx-sm-n5 {\n margin-left: -3rem !important;\n }\n .m-sm-auto {\n margin: auto !important;\n }\n .mt-sm-auto,\n .my-sm-auto {\n margin-top: auto !important;\n }\n .mr-sm-auto,\n .mx-sm-auto {\n margin-right: auto !important;\n }\n .mb-sm-auto,\n .my-sm-auto {\n margin-bottom: auto !important;\n }\n .ml-sm-auto,\n .mx-sm-auto {\n margin-left: auto !important;\n }\n}\n\n@media (min-width: 768px) {\n .m-md-0 {\n margin: 0 !important;\n }\n .mt-md-0,\n .my-md-0 {\n margin-top: 0 !important;\n }\n .mr-md-0,\n .mx-md-0 {\n margin-right: 0 !important;\n }\n .mb-md-0,\n .my-md-0 {\n margin-bottom: 0 !important;\n }\n .ml-md-0,\n .mx-md-0 {\n margin-left: 0 !important;\n }\n .m-md-1 {\n margin: 0.25rem !important;\n }\n .mt-md-1,\n .my-md-1 {\n margin-top: 0.25rem !important;\n }\n .mr-md-1,\n .mx-md-1 {\n margin-right: 0.25rem !important;\n }\n .mb-md-1,\n .my-md-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-md-1,\n .mx-md-1 {\n margin-left: 0.25rem !important;\n }\n .m-md-2 {\n margin: 0.5rem !important;\n }\n .mt-md-2,\n .my-md-2 {\n margin-top: 0.5rem !important;\n }\n .mr-md-2,\n .mx-md-2 {\n margin-right: 0.5rem !important;\n }\n .mb-md-2,\n .my-md-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-md-2,\n .mx-md-2 {\n margin-left: 0.5rem !important;\n }\n .m-md-3 {\n margin: 1rem !important;\n }\n .mt-md-3,\n .my-md-3 {\n margin-top: 1rem !important;\n }\n .mr-md-3,\n .mx-md-3 {\n margin-right: 1rem !important;\n }\n .mb-md-3,\n .my-md-3 {\n margin-bottom: 1rem !important;\n }\n .ml-md-3,\n .mx-md-3 {\n margin-left: 1rem !important;\n }\n .m-md-4 {\n margin: 1.5rem !important;\n }\n .mt-md-4,\n .my-md-4 {\n margin-top: 1.5rem !important;\n }\n .mr-md-4,\n .mx-md-4 {\n margin-right: 1.5rem !important;\n }\n .mb-md-4,\n .my-md-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-md-4,\n .mx-md-4 {\n margin-left: 1.5rem !important;\n }\n .m-md-5 {\n margin: 3rem !important;\n }\n .mt-md-5,\n .my-md-5 {\n margin-top: 3rem !important;\n }\n .mr-md-5,\n .mx-md-5 {\n margin-right: 3rem !important;\n }\n .mb-md-5,\n .my-md-5 {\n margin-bottom: 3rem !important;\n }\n .ml-md-5,\n .mx-md-5 {\n margin-left: 3rem !important;\n }\n .p-md-0 {\n padding: 0 !important;\n }\n .pt-md-0,\n .py-md-0 {\n padding-top: 0 !important;\n }\n .pr-md-0,\n .px-md-0 {\n padding-right: 0 !important;\n }\n .pb-md-0,\n .py-md-0 {\n padding-bottom: 0 !important;\n }\n .pl-md-0,\n .px-md-0 {\n padding-left: 0 !important;\n }\n .p-md-1 {\n padding: 0.25rem !important;\n }\n .pt-md-1,\n .py-md-1 {\n padding-top: 0.25rem !important;\n }\n .pr-md-1,\n .px-md-1 {\n padding-right: 0.25rem !important;\n }\n .pb-md-1,\n .py-md-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-md-1,\n .px-md-1 {\n padding-left: 0.25rem !important;\n }\n .p-md-2 {\n padding: 0.5rem !important;\n }\n .pt-md-2,\n .py-md-2 {\n padding-top: 0.5rem !important;\n }\n .pr-md-2,\n .px-md-2 {\n padding-right: 0.5rem !important;\n }\n .pb-md-2,\n .py-md-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-md-2,\n .px-md-2 {\n padding-left: 0.5rem !important;\n }\n .p-md-3 {\n padding: 1rem !important;\n }\n .pt-md-3,\n .py-md-3 {\n padding-top: 1rem !important;\n }\n .pr-md-3,\n .px-md-3 {\n padding-right: 1rem !important;\n }\n .pb-md-3,\n .py-md-3 {\n padding-bottom: 1rem !important;\n }\n .pl-md-3,\n .px-md-3 {\n padding-left: 1rem !important;\n }\n .p-md-4 {\n padding: 1.5rem !important;\n }\n .pt-md-4,\n .py-md-4 {\n padding-top: 1.5rem !important;\n }\n .pr-md-4,\n .px-md-4 {\n padding-right: 1.5rem !important;\n }\n .pb-md-4,\n .py-md-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-md-4,\n .px-md-4 {\n padding-left: 1.5rem !important;\n }\n .p-md-5 {\n padding: 3rem !important;\n }\n .pt-md-5,\n .py-md-5 {\n padding-top: 3rem !important;\n }\n .pr-md-5,\n .px-md-5 {\n padding-right: 3rem !important;\n }\n .pb-md-5,\n .py-md-5 {\n padding-bottom: 3rem !important;\n }\n .pl-md-5,\n .px-md-5 {\n padding-left: 3rem !important;\n }\n .m-md-n1 {\n margin: -0.25rem !important;\n }\n .mt-md-n1,\n .my-md-n1 {\n margin-top: -0.25rem !important;\n }\n .mr-md-n1,\n .mx-md-n1 {\n margin-right: -0.25rem !important;\n }\n .mb-md-n1,\n .my-md-n1 {\n margin-bottom: -0.25rem !important;\n }\n .ml-md-n1,\n .mx-md-n1 {\n margin-left: -0.25rem !important;\n }\n .m-md-n2 {\n margin: -0.5rem !important;\n }\n .mt-md-n2,\n .my-md-n2 {\n margin-top: -0.5rem !important;\n }\n .mr-md-n2,\n .mx-md-n2 {\n margin-right: -0.5rem !important;\n }\n .mb-md-n2,\n .my-md-n2 {\n margin-bottom: -0.5rem !important;\n }\n .ml-md-n2,\n .mx-md-n2 {\n margin-left: -0.5rem !important;\n }\n .m-md-n3 {\n margin: -1rem !important;\n }\n .mt-md-n3,\n .my-md-n3 {\n margin-top: -1rem !important;\n }\n .mr-md-n3,\n .mx-md-n3 {\n margin-right: -1rem !important;\n }\n .mb-md-n3,\n .my-md-n3 {\n margin-bottom: -1rem !important;\n }\n .ml-md-n3,\n .mx-md-n3 {\n margin-left: -1rem !important;\n }\n .m-md-n4 {\n margin: -1.5rem !important;\n }\n .mt-md-n4,\n .my-md-n4 {\n margin-top: -1.5rem !important;\n }\n .mr-md-n4,\n .mx-md-n4 {\n margin-right: -1.5rem !important;\n }\n .mb-md-n4,\n .my-md-n4 {\n margin-bottom: -1.5rem !important;\n }\n .ml-md-n4,\n .mx-md-n4 {\n margin-left: -1.5rem !important;\n }\n .m-md-n5 {\n margin: -3rem !important;\n }\n .mt-md-n5,\n .my-md-n5 {\n margin-top: -3rem !important;\n }\n .mr-md-n5,\n .mx-md-n5 {\n margin-right: -3rem !important;\n }\n .mb-md-n5,\n .my-md-n5 {\n margin-bottom: -3rem !important;\n }\n .ml-md-n5,\n .mx-md-n5 {\n margin-left: -3rem !important;\n }\n .m-md-auto {\n margin: auto !important;\n }\n .mt-md-auto,\n .my-md-auto {\n margin-top: auto !important;\n }\n .mr-md-auto,\n .mx-md-auto {\n margin-right: auto !important;\n }\n .mb-md-auto,\n .my-md-auto {\n margin-bottom: auto !important;\n }\n .ml-md-auto,\n .mx-md-auto {\n margin-left: auto !important;\n }\n}\n\n@media (min-width: 992px) {\n .m-lg-0 {\n margin: 0 !important;\n }\n .mt-lg-0,\n .my-lg-0 {\n margin-top: 0 !important;\n }\n .mr-lg-0,\n .mx-lg-0 {\n margin-right: 0 !important;\n }\n .mb-lg-0,\n .my-lg-0 {\n margin-bottom: 0 !important;\n }\n .ml-lg-0,\n .mx-lg-0 {\n margin-left: 0 !important;\n }\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n .mt-lg-1,\n .my-lg-1 {\n margin-top: 0.25rem !important;\n }\n .mr-lg-1,\n .mx-lg-1 {\n margin-right: 0.25rem !important;\n }\n .mb-lg-1,\n .my-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-lg-1,\n .mx-lg-1 {\n margin-left: 0.25rem !important;\n }\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n .mt-lg-2,\n .my-lg-2 {\n margin-top: 0.5rem !important;\n }\n .mr-lg-2,\n .mx-lg-2 {\n margin-right: 0.5rem !important;\n }\n .mb-lg-2,\n .my-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-lg-2,\n .mx-lg-2 {\n margin-left: 0.5rem !important;\n }\n .m-lg-3 {\n margin: 1rem !important;\n }\n .mt-lg-3,\n .my-lg-3 {\n margin-top: 1rem !important;\n }\n .mr-lg-3,\n .mx-lg-3 {\n margin-right: 1rem !important;\n }\n .mb-lg-3,\n .my-lg-3 {\n margin-bottom: 1rem !important;\n }\n .ml-lg-3,\n .mx-lg-3 {\n margin-left: 1rem !important;\n }\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n .mt-lg-4,\n .my-lg-4 {\n margin-top: 1.5rem !important;\n }\n .mr-lg-4,\n .mx-lg-4 {\n margin-right: 1.5rem !important;\n }\n .mb-lg-4,\n .my-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-lg-4,\n .mx-lg-4 {\n margin-left: 1.5rem !important;\n }\n .m-lg-5 {\n margin: 3rem !important;\n }\n .mt-lg-5,\n .my-lg-5 {\n margin-top: 3rem !important;\n }\n .mr-lg-5,\n .mx-lg-5 {\n margin-right: 3rem !important;\n }\n .mb-lg-5,\n .my-lg-5 {\n margin-bottom: 3rem !important;\n }\n .ml-lg-5,\n .mx-lg-5 {\n margin-left: 3rem !important;\n }\n .p-lg-0 {\n padding: 0 !important;\n }\n .pt-lg-0,\n .py-lg-0 {\n padding-top: 0 !important;\n }\n .pr-lg-0,\n .px-lg-0 {\n padding-right: 0 !important;\n }\n .pb-lg-0,\n .py-lg-0 {\n padding-bottom: 0 !important;\n }\n .pl-lg-0,\n .px-lg-0 {\n padding-left: 0 !important;\n }\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n .pt-lg-1,\n .py-lg-1 {\n padding-top: 0.25rem !important;\n }\n .pr-lg-1,\n .px-lg-1 {\n padding-right: 0.25rem !important;\n }\n .pb-lg-1,\n .py-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-lg-1,\n .px-lg-1 {\n padding-left: 0.25rem !important;\n }\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n .pt-lg-2,\n .py-lg-2 {\n padding-top: 0.5rem !important;\n }\n .pr-lg-2,\n .px-lg-2 {\n padding-right: 0.5rem !important;\n }\n .pb-lg-2,\n .py-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-lg-2,\n .px-lg-2 {\n padding-left: 0.5rem !important;\n }\n .p-lg-3 {\n padding: 1rem !important;\n }\n .pt-lg-3,\n .py-lg-3 {\n padding-top: 1rem !important;\n }\n .pr-lg-3,\n .px-lg-3 {\n padding-right: 1rem !important;\n }\n .pb-lg-3,\n .py-lg-3 {\n padding-bottom: 1rem !important;\n }\n .pl-lg-3,\n .px-lg-3 {\n padding-left: 1rem !important;\n }\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n .pt-lg-4,\n .py-lg-4 {\n padding-top: 1.5rem !important;\n }\n .pr-lg-4,\n .px-lg-4 {\n padding-right: 1.5rem !important;\n }\n .pb-lg-4,\n .py-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-lg-4,\n .px-lg-4 {\n padding-left: 1.5rem !important;\n }\n .p-lg-5 {\n padding: 3rem !important;\n }\n .pt-lg-5,\n .py-lg-5 {\n padding-top: 3rem !important;\n }\n .pr-lg-5,\n .px-lg-5 {\n padding-right: 3rem !important;\n }\n .pb-lg-5,\n .py-lg-5 {\n padding-bottom: 3rem !important;\n }\n .pl-lg-5,\n .px-lg-5 {\n padding-left: 3rem !important;\n }\n .m-lg-n1 {\n margin: -0.25rem !important;\n }\n .mt-lg-n1,\n .my-lg-n1 {\n margin-top: -0.25rem !important;\n }\n .mr-lg-n1,\n .mx-lg-n1 {\n margin-right: -0.25rem !important;\n }\n .mb-lg-n1,\n .my-lg-n1 {\n margin-bottom: -0.25rem !important;\n }\n .ml-lg-n1,\n .mx-lg-n1 {\n margin-left: -0.25rem !important;\n }\n .m-lg-n2 {\n margin: -0.5rem !important;\n }\n .mt-lg-n2,\n .my-lg-n2 {\n margin-top: -0.5rem !important;\n }\n .mr-lg-n2,\n .mx-lg-n2 {\n margin-right: -0.5rem !important;\n }\n .mb-lg-n2,\n .my-lg-n2 {\n margin-bottom: -0.5rem !important;\n }\n .ml-lg-n2,\n .mx-lg-n2 {\n margin-left: -0.5rem !important;\n }\n .m-lg-n3 {\n margin: -1rem !important;\n }\n .mt-lg-n3,\n .my-lg-n3 {\n margin-top: -1rem !important;\n }\n .mr-lg-n3,\n .mx-lg-n3 {\n margin-right: -1rem !important;\n }\n .mb-lg-n3,\n .my-lg-n3 {\n margin-bottom: -1rem !important;\n }\n .ml-lg-n3,\n .mx-lg-n3 {\n margin-left: -1rem !important;\n }\n .m-lg-n4 {\n margin: -1.5rem !important;\n }\n .mt-lg-n4,\n .my-lg-n4 {\n margin-top: -1.5rem !important;\n }\n .mr-lg-n4,\n .mx-lg-n4 {\n margin-right: -1.5rem !important;\n }\n .mb-lg-n4,\n .my-lg-n4 {\n margin-bottom: -1.5rem !important;\n }\n .ml-lg-n4,\n .mx-lg-n4 {\n margin-left: -1.5rem !important;\n }\n .m-lg-n5 {\n margin: -3rem !important;\n }\n .mt-lg-n5,\n .my-lg-n5 {\n margin-top: -3rem !important;\n }\n .mr-lg-n5,\n .mx-lg-n5 {\n margin-right: -3rem !important;\n }\n .mb-lg-n5,\n .my-lg-n5 {\n margin-bottom: -3rem !important;\n }\n .ml-lg-n5,\n .mx-lg-n5 {\n margin-left: -3rem !important;\n }\n .m-lg-auto {\n margin: auto !important;\n }\n .mt-lg-auto,\n .my-lg-auto {\n margin-top: auto !important;\n }\n .mr-lg-auto,\n .mx-lg-auto {\n margin-right: auto !important;\n }\n .mb-lg-auto,\n .my-lg-auto {\n margin-bottom: auto !important;\n }\n .ml-lg-auto,\n .mx-lg-auto {\n margin-left: auto !important;\n }\n}\n\n@media (min-width: 1200px) {\n .m-xl-0 {\n margin: 0 !important;\n }\n .mt-xl-0,\n .my-xl-0 {\n margin-top: 0 !important;\n }\n .mr-xl-0,\n .mx-xl-0 {\n margin-right: 0 !important;\n }\n .mb-xl-0,\n .my-xl-0 {\n margin-bottom: 0 !important;\n }\n .ml-xl-0,\n .mx-xl-0 {\n margin-left: 0 !important;\n }\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n .mt-xl-1,\n .my-xl-1 {\n margin-top: 0.25rem !important;\n }\n .mr-xl-1,\n .mx-xl-1 {\n margin-right: 0.25rem !important;\n }\n .mb-xl-1,\n .my-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-xl-1,\n .mx-xl-1 {\n margin-left: 0.25rem !important;\n }\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n .mt-xl-2,\n .my-xl-2 {\n margin-top: 0.5rem !important;\n }\n .mr-xl-2,\n .mx-xl-2 {\n margin-right: 0.5rem !important;\n }\n .mb-xl-2,\n .my-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-xl-2,\n .mx-xl-2 {\n margin-left: 0.5rem !important;\n }\n .m-xl-3 {\n margin: 1rem !important;\n }\n .mt-xl-3,\n .my-xl-3 {\n margin-top: 1rem !important;\n }\n .mr-xl-3,\n .mx-xl-3 {\n margin-right: 1rem !important;\n }\n .mb-xl-3,\n .my-xl-3 {\n margin-bottom: 1rem !important;\n }\n .ml-xl-3,\n .mx-xl-3 {\n margin-left: 1rem !important;\n }\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n .mt-xl-4,\n .my-xl-4 {\n margin-top: 1.5rem !important;\n }\n .mr-xl-4,\n .mx-xl-4 {\n margin-right: 1.5rem !important;\n }\n .mb-xl-4,\n .my-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-xl-4,\n .mx-xl-4 {\n margin-left: 1.5rem !important;\n }\n .m-xl-5 {\n margin: 3rem !important;\n }\n .mt-xl-5,\n .my-xl-5 {\n margin-top: 3rem !important;\n }\n .mr-xl-5,\n .mx-xl-5 {\n margin-right: 3rem !important;\n }\n .mb-xl-5,\n .my-xl-5 {\n margin-bottom: 3rem !important;\n }\n .ml-xl-5,\n .mx-xl-5 {\n margin-left: 3rem !important;\n }\n .p-xl-0 {\n padding: 0 !important;\n }\n .pt-xl-0,\n .py-xl-0 {\n padding-top: 0 !important;\n }\n .pr-xl-0,\n .px-xl-0 {\n padding-right: 0 !important;\n }\n .pb-xl-0,\n .py-xl-0 {\n padding-bottom: 0 !important;\n }\n .pl-xl-0,\n .px-xl-0 {\n padding-left: 0 !important;\n }\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n .pt-xl-1,\n .py-xl-1 {\n padding-top: 0.25rem !important;\n }\n .pr-xl-1,\n .px-xl-1 {\n padding-right: 0.25rem !important;\n }\n .pb-xl-1,\n .py-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-xl-1,\n .px-xl-1 {\n padding-left: 0.25rem !important;\n }\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n .pt-xl-2,\n .py-xl-2 {\n padding-top: 0.5rem !important;\n }\n .pr-xl-2,\n .px-xl-2 {\n padding-right: 0.5rem !important;\n }\n .pb-xl-2,\n .py-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-xl-2,\n .px-xl-2 {\n padding-left: 0.5rem !important;\n }\n .p-xl-3 {\n padding: 1rem !important;\n }\n .pt-xl-3,\n .py-xl-3 {\n padding-top: 1rem !important;\n }\n .pr-xl-3,\n .px-xl-3 {\n padding-right: 1rem !important;\n }\n .pb-xl-3,\n .py-xl-3 {\n padding-bottom: 1rem !important;\n }\n .pl-xl-3,\n .px-xl-3 {\n padding-left: 1rem !important;\n }\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n .pt-xl-4,\n .py-xl-4 {\n padding-top: 1.5rem !important;\n }\n .pr-xl-4,\n .px-xl-4 {\n padding-right: 1.5rem !important;\n }\n .pb-xl-4,\n .py-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-xl-4,\n .px-xl-4 {\n padding-left: 1.5rem !important;\n }\n .p-xl-5 {\n padding: 3rem !important;\n }\n .pt-xl-5,\n .py-xl-5 {\n padding-top: 3rem !important;\n }\n .pr-xl-5,\n .px-xl-5 {\n padding-right: 3rem !important;\n }\n .pb-xl-5,\n .py-xl-5 {\n padding-bottom: 3rem !important;\n }\n .pl-xl-5,\n .px-xl-5 {\n padding-left: 3rem !important;\n }\n .m-xl-n1 {\n margin: -0.25rem !important;\n }\n .mt-xl-n1,\n .my-xl-n1 {\n margin-top: -0.25rem !important;\n }\n .mr-xl-n1,\n .mx-xl-n1 {\n margin-right: -0.25rem !important;\n }\n .mb-xl-n1,\n .my-xl-n1 {\n margin-bottom: -0.25rem !important;\n }\n .ml-xl-n1,\n .mx-xl-n1 {\n margin-left: -0.25rem !important;\n }\n .m-xl-n2 {\n margin: -0.5rem !important;\n }\n .mt-xl-n2,\n .my-xl-n2 {\n margin-top: -0.5rem !important;\n }\n .mr-xl-n2,\n .mx-xl-n2 {\n margin-right: -0.5rem !important;\n }\n .mb-xl-n2,\n .my-xl-n2 {\n margin-bottom: -0.5rem !important;\n }\n .ml-xl-n2,\n .mx-xl-n2 {\n margin-left: -0.5rem !important;\n }\n .m-xl-n3 {\n margin: -1rem !important;\n }\n .mt-xl-n3,\n .my-xl-n3 {\n margin-top: -1rem !important;\n }\n .mr-xl-n3,\n .mx-xl-n3 {\n margin-right: -1rem !important;\n }\n .mb-xl-n3,\n .my-xl-n3 {\n margin-bottom: -1rem !important;\n }\n .ml-xl-n3,\n .mx-xl-n3 {\n margin-left: -1rem !important;\n }\n .m-xl-n4 {\n margin: -1.5rem !important;\n }\n .mt-xl-n4,\n .my-xl-n4 {\n margin-top: -1.5rem !important;\n }\n .mr-xl-n4,\n .mx-xl-n4 {\n margin-right: -1.5rem !important;\n }\n .mb-xl-n4,\n .my-xl-n4 {\n margin-bottom: -1.5rem !important;\n }\n .ml-xl-n4,\n .mx-xl-n4 {\n margin-left: -1.5rem !important;\n }\n .m-xl-n5 {\n margin: -3rem !important;\n }\n .mt-xl-n5,\n .my-xl-n5 {\n margin-top: -3rem !important;\n }\n .mr-xl-n5,\n .mx-xl-n5 {\n margin-right: -3rem !important;\n }\n .mb-xl-n5,\n .my-xl-n5 {\n margin-bottom: -3rem !important;\n }\n .ml-xl-n5,\n .mx-xl-n5 {\n margin-left: -3rem !important;\n }\n .m-xl-auto {\n margin: auto !important;\n }\n .mt-xl-auto,\n .my-xl-auto {\n margin-top: auto !important;\n }\n .mr-xl-auto,\n .mx-xl-auto {\n margin-right: auto !important;\n }\n .mb-xl-auto,\n .my-xl-auto {\n margin-bottom: auto !important;\n }\n .ml-xl-auto,\n .mx-xl-auto {\n margin-left: auto !important;\n }\n}\n\n.stretched-link::after {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1;\n pointer-events: auto;\n content: \"\";\n background-color: rgba(0, 0, 0, 0);\n}\n\n.text-monospace {\n font-family: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !important;\n}\n\n.text-justify {\n text-align: justify !important;\n}\n\n.text-wrap {\n white-space: normal !important;\n}\n\n.text-nowrap {\n white-space: nowrap !important;\n}\n\n.text-truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.text-left {\n text-align: left !important;\n}\n\n.text-right {\n text-align: right !important;\n}\n\n.text-center {\n text-align: center !important;\n}\n\n@media (min-width: 576px) {\n .text-sm-left {\n text-align: left !important;\n }\n .text-sm-right {\n text-align: right !important;\n }\n .text-sm-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 768px) {\n .text-md-left {\n text-align: left !important;\n }\n .text-md-right {\n text-align: right !important;\n }\n .text-md-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 992px) {\n .text-lg-left {\n text-align: left !important;\n }\n .text-lg-right {\n text-align: right !important;\n }\n .text-lg-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 1200px) {\n .text-xl-left {\n text-align: left !important;\n }\n .text-xl-right {\n text-align: right !important;\n }\n .text-xl-center {\n text-align: center !important;\n }\n}\n\n.text-lowercase {\n text-transform: lowercase !important;\n}\n\n.text-uppercase {\n text-transform: uppercase !important;\n}\n\n.text-capitalize {\n text-transform: capitalize !important;\n}\n\n.font-weight-light {\n font-weight: 300 !important;\n}\n\n.font-weight-lighter {\n font-weight: lighter !important;\n}\n\n.font-weight-normal {\n font-weight: 400 !important;\n}\n\n.font-weight-bold {\n font-weight: 700 !important;\n}\n\n.font-weight-bolder {\n font-weight: bolder !important;\n}\n\n.font-italic {\n font-style: italic !important;\n}\n\n.text-white {\n color: #fff !important;\n}\n\n.text-primary {\n color: #007bff !important;\n}\n\na.text-primary:hover, a.text-primary:focus {\n color: #0056b3 !important;\n}\n\n.text-secondary {\n color: #6c757d !important;\n}\n\na.text-secondary:hover, a.text-secondary:focus {\n color: #494f54 !important;\n}\n\n.text-success {\n color: #28a745 !important;\n}\n\na.text-success:hover, a.text-success:focus {\n color: #19692c !important;\n}\n\n.text-info {\n color: #17a2b8 !important;\n}\n\na.text-info:hover, a.text-info:focus {\n color: #0f6674 !important;\n}\n\n.text-warning {\n color: #ffc107 !important;\n}\n\na.text-warning:hover, a.text-warning:focus {\n color: #ba8b00 !important;\n}\n\n.text-danger {\n color: #dc3545 !important;\n}\n\na.text-danger:hover, a.text-danger:focus {\n color: #a71d2a !important;\n}\n\n.text-light {\n color: #f8f9fa !important;\n}\n\na.text-light:hover, a.text-light:focus {\n color: #cbd3da !important;\n}\n\n.text-dark {\n color: #343a40 !important;\n}\n\na.text-dark:hover, a.text-dark:focus {\n color: #121416 !important;\n}\n\n.text-body {\n color: #212529 !important;\n}\n\n.text-muted {\n color: #6c757d !important;\n}\n\n.text-black-50 {\n color: rgba(0, 0, 0, 0.5) !important;\n}\n\n.text-white-50 {\n color: rgba(255, 255, 255, 0.5) !important;\n}\n\n.text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n\n.text-decoration-none {\n text-decoration: none !important;\n}\n\n.text-break {\n word-break: break-word !important;\n overflow-wrap: break-word !important;\n}\n\n.text-reset {\n color: inherit !important;\n}\n\n.visible {\n visibility: visible !important;\n}\n\n.invisible {\n visibility: hidden !important;\n}\n\n@media print {\n *,\n *::before,\n *::after {\n text-shadow: none !important;\n box-shadow: none !important;\n }\n a:not(.btn) {\n text-decoration: underline;\n }\n abbr[title]::after {\n content: \" (\" attr(title) \")\";\n }\n pre {\n white-space: pre-wrap !important;\n }\n pre,\n blockquote {\n border: 1px solid #adb5bd;\n page-break-inside: avoid;\n }\n thead {\n display: table-header-group;\n }\n tr,\n img {\n page-break-inside: avoid;\n }\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n h2,\n h3 {\n page-break-after: avoid;\n }\n @page {\n size: a3;\n }\n body {\n min-width: 992px !important;\n }\n .container {\n min-width: 992px !important;\n }\n .navbar {\n display: none;\n }\n .badge {\n border: 1px solid #000;\n }\n .table {\n border-collapse: collapse !important;\n }\n .table td,\n .table th {\n background-color: #fff !important;\n }\n .table-bordered th,\n .table-bordered td {\n border: 1px solid #dee2e6 !important;\n }\n .table-dark {\n color: inherit;\n }\n .table-dark th,\n .table-dark td,\n .table-dark thead th,\n .table-dark tbody + tbody {\n border-color: #dee2e6;\n }\n .table .thead-dark th {\n color: inherit;\n border-color: #dee2e6;\n }\n}\n\n/*# sourceMappingURL=bootstrap.css.map */","// Do not forget to update getting-started/theming.md!\n:root {\n // Custom variable values only support SassScript inside `#{}`.\n @each $color, $value in $colors {\n --#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors {\n --#{$color}: #{$value};\n }\n\n @each $bp, $value in $grid-breakpoints {\n --breakpoint-#{$bp}: #{$value};\n }\n\n // Use `inspect` for lists so that quoted items keep the quotes.\n // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n --font-family-sans-serif: #{inspect($font-family-sans-serif)};\n --font-family-monospace: #{inspect($font-family-monospace)};\n}\n","// stylelint-disable at-rule-no-vendor-prefix, declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// 1. Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n// 2. Change the default font family in all browsers.\n// 3. Correct the line height in all browsers.\n// 4. Prevent adjustments of font size after orientation changes in IE on Windows Phone and in iOS.\n// 5. Change the default tap highlight to be completely transparent in iOS.\n\n*,\n*::before,\n*::after {\n box-sizing: border-box; // 1\n}\n\nhtml {\n font-family: sans-serif; // 2\n line-height: 1.15; // 3\n -webkit-text-size-adjust: 100%; // 4\n -webkit-tap-highlight-color: rgba($black, 0); // 5\n}\n\n// Shim for \"new\" HTML5 structural elements to display correctly (IE10, older browsers)\n// TODO: remove in v5\n// stylelint-disable-next-line selector-list-comma-newline-after\narticle, aside, figcaption, figure, footer, header, hgroup, main, nav, section {\n display: block;\n}\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n// 3. Set an explicit initial text-align value so that we can later use\n// the `inherit` value on things like `` elements.\n\nbody {\n margin: 0; // 1\n font-family: $font-family-base;\n @include font-size($font-size-base);\n font-weight: $font-weight-base;\n line-height: $line-height-base;\n color: $body-color;\n text-align: left; // 3\n background-color: $body-bg; // 2\n}\n\n// Future-proof rule: in browsers that support :focus-visible, suppress the focus outline\n// on elements that programmatically receive focus but wouldn't normally show a visible\n// focus outline. In general, this would mean that the outline is only applied if the\n// interaction that led to the element receiving programmatic focus was a keyboard interaction,\n// or the browser has somehow determined that the user is primarily a keyboard user and/or\n// wants focus outlines to always be presented.\n//\n// See https://developer.mozilla.org/en-US/docs/Web/CSS/:focus-visible\n// and https://developer.paciellogroup.com/blog/2018/03/focus-visible-and-backwards-compatibility/\n[tabindex=\"-1\"]:focus:not(:focus-visible) {\n outline: 0 !important;\n}\n\n\n// Content grouping\n//\n// 1. Add the correct box sizing in Firefox.\n// 2. Show the overflow in Edge and IE.\n\nhr {\n box-sizing: content-box; // 1\n height: 0; // 1\n overflow: visible; // 2\n}\n\n\n//\n// Typography\n//\n\n// Remove top margins from headings\n//\n// By default, `

`-`

` all receive top and bottom margins. We nuke the top\n// margin for easier control within type scales as it avoids margin collapsing.\n// stylelint-disable-next-line selector-list-comma-newline-after\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: $headings-margin-bottom;\n}\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `

`s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\np {\n margin-top: 0;\n margin-bottom: $paragraph-margin-bottom;\n}\n\n// Abbreviations\n//\n// 1. Duplicate behavior to the data-* attribute for our tooltip plugin\n// 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n// 3. Add explicit cursor to indicate changed behavior.\n// 4. Remove the bottom border in Firefox 39-.\n// 5. Prevent the text-decoration to be skipped.\n\nabbr[title],\nabbr[data-original-title] { // 1\n text-decoration: underline; // 2\n text-decoration: underline dotted; // 2\n cursor: help; // 3\n border-bottom: 0; // 4\n text-decoration-skip-ink: none; // 5\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // Undo browser default\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\nb,\nstrong {\n font-weight: $font-weight-bolder; // Add the correct font weight in Chrome, Edge, and Safari\n}\n\nsmall {\n @include font-size(80%); // Add the correct font size in all browsers\n}\n\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n//\n\nsub,\nsup {\n position: relative;\n @include font-size(75%);\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n//\n// Links\n//\n\na {\n color: $link-color;\n text-decoration: $link-decoration;\n background-color: transparent; // Remove the gray background on active links in IE 10.\n\n @include hover() {\n color: $link-hover-color;\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([class]) {\n color: inherit;\n text-decoration: none;\n\n @include hover() {\n color: inherit;\n text-decoration: none;\n }\n}\n\n\n//\n// Code\n//\n\npre,\ncode,\nkbd,\nsamp {\n font-family: $font-family-monospace;\n @include font-size(1em); // Correct the odd `em` font sizing in all browsers.\n}\n\npre {\n // Remove browser default top margin\n margin-top: 0;\n // Reset browser default of `1em` to use `rem`s\n margin-bottom: 1rem;\n // Don't allow content to break outside\n overflow: auto;\n // Disable auto-hiding scrollbar in IE & legacy Edge to avoid overlap,\n // making it impossible to interact with the content\n -ms-overflow-style: scrollbar;\n}\n\n\n//\n// Figures\n//\n\nfigure {\n // Apply a consistent margin strategy (matches our type styles).\n margin: 0 0 1rem;\n}\n\n\n//\n// Images and content\n//\n\nimg {\n vertical-align: middle;\n border-style: none; // Remove the border on images inside links in IE 10-.\n}\n\nsvg {\n // Workaround for the SVG overflow bug in IE10/11 is still required.\n // See https://github.com/twbs/bootstrap/issues/26878\n overflow: hidden;\n vertical-align: middle;\n}\n\n\n//\n// Tables\n//\n\ntable {\n border-collapse: collapse; // Prevent double borders\n}\n\ncaption {\n padding-top: $table-cell-padding;\n padding-bottom: $table-cell-padding;\n color: $table-caption-color;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n // Matches default `` alignment by inheriting from the ``, or the\n // closest parent with a set `text-align`.\n text-align: inherit;\n}\n\n\n//\n// Forms\n//\n\nlabel {\n // Allow labels to use `margin` for spacing.\n display: inline-block;\n margin-bottom: $label-margin-bottom;\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n//\n// Details at https://github.com/twbs/bootstrap/issues/24093\nbutton {\n // stylelint-disable-next-line property-blacklist\n border-radius: 0;\n}\n\n// Work around a Firefox/IE bug where the transparent `button` background\n// results in a loss of the default `button` focus styles.\n//\n// Credit: https://github.com/suitcss/base/\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0; // Remove the margin in Firefox and Safari\n font-family: inherit;\n @include font-size(inherit);\n line-height: inherit;\n}\n\nbutton,\ninput {\n overflow: visible; // Show the overflow in Edge\n}\n\nbutton,\nselect {\n text-transform: none; // Remove the inheritance of text transform in Firefox\n}\n\n// Set the cursor for non-`