diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 9f34c7f5e..ff372f061 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -106,43 +106,6 @@ jobs: name: docker-database-production_up path: /tmp/database_up.tar - ############################################################################## - # JOB: DOCKER BUILD PRODUCTION COMMUNITY SERVER ############################## - ############################################################################## - build_production_community_server: - name: Docker Build Production - Community Server - runs-on: ubuntu-latest - #needs: [nothing] - steps: - ########################################################################## - # CHECKOUT CODE ########################################################## - ########################################################################## - - name: Checkout code - uses: actions/checkout@v2 - ########################################################################## - # SET ENVS ############################################################### - ########################################################################## - - name: ENV - VERSION - run: echo "VERSION=$(node -p -e "require('./package.json').version")" >> $GITHUB_ENV - - name: ENV - BUILD_DATE - run: echo "BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_ENV - - name: ENV - BUILD_VERSION - run: echo "BUILD_VERSION=${VERSION}.${GITHUB_RUN_NUMBER}" >> $GITHUB_ENV - - name: ENV - BUILD_COMMIT - run: echo "BUILD_COMMIT=${GITHUB_SHA}" >> $GITHUB_ENV - ########################################################################## - # COMMUNITY SERVER ####################################################### - ########################################################################## - - name: Community Server | Build `production` image - run: | - docker build -t "gradido/community_server:latest" -t "gradido/community_server:production" -t "gradido/community_server:${VERSION}" -t "gradido/community_server:${BUILD_VERSION}" -f ./community_server/Dockerfile ./ - docker save "gradido/community_server" > /tmp/community_server.tar - - name: Upload Artifact - uses: actions/upload-artifact@v2 - with: - name: docker-community-server-production - path: /tmp/community_server.tar - ############################################################################## # JOB: DOCKER BUILD PRODUCTION MARIADB ####################################### ############################################################################## @@ -223,7 +186,7 @@ jobs: upload_to_dockerhub: name: Upload to Dockerhub runs-on: ubuntu-latest - needs: [build_production_frontend, build_production_backend, build_production_database_up, build_production_community_server, build_production_mariadb, build_production_nginx] + needs: [build_production_frontend, build_production_backend, build_production_database_up, build_production_mariadb, build_production_nginx] env: DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }} @@ -257,13 +220,6 @@ jobs: path: /tmp - name: Load Docker Image run: docker load < /tmp/database_up.tar - - name: Download Docker Image (Community Server) - uses: actions/download-artifact@v2 - with: - name: docker-community-server-production - path: /tmp - - name: Load Docker Image - run: docker load < /tmp/community_server.tar - name: Download Docker Image (MariaDB) uses: actions/download-artifact@v2 with: @@ -289,8 +245,6 @@ jobs: run: docker push --all-tags gradido/backend - name: Push database run: docker push --all-tags gradido/database - - name: Push community_server - run: docker push --all-tags gradido/community_server - name: Push MariaDB run: docker push --all-tags gradido/mariadb - name: Push Nginx diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e3a140658..f1fb929d7 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -107,32 +107,6 @@ jobs: name: docker-database-test_up path: /tmp/database_up.tar - ############################################################################## - # JOB: DOCKER BUILD TEST COMMUNITY SERVER #################################### - ############################################################################## - build_test_community_server: - name: Docker Build Test - Community Server - runs-on: ubuntu-latest - #needs: [nothing] - steps: - ########################################################################## - # CHECKOUT CODE ########################################################## - ########################################################################## - - name: Checkout code - uses: actions/checkout@v2 - ########################################################################## - # BUILD COMMUNITY SERVER DOCKER IMAGE #################################### - ########################################################################## - - name: community server | Build `test` image - run: | - docker build -t "gradido/community_server:test" -f ./community_server/Dockerfile ./ - docker save "gradido/community_server:test" > /tmp/community_server.tar - - name: Upload Artifact - uses: actions/upload-artifact@v2 - with: - name: docker-community-server-test - path: /tmp/community_server.tar - ############################################################################## # JOB: DOCKER BUILD TEST MARIADB ############################################# ############################################################################## @@ -509,73 +483,6 @@ jobs: min_coverage: 38 token: ${{ github.token }} - ############################################################################## - # JOB: UNIT TEST COMMUNITY-SERVER ########################################### - ############################################################################## - unit_test_community_server: - name: Unit tests - Community Server - runs-on: ubuntu-latest - needs: [build_test_community_server] - services: - mariadb: - image: gradido/mariadb:test - env: - MARIADB_ALLOW_EMPTY_PASSWORD: 1 - MARIADB_USER: root - options: --health-cmd="mysqladmin ping" - --health-interval=5s - --health-timeout=5s - --health-retries=3 - steps: - - name: get mariadb container id - run: echo "::set-output name=id::$(docker container ls | grep mariadb | awk '{ print $1 }')" - id: mariadb_container - - name: get automatic created network - run: echo "::set-output name=id::$(docker network ls | grep github_network | awk '{ print $1 }')" - id: network - - name: Start database migration - run: docker run --network ${{ steps.network.outputs.id }} --name=database --env NODE_ENV=production --env DB_HOST=mariadb --env DB_DATABASE=gradido_community_test -d gradido/database:production_up - - name: get database migration container id - run: echo "::set-output name=id::$(docker container ls | grep database | awk '{ print $1 }')" - id: database_container - ########################################################################## - # CHECKOUT CODE ########################################################## - ########################################################################## - - name: Checkout code - uses: actions/checkout@v2 - ########################################################################## - # DOWNLOAD DOCKER IMAGE ################################################## - ########################################################################## - - name: Download Docker Image (Community-Server) - uses: actions/download-artifact@v2 - with: - name: docker-community-server-test - path: /tmp - - name: Load Docker Image - run: docker load < /tmp/community_server.tar - - name: check mariadb - run: docker logs ${{ steps.mariadb_container.outputs.id }} - - name: check migration - run: docker logs ${{ steps.database_container.outputs.id }} - ########################################################################## - # UNIT TESTS BACKEND COMMUNITY-SERVER ####################################### - ########################################################################## - - name: community server | Unit tests - run: | - docker run --network ${{ steps.network.outputs.id }} -v ~/coverage:/var/www/cakephp/webroot/coverage gradido/community_server:test - cp -r ~/coverage ./coverage - ######################################################################### - # COVERAGE CHECK BACKEND COMMUNITY-SERVER #################################### - ########################################################################## - - name: backend community | Coverage check - uses: einhornimmond/coverage-check-action@master - with: - report_name: Coverage Backend Community - type: phpunit - result_path: ./coverage/coverage.info - min_coverage: 10 - token: ${{ github.token }} - ########################################################################## # DATABASE MIGRATION TEST UP + RESET ##################################### ########################################################################## diff --git a/community_server/.gitignore b/community_server/.gitignore deleted file mode 100644 index 633978598..000000000 --- a/community_server/.gitignore +++ /dev/null @@ -1,10 +0,0 @@ -config/app.php -logs/ -src/GPBMetadata/ -tmp/ -vendor/ -websrc/node_modules/ -websrc/package-lock.json -mithril_client/ -websrc/src/less-files.css - diff --git a/community_server/.gitmodules b/community_server/.gitmodules deleted file mode 100644 index 8499eaac6..000000000 --- a/community_server/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "src/protobuf"] - path = src/protobuf - url = git@github.com:gradido/gradido_protocol.git diff --git a/community_server/Dockerfile b/community_server/Dockerfile deleted file mode 100644 index c553137c6..000000000 --- a/community_server/Dockerfile +++ /dev/null @@ -1,30 +0,0 @@ -FROM phpdockerio/php74-fpm as community_server - -# install php fpm -RUN apt-get update \ - && apt-get -y --no-install-recommends install curl unzip php7.4-curl php7.4-fpm php7.4-mbstring php7.4-intl php7.4-xml php7.4-pdo php7.4-mysql php7.4-xdebug \ - && apt-get clean; rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/* - -WORKDIR /var/www/cakephp -RUN mkdir logs && mkdir tmp && chmod 777 logs && chmod 777 tmp -COPY ./community_server/ . -COPY ./configs/community_server/app.php ./config/ - -RUN composer update -RUN composer dump-autoload - -######### special for code coverage and testing -FROM community_server as test - - -RUN apt-get update \ - && apt-get -y --no-install-recommends install php7.4-xdebug \ - && apt-get clean; rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/* - - -ENV XDEBUG_MODE=coverage -#RUN composer require --dev rregeer/phpunit-coverage-check - -#CMD ./vendor/bin/phpunit --coverage-clover=./webroot/coverage/clover.xml -CMD ./vendor/bin/phpunit --coverage-text=./webroot/coverage/coverage.info - diff --git a/community_server/README.md b/community_server/README.md deleted file mode 100644 index 61f89d306..000000000 --- a/community_server/README.md +++ /dev/null @@ -1,51 +0,0 @@ -# CakePHP Application Skeleton - -[![Build Status](https://img.shields.io/travis/cakephp/app/master.svg?style=flat-square)](https://travis-ci.org/cakephp/app) -[![Total Downloads](https://img.shields.io/packagist/dt/cakephp/app.svg?style=flat-square)](https://packagist.org/packages/cakephp/app) - -A skeleton for creating applications with [CakePHP](https://cakephp.org) 3.x. - -The framework source code can be found here: [cakephp/cakephp](https://github.com/cakephp/cakephp). - -## Installation - -1. Download [Composer](https://getcomposer.org/doc/00-intro.md) or update `composer self-update`. -2. Run `php composer.phar create-project --prefer-dist cakephp/app [app_name]`. - -If Composer is installed globally, run - -```bash -composer create-project --prefer-dist cakephp/app -``` - -In case you want to use a custom app dir name (e.g. `/myapp/`): - -```bash -composer create-project --prefer-dist cakephp/app myapp -``` - -You can now either use your machine's webserver to view the default home page, or start -up the built-in webserver with: - -```bash -bin/cake server -p 8765 -``` - -Then visit `http://localhost:8765` to see the welcome page. - -## Update - -Since this skeleton is a starting point for your application and various files -would have been modified as per your needs, there isn't a way to provide -automated upgrades, so you have to do any updates manually. - -## Configuration - -Read and edit `config/app.php` and setup the `'Datasources'` and any other -configuration relevant for your application. - -## Layout - -The app skeleton uses a subset of [Foundation](http://foundation.zurb.com/) (v5) CSS -framework by default. You can, however, replace it with any other library or -custom styles. diff --git a/community_server/bin/cake b/community_server/bin/cake deleted file mode 100755 index 4b696c883..000000000 --- a/community_server/bin/cake +++ /dev/null @@ -1,75 +0,0 @@ -#!/usr/bin/env sh -################################################################################ -# -# Cake is a shell script for invoking CakePHP shell commands -# -# CakePHP(tm) : Rapid Development Framework (https://cakephp.org) -# Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org) -# -# Licensed under The MIT License -# For full copyright and license information, please see the LICENSE.txt -# Redistributions of files must retain the above copyright notice. -# -# @copyright Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org) -# @link https://cakephp.org CakePHP(tm) Project -# @since 1.2.0 -# @license https://opensource.org/licenses/mit-license.php MIT License -# -################################################################################ - -# Canonicalize by following every symlink of the given name recursively -canonicalize() { - NAME="$1" - if [ -f "$NAME" ] - then - DIR=$(dirname -- "$NAME") - NAME=$(cd -P "$DIR" > /dev/null && pwd -P)/$(basename -- "$NAME") - fi - while [ -h "$NAME" ]; do - DIR=$(dirname -- "$NAME") - SYM=$(readlink "$NAME") - NAME=$(cd "$DIR" > /dev/null && cd "$(dirname -- "$SYM")" > /dev/null && pwd)/$(basename -- "$SYM") - done - echo "$NAME" -} - -# Find a CLI version of PHP -findCliPhp() { - for TESTEXEC in php php-cli /usr/local/bin/php - do - SAPI=$(echo "" | $TESTEXEC 2>/dev/null) - if [ "$SAPI" = "cli" ] - then - echo $TESTEXEC - return - fi - done - echo "Failed to find a CLI version of PHP; falling back to system standard php executable" >&2 - echo "php"; -} - -# If current path is a symlink, resolve to real path -realname="$0" -if [ -L "$realname" ] -then - realname=$(readlink -f "$0") -fi - -CONSOLE=$(dirname -- "$(canonicalize "$realname")") -APP=$(dirname "$CONSOLE") - -# If your CLI PHP is somewhere that this doesn't find, you can define a PHP environment -# variable with the correct path in it. -if [ -z "$PHP" ] -then - PHP=$(findCliPhp) -fi - -if [ "$(basename "$realname")" != 'cake' ] -then - exec "$PHP" "$CONSOLE"/cake.php "$(basename "$realname")" "$@" -else - exec "$PHP" "$CONSOLE"/cake.php "$@" -fi - -exit diff --git a/community_server/bin/cake.bat b/community_server/bin/cake.bat deleted file mode 100644 index ad1378229..000000000 --- a/community_server/bin/cake.bat +++ /dev/null @@ -1,27 +0,0 @@ -:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -:: -:: Cake is a Windows batch script for invoking CakePHP shell commands -:: -:: CakePHP(tm) : Rapid Development Framework (https://cakephp.org) -:: Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org) -:: -:: Licensed under The MIT License -:: Redistributions of files must retain the above copyright notice. -:: -:: @copyright Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org) -:: @link https://cakephp.org CakePHP(tm) Project -:: @since 2.0.0 -:: @license https://opensource.org/licenses/mit-license.php MIT License -:: -:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: - -@echo off - -SET app=%0 -SET lib=%~dp0 - -php "%lib%cake.php" %* - -echo. - -exit /B %ERRORLEVEL% diff --git a/community_server/bin/cake.php b/community_server/bin/cake.php deleted file mode 100644 index 320ee3643..000000000 --- a/community_server/bin/cake.php +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/php -q -run($argv)); diff --git a/community_server/composer.json b/community_server/composer.json deleted file mode 100644 index dbd031048..000000000 --- a/community_server/composer.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "name": "cakephp/app", - "description": "CakePHP skeleton app", - "homepage": "https://cakephp.org", - "type": "project", - "license": "MIT", - "require": { - "php": ">=5.6", - "cakephp/cakephp": "3.9.*", - "cakephp/plugin-installer": "^1.0", - "datto/json-rpc": "^6.0", - "google/protobuf": "v3.10.*", - "mobiledetect/mobiledetectlib": "2.*", - "paragonie/sodium_compat": "^1.11", - "tuupola/base58": "^2.0" - }, - "require-dev": { - "cakephp/bake": "^1.9.0", - "cakephp/cakephp-codesniffer": "^3.0", - "cakephp/debug_kit": "^3.17.0", - "josegonzalez/dotenv": "3.*", - "phpunit/phpunit": "^5.7|^6.0", - "psy/psysh": "@stable" - }, - "suggest": { - "markstory/asset_compress": "An asset compression plugin which provides file concatenation and a flexible filter system for preprocessing and minification.", - "dereuromark/cakephp-ide-helper": "After baking your code, this keeps your annotations in sync with the code evolving from there on for maximum IDE and PHPStan compatibility." - }, - "autoload": { - "psr-4": { - "App\\": "src/", - "" : "src/", - "GPBMetadata\\Gradido\\": "src/Model/Messages/GPBMetadata/Gradido/", - "Proto\\Gradido\\" : "src/Model/Messages/Proto/Gradido/" - } - }, - "autoload-dev": { - "psr-4": { - "App\\Test\\": "tests/", - "Cake\\Test\\": "vendor/cakephp/cakephp/tests/" - } - }, - "scripts": { - "post-install-cmd": "App\\Console\\Installer::postInstall", - "post-create-project-cmd": "App\\Console\\Installer::postInstall", - "check": [ - "@test", - "@cs-check" - ], - "cs-check": "phpcs --colors -p --standard=vendor/cakephp/cakephp-codesniffer/CakePHP src/ tests/", - "cs-fix": "phpcbf --colors --standard=vendor/cakephp/cakephp-codesniffer/CakePHP src/ tests/", - "test": "phpunit --colors=always" - }, - "prefer-stable": true, - "config": { - "sort-packages": true - } -} diff --git a/community_server/composer.lock b/community_server/composer.lock deleted file mode 100644 index 41674bb88..000000000 --- a/community_server/composer.lock +++ /dev/null @@ -1,5577 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "8a3d1923190a6c9d6066359057844457", - "packages": [ - { - "name": "aura/intl", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/auraphp/Aura.Intl.git", - "reference": "7fce228980b19bf4dee2d7bbd6202a69b0dde926" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/auraphp/Aura.Intl/zipball/7fce228980b19bf4dee2d7bbd6202a69b0dde926", - "reference": "7fce228980b19bf4dee2d7bbd6202a69b0dde926", - "shasum": "" - }, - "require": { - "php": "^5.6|^7.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Aura\\Intl\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Aura.Intl Contributors", - "homepage": "https://github.com/auraphp/Aura.Intl/contributors" - } - ], - "description": "The Aura Intl package provides internationalization tools, specifically message translation.", - "homepage": "https://github.com/auraphp/Aura.Intl", - "keywords": [ - "g11n", - "globalization", - "i18n", - "internationalization", - "intl", - "l10n", - "localization" - ], - "support": { - "issues": "https://github.com/auraphp/Aura.Intl/issues", - "source": "https://github.com/auraphp/Aura.Intl/tree/3.x" - }, - "time": "2017-01-20T05:00:11+00:00" - }, - { - "name": "cakephp/cakephp", - "version": "3.9.8", - "source": { - "type": "git", - "url": "https://github.com/cakephp/cakephp.git", - "reference": "b0e43e810132a8b1f66cf89b038b54c090811c32" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/cakephp/cakephp/zipball/b0e43e810132a8b1f66cf89b038b54c090811c32", - "reference": "b0e43e810132a8b1f66cf89b038b54c090811c32", - "shasum": "" - }, - "require": { - "aura/intl": "^3.0.0", - "cakephp/chronos": "^1.0.1", - "ext-intl": "*", - "ext-mbstring": "*", - "laminas/laminas-diactoros": "^1.4.0", - "paragonie/random_compat": "^1.4|^2.0|9.99.99", - "php": ">=5.6.0,<8.0.0", - "psr/log": "^1.0.0", - "psr/simple-cache": "^1.0.0" - }, - "conflict": { - "phpunit/phpunit": "<5.7" - }, - "replace": { - "cakephp/cache": "self.version", - "cakephp/collection": "self.version", - "cakephp/core": "self.version", - "cakephp/database": "self.version", - "cakephp/datasource": "self.version", - "cakephp/event": "self.version", - "cakephp/filesystem": "self.version", - "cakephp/form": "self.version", - "cakephp/i18n": "self.version", - "cakephp/log": "self.version", - "cakephp/orm": "self.version", - "cakephp/utility": "self.version", - "cakephp/validation": "self.version" - }, - "require-dev": { - "cakephp/cakephp-codesniffer": "^3.0", - "cakephp/chronos": "^1.2.1", - "paragonie/csp-builder": "^1.4|^2.3", - "phpunit/phpunit": "^5.7.14|^6.0" - }, - "suggest": { - "ext-curl": "To enable more efficient network calls in Http\\Client.", - "ext-openssl": "To use Security::encrypt() or have secure CSRF token generation.", - "lib-ICU": "The intl PHP library, to use Text::transliterate() or Text::slug()", - "paragonie/csp-builder": "CSP builder, to use the CSP Middleware" - }, - "type": "library", - "autoload": { - "psr-4": { - "Cake\\": "src/" - }, - "files": [ - "src/Core/functions.php", - "src/Collection/functions.php", - "src/I18n/functions.php", - "src/Utility/bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "CakePHP Community", - "homepage": "https://github.com/cakephp/cakephp/graphs/contributors" - } - ], - "description": "The CakePHP framework", - "homepage": "https://cakephp.org", - "keywords": [ - "conventions over configuration", - "dry", - "form", - "framework", - "mvc", - "orm", - "psr-7", - "rapid-development", - "validation" - ], - "support": { - "forum": "https://stackoverflow.com/tags/cakephp", - "irc": "irc://irc.freenode.org/cakephp", - "issues": "https://github.com/cakephp/cakephp/issues", - "source": "https://github.com/cakephp/cakephp" - }, - "time": "2021-03-10T02:10:31+00:00" - }, - { - "name": "cakephp/chronos", - "version": "1.3.0", - "source": { - "type": "git", - "url": "https://github.com/cakephp/chronos.git", - "reference": "ba2bab98849e7bf29b02dd634ada49ab36472959" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/cakephp/chronos/zipball/ba2bab98849e7bf29b02dd634ada49ab36472959", - "reference": "ba2bab98849e7bf29b02dd634ada49ab36472959", - "shasum": "" - }, - "require": { - "php": ">=5.6" - }, - "require-dev": { - "athletic/athletic": "~0.1", - "cakephp/cakephp-codesniffer": "^3.0", - "phpbench/phpbench": "@dev", - "phpunit/phpunit": "<6.0 || ^7.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Cake\\Chronos\\": "src/" - }, - "files": [ - "src/carbon_compat.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Brian Nesbitt", - "email": "brian@nesbot.com", - "homepage": "http://nesbot.com" - }, - { - "name": "The CakePHP Team", - "homepage": "http://cakephp.org" - } - ], - "description": "A simple API extension for DateTime.", - "homepage": "http://cakephp.org", - "keywords": [ - "date", - "datetime", - "time" - ], - "support": { - "irc": "irc://irc.freenode.org/cakephp", - "issues": "https://github.com/cakephp/chronos/issues", - "source": "https://github.com/cakephp/chronos" - }, - "time": "2019-11-30T02:33:19+00:00" - }, - { - "name": "cakephp/migrations", - "version": "2.4.2", - "source": { - "type": "git", - "url": "https://github.com/cakephp/migrations.git", - "reference": "7fa4f1f8a4cd90df59cd8e3a46958c822abe457e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/cakephp/migrations/zipball/7fa4f1f8a4cd90df59cd8e3a46958c822abe457e", - "reference": "7fa4f1f8a4cd90df59cd8e3a46958c822abe457e", - "shasum": "" - }, - "require": { - "cakephp/cache": "^3.6.0", - "cakephp/orm": "^3.6.0", - "php": ">=5.6.0", - "robmorgan/phinx": "^0.10.3|^0.11.1" - }, - "require-dev": { - "cakephp/bake": "^1.7.0", - "cakephp/cakephp": "^3.6.0", - "cakephp/cakephp-codesniffer": "^3.0", - "phpunit/phpunit": "^5.7.14|^6.0" - }, - "suggest": { - "cakephp/bake": "If you want to generate migrations." - }, - "type": "cakephp-plugin", - "autoload": { - "psr-4": { - "Migrations\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "CakePHP Community", - "homepage": "https://github.com/cakephp/migrations/graphs/contributors" - } - ], - "description": "Database Migration plugin for CakePHP based on Phinx", - "homepage": "https://github.com/cakephp/migrations", - "keywords": [ - "cakephp", - "migrations" - ], - "support": { - "forum": "https://stackoverflow.com/tags/cakephp", - "irc": "irc://irc.freenode.org/cakephp", - "issues": "https://github.com/cakephp/migrations/issues", - "source": "https://github.com/cakephp/migrations" - }, - "time": "2020-02-05T15:00:43+00:00" - }, - { - "name": "cakephp/plugin-installer", - "version": "1.3.1", - "source": { - "type": "git", - "url": "https://github.com/cakephp/plugin-installer.git", - "reference": "e27027aa2d3d8ab64452c6817629558685a064cb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/cakephp/plugin-installer/zipball/e27027aa2d3d8ab64452c6817629558685a064cb", - "reference": "e27027aa2d3d8ab64452c6817629558685a064cb", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1.0 || ^2.0", - "php": ">=5.6.0" - }, - "require-dev": { - "cakephp/cakephp-codesniffer": "^3.3", - "composer/composer": "^2.0", - "phpunit/phpunit": "^5.7 || ^6.5 || ^8.5 || ^9.3" - }, - "type": "composer-plugin", - "extra": { - "class": "Cake\\Composer\\Plugin" - }, - "autoload": { - "psr-4": { - "Cake\\Composer\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "CakePHP Community", - "homepage": "https://cakephp.org" - } - ], - "description": "A composer installer for CakePHP 3.0+ plugins.", - "support": { - "issues": "https://github.com/cakephp/plugin-installer/issues", - "source": "https://github.com/cakephp/plugin-installer/tree/1.3.1" - }, - "time": "2020-10-29T04:00:42+00:00" - }, - { - "name": "datto/json-rpc", - "version": "6.1.0", - "source": { - "type": "git", - "url": "https://github.com/datto/php-json-rpc.git", - "reference": "ad4d735f48d80c6b53f7405e5007d97c996533f6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/datto/php-json-rpc/zipball/ad4d735f48d80c6b53f7405e5007d97c996533f6", - "reference": "ad4d735f48d80c6b53f7405e5007d97c996533f6", - "shasum": "" - }, - "require": { - "php": ">=7.0.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.5" - }, - "type": "library", - "autoload": { - "psr-4": { - "Datto\\JsonRpc\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-3.0+" - ], - "authors": [ - { - "name": "Spencer Mortensen", - "email": "smortensen@datto.com", - "homepage": "http://spencermortensen.com", - "role": "Developer" - } - ], - "description": "Fully unit-tested JSON-RPC 2.0 for PHP", - "homepage": "http://datto.com", - "keywords": [ - "json", - "json-rpc", - "jsonrpc", - "php", - "php-json-rpc", - "rpc" - ], - "support": { - "issues": "https://github.com/datto/php-json-rpc/issues", - "source": "https://github.com/datto/php-json-rpc/tree/6.1.0" - }, - "time": "2020-02-28T23:54:06+00:00" - }, - { - "name": "google/protobuf", - "version": "v3.10.0", - "source": { - "type": "git", - "url": "https://github.com/protocolbuffers/protobuf-php.git", - "reference": "5dffdd2c84112e6c91fd84f92e3df96649426881" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/protocolbuffers/protobuf-php/zipball/5dffdd2c84112e6c91fd84f92e3df96649426881", - "reference": "5dffdd2c84112e6c91fd84f92e3df96649426881", - "shasum": "" - }, - "require": { - "php": ">=5.5.0" - }, - "require-dev": { - "phpunit/phpunit": ">=4.8.0" - }, - "suggest": { - "ext-bcmath": "Need to support JSON deserialization" - }, - "type": "library", - "autoload": { - "psr-4": { - "Google\\Protobuf\\": "src/Google/Protobuf", - "GPBMetadata\\Google\\Protobuf\\": "src/GPBMetadata/Google/Protobuf" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "proto library for PHP", - "homepage": "https://developers.google.com/protocol-buffers/", - "keywords": [ - "proto" - ], - "support": { - "issues": "https://github.com/protocolbuffers/protobuf-php/issues", - "source": "https://github.com/protocolbuffers/protobuf-php/tree/v3.10.0" - }, - "time": "2019-10-03T20:08:37+00:00" - }, - { - "name": "laminas/laminas-diactoros", - "version": "1.8.7p2", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-diactoros.git", - "reference": "6991c1af7c8d2c8efee81b22ba97024781824aaa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-diactoros/zipball/6991c1af7c8d2c8efee81b22ba97024781824aaa", - "reference": "6991c1af7c8d2c8efee81b22ba97024781824aaa", - "shasum": "" - }, - "require": { - "laminas/laminas-zendframework-bridge": "^1.0", - "php": "^5.6 || ^7.0", - "psr/http-message": "^1.0" - }, - "provide": { - "psr/http-message-implementation": "1.0" - }, - "replace": { - "zendframework/zend-diactoros": "~1.8.7.0" - }, - "require-dev": { - "ext-dom": "*", - "ext-libxml": "*", - "laminas/laminas-coding-standard": "~1.0", - "php-http/psr7-integration-tests": "dev-master", - "phpunit/phpunit": "^5.7.16 || ^6.0.8 || ^7.2.7" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-release-1.8": "1.8.x-dev" - } - }, - "autoload": { - "files": [ - "src/functions/create_uploaded_file.php", - "src/functions/marshal_headers_from_sapi.php", - "src/functions/marshal_method_from_sapi.php", - "src/functions/marshal_protocol_version_from_sapi.php", - "src/functions/marshal_uri_from_sapi.php", - "src/functions/normalize_server.php", - "src/functions/normalize_uploaded_files.php", - "src/functions/parse_cookie_header.php", - "src/functions/create_uploaded_file.legacy.php", - "src/functions/marshal_headers_from_sapi.legacy.php", - "src/functions/marshal_method_from_sapi.legacy.php", - "src/functions/marshal_protocol_version_from_sapi.legacy.php", - "src/functions/marshal_uri_from_sapi.legacy.php", - "src/functions/normalize_server.legacy.php", - "src/functions/normalize_uploaded_files.legacy.php", - "src/functions/parse_cookie_header.legacy.php" - ], - "psr-4": { - "Laminas\\Diactoros\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "PSR HTTP Message implementations", - "homepage": "https://laminas.dev", - "keywords": [ - "http", - "laminas", - "psr", - "psr-7" - ], - "support": { - "chat": "https://laminas.dev/chat", - "docs": "https://docs.laminas.dev/laminas-diactoros/", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/laminas/laminas-diactoros/issues", - "rss": "https://github.com/laminas/laminas-diactoros/releases.atom", - "source": "https://github.com/laminas/laminas-diactoros" - }, - "time": "2020-03-23T15:28:28+00:00" - }, - { - "name": "laminas/laminas-zendframework-bridge", - "version": "1.1.1", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-zendframework-bridge.git", - "reference": "6ede70583e101030bcace4dcddd648f760ddf642" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/6ede70583e101030bcace4dcddd648f760ddf642", - "reference": "6ede70583e101030bcace4dcddd648f760ddf642", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0 || ^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.7 || ^6.5 || ^7.5 || ^8.1 || ^9.3", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "laminas": { - "module": "Laminas\\ZendFrameworkBridge" - } - }, - "autoload": { - "files": [ - "src/autoload.php" - ], - "psr-4": { - "Laminas\\ZendFrameworkBridge\\": "src//" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Alias legacy ZF class names to Laminas Project equivalents.", - "keywords": [ - "ZendFramework", - "autoloading", - "laminas", - "zf" - ], - "support": { - "forum": "https://discourse.laminas.dev/", - "issues": "https://github.com/laminas/laminas-zendframework-bridge/issues", - "rss": "https://github.com/laminas/laminas-zendframework-bridge/releases.atom", - "source": "https://github.com/laminas/laminas-zendframework-bridge" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2020-09-14T14:23:00+00:00" - }, - { - "name": "mobiledetect/mobiledetectlib", - "version": "2.8.37", - "source": { - "type": "git", - "url": "https://github.com/serbanghita/Mobile-Detect.git", - "reference": "9841e3c46f5bd0739b53aed8ac677fa712943df7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/serbanghita/Mobile-Detect/zipball/9841e3c46f5bd0739b53aed8ac677fa712943df7", - "reference": "9841e3c46f5bd0739b53aed8ac677fa712943df7", - "shasum": "" - }, - "require": { - "php": ">=5.0.0" - }, - "require-dev": { - "phpunit/phpunit": "~4.8.35||~5.7" - }, - "type": "library", - "autoload": { - "classmap": [ - "Mobile_Detect.php" - ], - "psr-0": { - "Detection": "namespaced/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Serban Ghita", - "email": "serbanghita@gmail.com", - "homepage": "http://mobiledetect.net", - "role": "Developer" - } - ], - "description": "Mobile_Detect is a lightweight PHP class for detecting mobile devices. It uses the User-Agent string combined with specific HTTP headers to detect the mobile environment.", - "homepage": "https://github.com/serbanghita/Mobile-Detect", - "keywords": [ - "detect mobile devices", - "mobile", - "mobile detect", - "mobile detector", - "php mobile detect" - ], - "support": { - "issues": "https://github.com/serbanghita/Mobile-Detect/issues", - "source": "https://github.com/serbanghita/Mobile-Detect/tree/2.8.37" - }, - "funding": [ - { - "url": "https://github.com/serbanghita", - "type": "github" - } - ], - "time": "2021-02-19T21:22:57+00:00" - }, - { - "name": "paragonie/random_compat", - "version": "v9.99.99", - "source": { - "type": "git", - "url": "https://github.com/paragonie/random_compat.git", - "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", - "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", - "shasum": "" - }, - "require": { - "php": "^7" - }, - "require-dev": { - "phpunit/phpunit": "4.*|5.*", - "vimeo/psalm": "^1" - }, - "suggest": { - "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." - }, - "type": "library", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Paragon Initiative Enterprises", - "email": "security@paragonie.com", - "homepage": "https://paragonie.com" - } - ], - "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", - "keywords": [ - "csprng", - "polyfill", - "pseudorandom", - "random" - ], - "support": { - "email": "info@paragonie.com", - "issues": "https://github.com/paragonie/random_compat/issues", - "source": "https://github.com/paragonie/random_compat" - }, - "time": "2018-07-02T15:55:56+00:00" - }, - { - "name": "paragonie/sodium_compat", - "version": "v1.14.0", - "source": { - "type": "git", - "url": "https://github.com/paragonie/sodium_compat.git", - "reference": "a1cfe0b21faf9c0b61ac0c6188c4af7fd6fd0db3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/paragonie/sodium_compat/zipball/a1cfe0b21faf9c0b61ac0c6188c4af7fd6fd0db3", - "reference": "a1cfe0b21faf9c0b61ac0c6188c4af7fd6fd0db3", - "shasum": "" - }, - "require": { - "paragonie/random_compat": ">=1", - "php": "^5.2.4|^5.3|^5.4|^5.5|^5.6|^7|^8" - }, - "require-dev": { - "phpunit/phpunit": "^3|^4|^5|^6|^7|^8|^9" - }, - "suggest": { - "ext-libsodium": "PHP < 7.0: Better performance, password hashing (Argon2i), secure memory management (memzero), and better security.", - "ext-sodium": "PHP >= 7.0: Better performance, password hashing (Argon2i), secure memory management (memzero), and better security." - }, - "type": "library", - "autoload": { - "files": [ - "autoload.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "ISC" - ], - "authors": [ - { - "name": "Paragon Initiative Enterprises", - "email": "security@paragonie.com" - }, - { - "name": "Frank Denis", - "email": "jedisct1@pureftpd.org" - } - ], - "description": "Pure PHP implementation of libsodium; uses the PHP extension if it exists", - "keywords": [ - "Authentication", - "BLAKE2b", - "ChaCha20", - "ChaCha20-Poly1305", - "Chapoly", - "Curve25519", - "Ed25519", - "EdDSA", - "Edwards-curve Digital Signature Algorithm", - "Elliptic Curve Diffie-Hellman", - "Poly1305", - "Pure-PHP cryptography", - "RFC 7748", - "RFC 8032", - "Salpoly", - "Salsa20", - "X25519", - "XChaCha20-Poly1305", - "XSalsa20-Poly1305", - "Xchacha20", - "Xsalsa20", - "aead", - "cryptography", - "ecdh", - "elliptic curve", - "elliptic curve cryptography", - "encryption", - "libsodium", - "php", - "public-key cryptography", - "secret-key cryptography", - "side-channel resistant" - ], - "support": { - "issues": "https://github.com/paragonie/sodium_compat/issues", - "source": "https://github.com/paragonie/sodium_compat/tree/v1.14.0" - }, - "time": "2020-12-03T16:26:19+00:00" - }, - { - "name": "psr/container", - "version": "1.1.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", - "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", - "shasum": "" - }, - "require": { - "php": ">=7.2.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Psr\\Container\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common Container Interface (PHP FIG PSR-11)", - "homepage": "https://github.com/php-fig/container", - "keywords": [ - "PSR-11", - "container", - "container-interface", - "container-interop", - "psr" - ], - "support": { - "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/1.1.1" - }, - "time": "2021-03-05T17:36:06+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP messages", - "homepage": "https://github.com/php-fig/http-message", - "keywords": [ - "http", - "http-message", - "psr", - "psr-7", - "request", - "response" - ], - "support": { - "source": "https://github.com/php-fig/http-message/tree/master" - }, - "time": "2016-08-06T14:39:51+00:00" - }, - { - "name": "psr/log", - "version": "1.1.3", - "source": { - "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc", - "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Log\\": "Psr/Log/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", - "keywords": [ - "log", - "psr", - "psr-3" - ], - "support": { - "source": "https://github.com/php-fig/log/tree/1.1.3" - }, - "time": "2020-03-23T09:12:05+00:00" - }, - { - "name": "psr/simple-cache", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/simple-cache.git", - "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", - "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\SimpleCache\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interfaces for simple caching", - "keywords": [ - "cache", - "caching", - "psr", - "psr-16", - "simple-cache" - ], - "support": { - "source": "https://github.com/php-fig/simple-cache/tree/master" - }, - "time": "2017-10-23T01:57:42+00:00" - }, - { - "name": "robmorgan/phinx", - "version": "0.11.7", - "source": { - "type": "git", - "url": "https://github.com/cakephp/phinx.git", - "reference": "3cdde73e0c33c410e076108b3e1603fabb5b330d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/cakephp/phinx/zipball/3cdde73e0c33c410e076108b3e1603fabb5b330d", - "reference": "3cdde73e0c33c410e076108b3e1603fabb5b330d", - "shasum": "" - }, - "require": { - "cakephp/collection": "^3.7", - "cakephp/database": "^3.7", - "php": ">=5.6", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/console": "^3.4|^4.0|^5.0", - "symfony/yaml": "^3.4|^4.0|^5.0" - }, - "require-dev": { - "cakephp/cakephp-codesniffer": "^3.0", - "ext-json": "*", - "phpunit/phpunit": ">=5.7,<8.0", - "sebastian/comparator": ">=1.2.3" - }, - "suggest": { - "ext-json": "Install if using JSON configuration format", - "symfony/yaml": "Install if using YAML configuration format" - }, - "bin": [ - "bin/phinx" - ], - "type": "library", - "autoload": { - "psr-4": { - "Phinx\\": "src/Phinx/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Rob Morgan", - "email": "robbym@gmail.com", - "homepage": "https://robmorgan.id.au", - "role": "Lead Developer" - }, - { - "name": "Woody Gilk", - "email": "woody.gilk@gmail.com", - "homepage": "https://shadowhand.me", - "role": "Developer" - }, - { - "name": "Richard Quadling", - "email": "rquadling@gmail.com", - "role": "Developer" - }, - { - "name": "CakePHP Community", - "homepage": "https://github.com/cakephp/phinx/graphs/contributors", - "role": "Developer" - } - ], - "description": "Phinx makes it ridiculously easy to manage the database migrations for your PHP app.", - "homepage": "https://phinx.org", - "keywords": [ - "database", - "database migrations", - "db", - "migrations", - "phinx" - ], - "support": { - "issues": "https://github.com/cakephp/phinx/issues", - "source": "https://github.com/cakephp/phinx/tree/0.11.7" - }, - "time": "2020-05-09T13:59:05+00:00" - }, - { - "name": "symfony/config", - "version": "v5.2.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/config.git", - "reference": "212d54675bf203ff8aef7d8cee8eecfb72f4a263" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/212d54675bf203ff8aef7d8cee8eecfb72f4a263", - "reference": "212d54675bf203ff8aef7d8cee8eecfb72f4a263", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/filesystem": "^4.4|^5.0", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-php80": "^1.15" - }, - "conflict": { - "symfony/finder": "<4.4" - }, - "require-dev": { - "symfony/event-dispatcher": "^4.4|^5.0", - "symfony/finder": "^4.4|^5.0", - "symfony/messenger": "^4.4|^5.0", - "symfony/service-contracts": "^1.1|^2", - "symfony/yaml": "^4.4|^5.0" - }, - "suggest": { - "symfony/yaml": "To use the yaml reference dumper" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Config\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/config/tree/v5.2.4" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-02-23T23:58:19+00:00" - }, - { - "name": "symfony/console", - "version": "v5.2.6", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "35f039df40a3b335ebf310f244cb242b3a83ac8d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/35f039df40a3b335ebf310f244cb242b3a83ac8d", - "reference": "35f039df40a3b335ebf310f244cb242b3a83ac8d", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.8", - "symfony/polyfill-php80": "^1.15", - "symfony/service-contracts": "^1.1|^2", - "symfony/string": "^5.1" - }, - "conflict": { - "symfony/dependency-injection": "<4.4", - "symfony/dotenv": "<5.1", - "symfony/event-dispatcher": "<4.4", - "symfony/lock": "<4.4", - "symfony/process": "<4.4" - }, - "provide": { - "psr/log-implementation": "1.0" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/event-dispatcher": "^4.4|^5.0", - "symfony/lock": "^4.4|^5.0", - "symfony/process": "^4.4|^5.0", - "symfony/var-dumper": "^4.4|^5.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Console\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Eases the creation of beautiful and testable command line interfaces", - "homepage": "https://symfony.com", - "keywords": [ - "cli", - "command line", - "console", - "terminal" - ], - "support": { - "source": "https://github.com/symfony/console/tree/v5.2.6" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-03-28T09:42:18+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v2.2.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "5fa56b4074d1ae755beb55617ddafe6f5d78f665" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5fa56b4074d1ae755beb55617ddafe6f5d78f665", - "reference": "5fa56b4074d1ae755beb55617ddafe6f5d78f665", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "files": [ - "function.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "A generic function and convention to trigger deprecation notices", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/master" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2020-09-07T11:33:47+00:00" - }, - { - "name": "symfony/filesystem", - "version": "v5.2.6", - "source": { - "type": "git", - "url": "https://github.com/symfony/filesystem.git", - "reference": "8c86a82f51658188119e62cff0a050a12d09836f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/8c86a82f51658188119e62cff0a050a12d09836f", - "reference": "8c86a82f51658188119e62cff0a050a12d09836f", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/polyfill-ctype": "~1.8" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Filesystem\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides basic utilities for the filesystem", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/filesystem/tree/v5.2.6" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-03-28T14:30:26+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.22.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "c6c942b1ac76c82448322025e084cadc56048b4e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/c6c942b1ac76c82448322025e084cadc56048b4e", - "reference": "c6c942b1ac76c82448322025e084cadc56048b4e", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.22-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for ctype functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "ctype", - "polyfill", - "portable" - ], - "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.22.1" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-01-07T16:49:33+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.22.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "5601e09b69f26c1828b13b6bb87cb07cddba3170" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/5601e09b69f26c1828b13b6bb87cb07cddba3170", - "reference": "5601e09b69f26c1828b13b6bb87cb07cddba3170", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.22-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Grapheme\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's grapheme_* functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "grapheme", - "intl", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.22.1" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-01-22T09:19:47+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.22.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "43a0283138253ed1d48d352ab6d0bdb3f809f248" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/43a0283138253ed1d48d352ab6d0bdb3f809f248", - "reference": "43a0283138253ed1d48d352ab6d0bdb3f809f248", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.22-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Normalizer\\": "" - }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's Normalizer class and related functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "intl", - "normalizer", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.22.1" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-01-22T09:19:47+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.22.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "5232de97ee3b75b0360528dae24e73db49566ab1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/5232de97ee3b75b0360528dae24e73db49566ab1", - "reference": "5232de97ee3b75b0360528dae24e73db49566ab1", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.22-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for the Mbstring extension", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.22.1" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-01-22T09:19:47+00:00" - }, - { - "name": "symfony/polyfill-php73", - "version": "v1.22.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "a678b42e92f86eca04b7fa4c0f6f19d097fb69e2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/a678b42e92f86eca04b7fa4c0f6f19d097fb69e2", - "reference": "a678b42e92f86eca04b7fa4c0f6f19d097fb69e2", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.22-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php73\\": "" - }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.22.1" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-01-07T16:49:33+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.22.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "dc3063ba22c2a1fd2f45ed856374d79114998f91" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/dc3063ba22c2a1fd2f45ed856374d79114998f91", - "reference": "dc3063ba22c2a1fd2f45ed856374d79114998f91", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.22-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" - }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.22.1" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-01-07T16:49:33+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v2.2.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d15da7ba4957ffb8f1747218be9e1a121fd298a1", - "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "psr/container": "^1.0" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to writing services", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/service-contracts/tree/master" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2020-09-07T11:33:47+00:00" - }, - { - "name": "symfony/string", - "version": "v5.2.6", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "ad0bd91bce2054103f5eaa18ebeba8d3bc2a0572" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/ad0bd91bce2054103f5eaa18ebeba8d3bc2a0572", - "reference": "ad0bd91bce2054103f5eaa18ebeba8d3bc2a0572", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "~1.15" - }, - "require-dev": { - "symfony/error-handler": "^4.4|^5.0", - "symfony/http-client": "^4.4|^5.0", - "symfony/translation-contracts": "^1.1|^2", - "symfony/var-exporter": "^4.4|^5.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "files": [ - "Resources/functions.php" - ], - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v5.2.6" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-03-17T17:12:15+00:00" - }, - { - "name": "symfony/yaml", - "version": "v5.2.5", - "source": { - "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "298a08ddda623485208506fcee08817807a251dd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/298a08ddda623485208506fcee08817807a251dd", - "reference": "298a08ddda623485208506fcee08817807a251dd", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/polyfill-ctype": "~1.8" - }, - "conflict": { - "symfony/console": "<4.4" - }, - "require-dev": { - "symfony/console": "^4.4|^5.0" - }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" - }, - "bin": [ - "Resources/bin/yaml-lint" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Yaml\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Loads and dumps YAML files", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/yaml/tree/v5.2.5" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-03-06T07:59:01+00:00" - }, - { - "name": "tuupola/base58", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/tuupola/base58.git", - "reference": "4cd1a3972679946e87c0746f59ff8f0760240b4c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tuupola/base58/zipball/4cd1a3972679946e87c0746f59ff8f0760240b4c", - "reference": "4cd1a3972679946e87c0746f59ff8f0760240b4c", - "shasum": "" - }, - "require": { - "php": "^7.1|^8.0" - }, - "require-dev": { - "overtrue/phplint": "^1.0.0", - "phpbench/phpbench": "^0.13.0", - "phpstan/phpstan": "^0.12.37", - "phpunit/phpunit": "^7.0|^8.0|^9.0", - "squizlabs/php_codesniffer": "^3.0" - }, - "suggest": { - "ext-gmp": "GMP extension provides the fastest encoding and decoding." - }, - "type": "library", - "autoload": { - "psr-4": { - "Tuupola\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mika Tuupola", - "email": "tuupola@appelsiini.net", - "homepage": "https://appelsiini.net/", - "role": "Developer" - } - ], - "description": "Base58 encoder and decoder for arbitrary data", - "homepage": "https://github.com/tuupola/base58", - "keywords": [ - "base58" - ], - "support": { - "issues": "https://github.com/tuupola/base58/issues", - "source": "https://github.com/tuupola/base58/tree/2.1.0" - }, - "funding": [ - { - "url": "https://github.com/tuupola", - "type": "github" - } - ], - "time": "2020-09-09T11:38:20+00:00" - } - ], - "packages-dev": [ - { - "name": "ajgl/breakpoint-twig-extension", - "version": "0.3.5", - "source": { - "type": "git", - "url": "https://github.com/ajgarlag/AjglBreakpointTwigExtension.git", - "reference": "9875feea0ac4bc3c9f308c62bae4727669d6052a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ajgarlag/AjglBreakpointTwigExtension/zipball/9875feea0ac4bc3c9f308c62bae4727669d6052a", - "reference": "9875feea0ac4bc3c9f308c62bae4727669d6052a", - "shasum": "" - }, - "require": { - "php": ">=5.6", - "twig/twig": "^1.34|^2.0|^3.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2.18", - "symfony/framework-bundle": "^2.7|^3.4|^4.4|^5.2", - "symfony/phpunit-bridge": "^4.4|^5.2", - "symfony/twig-bundle": "^2.7|^3.4|^4.4|^5.2" - }, - "suggest": { - "ext-xdebug": "The Xdebug extension is required for the breakpoint to work", - "symfony/framework-bundle": "The framework bundle to integrate the extension into Symfony", - "symfony/twig-bundle": "The twig bundle to integrate the extension into Symfony" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "0.3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Ajgl\\Twig\\Extension\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Antonio J. García Lagar", - "email": "aj@garcialagar.es", - "homepage": "http://aj.garcialagar.es", - "role": "developer" - } - ], - "description": "Twig extension to set breakpoints", - "homepage": "https://github.com/ajgarlag/AjglBreakpointTwigExtension", - "keywords": [ - "Xdebug", - "breakpoint", - "twig" - ], - "support": { - "issues": "https://github.com/ajgarlag/AjglBreakpointTwigExtension/issues", - "source": "https://github.com/ajgarlag/AjglBreakpointTwigExtension/tree/0.3.5" - }, - "time": "2021-02-08T10:48:05+00:00" - }, - { - "name": "aptoma/twig-markdown", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/aptoma/twig-markdown.git", - "reference": "64a9c5c7418c08faf91c4410b34bdb65fb25c23d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/aptoma/twig-markdown/zipball/64a9c5c7418c08faf91c4410b34bdb65fb25c23d", - "reference": "64a9c5c7418c08faf91c4410b34bdb65fb25c23d", - "shasum": "" - }, - "require": { - "twig/twig": "~1.12" - }, - "require-dev": { - "codeclimate/php-test-reporter": "dev-master", - "erusev/parsedown": "^1.6", - "knplabs/github-api": "~1.2", - "league/commonmark": "~0.5", - "michelf/php-markdown": "~1", - "phpunit/phpunit": "~4.0", - "satooshi/php-coveralls": "~0.6" - }, - "suggest": { - "knplabs/github-api": "Needed for using GitHub's Markdown engine provided through their API.", - "michelf/php-markdown": "Original Markdown engine with MarkdownExtra." - }, - "type": "library", - "autoload": { - "psr-0": { - "Aptoma": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Joris Berthelot", - "email": "joris@berthelot.tel" - }, - { - "name": "Gunnar Lium", - "email": "gunnar@aptoma.com" - } - ], - "description": "Twig extension to work with Markdown content", - "keywords": [ - "markdown", - "twig" - ], - "support": { - "issues": "https://github.com/aptoma/twig-markdown/issues", - "source": "https://github.com/aptoma/twig-markdown/tree/master" - }, - "time": "2015-10-23T20:27:08+00:00" - }, - { - "name": "asm89/twig-cache-extension", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/asm89/twig-cache-extension.git", - "reference": "13787226956ec766f4770722082288097aebaaf3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/asm89/twig-cache-extension/zipball/13787226956ec766f4770722082288097aebaaf3", - "reference": "13787226956ec766f4770722082288097aebaaf3", - "shasum": "" - }, - "require": { - "php": ">=5.3.2", - "twig/twig": "^1.0|^2.0" - }, - "require-dev": { - "doctrine/cache": "~1.0", - "phpunit/phpunit": "^5.0 || ^4.8.10" - }, - "suggest": { - "psr/cache-implementation": "To make use of PSR-6 cache implementation via PsrCacheAdapter." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4-dev" - } - }, - "autoload": { - "psr-4": { - "": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander", - "email": "iam.asm89@gmail.com" - } - ], - "description": "Cache fragments of templates directly within Twig.", - "homepage": "https://github.com/asm89/twig-cache-extension", - "keywords": [ - "cache", - "extension", - "twig" - ], - "support": { - "issues": "https://github.com/asm89/twig-cache-extension/issues", - "source": "https://github.com/asm89/twig-cache-extension/tree/1.4.0" - }, - "abandoned": "twig/cache-extension", - "time": "2020-01-01T20:47:37+00:00" - }, - { - "name": "cakephp/bake", - "version": "1.12.0", - "source": { - "type": "git", - "url": "https://github.com/cakephp/bake.git", - "reference": "33e8ee8419ba36c13fa4074c208c93352b5530cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/cakephp/bake/zipball/33e8ee8419ba36c13fa4074c208c93352b5530cf", - "reference": "33e8ee8419ba36c13fa4074c208c93352b5530cf", - "shasum": "" - }, - "require": { - "cakephp/cakephp": "^3.8.0", - "cakephp/plugin-installer": "^1.0", - "php": ">=5.6.0", - "wyrihaximus/twig-view": "^4.3.7" - }, - "require-dev": { - "cakephp/cakephp-codesniffer": "^3.0", - "phpunit/phpunit": "^5.7.14|^6.0" - }, - "type": "cakephp-plugin", - "autoload": { - "psr-4": { - "Bake\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "CakePHP Community", - "homepage": "https://github.com/cakephp/bake/graphs/contributors" - } - ], - "description": "Bake plugin for CakePHP 3", - "homepage": "https://github.com/cakephp/bake", - "keywords": [ - "bake", - "cakephp" - ], - "support": { - "forum": "https://stackoverflow.com/tags/cakephp", - "irc": "irc://irc.freenode.org/cakephp", - "issues": "https://github.com/cakephp/bake/issues", - "source": "https://github.com/cakephp/bake" - }, - "time": "2019-12-07T20:34:43+00:00" - }, - { - "name": "cakephp/cakephp-codesniffer", - "version": "3.3.0", - "source": { - "type": "git", - "url": "https://github.com/cakephp/cakephp-codesniffer.git", - "reference": "7998a191e787fd5b68cb635d7050cb0d7b55e1a1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/cakephp/cakephp-codesniffer/zipball/7998a191e787fd5b68cb635d7050cb0d7b55e1a1", - "reference": "7998a191e787fd5b68cb635d7050cb0d7b55e1a1", - "shasum": "" - }, - "require": { - "php": ">=5.6", - "squizlabs/php_codesniffer": "^3.0.0" - }, - "require-dev": { - "phpunit/phpunit": "<6.0" - }, - "type": "phpcodesniffer-standard", - "autoload": { - "psr-4": { - "CakePHP\\": "CakePHP/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "CakePHP Community", - "homepage": "https://github.com/cakephp/cakephp-codesniffer/graphs/contributors" - } - ], - "description": "CakePHP CodeSniffer Standards", - "homepage": "https://cakephp.org", - "keywords": [ - "codesniffer", - "framework" - ], - "support": { - "forum": "https://stackoverflow.com/tags/cakephp", - "irc": "irc://irc.freenode.org/cakephp", - "issues": "https://github.com/cakephp/cakephp-codesniffer/issues", - "source": "https://github.com/cakephp/cakephp-codesniffer" - }, - "time": "2019-12-07T03:02:34+00:00" - }, - { - "name": "cakephp/debug_kit", - "version": "3.22.4", - "source": { - "type": "git", - "url": "https://github.com/cakephp/debug_kit.git", - "reference": "5bec3c49a2b8d9bd12655f2ec35e52ec90befe17" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/cakephp/debug_kit/zipball/5bec3c49a2b8d9bd12655f2ec35e52ec90befe17", - "reference": "5bec3c49a2b8d9bd12655f2ec35e52ec90befe17", - "shasum": "" - }, - "require": { - "cakephp/cakephp": "^3.7.0", - "cakephp/chronos": "^1.0.0", - "cakephp/plugin-installer": "^1.0.0", - "composer/composer": "^1.3.0", - "jdorn/sql-formatter": "^1.2.0", - "php": ">=5.6.0" - }, - "require-dev": { - "cakephp/authorization": "^1.3.2", - "cakephp/cakephp-codesniffer": "^3.0", - "phpunit/phpunit": "^5.7.14|^6.0" - }, - "suggest": { - "ext-pdo_sqlite": "DebugKit needs to store panel data in a database. SQLite is simple and easy to use." - }, - "type": "cakephp-plugin", - "autoload": { - "psr-4": { - "DebugKit\\": "src/", - "DebugKit\\Test\\Fixture\\": "tests/Fixture/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mark Story", - "homepage": "https://mark-story.com", - "role": "Author" - }, - { - "name": "CakePHP Community", - "homepage": "https://github.com/cakephp/debug_kit/graphs/contributors" - } - ], - "description": "CakePHP Debug Kit", - "homepage": "https://github.com/cakephp/debug_kit", - "keywords": [ - "cakephp", - "debug", - "kit" - ], - "support": { - "forum": "http://stackoverflow.com/tags/cakephp", - "irc": "irc://irc.freenode.org/cakephp", - "issues": "https://github.com/cakephp/debug_kit/issues", - "source": "https://github.com/cakephp/debug_kit" - }, - "time": "2020-04-22T17:27:39+00:00" - }, - { - "name": "composer/ca-bundle", - "version": "1.2.9", - "source": { - "type": "git", - "url": "https://github.com/composer/ca-bundle.git", - "reference": "78a0e288fdcebf92aa2318a8d3656168da6ac1a5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/78a0e288fdcebf92aa2318a8d3656168da6ac1a5", - "reference": "78a0e288fdcebf92aa2318a8d3656168da6ac1a5", - "shasum": "" - }, - "require": { - "ext-openssl": "*", - "ext-pcre": "*", - "php": "^5.3.2 || ^7.0 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.55", - "psr/log": "^1.0", - "symfony/phpunit-bridge": "^4.2 || ^5", - "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Composer\\CaBundle\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - } - ], - "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.", - "keywords": [ - "cabundle", - "cacert", - "certificate", - "ssl", - "tls" - ], - "support": { - "irc": "irc://irc.freenode.org/composer", - "issues": "https://github.com/composer/ca-bundle/issues", - "source": "https://github.com/composer/ca-bundle/tree/1.2.9" - }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" - } - ], - "time": "2021-01-12T12:10:35+00:00" - }, - { - "name": "composer/composer", - "version": "1.10.21", - "source": { - "type": "git", - "url": "https://github.com/composer/composer.git", - "reference": "04021432f4a9cbd9351dd166b8c193f42c36a39c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/composer/zipball/04021432f4a9cbd9351dd166b8c193f42c36a39c", - "reference": "04021432f4a9cbd9351dd166b8c193f42c36a39c", - "shasum": "" - }, - "require": { - "composer/ca-bundle": "^1.0", - "composer/semver": "^1.0", - "composer/spdx-licenses": "^1.2", - "composer/xdebug-handler": "^1.1", - "justinrainbow/json-schema": "^5.2.10", - "php": "^5.3.2 || ^7.0 || ^8.0", - "psr/log": "^1.0", - "seld/jsonlint": "^1.4", - "seld/phar-utils": "^1.0", - "symfony/console": "^2.7 || ^3.0 || ^4.0 || ^5.0", - "symfony/filesystem": "^2.7 || ^3.0 || ^4.0 || ^5.0", - "symfony/finder": "^2.7 || ^3.0 || ^4.0 || ^5.0", - "symfony/process": "^2.7 || ^3.0 || ^4.0 || ^5.0" - }, - "conflict": { - "symfony/console": "2.8.38" - }, - "require-dev": { - "phpspec/prophecy": "^1.10", - "symfony/phpunit-bridge": "^4.2" - }, - "suggest": { - "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages", - "ext-zip": "Enabling the zip extension allows you to unzip archives", - "ext-zlib": "Allow gzip compression of HTTP requests" - }, - "bin": [ - "bin/composer" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.10-dev" - } - }, - "autoload": { - "psr-4": { - "Composer\\": "src/Composer" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nils Adermann", - "email": "naderman@naderman.de", - "homepage": "http://www.naderman.de" - }, - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - } - ], - "description": "Composer helps you declare, manage and install dependencies of PHP projects. It ensures you have the right stack everywhere.", - "homepage": "https://getcomposer.org/", - "keywords": [ - "autoload", - "dependency", - "package" - ], - "support": { - "irc": "irc://irc.freenode.org/composer", - "issues": "https://github.com/composer/composer/issues", - "source": "https://github.com/composer/composer/tree/1.10.21" - }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" - } - ], - "time": "2021-04-01T07:16:35+00:00" - }, - { - "name": "composer/semver", - "version": "1.7.2", - "source": { - "type": "git", - "url": "https://github.com/composer/semver.git", - "reference": "647490bbcaf7fc4891c58f47b825eb99d19c377a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/647490bbcaf7fc4891c58f47b825eb99d19c377a", - "reference": "647490bbcaf7fc4891c58f47b825eb99d19c377a", - "shasum": "" - }, - "require": { - "php": "^5.3.2 || ^7.0 || ^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.5 || ^5.0.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Composer\\Semver\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nils Adermann", - "email": "naderman@naderman.de", - "homepage": "http://www.naderman.de" - }, - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - }, - { - "name": "Rob Bast", - "email": "rob.bast@gmail.com", - "homepage": "http://robbast.nl" - } - ], - "description": "Semver library that offers utilities, version constraint parsing and validation.", - "keywords": [ - "semantic", - "semver", - "validation", - "versioning" - ], - "support": { - "irc": "irc://irc.freenode.org/composer", - "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/1.7.2" - }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" - } - ], - "time": "2020-12-03T15:47:16+00:00" - }, - { - "name": "composer/spdx-licenses", - "version": "1.5.5", - "source": { - "type": "git", - "url": "https://github.com/composer/spdx-licenses.git", - "reference": "de30328a7af8680efdc03e396aad24befd513200" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/de30328a7af8680efdc03e396aad24befd513200", - "reference": "de30328a7af8680efdc03e396aad24befd513200", - "shasum": "" - }, - "require": { - "php": "^5.3.2 || ^7.0 || ^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 7" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Composer\\Spdx\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nils Adermann", - "email": "naderman@naderman.de", - "homepage": "http://www.naderman.de" - }, - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - }, - { - "name": "Rob Bast", - "email": "rob.bast@gmail.com", - "homepage": "http://robbast.nl" - } - ], - "description": "SPDX licenses list and validation library.", - "keywords": [ - "license", - "spdx", - "validator" - ], - "support": { - "irc": "irc://irc.freenode.org/composer", - "issues": "https://github.com/composer/spdx-licenses/issues", - "source": "https://github.com/composer/spdx-licenses/tree/1.5.5" - }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" - } - ], - "time": "2020-12-03T16:04:16+00:00" - }, - { - "name": "composer/xdebug-handler", - "version": "1.4.6", - "source": { - "type": "git", - "url": "https://github.com/composer/xdebug-handler.git", - "reference": "f27e06cd9675801df441b3656569b328e04aa37c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/f27e06cd9675801df441b3656569b328e04aa37c", - "reference": "f27e06cd9675801df441b3656569b328e04aa37c", - "shasum": "" - }, - "require": { - "php": "^5.3.2 || ^7.0 || ^8.0", - "psr/log": "^1.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.55", - "symfony/phpunit-bridge": "^4.2 || ^5" - }, - "type": "library", - "autoload": { - "psr-4": { - "Composer\\XdebugHandler\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "John Stevenson", - "email": "john-stevenson@blueyonder.co.uk" - } - ], - "description": "Restarts a process without Xdebug.", - "keywords": [ - "Xdebug", - "performance" - ], - "support": { - "irc": "irc://irc.freenode.org/composer", - "issues": "https://github.com/composer/xdebug-handler/issues", - "source": "https://github.com/composer/xdebug-handler/tree/1.4.6" - }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" - } - ], - "time": "2021-03-25T17:01:18+00:00" - }, - { - "name": "dnoegel/php-xdg-base-dir", - "version": "v0.1.1", - "source": { - "type": "git", - "url": "https://github.com/dnoegel/php-xdg-base-dir.git", - "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd", - "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd", - "shasum": "" - }, - "require": { - "php": ">=5.3.2" - }, - "require-dev": { - "phpunit/phpunit": "~7.0|~6.0|~5.0|~4.8.35" - }, - "type": "library", - "autoload": { - "psr-4": { - "XdgBaseDir\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "implementation of xdg base directory specification for php", - "support": { - "issues": "https://github.com/dnoegel/php-xdg-base-dir/issues", - "source": "https://github.com/dnoegel/php-xdg-base-dir/tree/v0.1.1" - }, - "time": "2019-12-04T15:06:13+00:00" - }, - { - "name": "doctrine/instantiator", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.0" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2020-11-10T18:47:58+00:00" - }, - { - "name": "jasny/twig-extensions", - "version": "v1.2.0", - "source": { - "type": "git", - "url": "https://github.com/jasny/twig-extensions.git", - "reference": "30bdf3a3903c021544f36332c9d5d4d563527da4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/jasny/twig-extensions/zipball/30bdf3a3903c021544f36332c9d5d4d563527da4", - "reference": "30bdf3a3903c021544f36332c9d5d4d563527da4", - "shasum": "" - }, - "require": { - "php": ">=7.0.0 | >=5.6.0", - "twig/twig": "^2.0 | ^1.12" - }, - "require-dev": { - "ext-intl": "*", - "ext-pcre": "*", - "jasny/php-code-quality": "^2.1", - "phpunit/phpunit": "^5.0" - }, - "suggest": { - "ext-intl": "Required for the use of the LocalDate Twig extension", - "ext-pcre": "Required for the use of the PCRE Twig extension" - }, - "type": "library", - "autoload": { - "psr-4": { - "Jasny\\Twig\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Arnold Daniels", - "email": "arnold@jasny.net", - "homepage": "http://www.jasny.net" - } - ], - "description": "A set of useful Twig filters", - "homepage": "http://github.com/jasny/twig-extensions#README", - "keywords": [ - "PCRE", - "array", - "date", - "datetime", - "preg", - "regex", - "templating", - "text", - "time" - ], - "support": { - "issues": "https://github.com/jasny/twig-extensions/issues", - "source": "https://github.com/jasny/twig-extensions" - }, - "time": "2017-09-13T07:38:01+00:00" - }, - { - "name": "jdorn/sql-formatter", - "version": "v1.2.17", - "source": { - "type": "git", - "url": "https://github.com/jdorn/sql-formatter.git", - "reference": "64990d96e0959dff8e059dfcdc1af130728d92bc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/jdorn/sql-formatter/zipball/64990d96e0959dff8e059dfcdc1af130728d92bc", - "reference": "64990d96e0959dff8e059dfcdc1af130728d92bc", - "shasum": "" - }, - "require": { - "php": ">=5.2.4" - }, - "require-dev": { - "phpunit/phpunit": "3.7.*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3.x-dev" - } - }, - "autoload": { - "classmap": [ - "lib" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jeremy Dorn", - "email": "jeremy@jeremydorn.com", - "homepage": "http://jeremydorn.com/" - } - ], - "description": "a PHP SQL highlighting library", - "homepage": "https://github.com/jdorn/sql-formatter/", - "keywords": [ - "highlight", - "sql" - ], - "support": { - "issues": "https://github.com/jdorn/sql-formatter/issues", - "source": "https://github.com/jdorn/sql-formatter/tree/master" - }, - "time": "2014-01-12T16:20:24+00:00" - }, - { - "name": "josegonzalez/dotenv", - "version": "3.2.0", - "source": { - "type": "git", - "url": "https://github.com/josegonzalez/php-dotenv.git", - "reference": "f19174d9d7213a6c20e8e5e268aa7dd042d821ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/josegonzalez/php-dotenv/zipball/f19174d9d7213a6c20e8e5e268aa7dd042d821ca", - "reference": "f19174d9d7213a6c20e8e5e268aa7dd042d821ca", - "shasum": "" - }, - "require": { - "m1/env": "2.*", - "php": ">=5.5.0" - }, - "require-dev": { - "php-mock/php-mock-phpunit": "^1.1", - "satooshi/php-coveralls": "1.*", - "squizlabs/php_codesniffer": "2.*" - }, - "type": "library", - "autoload": { - "psr-0": { - "josegonzalez\\Dotenv": [ - "src", - "tests" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jose Diaz-Gonzalez", - "email": "dotenv@josegonzalez.com", - "homepage": "http://josediazgonzalez.com", - "role": "Maintainer" - } - ], - "description": "dotenv file parsing for PHP", - "homepage": "https://github.com/josegonzalez/php-dotenv", - "keywords": [ - "configuration", - "dotenv", - "php" - ], - "support": { - "issues": "https://github.com/josegonzalez/php-dotenv/issues", - "source": "https://github.com/josegonzalez/php-dotenv/tree/master" - }, - "time": "2017-09-19T15:49:58+00:00" - }, - { - "name": "justinrainbow/json-schema", - "version": "5.2.10", - "source": { - "type": "git", - "url": "https://github.com/justinrainbow/json-schema.git", - "reference": "2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b", - "reference": "2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "~2.2.20||~2.15.1", - "json-schema/json-schema-test-suite": "1.2.0", - "phpunit/phpunit": "^4.8.35" - }, - "bin": [ - "bin/validate-json" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "JsonSchema\\": "src/JsonSchema/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bruno Prieto Reis", - "email": "bruno.p.reis@gmail.com" - }, - { - "name": "Justin Rainbow", - "email": "justin.rainbow@gmail.com" - }, - { - "name": "Igor Wiedler", - "email": "igor@wiedler.ch" - }, - { - "name": "Robert Schönthal", - "email": "seroscho@googlemail.com" - } - ], - "description": "A library to validate a json schema.", - "homepage": "https://github.com/justinrainbow/json-schema", - "keywords": [ - "json", - "schema" - ], - "support": { - "issues": "https://github.com/justinrainbow/json-schema/issues", - "source": "https://github.com/justinrainbow/json-schema/tree/5.2.10" - }, - "time": "2020-05-27T16:41:55+00:00" - }, - { - "name": "m1/env", - "version": "2.2.0", - "source": { - "type": "git", - "url": "https://github.com/m1/Env.git", - "reference": "5c296e3e13450a207e12b343f3af1d7ab569f6f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/m1/Env/zipball/5c296e3e13450a207e12b343f3af1d7ab569f6f3", - "reference": "5c296e3e13450a207e12b343f3af1d7ab569f6f3", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "require-dev": { - "phpunit/phpunit": "4.*", - "scrutinizer/ocular": "~1.1", - "squizlabs/php_codesniffer": "^2.3" - }, - "suggest": { - "josegonzalez/dotenv": "For loading of .env", - "m1/vars": "For loading of configs" - }, - "type": "library", - "autoload": { - "psr-4": { - "M1\\Env\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Miles Croxford", - "email": "hello@milescroxford.com", - "homepage": "http://milescroxford.com", - "role": "Developer" - } - ], - "description": "Env is a lightweight library bringing .env file parser compatibility to PHP. In short - it enables you to read .env files with PHP.", - "homepage": "https://github.com/m1/Env", - "keywords": [ - ".env", - "config", - "dotenv", - "env", - "loader", - "m1", - "parser", - "support" - ], - "support": { - "issues": "https://github.com/m1/Env/issues", - "source": "https://github.com/m1/Env/tree/2.2.0" - }, - "time": "2020-02-19T09:02:13+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.10.2", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - }, - "files": [ - "src/DeepCopy/deep_copy.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Create deep copies (clones) of your objects", - "keywords": [ - "clone", - "copy", - "duplicate", - "object", - "object graph" - ], - "support": { - "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2020-11-13T09:40:50+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.10.4", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "c6d052fc58cb876152f89f532b95a8d7907e7f0e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/c6d052fc58cb876152f89f532b95a8d7907e7f0e", - "reference": "c6d052fc58cb876152f89f532b95a8d7907e7f0e", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": ">=7.0" - }, - "require-dev": { - "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" - }, - "bin": [ - "bin/php-parse" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.9-dev" - } - }, - "autoload": { - "psr-4": { - "PhpParser\\": "lib/PhpParser" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Nikita Popov" - } - ], - "description": "A PHP parser written in PHP", - "keywords": [ - "parser", - "php" - ], - "support": { - "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.10.4" - }, - "time": "2020-12-20T10:01:03+00:00" - }, - { - "name": "phar-io/manifest", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/manifest.git", - "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/2df402786ab5368a0169091f61a7c1e0eb6852d0", - "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-phar": "*", - "phar-io/version": "^1.0.1", - "php": "^5.6 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", - "support": { - "issues": "https://github.com/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/master" - }, - "time": "2017-03-05T18:14:27+00:00" - }, - { - "name": "phar-io/version", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/a70c0ced4be299a63d32fa96d9281d03e94041df", - "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "description": "Library for handling version information and constraints", - "support": { - "issues": "https://github.com/phar-io/version/issues", - "source": "https://github.com/phar-io/version/tree/master" - }, - "time": "2017-03-05T17:38:23+00:00" - }, - { - "name": "phpdocumentor/reflection-common", - "version": "2.2.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-2.x": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" - } - ], - "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", - "keywords": [ - "FQSEN", - "phpDocumentor", - "phpdoc", - "reflection", - "static analysis" - ], - "support": { - "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", - "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" - }, - "time": "2020-06-27T09:03:43+00:00" - }, - { - "name": "phpdocumentor/reflection-docblock", - "version": "5.2.2", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556", - "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556", - "shasum": "" - }, - "require": { - "ext-filter": "*", - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.2", - "phpdocumentor/type-resolver": "^1.3", - "webmozart/assert": "^1.9.1" - }, - "require-dev": { - "mockery/mockery": "~1.3.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - }, - { - "name": "Jaap van Otterdijk", - "email": "account@ijaap.nl" - } - ], - "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "support": { - "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/master" - }, - "time": "2020-09-03T19:13:55+00:00" - }, - { - "name": "phpdocumentor/type-resolver", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", - "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-1.x": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - } - ], - "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", - "support": { - "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.4.0" - }, - "time": "2020-09-17T18:55:26+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.10.3", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "451c3cd1418cf640de218914901e51b064abb093" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093", - "reference": "451c3cd1418cf640de218914901e51b064abb093", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.0.2", - "php": "^5.3|^7.0", - "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0", - "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0", - "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^2.5 || ^3.2", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.10.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.10.3" - }, - "time": "2020-03-05T15:02:03+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "5.3.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "c89677919c5dd6d3b3852f230a663118762218ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c89677919c5dd6d3b3852f230a663118762218ac", - "reference": "c89677919c5dd6d3b3852f230a663118762218ac", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-xmlwriter": "*", - "php": "^7.0", - "phpunit/php-file-iterator": "^1.4.2", - "phpunit/php-text-template": "^1.2.1", - "phpunit/php-token-stream": "^2.0.1", - "sebastian/code-unit-reverse-lookup": "^1.0.1", - "sebastian/environment": "^3.0", - "sebastian/version": "^2.0.1", - "theseer/tokenizer": "^1.1" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "suggest": { - "ext-xdebug": "^2.5.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.3.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", - "homepage": "https://github.com/sebastianbergmann/php-code-coverage", - "keywords": [ - "coverage", - "testing", - "xunit" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/5.3" - }, - "time": "2018-04-06T15:36:58+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "1.4.5", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4", - "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "FilterIterator implementation that filters files based on a list of suffixes.", - "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", - "keywords": [ - "filesystem", - "iterator" - ], - "support": { - "irc": "irc://irc.freenode.net/phpunit", - "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/1.4.5" - }, - "time": "2017-11-27T13:52:08+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/1.2.1" - }, - "time": "2015-06-21T13:50:34+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "1.0.9", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", - "shasum": "" - }, - "require": { - "php": "^5.3.3 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", - "keywords": [ - "timer" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/master" - }, - "time": "2017-02-26T11:10:40+00:00" - }, - { - "name": "phpunit/php-token-stream", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "791198a2c6254db10131eecfe8c06670700904db" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db", - "reference": "791198a2c6254db10131eecfe8c06670700904db", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.2.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Wrapper around PHP's tokenizer extension.", - "homepage": "https://github.com/sebastianbergmann/php-token-stream/", - "keywords": [ - "tokenizer" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-token-stream/issues", - "source": "https://github.com/sebastianbergmann/php-token-stream/tree/master" - }, - "abandoned": true, - "time": "2017-11-27T05:48:46+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "6.5.14", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "bac23fe7ff13dbdb461481f706f0e9fe746334b7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/bac23fe7ff13dbdb461481f706f0e9fe746334b7", - "reference": "bac23fe7ff13dbdb461481f706f0e9fe746334b7", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-xml": "*", - "myclabs/deep-copy": "^1.6.1", - "phar-io/manifest": "^1.0.1", - "phar-io/version": "^1.0", - "php": "^7.0", - "phpspec/prophecy": "^1.7", - "phpunit/php-code-coverage": "^5.3", - "phpunit/php-file-iterator": "^1.4.3", - "phpunit/php-text-template": "^1.2.1", - "phpunit/php-timer": "^1.0.9", - "phpunit/phpunit-mock-objects": "^5.0.9", - "sebastian/comparator": "^2.1", - "sebastian/diff": "^2.0", - "sebastian/environment": "^3.1", - "sebastian/exporter": "^3.1", - "sebastian/global-state": "^2.0", - "sebastian/object-enumerator": "^3.0.3", - "sebastian/resource-operations": "^1.0", - "sebastian/version": "^2.0.1" - }, - "conflict": { - "phpdocumentor/reflection-docblock": "3.0.2", - "phpunit/dbunit": "<3.0" - }, - "require-dev": { - "ext-pdo": "*" - }, - "suggest": { - "ext-xdebug": "*", - "phpunit/php-invoker": "^1.1" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "6.5.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", - "keywords": [ - "phpunit", - "testing", - "xunit" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/6.5.14" - }, - "time": "2019-02-01T05:22:47+00:00" - }, - { - "name": "phpunit/phpunit-mock-objects", - "version": "5.0.10", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/cd1cf05c553ecfec36b170070573e540b67d3f1f", - "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.0.5", - "php": "^7.0", - "phpunit/php-text-template": "^1.2.1", - "sebastian/exporter": "^3.1" - }, - "conflict": { - "phpunit/phpunit": "<6.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.5.11" - }, - "suggest": { - "ext-soap": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Mock Object library for PHPUnit", - "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", - "keywords": [ - "mock", - "xunit" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/phpunit-mock-objects/issues", - "source": "https://github.com/sebastianbergmann/phpunit-mock-objects/tree/5.0.10" - }, - "abandoned": true, - "time": "2018-08-09T05:50:03+00:00" - }, - { - "name": "psy/psysh", - "version": "v0.10.7", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "a395af46999a12006213c0c8346c9445eb31640c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/a395af46999a12006213c0c8346c9445eb31640c", - "reference": "a395af46999a12006213c0c8346c9445eb31640c", - "shasum": "" - }, - "require": { - "dnoegel/php-xdg-base-dir": "0.1.*", - "ext-json": "*", - "ext-tokenizer": "*", - "nikic/php-parser": "~4.0|~3.0|~2.0|~1.3", - "php": "^8.0 || ^7.0 || ^5.5.9", - "symfony/console": "~5.0|~4.0|~3.0|^2.4.2|~2.3.10", - "symfony/var-dumper": "~5.0|~4.0|~3.0|~2.7" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "3.17.*" - }, - "suggest": { - "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", - "ext-pdo-sqlite": "The doc command requires SQLite to work.", - "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well.", - "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." - }, - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.10.x-dev" - } - }, - "autoload": { - "files": [ - "src/functions.php" - ], - "psr-4": { - "Psy\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Justin Hileman", - "email": "justin@justinhileman.info", - "homepage": "http://justinhileman.com" - } - ], - "description": "An interactive shell for modern PHP.", - "homepage": "http://psysh.org", - "keywords": [ - "REPL", - "console", - "interactive", - "shell" - ], - "support": { - "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/v0.10.7" - }, - "time": "2021-03-14T02:14:56+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/1de8cd5c010cb153fcd68b8d0f64606f523f7619", - "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619", - "shasum": "" - }, - "require": { - "php": ">=5.6" - }, - "require-dev": { - "phpunit/phpunit": "^8.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Looks up which function or method a line of code belongs to", - "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", - "support": { - "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/1.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-30T08:15:22+00:00" - }, - { - "name": "sebastian/comparator", - "version": "2.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/34369daee48eafb2651bea869b4b15d75ccc35f9", - "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9", - "shasum": "" - }, - "require": { - "php": "^7.0", - "sebastian/diff": "^2.0 || ^3.0", - "sebastian/exporter": "^3.1" - }, - "require-dev": { - "phpunit/phpunit": "^6.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides the functionality to compare PHP values for equality", - "homepage": "https://github.com/sebastianbergmann/comparator", - "keywords": [ - "comparator", - "compare", - "equality" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/master" - }, - "time": "2018-02-01T13:46:46+00:00" - }, - { - "name": "sebastian/diff", - "version": "2.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", - "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", - "shasum": "" - }, - "require": { - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/master" - }, - "time": "2017-08-03T08:09:46+00:00" - }, - { - "name": "sebastian/environment", - "version": "3.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/cd0871b3975fb7fc44d11314fd1ee20925fce4f5", - "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5", - "shasum": "" - }, - "require": { - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/master" - }, - "time": "2017-07-01T08:51:00+00:00" - }, - { - "name": "sebastian/exporter", - "version": "3.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "6b853149eab67d4da22291d36f5b0631c0fd856e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/6b853149eab67d4da22291d36f5b0631c0fd856e", - "reference": "6b853149eab67d4da22291d36f5b0631c0fd856e", - "shasum": "" - }, - "require": { - "php": ">=7.0", - "sebastian/recursion-context": "^3.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "http://www.github.com/sebastianbergmann/exporter", - "keywords": [ - "export", - "exporter" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/3.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-30T07:47:53+00:00" - }, - { - "name": "sebastian/global-state", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", - "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", - "shasum": "" - }, - "require": { - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/2.0.0" - }, - "time": "2017-04-27T15:39:26+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "3.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2", - "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2", - "shasum": "" - }, - "require": { - "php": ">=7.0", - "sebastian/object-reflector": "^1.1.1", - "sebastian/recursion-context": "^3.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Traverses array structures and object graphs to enumerate all referenced objects", - "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "support": { - "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/3.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-30T07:40:27+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "1.1.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/9b8772b9cbd456ab45d4a598d2dd1a1bced6363d", - "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d", - "shasum": "" - }, - "require": { - "php": ">=7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Allows reflection of object attributes, including inherited and non-public ones", - "homepage": "https://github.com/sebastianbergmann/object-reflector/", - "support": { - "issues": "https://github.com/sebastianbergmann/object-reflector/issues", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/1.1.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-30T07:37:18+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "3.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/367dcba38d6e1977be014dc4b22f47a484dac7fb", - "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb", - "shasum": "" - }, - "require": { - "php": ">=7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/3.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-30T07:34:24+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", - "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", - "shasum": "" - }, - "require": { - "php": ">=5.6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/master" - }, - "time": "2015-07-28T20:34:47+00:00" - }, - { - "name": "sebastian/version", - "version": "2.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", - "shasum": "" - }, - "require": { - "php": ">=5.6" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library that helps with managing the version number of Git-hosted PHP projects", - "homepage": "https://github.com/sebastianbergmann/version", - "support": { - "issues": "https://github.com/sebastianbergmann/version/issues", - "source": "https://github.com/sebastianbergmann/version/tree/master" - }, - "time": "2016-10-03T07:35:21+00:00" - }, - { - "name": "seld/jsonlint", - "version": "1.8.3", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/jsonlint.git", - "reference": "9ad6ce79c342fbd44df10ea95511a1b24dee5b57" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/9ad6ce79c342fbd44df10ea95511a1b24dee5b57", - "reference": "9ad6ce79c342fbd44df10ea95511a1b24dee5b57", - "shasum": "" - }, - "require": { - "php": "^5.3 || ^7.0 || ^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" - }, - "bin": [ - "bin/jsonlint" - ], - "type": "library", - "autoload": { - "psr-4": { - "Seld\\JsonLint\\": "src/Seld/JsonLint/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - } - ], - "description": "JSON Linter", - "keywords": [ - "json", - "linter", - "parser", - "validator" - ], - "support": { - "issues": "https://github.com/Seldaek/jsonlint/issues", - "source": "https://github.com/Seldaek/jsonlint/tree/1.8.3" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/seld/jsonlint", - "type": "tidelift" - } - ], - "time": "2020-11-11T09:19:24+00:00" - }, - { - "name": "seld/phar-utils", - "version": "1.1.1", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/phar-utils.git", - "reference": "8674b1d84ffb47cc59a101f5d5a3b61e87d23796" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/8674b1d84ffb47cc59a101f5d5a3b61e87d23796", - "reference": "8674b1d84ffb47cc59a101f5d5a3b61e87d23796", - "shasum": "" - }, - "require": { - "php": ">=5.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Seld\\PharUtils\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be" - } - ], - "description": "PHAR file format utilities, for when PHP phars you up", - "keywords": [ - "phar" - ], - "support": { - "issues": "https://github.com/Seldaek/phar-utils/issues", - "source": "https://github.com/Seldaek/phar-utils/tree/master" - }, - "time": "2020-07-07T18:42:57+00:00" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.6.0", - "source": { - "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "ffced0d2c8fa8e6cdc4d695a743271fab6c38625" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/ffced0d2c8fa8e6cdc4d695a743271fab6c38625", - "reference": "ffced0d2c8fa8e6cdc4d695a743271fab6c38625", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" - }, - "bin": [ - "bin/phpcs", - "bin/phpcbf" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Greg Sherwood", - "role": "lead" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards" - ], - "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" - }, - "time": "2021-04-09T00:54:41+00:00" - }, - { - "name": "symfony/finder", - "version": "v5.2.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "0d639a0943822626290d169965804f79400e6a04" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/0d639a0943822626290d169965804f79400e6a04", - "reference": "0d639a0943822626290d169965804f79400e6a04", - "shasum": "" - }, - "require": { - "php": ">=7.2.5" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Finder\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Finds files and directories via an intuitive fluent interface", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/finder/tree/v5.2.4" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-02-15T18:55:04+00:00" - }, - { - "name": "symfony/process", - "version": "v5.2.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "313a38f09c77fbcdc1d223e57d368cea76a2fd2f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/313a38f09c77fbcdc1d223e57d368cea76a2fd2f", - "reference": "313a38f09c77fbcdc1d223e57d368cea76a2fd2f", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.15" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Process\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Executes commands in sub-processes", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/process/tree/v5.2.4" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-01-27T10:15:41+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v5.2.6", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "89412a68ea2e675b4e44f260a5666729f77f668e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/89412a68ea2e675b4e44f260a5666729f77f668e", - "reference": "89412a68ea2e675b4e44f260a5666729f77f668e", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.15" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<4.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^4.4|^5.0", - "symfony/process": "^4.4|^5.0", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, - "bin": [ - "Resources/bin/var-dump-server" - ], - "type": "library", - "autoload": { - "files": [ - "Resources/functions/dump.php" - ], - "psr-4": { - "Symfony\\Component\\VarDumper\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides mechanisms for walking through any arbitrary PHP variable", - "homepage": "https://symfony.com", - "keywords": [ - "debug", - "dump" - ], - "support": { - "source": "https://github.com/symfony/var-dumper/tree/v5.2.6" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-03-28T09:42:18+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.0", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "75a63c33a8577608444246075ea0af0d052e452a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/75a63c33a8577608444246075ea0af0d052e452a", - "reference": "75a63c33a8577608444246075ea0af0d052e452a", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/master" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2020-07-12T23:59:07+00:00" - }, - { - "name": "twig/twig", - "version": "v1.44.2", - "source": { - "type": "git", - "url": "https://github.com/twigphp/Twig.git", - "reference": "138c493c5b8ee7cff3821f80b8896d371366b5fe" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/138c493c5b8ee7cff3821f80b8896d371366b5fe", - "reference": "138c493c5b8ee7cff3821f80b8896d371366b5fe", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/polyfill-ctype": "^1.8" - }, - "require-dev": { - "psr/container": "^1.0", - "symfony/phpunit-bridge": "^4.4.9|^5.0.9" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.44-dev" - } - }, - "autoload": { - "psr-0": { - "Twig_": "lib/" - }, - "psr-4": { - "Twig\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" - }, - { - "name": "Twig Team", - "role": "Contributors" - }, - { - "name": "Armin Ronacher", - "email": "armin.ronacher@active-4.com", - "role": "Project Founder" - } - ], - "description": "Twig, the flexible, fast, and secure template language for PHP", - "homepage": "https://twig.symfony.com", - "keywords": [ - "templating" - ], - "support": { - "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v1.44.2" - }, - "funding": [ - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/twig/twig", - "type": "tidelift" - } - ], - "time": "2021-01-05T10:10:05+00:00" - }, - { - "name": "umpirsky/twig-php-function", - "version": "v0.1", - "source": { - "type": "git", - "url": "https://github.com/umpirsky/twig-php-function.git", - "reference": "53b4b1eb0c5eacbd7d66c504b7d809c79b4bedbc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/umpirsky/twig-php-function/zipball/53b4b1eb0c5eacbd7d66c504b7d809c79b4bedbc", - "reference": "53b4b1eb0c5eacbd7d66c504b7d809c79b4bedbc", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "twig/twig": "~1.12" - }, - "require-dev": { - "phpspec/phpspec": "~2.0", - "phpunit/phpunit": "~4.4" - }, - "type": "library", - "autoload": { - "psr-0": { - "Umpirsky\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Saša Stamenković", - "email": "umpirsky@gmail.com" - } - ], - "description": "Call (almost) any PHP function from your Twig templates.", - "support": { - "issues": "https://github.com/umpirsky/twig-php-function/issues", - "source": "https://github.com/umpirsky/twig-php-function/tree/master" - }, - "time": "2016-03-12T16:36:32+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "phpstan/phpstan": "<0.12.20", - "vimeo/psalm": "<4.6.1 || 4.6.2" - }, - "require-dev": { - "phpunit/phpunit": "^8.5.13" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.10-dev" - } - }, - "autoload": { - "psr-4": { - "Webmozart\\Assert\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Assertions to validate method input/output with nice error messages.", - "keywords": [ - "assert", - "check", - "validate" - ], - "support": { - "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" - }, - { - "name": "wyrihaximus/twig-view", - "version": "4.4.0", - "source": { - "type": "git", - "url": "https://github.com/cakephp/legacy-twig-view.git", - "reference": "463e1a6ed493d4fe99eaeaaf39d80172b51fc0fb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/cakephp/legacy-twig-view/zipball/463e1a6ed493d4fe99eaeaaf39d80172b51fc0fb", - "reference": "463e1a6ed493d4fe99eaeaaf39d80172b51fc0fb", - "shasum": "" - }, - "require": { - "ajgl/breakpoint-twig-extension": "^0.3.0", - "aptoma/twig-markdown": "^2.0", - "asm89/twig-cache-extension": "^1.0", - "cakephp/cakephp": "^3.7", - "jasny/twig-extensions": "^1.0", - "php": "^5.6 || ^7.0", - "twig/twig": "^1.27", - "umpirsky/twig-php-function": "0.1" - }, - "require-dev": { - "cakephp/bake": "^1.5", - "cakephp/debug_kit": "^3.0", - "phake/phake": "^2.3.2", - "phpunit/phpunit": "^5.7.14", - "squizlabs/php_codesniffer": "^3.4.0", - "wyrihaximus/phpunit-class-reflection-helpers": "dev-master" - }, - "type": "cakephp-plugin", - "autoload": { - "psr-4": { - "WyriHaximus\\TwigView\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Cees-Jan Kiewiet", - "email": "ceesjank@gmail.com", - "homepage": "http://wyrihaximus.net/" - } - ], - "description": "Twig powered View for CakePHP3", - "keywords": [ - "cakephp", - "cakephp3", - "twig", - "view" - ], - "support": { - "issues": "https://github.com/cakephp/legacy-twig-view/issues", - "source": "https://github.com/cakephp/legacy-twig-view/tree/4.4.0" - }, - "time": "2021-04-06T15:42:50+00:00" - } - ], - "aliases": [], - "minimum-stability": "stable", - "stability-flags": { - "psy/psysh": 0 - }, - "prefer-stable": true, - "prefer-lowest": false, - "platform": { - "php": ">=5.6" - }, - "platform-dev": [], - "plugin-api-version": "2.0.0" -} diff --git a/community_server/config/app.default.php b/community_server/config/app.default.php deleted file mode 100644 index 04c8cede2..000000000 --- a/community_server/config/app.default.php +++ /dev/null @@ -1,407 +0,0 @@ - filter_var(env('DEBUG', true), FILTER_VALIDATE_BOOLEAN), - - /** - * Configure basic information about the application. - * - * - namespace - The namespace to find app classes under. - * - defaultLocale - The default locale for translation, formatting currencies and numbers, date and time. - * - encoding - The encoding used for HTML + database connections. - * - base - The base directory the app resides in. If false this - * will be auto detected. - * - dir - Name of app directory. - * - webroot - The webroot directory. - * - wwwRoot - The file path to webroot. - * - baseUrl - To configure CakePHP to *not* use mod_rewrite and to - * use CakePHP pretty URLs, remove these .htaccess - * files: - * /.htaccess - * /webroot/.htaccess - * And uncomment the baseUrl key below. - * - fullBaseUrl - A base URL to use for absolute links. When set to false (default) - * CakePHP generates required value based on `HTTP_HOST` environment variable. - * However, you can define it manually to optimize performance or if you - * are concerned about people manipulating the `Host` header. - * - imageBaseUrl - Web path to the public images directory under webroot. - * - cssBaseUrl - Web path to the public css directory under webroot. - * - jsBaseUrl - Web path to the public js directory under webroot. - * - paths - Configure paths for non class based resources. Supports the - * `plugins`, `templates`, `locales` subkeys, which allow the definition of - * paths for plugins, view templates and locale files respectively. - */ - 'App' => [ - 'namespace' => 'App', - 'encoding' => env('APP_ENCODING', 'UTF-8'), - 'defaultLocale' => env('APP_DEFAULT_LOCALE', 'en_US'), - 'defaultTimezone' => env('APP_DEFAULT_TIMEZONE', 'UTC'), - 'base' => false, - 'dir' => 'src', - 'webroot' => 'webroot', - 'wwwRoot' => WWW_ROOT, - //'baseUrl' => env('SCRIPT_NAME'), - 'fullBaseUrl' => false, - 'imageBaseUrl' => 'img/', - 'cssBaseUrl' => 'css/', - 'jsBaseUrl' => 'js/', - 'paths' => [ - 'plugins' => [ROOT . DS . 'plugins' . DS], - 'templates' => [APP . 'Template' . DS], - 'locales' => [APP . 'Locale' . DS], - ], - ], - - /** - * Security and encryption configuration - * - * - salt - A random string used in security hashing methods. - * The salt value is also used as the encryption key. - * You should treat it as extremely sensitive data. - */ - 'Security' => [ - 'salt' => env('SECURITY_SALT', '__SALT__'), - ], - - /** - * Apply timestamps with the last modified time to static assets (js, css, images). - * Will append a querystring parameter containing the time the file was modified. - * This is useful for busting browser caches. - * - * Set to true to apply timestamps when debug is true. Set to 'force' to always - * enable timestamping regardless of debug value. - */ - 'Asset' => [ - //'timestamp' => true, - // 'cacheTime' => '+1 year' - ], - - /** - * Configure the cache adapters. - */ - 'Cache' => [ - 'default' => [ - 'className' => FileEngine::class, - 'path' => CACHE, - 'url' => env('CACHE_DEFAULT_URL', null), - ], - - /** - * Configure the cache used for general framework caching. - * Translation cache files are stored with this configuration. - * Duration will be set to '+2 minutes' in bootstrap.php when debug = true - * If you set 'className' => 'Null' core cache will be disabled. - */ - '_cake_core_' => [ - 'className' => FileEngine::class, - 'prefix' => 'myapp_cake_core_', - 'path' => CACHE . 'persistent/', - 'serialize' => true, - 'duration' => '+1 years', - 'url' => env('CACHE_CAKECORE_URL', null), - ], - - /** - * Configure the cache for model and datasource caches. This cache - * configuration is used to store schema descriptions, and table listings - * in connections. - * Duration will be set to '+2 minutes' in bootstrap.php when debug = true - */ - '_cake_model_' => [ - 'className' => FileEngine::class, - 'prefix' => 'myapp_cake_model_', - 'path' => CACHE . 'models/', - 'serialize' => true, - 'duration' => '+1 years', - 'url' => env('CACHE_CAKEMODEL_URL', null), - ], - - /** - * Configure the cache for routes. The cached routes collection is built the - * first time the routes are processed via `config/routes.php`. - * Duration will be set to '+2 seconds' in bootstrap.php when debug = true - */ - '_cake_routes_' => [ - 'className' => FileEngine::class, - 'prefix' => 'myapp_cake_routes_', - 'path' => CACHE, - 'serialize' => true, - 'duration' => '+1 years', - 'url' => env('CACHE_CAKEROUTES_URL', null), - ], - ], - - /** - * Configure the Error and Exception handlers used by your application. - * - * By default errors are displayed using Debugger, when debug is true and logged - * by Cake\Log\Log when debug is false. - * - * In CLI environments exceptions will be printed to stderr with a backtrace. - * In web environments an HTML page will be displayed for the exception. - * With debug true, framework errors like Missing Controller will be displayed. - * When debug is false, framework errors will be coerced into generic HTTP errors. - * - * Options: - * - * - `errorLevel` - int - The level of errors you are interested in capturing. - * - `trace` - boolean - Whether or not backtraces should be included in - * logged errors/exceptions. - * - `log` - boolean - Whether or not you want exceptions logged. - * - `exceptionRenderer` - string - The class responsible for rendering - * uncaught exceptions. If you choose a custom class you should place - * the file for that class in src/Error. This class needs to implement a - * render method. - * - `skipLog` - array - List of exceptions to skip for logging. Exceptions that - * extend one of the listed exceptions will also be skipped for logging. - * E.g.: - * `'skipLog' => ['Cake\Http\Exception\NotFoundException', 'Cake\Http\Exception\UnauthorizedException']` - * - `extraFatalErrorMemory` - int - The number of megabytes to increase - * the memory limit by when a fatal error is encountered. This allows - * breathing room to complete logging or error handling. - */ - 'Error' => [ - 'errorLevel' => E_ALL, - 'exceptionRenderer' => ExceptionRenderer::class, - 'skipLog' => [], - 'log' => true, - 'trace' => true, - ], - - /** - * Email configuration. - * - * By defining transports separately from delivery profiles you can easily - * re-use transport configuration across multiple profiles. - * - * You can specify multiple configurations for production, development and - * testing. - * - * Each transport needs a `className`. Valid options are as follows: - * - * Mail - Send using PHP mail function - * Smtp - Send using SMTP - * Debug - Do not send the email, just return the result - * - * You can add custom transports (or override existing transports) by adding the - * appropriate file to src/Mailer/Transport. Transports should be named - * 'YourTransport.php', where 'Your' is the name of the transport. - */ - 'EmailTransport' => [ - 'default' => [ - 'className' => MailTransport::class, - /* - * The following keys are used in SMTP transports: - */ - 'host' => 'localhost', - 'port' => 25, - 'timeout' => 30, - 'username' => null, - 'password' => null, - 'client' => null, - 'tls' => null, - 'url' => env('EMAIL_TRANSPORT_DEFAULT_URL', null), - ], - ], - - /** - * Email delivery profiles - * - * Delivery profiles allow you to predefine various properties about email - * messages from your application and give the settings a name. This saves - * duplication across your application and makes maintenance and development - * easier. Each profile accepts a number of keys. See `Cake\Mailer\Email` - * for more information. - */ - 'Email' => [ - 'default' => [ - 'transport' => 'default', - 'from' => 'you@localhost', - //'charset' => 'utf-8', - //'headerCharset' => 'utf-8', - ], - ], - - /** - * Connection information used by the ORM to connect - * to your application's datastores. - * - * ### Notes - * - Drivers include Mysql Postgres Sqlite Sqlserver - * See vendor\cakephp\cakephp\src\Database\Driver for complete list - * - Do not use periods in database name - it may lead to error. - * See https://github.com/cakephp/cakephp/issues/6471 for details. - * - 'encoding' is recommended to be set to full UTF-8 4-Byte support. - * E.g set it to 'utf8mb4' in MariaDB and MySQL and 'utf8' for any - * other RDBMS. - */ - 'Datasources' => [ - 'default' => [ - 'className' => Connection::class, - 'driver' => Mysql::class, - 'persistent' => false, - 'host' => 'localhost', - /* - * CakePHP will use the default DB port based on the driver selected - * MySQL on MAMP uses port 8889, MAMP users will want to uncomment - * the following line and set the port accordingly - */ - //'port' => 'non_standard_port_number', - 'username' => 'my_app', - 'password' => 'secret', - 'database' => 'my_app', - /* - * You do not need to set this flag to use full utf-8 encoding (internal default since CakePHP 3.6). - */ - //'encoding' => 'utf8mb4', - 'timezone' => 'UTC', - 'flags' => [], - 'cacheMetadata' => true, - 'log' => false, - - /** - * Set identifier quoting to true if you are using reserved words or - * special characters in your table or column names. Enabling this - * setting will result in queries built using the Query Builder having - * identifiers quoted when creating SQL. It should be noted that this - * decreases performance because each query needs to be traversed and - * manipulated before being executed. - */ - 'quoteIdentifiers' => false, - - /** - * During development, if using MySQL < 5.6, uncommenting the - * following line could boost the speed at which schema metadata is - * fetched from the database. It can also be set directly with the - * mysql configuration directive 'innodb_stats_on_metadata = 0' - * which is the recommended value in production environments - */ - //'init' => ['SET GLOBAL innodb_stats_on_metadata = 0'], - - 'url' => env('DATABASE_URL', null), - ], - - /** - * The test connection is used during the test suite. - */ - 'test' => [ - 'className' => Connection::class, - 'driver' => Mysql::class, - 'persistent' => false, - 'host' => 'localhost', - //'port' => 'non_standard_port_number', - 'username' => 'my_app', - 'password' => 'secret', - 'database' => 'test_myapp', - //'encoding' => 'utf8mb4', - 'timezone' => 'UTC', - 'cacheMetadata' => true, - 'quoteIdentifiers' => false, - 'log' => false, - //'init' => ['SET GLOBAL innodb_stats_on_metadata = 0'], - 'url' => env('DATABASE_TEST_URL', null), - ], - ], - - /** - * Configures logging options - */ - 'Log' => [ - 'debug' => [ - 'className' => FileLog::class, - 'path' => LOGS, - 'file' => 'debug', - 'url' => env('LOG_DEBUG_URL', null), - 'scopes' => false, - 'levels' => ['notice', 'info', 'debug'], - ], - 'error' => [ - 'className' => FileLog::class, - 'path' => LOGS, - 'file' => 'error', - 'url' => env('LOG_ERROR_URL', null), - 'scopes' => false, - 'levels' => ['warning', 'error', 'critical', 'alert', 'emergency'], - ], - // To enable this dedicated query log, you need set your datasource's log flag to true - 'queries' => [ - 'className' => FileLog::class, - 'path' => LOGS, - 'file' => 'queries', - 'url' => env('LOG_QUERIES_URL', null), - 'scopes' => ['queriesLog'], - ], - ], - - /** - * Session configuration. - * - * Contains an array of settings to use for session configuration. The - * `defaults` key is used to define a default preset to use for sessions, any - * settings declared here will override the settings of the default config. - * - * ## Options - * - * - `cookie` - The name of the cookie to use. Defaults to 'CAKEPHP'. Avoid using `.` in cookie names, - * as PHP will drop sessions from cookies with `.` in the name. - * - `cookiePath` - The url path for which session cookie is set. Maps to the - * `session.cookie_path` php.ini config. Defaults to base path of app. - * - `timeout` - The time in minutes the session should be valid for. - * Pass 0 to disable checking timeout. - * Please note that php.ini's session.gc_maxlifetime must be equal to or greater - * than the largest Session['timeout'] in all served websites for it to have the - * desired effect. - * - `defaults` - The default configuration set to use as a basis for your session. - * There are four built-in options: php, cake, cache, database. - * - `handler` - Can be used to enable a custom session handler. Expects an - * array with at least the `engine` key, being the name of the Session engine - * class to use for managing the session. CakePHP bundles the `CacheSession` - * and `DatabaseSession` engines. - * - `ini` - An associative array of additional ini values to set. - * - * The built-in `defaults` options are: - * - * - 'php' - Uses settings defined in your php.ini. - * - 'cake' - Saves session files in CakePHP's /tmp directory. - * - 'database' - Uses CakePHP's database sessions. - * - 'cache' - Use the Cache class to save sessions. - * - * To define a custom session handler, save it at src/Network/Session/.php. - * Make sure the class implements PHP's `SessionHandlerInterface` and set - * Session.handler to - * - * To use database sessions, load the SQL file located at config/schema/sessions.sql - */ - 'Session' => [ - 'defaults' => 'php', - ], - // Gradido specific configuration - // Login Server ip and port - 'LoginServer' => [ - 'host' => 'http://127.0.0.1', - 'port' => 1201 - ], - 'API' => [ - 'allowedCaller' => [''] // insert domains or ips from login-server and gdt if they not at localhost - ], - 'ServerAdminEmail' => 'info@gradido.net', // email 'from' field for transfer notification emails - 'noReplyEmail' => 'no-replay@gradido.net', // email sender for creation notification emails to user - - 'GroupNode' => false -]; diff --git a/community_server/config/bootstrap.php b/community_server/config/bootstrap.php deleted file mode 100644 index 77264ee0a..000000000 --- a/community_server/config/bootstrap.php +++ /dev/null @@ -1,212 +0,0 @@ -parse() -// ->putenv() -// ->toEnv() -// ->toServer(); -// } - -/* - * Read configuration file and inject configuration into various - * CakePHP classes. - * - * By default there is only one configuration file. It is often a good - * idea to create multiple configuration files, and separate the configuration - * that changes from configuration that does not. This makes deployment simpler. - */ -try { - Configure::config('default', new PhpConfig()); - Configure::load('app', 'default', false); -} catch (\Exception $e) { - exit($e->getMessage() . "\n"); -} - -/* - * Load an environment local configuration file. - * You can use a file like app_local.php to provide local overrides to your - * shared configuration. - */ -//Configure::load('app_local', 'default'); - -/* - * When debug = true the metadata cache should only last - * for a short time. - */ -if (Configure::read('debug')) { - Configure::write('Cache._cake_model_.duration', '+2 minutes'); - Configure::write('Cache._cake_core_.duration', '+2 minutes'); - // disable router cache during development - Configure::write('Cache._cake_routes_.duration', '+2 seconds'); -} - -/* - * Set the default server timezone. Using UTC makes time calculations / conversions easier. - * Check http://php.net/manual/en/timezones.php for list of valid timezone strings. - */ -date_default_timezone_set(Configure::read('App.defaultTimezone')); - -/* - * Configure the mbstring extension to use the correct encoding. - */ -mb_internal_encoding(Configure::read('App.encoding')); - -/* - * Set the default locale. This controls how dates, number and currency is - * formatted and sets the default language to use for translations. - */ -ini_set('intl.default_locale', Configure::read('App.defaultLocale')); - -/* - * Register application error and exception handlers. - */ - -$isCli = PHP_SAPI === 'cli'; - -if ($isCli) { - (new ConsoleErrorHandler(Configure::read('Error')))->register(); -} else { - (new ErrorHandler(Configure::read('Error')))->register(); -} - -/* - * Include the CLI bootstrap overrides. - */ -if ($isCli) { - require __DIR__ . '/bootstrap_cli.php'; -} - -/* - * Set the full base URL. - * This URL is used as the base of all absolute links. - * - * If you define fullBaseUrl in your config file you can remove this. - */ -if (!Configure::read('App.fullBaseUrl')) { - $s = null; - if (env('HTTPS')) { - $s = 's'; - } - - $httpHost = env('HTTP_HOST'); - if (isset($httpHost)) { - Configure::write('App.fullBaseUrl', 'http' . $s . '://' . $httpHost); - } - unset($httpHost, $s); -} - -Cache::setConfig(Configure::consume('Cache')); -ConnectionManager::setConfig(Configure::consume('Datasources')); -TransportFactory::setConfig(Configure::consume('EmailTransport')); -Email::setConfig(Configure::consume('Email')); -Log::setConfig(Configure::consume('Log')); -Security::setSalt(Configure::consume('Security.salt')); - -/* - * The default crypto extension in 3.0 is OpenSSL. - * If you are migrating from 2.x uncomment this code to - * use a more compatible Mcrypt based implementation - */ -//Security::engine(new \Cake\Utility\Crypto\Mcrypt()); - -/* - * Setup detectors for mobile and tablet. - */ -ServerRequest::addDetector('mobile', function ($request) { - $detector = new \Detection\MobileDetect(); - - return $detector->isMobile(); -}); -ServerRequest::addDetector('tablet', function ($request) { - $detector = new \Detection\MobileDetect(); - - return $detector->isTablet(); -}); - -/* - * Enable immutable time objects in the ORM. - * - * You can enable default locale format parsing by adding calls - * to `useLocaleParser()`. This enables the automatic conversion of - * locale specific date formats. For details see - * @link https://book.cakephp.org/3.0/en/core-libraries/internationalization-and-localization.html#parsing-localized-datetime-data - */ -Type::build('time') - ->useImmutable(); -Type::build('date') - ->useImmutable(); -Type::build('datetime') - ->useImmutable(); -Type::build('timestamp') - ->useImmutable(); - -header('Access-Control-Allow-Origin: *'); -header('Access-Control-Allow-Methods: POST, GET, PUT, PATCH, DELETE, OPTIONS'); -header('Access-Control-Allow-Headers: *'); -if (isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD'] == 'OPTIONS') { - exit(0); -} - -/* - * Custom Inflector rules, can be set to correctly pluralize or singularize - * table, model, controller names or whatever other string is passed to the - * inflection functions. - */ -//Inflector::rules('plural', ['/^(inflect)or$/i' => '\1ables']); -//Inflector::rules('irregular', ['red' => 'redlings']); -//Inflector::rules('uninflected', ['dontinflectme']); -//Inflector::rules('transliteration', ['/å/' => 'aa']); diff --git a/community_server/config/bootstrap_cli.php b/community_server/config/bootstrap_cli.php deleted file mode 100644 index d3679d754..000000000 --- a/community_server/config/bootstrap_cli.php +++ /dev/null @@ -1,28 +0,0 @@ - '{{content}}', - // Container element used by control() when a field has an error. - 'inputContainerError' => '
{{content}}{{error}}
', - // Label element when inputs are not nested inside the label. - 'label' => '{{text}}', - // Generic input element. - 'input' => '', - // Textarea input element, - 'textarea' => '', - // Error message wrapper elements. - 'error' => '
' - . '{{content}}' - . '
', - // Container for error items. - 'errorList' => '{{content}}', - // Error item wrapper. - 'errorItem' => '
{{text}}
' -]; -/* - -
-
- -
-
- -
-
- - -
- - -
- - */ diff --git a/community_server/config/nginx/fastcgi.conf b/community_server/config/nginx/fastcgi.conf deleted file mode 100644 index 238f7869f..000000000 --- a/community_server/config/nginx/fastcgi.conf +++ /dev/null @@ -1,25 +0,0 @@ -fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; -fastcgi_param QUERY_STRING $query_string; -fastcgi_param REQUEST_METHOD $request_method; -fastcgi_param CONTENT_TYPE $content_type; -fastcgi_param CONTENT_LENGTH $content_length; - -fastcgi_param SCRIPT_NAME $fastcgi_script_name; -fastcgi_param REQUEST_URI $request_uri; -fastcgi_param DOCUMENT_URI $document_uri; -fastcgi_param DOCUMENT_ROOT $document_root; -fastcgi_param SERVER_PROTOCOL $server_protocol; -fastcgi_param REQUEST_SCHEME $scheme; -fastcgi_param HTTPS $https if_not_empty; - -fastcgi_param GATEWAY_INTERFACE CGI/1.1; -fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; - -fastcgi_param REMOTE_ADDR $remote_addr; -fastcgi_param REMOTE_PORT $remote_port; -fastcgi_param SERVER_ADDR $server_addr; -fastcgi_param SERVER_PORT $server_port; -fastcgi_param SERVER_NAME $server_name; - -# PHP only, required if PHP was built with --enable-force-cgi-redirect -fastcgi_param REDIRECT_STATUS 200; \ No newline at end of file diff --git a/community_server/config/nginx/mime.types b/community_server/config/nginx/mime.types deleted file mode 100644 index cd3d700ea..000000000 --- a/community_server/config/nginx/mime.types +++ /dev/null @@ -1,88 +0,0 @@ -types { - text/html html htm shtml; - text/css css; - text/xml xml; - image/gif gif; - image/jpeg jpeg jpg; - application/javascript js; - application/atom+xml atom; - application/rss+xml rss; - - text/mathml mml; - text/plain txt; - text/vnd.sun.j2me.app-descriptor jad; - text/vnd.wap.wml wml; - text/x-component htc; - - image/png png; - image/tiff tif tiff; - image/vnd.wap.wbmp wbmp; - image/x-icon ico; - image/x-jng jng; - image/x-ms-bmp bmp; - image/svg+xml svg svgz; - image/webp webp; - - application/font-woff woff; - application/java-archive jar war ear; - application/json json; - application/mac-binhex40 hqx; - application/msword doc; - application/pdf pdf; - application/postscript ps eps ai; - application/rtf rtf; - application/vnd.apple.mpegurl m3u8; - application/vnd.ms-excel xls; - application/vnd.ms-fontobject eot; - application/vnd.ms-powerpoint ppt; - application/vnd.wap.wmlc wmlc; - application/vnd.google-earth.kml+xml kml; - application/vnd.google-earth.kmz kmz; - application/x-7z-compressed 7z; - application/x-cocoa cco; - application/x-java-archive-diff jardiff; - application/x-java-jnlp-file jnlp; - application/x-makeself run; - application/x-perl pl pm; - application/x-pilot prc pdb; - application/x-rar-compressed rar; - application/x-redhat-package-manager rpm; - application/x-sea sea; - application/x-shockwave-flash swf; - application/x-stuffit sit; - application/x-tcl tcl tk; - application/x-x509-ca-cert der pem crt; - application/x-xpinstall xpi; - application/xhtml+xml xhtml; - application/xspf+xml xspf; - application/zip zip; - - application/octet-stream bin exe dll; - application/octet-stream deb; - application/octet-stream dmg; - application/octet-stream iso img; - application/octet-stream msi msp msm; - - application/vnd.openxmlformats-officedocument.wordprocessingml.document docx; - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx; - application/vnd.openxmlformats-officedocument.presentationml.presentation pptx; - - audio/midi mid midi kar; - audio/mpeg mp3; - audio/ogg ogg; - audio/x-m4a m4a; - audio/x-realaudio ra; - - video/3gpp 3gpp 3gp; - video/mp2t ts; - video/mp4 mp4; - video/mpeg mpeg mpg; - video/quicktime mov; - video/webm webm; - video/x-flv flv; - video/x-m4v m4v; - video/x-mng mng; - video/x-ms-asf asx asf; - video/x-ms-wmv wmv; - video/x-msvideo avi; -} diff --git a/community_server/config/nginx/nginx.conf b/community_server/config/nginx/nginx.conf deleted file mode 100644 index 197c96167..000000000 --- a/community_server/config/nginx/nginx.conf +++ /dev/null @@ -1,86 +0,0 @@ - -server { - - listen 80 ; - listen [::]:80; - server_name 0.0.0.0; - - #include /etc/nginx/common/protect.conf; - #include /etc/nginx/common/protect_add_header.conf; - #include /etc/nginx/common/ssl.conf; - - - root /usr/share/nginx/html/webroot; - index index.php; - - location ~* \.(png|jpg|ico|webp)\$ { - expires 30d; - } - - location ~* \.(js|css) { - # expires 1d; - expires 1d; - } - - location ~ \.php\$ { - # regex to split $uri to $fastcgi_script_name and $fastcgi_path - fastcgi_split_path_info ^(.+\.php)(/.+)$; - - # Check that the PHP script exists before passing it - try_files $fastcgi_script_name =404; - - # Bypass the fact that try_files resets $fastcgi_path_info - # see: http://trac.nginx.org/nginx/ticket/321 - set $path_info $fastcgi_path_info; - fastcgi_param PATH_INFO $path_info; - - fastcgi_index index.php; - include fastcgi.conf; - - #fastcgi_pass unix:/run/php/php7.3-fpm.sock; - fastcgi_pass 127.0.0.1:9000; - - } - - location ~ /\.ht { - deny all; - } - - location /account { - proxy_http_version 1.1; - proxy_set_header Upgrade \$http_upgrade; - proxy_set_header Connection 'upgrade'; - proxy_cache_bypass \$http_upgrade; - proxy_set_header X-Real-IP \$remote_addr; - proxy_set_header X-Forwarded-For \$remote_addr; - proxy_set_header Host \$host; - rewrite /account/(.*) /\$1 break; - - #proxy_next_upstream error timeout invalid_header http_502 non_idempotent; - proxy_pass http://login-server:1200; - proxy_redirect off; - - - } - - location /login_api { - proxy_http_version 1.1; - proxy_set_header Upgrade \$http_upgrade; - proxy_set_header Connection 'upgrade'; - proxy_cache_bypass \$http_upgrade; - proxy_set_header X-Real-IP \$remote_addr; - proxy_set_header X-Forwarded-For \$remote_addr; - proxy_set_header Host \$host; - rewrite /login_api/(.*) /\$1 break; - - proxy_pass http://login-server:1201; - proxy_redirect off; - } - - location / { - try_files \$uri \$uri/ /index.php?\$args; - } - -# access_log /var/log/nginx/access.log main; - -} \ No newline at end of file diff --git a/community_server/config/paths.php b/community_server/config/paths.php deleted file mode 100644 index 1c8121588..000000000 --- a/community_server/config/paths.php +++ /dev/null @@ -1,89 +0,0 @@ - '{{content}}', - 'input' => '
' - . '' - . '
', - 'error' => '
' - . '{{content}}' - . '
', - - // Container for error items. - //'errorList' => '
    {{content}}
', - 'errorList' => '{{content}}', - - // Error item wrapper. - //'errorItem' => '
  • {{text}}
  • ', - 'errorItem' => '
    {{text}}
    ' -]; diff --git a/community_server/config/routes.php b/community_server/config/routes.php deleted file mode 100644 index 20fc1ff62..000000000 --- a/community_server/config/routes.php +++ /dev/null @@ -1,160 +0,0 @@ - true - ]); - - // Token check will be skipped when callback returns `true`. - $csrf->whitelistCallback(function ($request) { - // Skip token check for API URLs. - //die($request->getParam('controller')); - $whitelist = ['JsonRequestHandler', 'ElopageWebhook', 'AppRequests']; - $ajaxWhitelist = ['TransactionSendCoins', 'TransactionCreations']; - - $callerIp = $request->clientIp(); - - foreach($whitelist as $entry) { - if($request->getParam('controller') === $entry) { - if($entry == 'ElopageWebhook' || $entry == 'AppRequests') { - return true; - } - $allowedIpLocalhost = ['127.0.0.1', 'localhost', '', '::1']; - if(in_array($callerIp, $allowedIpLocalhost)) { - return true; - } - $allowedCaller = Configure::read('API.allowedCaller'); - $ipPerHost = []; - if($allowedCaller && count($allowedCaller) > 0) { - - foreach($allowedCaller as $allowed) { - $ip = gethostbyname($allowed); - $ipPerHost[$allowed] = $ip; - if($ip === $callerIp) return true; - } - //die("caller ip: $callerIp
    "); - } - //var_dump(['caller_ip' => $callerIp, 'ips' => $ipPerHost]); - die(json_encode(['state' => 'error', 'details' => ['caller_ip' => $callerIp, 'ips' => $ipPerHost]])); - } - } - // disable csfr for all ajax requests in ajax whitelisted controller - foreach($ajaxWhitelist as $entry) { - if($request->getParam('controller') === $entry) { - $action = $request->getParam('action'); - if(preg_match('/^ajax/', $action)) { - return true; - } - } - } - }); - - // Register scoped middleware for in scopes. - $routes->registerMiddleware('csrf', $csrf); - - /** - * Apply a middleware to the current route scope. - * Requires middleware to be registered via `Application::routes()` with `registerMiddleware()` - */ - $routes->applyMiddleware('csrf'); - - /** - * Here, we are connecting '/' (base path) to a controller called 'Pages', - * its action called 'display', and we pass a param to select the view file - * to use (in this case, src/Template/Pages/home.ctp)... - */ - //$routes->connect('/', ['controller' => 'Pages', 'action' => 'display', 'home']); - $routes->connect('/', ['controller' => 'Dashboard', 'action' => 'index']); - $routes->connect('/api/:action/*', ['controller' => 'AppRequests'], ['routeClass' => 'DashedRoute']); - //$routes->connect('/client', ['controller' => 'Pages', 'action' => 'display', 'js']); - $routes->connect('/server', ['controller' => 'Dashboard', 'action' => 'serverIndex']); - $routes->connect('/client', ['controller' => 'Pages', 'action' => 'display', 'vue']); - $routes->connect('/vue-dev', ['controller' => 'Pages', 'action' => 'display', 'vue-dev']); - //$routes->connect('/', 'https://gradido2.dario-rekowski.de/account', array('status' => 303)); - - /** - * ...and connect the rest of 'Pages' controller's URLs. - */ - $routes->connect('/pages/*', ['controller' => 'Pages', 'action' => 'display']); - - /** - * Connect catchall routes for all controllers. - * - * Using the argument `DashedRoute`, the `fallbacks` method is a shortcut for - * - * ``` - * $routes->connect('/:controller', ['action' => 'index'], ['routeClass' => 'DashedRoute']); - * $routes->connect('/:controller/:action/*', [], ['routeClass' => 'DashedRoute']); - * ``` - * - * Any route class can be used with this method, such as: - * - DashedRoute - * - InflectedRoute - * - Route - * - Or your own route class - * - * You can remove these routes once you've connected the - * routes you want in your application. - */ - $routes->fallbacks(DashedRoute::class); -}); - -/** - * If you need a different set of middleware or none at all, - * open new scope and define routes there. - * - * ``` - * Router::scope('/api', function (RouteBuilder $routes) { - * // No $routes->applyMiddleware() here. - * // Connect API actions here. - * }); - * ``` - */ diff --git a/community_server/config/schema/i18n.sql b/community_server/config/schema/i18n.sql deleted file mode 100644 index e59d1e651..000000000 --- a/community_server/config/schema/i18n.sql +++ /dev/null @@ -1,18 +0,0 @@ -# Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org) -# -# Licensed under The MIT License -# For full copyright and license information, please see the LICENSE.txt -# Redistributions of files must retain the above copyright notice. -# MIT License (https://opensource.org/licenses/mit-license.php) - -CREATE TABLE i18n ( - id int NOT NULL auto_increment, - locale varchar(6) NOT NULL, - model varchar(255) NOT NULL, - foreign_key int(10) NOT NULL, - field varchar(255) NOT NULL, - content text, - PRIMARY KEY (id), - UNIQUE INDEX I18N_LOCALE_FIELD(locale, model, foreign_key, field), - INDEX I18N_FIELD(model, foreign_key, field) -); diff --git a/community_server/config/schema/sessions.sql b/community_server/config/schema/sessions.sql deleted file mode 100644 index 1aa0a0f54..000000000 --- a/community_server/config/schema/sessions.sql +++ /dev/null @@ -1,15 +0,0 @@ -# Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org) -# -# Licensed under The MIT License -# For full copyright and license information, please see the LICENSE.txt -# Redistributions of files must retain the above copyright notice. -# MIT License (https://opensource.org/licenses/mit-license.php) - -CREATE TABLE `sessions` ( - `id` char(40) CHARACTER SET ascii COLLATE ascii_bin NOT NULL, - `created` datetime DEFAULT CURRENT_TIMESTAMP, -- optional, requires MySQL 5.6.5+ - `modified` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -- optional, requires MySQL 5.6.5+ - `data` blob DEFAULT NULL, -- for PostgreSQL use bytea instead of blob - `expires` int(10) unsigned DEFAULT NULL, - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; diff --git a/community_server/copy_to_www.sh b/community_server/copy_to_www.sh deleted file mode 100755 index f6519919f..000000000 --- a/community_server/copy_to_www.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/bash - -[! -z "${FOLDER_NAME}"] && FOLDER_NAME=community_server - -COLOR_GREEN="\033[0;32m" -COLOR_YELLOW="\e[33m" -COLOR_NONE="\033[0m" - -SCRIPT=`realpath -s $0` -SCRIPTPATH=`dirname $SCRIPT` -#echo -e "script: $SCRIPT, Path: $SCRIPTPATH " - -cd /var/www/html -if [ ! -d "$FOLDER_NAME" ] ; then - mkdir $FOLDER_NAME -else - chmod -R 0755 $FOLDER_NAME -fi -cd $FOLDER_NAME -cp -r $SCRIPTPATH/src . -cp -r $SCRIPTPATH/config . -cp -r $SCRIPTPATH/composer.json . -cp -r $SCRIPTPATH/webroot . -composer install -if [ ! -d "tmp" ] ; then - mkdir tmp - chown -R www-data:www-data ./tmp -fi -if [ ! -d "logs" ] ; then - mkdir logs - chown -R www-data:www-data ./logs -fi - -cd .. -chown -R www-data:www-data $FOLDER_NAME -chmod -R 0755 $FOLDER_NAME/src -chmod -R 0755 $FOLDER_NAME/config -chmod -R 0755 $FOLDER_NAME/webroot diff --git a/community_server/docu/community-server.api.md b/community_server/docu/community-server.api.md deleted file mode 100644 index 6032ce0a2..000000000 --- a/community_server/docu/community-server.api.md +++ /dev/null @@ -1,132 +0,0 @@ - -# community server api - -In this examples I assume that you use gradido with docker-compose build on your local maschine - -## Konto Overview -return current account balance - -GET http://localhost/state-balances/ajaxGetBalance/-127182 - -If session is valid, return: -```json -{"state":"success","balance":174500} -``` -- balance: Gradido Cent, 4 Nachkommastellen (2 Reserve), 174500 = 17,45 GDD - -## List Transactions -List all transactions from logged in user, currently without paging -Ajax: -GET http://localhost/state-balances/ajaxListTransactions/-127182/ -or -GET http://localhost/state-balances/ajaxListTransactions/-127182/DESC -to get transaction in descending order - -Antwort: -Wenn alles okay: -```json -{"state":"success", "transactions": - [ - { - "name": "Max Mustermann", - "email": "Maxim Mustermann", - "type": "send", - "transaction_id": 2, - "date": "2021-02-19T13:25:36+00:00", - "balance": 1920000, - "memo": "a piece of cake :)", - "pubkey": "038a6f93270dc57b91d76bf110ad3863fcb7d1b08e7692e793fcdb4467e5b6a7" - } - ], - "transactionExecutingCount": 0, - "count": 1, - "gdtSum": 0, - "timeUsed": 0.04562687873840332 -} -``` - -- name: name of other involved party or empty if unknown (if other party don't belong to group) - - if type is send, name is name of receiver - - if type is receive, name is name of sender - - if type is creation currently I use a static string ("Gradido Akademie) -- email: optional, only if type is send or receive and other user is known -- pubkey: optional, only if type is send or receive and other user isn't known -- type: type of transaction - - creation: user has get gradidos created - - send: user has send another user gradidos - - receiver: user has received gradidos from another user -- transaction_id: id of transaction in db, in stage2 also the hedera sequence number of transaction -- date: date of ordering transaction (booking date) -- balance: Gradido Cent, 4 Nachkommastellen (2 Reserve), 1920000 = 192,00 GDD -- memo: Details about transaction -- pubkey: optional, if other party isn't known, hexadecimal representation of 32 Byte public key of user [0-9a-f] - -- transactionExecutingCount: how many transaction for this user currently pending and waiting for signing -- count: sum of finished transactions user is involved -- gdtSum: sum of gdt of user in cent with 2 places (Nachkommastellen) -- timeUsed: time used for getting data from db in seconds, only for analyse backend performance - -## Creation Transaction -Make a creation transaction -With new Option set in Login-Server: -```ini -unsecure.allow_auto_sign_transactions = 1 -``` -transactions can be auto-signed directly with handing in transaction. -Normally a forwarding to login-server check transactions side is neccessary to minimize security risks. - -POST http://localhost/transaction-creations/ajaxCreate -```json -{ - "session_id" : -127182, - "email": "max.musterman@gmail.de", - "amount": 10000000, - "target_date":"2021-02-19T13:25:36+00:00", - "memo":"AGE", - "auto_sign": true -} -``` -return if everything is ok: -```json -{"state":"success", "timeUsed": 0.0122} -``` -- timeUsed: time used for getting data from db in seconds, only for analyse backend performance - -## Send Coins Transaction -Make a simple GDD Transaction, send Coins from one user to other. -With new Option set in Login-Server: -```ini -unsecure.allow_auto_sign_transactions = 1 -``` -transactions can be auto-signed directly with handing in transaction. -Normally a forwarding to login-server check transactions side is neccessary to minimize security risks. - -POST http://localhost/transaction-send-coins/ajaxCreate -```json -{ - "session_id" : -127182, - "amount": 2000000, - "email": "max.musterman@gmail.de", - "memo":"Thank you :)", - "auto_sign": true -} -``` -- amout: amount to transfer, 2000000 = 200,00 GDD -- email: receiver email address, must be differ from user email -- memo: Details about transaction -- auto_sign: set to true to directly sign transaction if unsecure.allow_auto_sign_transactions = 1 is set - -return if everything is ok: -```json -{"state":"success", "timeUsed": 0.0122} -``` -- timeUsed: time used for getting data from db in seconds, only for analyse backend performance - -Than the transaction was created on community server, send to login-server, signed (if unsecure.allow_auto_sign_transactions = 1 and auto_sign = true) -and send back to community server and put into db. -After you get this answear you see the new transaction if you list transactions or call for the balance. - -Without auto-sign the transaction is pending on login-server and waits for the user to review it at -http://localhost/account/checkTransactions - - diff --git a/community_server/index.php b/community_server/index.php deleted file mode 100644 index 459176916..000000000 --- a/community_server/index.php +++ /dev/null @@ -1,16 +0,0 @@ -=2.1.2 <3.0.0', -175 silly cache add type: 'range' } -176 silly addNamed clone@>=2.1.2 <3.0.0 -177 verbose addNamed ">=2.1.2 <3.0.0" is a valid semver range for clone -178 silly addNameRange { name: 'clone', range: '>=2.1.2 <3.0.0', hasData: false } -179 silly mapToRegistry name clone -180 silly mapToRegistry using default registry -181 silly mapToRegistry registry https://registry.npmjs.org/ -182 silly mapToRegistry uri https://registry.npmjs.org/clone -183 verbose addNameRange registry:https://registry.npmjs.org/clone not in flight; fetching -184 verbose get https://registry.npmjs.org/clone not expired, no request -185 silly addNameRange number 2 { name: 'clone', range: '>=2.1.2 <3.0.0', hasData: true } -186 silly addNameRange versions [ 'clone', -186 silly addNameRange [ '0.0.0', -186 silly addNameRange '0.0.1', -186 silly addNameRange '0.0.2', -186 silly addNameRange '0.0.3', -186 silly addNameRange '0.0.4', -186 silly addNameRange '0.0.5', -186 silly addNameRange '0.0.6', -186 silly addNameRange '0.0.7', -186 silly addNameRange '0.1.0', -186 silly addNameRange '0.1.1', -186 silly addNameRange '0.1.2', -186 silly addNameRange '0.1.3', -186 silly addNameRange '0.1.4', -186 silly addNameRange '0.1.5', -186 silly addNameRange '0.1.6', -186 silly addNameRange '0.1.7', -186 silly addNameRange '0.1.8', -186 silly addNameRange '0.1.9', -186 silly addNameRange '0.1.10', -186 silly addNameRange '0.1.11', -186 silly addNameRange '0.1.12', -186 silly addNameRange '0.1.13', -186 silly addNameRange '0.1.14', -186 silly addNameRange '0.1.15', -186 silly addNameRange '0.1.16', -186 silly addNameRange '0.1.17', -186 silly addNameRange '0.1.18', -186 silly addNameRange '0.2.0', -186 silly addNameRange '0.1.19', -186 silly addNameRange '1.0.0', -186 silly addNameRange '1.0.1', -186 silly addNameRange '1.0.2', -186 silly addNameRange '2.0.0', -186 silly addNameRange '2.1.0', -186 silly addNameRange '2.1.1', -186 silly addNameRange '1.0.3', -186 silly addNameRange '2.1.2', -186 silly addNameRange '1.0.4' ] ] -187 silly addNamed clone@2.1.2 -188 verbose addNamed "2.1.2" is a plain semver version for clone -189 silly mapToRegistry name clone -190 silly mapToRegistry using default registry -191 silly mapToRegistry registry https://registry.npmjs.org/ -192 silly mapToRegistry uri https://registry.npmjs.org/clone -193 verbose addRemoteTarball https://registry.npmjs.org/clone/-/clone-2.1.2.tgz not in flight; adding -194 verbose addRemoteTarball [ 'https://registry.npmjs.org/clone/-/clone-2.1.2.tgz', -194 verbose addRemoteTarball '1b7f4b9f591f1e8f83670401600345a02887435f' ] -195 info retry fetch attempt 1 at 13:48:57 -196 info attempt registry request try #1 at 13:48:57 -197 http fetch GET https://registry.npmjs.org/clone/-/clone-2.1.2.tgz -198 http fetch 200 https://registry.npmjs.org/clone/-/clone-2.1.2.tgz -199 silly fetchAndShaCheck shasum 1b7f4b9f591f1e8f83670401600345a02887435f -200 verbose addTmpTarball /tmp/npm-5369-43d945e1/registry.npmjs.org/clone/-/clone-2.1.2.tgz not in flight; adding -201 verbose addTmpTarball already have metadata; skipping unpack for clone@2.1.2 -202 http 200 https://registry.npmjs.org/mime -203 verbose headers { date: 'Fri, 22 May 2020 11:48:57 GMT', -203 verbose headers 'content-type': 'application/json', -203 verbose headers 'transfer-encoding': 'chunked', -203 verbose headers connection: 'keep-alive', -203 verbose headers 'set-cookie': -203 verbose headers [ '__cfduid=d2f816bc144e9d07683b5f46095af6dd51590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -203 verbose headers 'cf-ray': '59764fa1caba6347-FRA', -203 verbose headers age: '5658', -203 verbose headers 'cache-control': 'public, max-age=300', -203 verbose headers etag: 'W/"06d541b2c21df82e268be063f8846ba5"', -203 verbose headers 'last-modified': 'Fri, 01 May 2020 23:10:52 GMT', -203 verbose headers vary: 'accept-encoding, accept', -203 verbose headers 'cf-cache-status': 'HIT', -203 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -203 verbose headers server: 'cloudflare', -203 verbose headers 'content-encoding': 'gzip', -203 verbose headers 'cf-request-id': '02ddd0192000006347e8890200000001' } -204 silly get cb [ 200, -204 silly get { date: 'Fri, 22 May 2020 11:48:57 GMT', -204 silly get 'content-type': 'application/json', -204 silly get 'transfer-encoding': 'chunked', -204 silly get connection: 'keep-alive', -204 silly get 'set-cookie': -204 silly get [ '__cfduid=d2f816bc144e9d07683b5f46095af6dd51590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -204 silly get 'cf-ray': '59764fa1caba6347-FRA', -204 silly get age: '5658', -204 silly get 'cache-control': 'public, max-age=300', -204 silly get etag: 'W/"06d541b2c21df82e268be063f8846ba5"', -204 silly get 'last-modified': 'Fri, 01 May 2020 23:10:52 GMT', -204 silly get vary: 'accept-encoding, accept', -204 silly get 'cf-cache-status': 'HIT', -204 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -204 silly get server: 'cloudflare', -204 silly get 'content-encoding': 'gzip', -204 silly get 'cf-request-id': '02ddd0192000006347e8890200000001' } ] -205 verbose get saving mime to /home/christine/.npm/registry.npmjs.org/mime/.cache.json -206 http 304 https://registry.npmjs.org/errno -207 verbose headers { date: 'Fri, 22 May 2020 11:48:57 GMT', -207 verbose headers connection: 'keep-alive', -207 verbose headers 'set-cookie': -207 verbose headers [ '__cfduid=d6501da2c31d6ed13bf98ae2d437c1a051590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -207 verbose headers 'cf-ray': '59764fa1ddccd6e9-FRA', -207 verbose headers age: '5629', -207 verbose headers 'cache-control': 'public, max-age=300', -207 verbose headers etag: '"93d3c79a655f99137298121fc95d36c6"', -207 verbose headers 'last-modified': 'Sat, 26 May 2018 23:40:24 GMT', -207 verbose headers vary: 'Accept-Encoding', -207 verbose headers 'cf-cache-status': 'HIT', -207 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -207 verbose headers server: 'cloudflare', -207 verbose headers 'cf-request-id': '02ddd019240000d6e975b00200000001' } -208 silly get cb [ 304, -208 silly get { date: 'Fri, 22 May 2020 11:48:57 GMT', -208 silly get connection: 'keep-alive', -208 silly get 'set-cookie': -208 silly get [ '__cfduid=d6501da2c31d6ed13bf98ae2d437c1a051590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -208 silly get 'cf-ray': '59764fa1ddccd6e9-FRA', -208 silly get age: '5629', -208 silly get 'cache-control': 'public, max-age=300', -208 silly get etag: '"93d3c79a655f99137298121fc95d36c6"', -208 silly get 'last-modified': 'Sat, 26 May 2018 23:40:24 GMT', -208 silly get vary: 'Accept-Encoding', -208 silly get 'cf-cache-status': 'HIT', -208 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -208 silly get server: 'cloudflare', -208 silly get 'cf-request-id': '02ddd019240000d6e975b00200000001' } ] -209 verbose etag https://registry.npmjs.org/errno from cache -210 verbose get saving errno to /home/christine/.npm/registry.npmjs.org/errno/.cache.json -211 http 200 https://registry.npmjs.org/promise -212 verbose headers { date: 'Fri, 22 May 2020 11:48:57 GMT', -212 verbose headers 'content-type': 'application/json', -212 verbose headers 'transfer-encoding': 'chunked', -212 verbose headers connection: 'keep-alive', -212 verbose headers 'set-cookie': -212 verbose headers [ '__cfduid=d0651730248de197cc0bf9e0b3e6fc5ab1590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -212 verbose headers 'cf-ray': '59764fa1c9c76413-FRA', -212 verbose headers age: '5628', -212 verbose headers 'cache-control': 'public, max-age=300', -212 verbose headers etag: 'W/"0560bb757d840a7a46bf8d008bc75194"', -212 verbose headers 'last-modified': 'Mon, 02 Mar 2020 10:57:46 GMT', -212 verbose headers vary: 'accept-encoding, accept', -212 verbose headers 'cf-cache-status': 'HIT', -212 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -212 verbose headers server: 'cloudflare', -212 verbose headers 'content-encoding': 'gzip', -212 verbose headers 'cf-request-id': '02ddd01920000064135f8cb200000001' } -213 silly get cb [ 200, -213 silly get { date: 'Fri, 22 May 2020 11:48:57 GMT', -213 silly get 'content-type': 'application/json', -213 silly get 'transfer-encoding': 'chunked', -213 silly get connection: 'keep-alive', -213 silly get 'set-cookie': -213 silly get [ '__cfduid=d0651730248de197cc0bf9e0b3e6fc5ab1590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -213 silly get 'cf-ray': '59764fa1c9c76413-FRA', -213 silly get age: '5628', -213 silly get 'cache-control': 'public, max-age=300', -213 silly get etag: 'W/"0560bb757d840a7a46bf8d008bc75194"', -213 silly get 'last-modified': 'Mon, 02 Mar 2020 10:57:46 GMT', -213 silly get vary: 'accept-encoding, accept', -213 silly get 'cf-cache-status': 'HIT', -213 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -213 silly get server: 'cloudflare', -213 silly get 'content-encoding': 'gzip', -213 silly get 'cf-request-id': '02ddd01920000064135f8cb200000001' } ] -214 verbose get saving promise to /home/christine/.npm/registry.npmjs.org/promise/.cache.json -215 http 200 https://registry.npmjs.org/graceful-fs -216 verbose headers { date: 'Fri, 22 May 2020 11:48:57 GMT', -216 verbose headers 'content-type': 'application/json', -216 verbose headers 'transfer-encoding': 'chunked', -216 verbose headers connection: 'keep-alive', -216 verbose headers 'set-cookie': -216 verbose headers [ '__cfduid=d1ba0ebb5b0def6eb801cd0e2e5f4b1541590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -216 verbose headers 'cf-ray': '59764fa1da22325c-FRA', -216 verbose headers age: '5345', -216 verbose headers 'cache-control': 'public, max-age=300', -216 verbose headers etag: 'W/"84e1c483529d18a582ac0265096141af"', -216 verbose headers 'last-modified': 'Tue, 28 Apr 2020 15:14:15 GMT', -216 verbose headers vary: 'accept-encoding, accept', -216 verbose headers 'cf-cache-status': 'HIT', -216 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -216 verbose headers server: 'cloudflare', -216 verbose headers 'content-encoding': 'gzip', -216 verbose headers 'cf-request-id': '02ddd019250000325c4cbef200000001' } -217 silly get cb [ 200, -217 silly get { date: 'Fri, 22 May 2020 11:48:57 GMT', -217 silly get 'content-type': 'application/json', -217 silly get 'transfer-encoding': 'chunked', -217 silly get connection: 'keep-alive', -217 silly get 'set-cookie': -217 silly get [ '__cfduid=d1ba0ebb5b0def6eb801cd0e2e5f4b1541590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -217 silly get 'cf-ray': '59764fa1da22325c-FRA', -217 silly get age: '5345', -217 silly get 'cache-control': 'public, max-age=300', -217 silly get etag: 'W/"84e1c483529d18a582ac0265096141af"', -217 silly get 'last-modified': 'Tue, 28 Apr 2020 15:14:15 GMT', -217 silly get vary: 'accept-encoding, accept', -217 silly get 'cf-cache-status': 'HIT', -217 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -217 silly get server: 'cloudflare', -217 silly get 'content-encoding': 'gzip', -217 silly get 'cf-request-id': '02ddd019250000325c4cbef200000001' } ] -218 verbose get saving graceful-fs to /home/christine/.npm/registry.npmjs.org/graceful-fs/.cache.json -219 silly resolveWithNewModule errno@0.1.7 checking installable status -220 silly cache add args [ 'errno@^0.1.1', null ] -221 verbose cache add spec errno@^0.1.1 -222 silly cache add parsed spec Result { -222 silly cache add raw: 'errno@^0.1.1', -222 silly cache add scope: null, -222 silly cache add name: 'errno', -222 silly cache add rawSpec: '^0.1.1', -222 silly cache add spec: '>=0.1.1 <0.2.0', -222 silly cache add type: 'range' } -223 silly addNamed errno@>=0.1.1 <0.2.0 -224 verbose addNamed ">=0.1.1 <0.2.0" is a valid semver range for errno -225 silly addNameRange { name: 'errno', range: '>=0.1.1 <0.2.0', hasData: false } -226 silly mapToRegistry name errno -227 silly mapToRegistry using default registry -228 silly mapToRegistry registry https://registry.npmjs.org/ -229 silly mapToRegistry uri https://registry.npmjs.org/errno -230 verbose addNameRange registry:https://registry.npmjs.org/errno not in flight; fetching -231 silly resolveWithNewModule mime@1.6.0 checking installable status -232 silly cache add args [ 'mime@^1.4.1', null ] -233 verbose cache add spec mime@^1.4.1 -234 silly cache add parsed spec Result { -234 silly cache add raw: 'mime@^1.4.1', -234 silly cache add scope: null, -234 silly cache add name: 'mime', -234 silly cache add rawSpec: '^1.4.1', -234 silly cache add spec: '>=1.4.1 <2.0.0', -234 silly cache add type: 'range' } -235 silly addNamed mime@>=1.4.1 <2.0.0 -236 verbose addNamed ">=1.4.1 <2.0.0" is a valid semver range for mime -237 silly addNameRange { name: 'mime', range: '>=1.4.1 <2.0.0', hasData: false } -238 silly mapToRegistry name mime -239 silly mapToRegistry using default registry -240 silly mapToRegistry registry https://registry.npmjs.org/ -241 silly mapToRegistry uri https://registry.npmjs.org/mime -242 verbose addNameRange registry:https://registry.npmjs.org/mime not in flight; fetching -243 http 200 https://registry.npmjs.org/tslib -244 verbose headers { date: 'Fri, 22 May 2020 11:48:57 GMT', -244 verbose headers 'content-type': 'application/json', -244 verbose headers 'transfer-encoding': 'chunked', -244 verbose headers connection: 'keep-alive', -244 verbose headers 'set-cookie': -244 verbose headers [ '__cfduid=de2f13b30bfc4f0fe2c257a08857023531590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -244 verbose headers 'cf-ray': '59764fa1d9e7d715-FRA', -244 verbose headers age: '5299', -244 verbose headers 'cache-control': 'public, max-age=300', -244 verbose headers etag: 'W/"2b86a514bc0f750da0d0f62d3dbfde51"', -244 verbose headers 'last-modified': 'Wed, 13 May 2020 23:18:43 GMT', -244 verbose headers vary: 'accept-encoding, accept', -244 verbose headers 'cf-cache-status': 'HIT', -244 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -244 verbose headers server: 'cloudflare', -244 verbose headers 'content-encoding': 'gzip', -244 verbose headers 'cf-request-id': '02ddd019240000d715c11d3200000001' } -245 silly get cb [ 200, -245 silly get { date: 'Fri, 22 May 2020 11:48:57 GMT', -245 silly get 'content-type': 'application/json', -245 silly get 'transfer-encoding': 'chunked', -245 silly get connection: 'keep-alive', -245 silly get 'set-cookie': -245 silly get [ '__cfduid=de2f13b30bfc4f0fe2c257a08857023531590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -245 silly get 'cf-ray': '59764fa1d9e7d715-FRA', -245 silly get age: '5299', -245 silly get 'cache-control': 'public, max-age=300', -245 silly get etag: 'W/"2b86a514bc0f750da0d0f62d3dbfde51"', -245 silly get 'last-modified': 'Wed, 13 May 2020 23:18:43 GMT', -245 silly get vary: 'accept-encoding, accept', -245 silly get 'cf-cache-status': 'HIT', -245 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -245 silly get server: 'cloudflare', -245 silly get 'content-encoding': 'gzip', -245 silly get 'cf-request-id': '02ddd019240000d715c11d3200000001' } ] -246 verbose get saving tslib to /home/christine/.npm/registry.npmjs.org/tslib/.cache.json -247 verbose get https://registry.npmjs.org/errno not expired, no request -248 silly addNameRange number 2 { name: 'errno', range: '>=0.1.1 <0.2.0', hasData: true } -249 silly addNameRange versions [ 'errno', -249 silly addNameRange [ '0.0.1', -249 silly addNameRange '0.0.2', -249 silly addNameRange '0.0.3', -249 silly addNameRange '0.0.4', -249 silly addNameRange '0.0.5', -249 silly addNameRange '0.1.0', -249 silly addNameRange '0.1.1', -249 silly addNameRange '0.1.2', -249 silly addNameRange '0.1.3', -249 silly addNameRange '0.1.4', -249 silly addNameRange '0.1.5', -249 silly addNameRange '0.1.6', -249 silly addNameRange '0.1.7' ] ] -250 silly addNamed errno@0.1.7 -251 verbose addNamed "0.1.7" is a plain semver version for errno -252 verbose get https://registry.npmjs.org/mime not expired, no request -253 silly addNameRange number 2 { name: 'mime', range: '>=1.4.1 <2.0.0', hasData: true } -254 silly addNameRange versions [ 'mime', -254 silly addNameRange [ '1.0.0', -254 silly addNameRange '1.1.0', -254 silly addNameRange '1.2.1', -254 silly addNameRange '1.2.2', -254 silly addNameRange '1.2.3', -254 silly addNameRange '1.2.4', -254 silly addNameRange '1.2.5', -254 silly addNameRange '1.2.6', -254 silly addNameRange '1.2.7', -254 silly addNameRange '1.2.8', -254 silly addNameRange '1.2.9', -254 silly addNameRange '1.2.10', -254 silly addNameRange '1.2.11', -254 silly addNameRange '1.3.0', -254 silly addNameRange '1.3.2', -254 silly addNameRange '1.3.3', -254 silly addNameRange '1.3.4', -254 silly addNameRange '1.3.5', -254 silly addNameRange '1.3.6', -254 silly addNameRange '1.4.0', -254 silly addNameRange '2.0.0', -254 silly addNameRange '2.0.1', -254 silly addNameRange '2.0.2', -254 silly addNameRange '1.4.1', -254 silly addNameRange '2.0.3', -254 silly addNameRange '1.5.0', -254 silly addNameRange '1.6.0', -254 silly addNameRange '2.0.5', -254 silly addNameRange '2.1.0', -254 silly addNameRange '2.2.0', -254 silly addNameRange '2.2.1', -254 silly addNameRange '2.2.2', -254 silly addNameRange '2.3.0', -254 silly addNameRange '2.3.1', -254 silly addNameRange '2.4.0', -254 silly addNameRange '2.4.1', -254 silly addNameRange '2.4.2', -254 silly addNameRange '2.4.3', -254 silly addNameRange '2.4.4', -254 silly addNameRange '2.4.5' ] ] -255 silly addNamed mime@1.6.0 -256 verbose addNamed "1.6.0" is a plain semver version for mime -257 silly cache afterAdd clone@2.1.2 -258 verbose afterAdd /home/christine/.npm/clone/2.1.2/package/package.json not in flight; writing -259 silly mapToRegistry name mime -260 silly mapToRegistry using default registry -261 silly mapToRegistry registry https://registry.npmjs.org/ -262 silly mapToRegistry uri https://registry.npmjs.org/mime -263 verbose addRemoteTarball https://registry.npmjs.org/mime/-/mime-1.6.0.tgz not in flight; adding -264 verbose addRemoteTarball [ 'https://registry.npmjs.org/mime/-/mime-1.6.0.tgz', -264 verbose addRemoteTarball '32cd9e5c64553bd58d19a568af452acff04981b1' ] -265 http 200 https://registry.npmjs.org/mkdirp -266 verbose headers { date: 'Fri, 22 May 2020 11:48:57 GMT', -266 verbose headers 'content-type': 'application/json', -266 verbose headers 'transfer-encoding': 'chunked', -266 verbose headers connection: 'keep-alive', -266 verbose headers 'set-cookie': -266 verbose headers [ '__cfduid=d29dbbf504bb01fed0e3216d3e4c64fcc1590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -266 verbose headers 'cf-ray': '59764fa1fe51175a-FRA', -266 verbose headers age: '5346', -266 verbose headers 'cache-control': 'public, max-age=300', -266 verbose headers etag: 'W/"0730d9c43c136c318d8e19c69cbd72aa"', -266 verbose headers 'last-modified': 'Wed, 22 Apr 2020 06:03:24 GMT', -266 verbose headers vary: 'accept-encoding, accept', -266 verbose headers 'cf-cache-status': 'HIT', -266 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -266 verbose headers server: 'cloudflare', -266 verbose headers 'content-encoding': 'gzip', -266 verbose headers 'cf-request-id': '02ddd019380000175a1e1e7200000001' } -267 silly get cb [ 200, -267 silly get { date: 'Fri, 22 May 2020 11:48:57 GMT', -267 silly get 'content-type': 'application/json', -267 silly get 'transfer-encoding': 'chunked', -267 silly get connection: 'keep-alive', -267 silly get 'set-cookie': -267 silly get [ '__cfduid=d29dbbf504bb01fed0e3216d3e4c64fcc1590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -267 silly get 'cf-ray': '59764fa1fe51175a-FRA', -267 silly get age: '5346', -267 silly get 'cache-control': 'public, max-age=300', -267 silly get etag: 'W/"0730d9c43c136c318d8e19c69cbd72aa"', -267 silly get 'last-modified': 'Wed, 22 Apr 2020 06:03:24 GMT', -267 silly get vary: 'accept-encoding, accept', -267 silly get 'cf-cache-status': 'HIT', -267 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -267 silly get server: 'cloudflare', -267 silly get 'content-encoding': 'gzip', -267 silly get 'cf-request-id': '02ddd019380000175a1e1e7200000001' } ] -268 verbose get saving mkdirp to /home/christine/.npm/registry.npmjs.org/mkdirp/.cache.json -269 silly resolveWithNewModule graceful-fs@4.2.4 checking installable status -270 silly cache add args [ 'graceful-fs@^4.1.2', null ] -271 verbose cache add spec graceful-fs@^4.1.2 -272 silly cache add parsed spec Result { -272 silly cache add raw: 'graceful-fs@^4.1.2', -272 silly cache add scope: null, -272 silly cache add name: 'graceful-fs', -272 silly cache add rawSpec: '^4.1.2', -272 silly cache add spec: '>=4.1.2 <5.0.0', -272 silly cache add type: 'range' } -273 silly addNamed graceful-fs@>=4.1.2 <5.0.0 -274 verbose addNamed ">=4.1.2 <5.0.0" is a valid semver range for graceful-fs -275 silly addNameRange { name: 'graceful-fs', range: '>=4.1.2 <5.0.0', hasData: false } -276 silly mapToRegistry name graceful-fs -277 silly mapToRegistry using default registry -278 silly mapToRegistry registry https://registry.npmjs.org/ -279 silly mapToRegistry uri https://registry.npmjs.org/graceful-fs -280 verbose addNameRange registry:https://registry.npmjs.org/graceful-fs not in flight; fetching -281 http 200 https://registry.npmjs.org/image-size -282 verbose headers { date: 'Fri, 22 May 2020 11:48:57 GMT', -282 verbose headers 'content-type': 'application/json', -282 verbose headers 'transfer-encoding': 'chunked', -282 verbose headers connection: 'keep-alive', -282 verbose headers 'set-cookie': -282 verbose headers [ '__cfduid=d69b2d3a0ed04b60eed400c38cdaaf9511590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -282 verbose headers 'cf-ray': '59764fa1cf14648b-FRA', -282 verbose headers age: '4621', -282 verbose headers 'cache-control': 'public, max-age=300', -282 verbose headers etag: 'W/"c223fda42dcf547145c5fcea3c32c5da"', -282 verbose headers 'last-modified': 'Mon, 30 Sep 2019 10:49:43 GMT', -282 verbose headers vary: 'accept-encoding, accept', -282 verbose headers 'cf-cache-status': 'HIT', -282 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -282 verbose headers server: 'cloudflare', -282 verbose headers 'content-encoding': 'gzip', -282 verbose headers 'cf-request-id': '02ddd0191b0000648bda3f1200000001' } -283 silly get cb [ 200, -283 silly get { date: 'Fri, 22 May 2020 11:48:57 GMT', -283 silly get 'content-type': 'application/json', -283 silly get 'transfer-encoding': 'chunked', -283 silly get connection: 'keep-alive', -283 silly get 'set-cookie': -283 silly get [ '__cfduid=d69b2d3a0ed04b60eed400c38cdaaf9511590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -283 silly get 'cf-ray': '59764fa1cf14648b-FRA', -283 silly get age: '4621', -283 silly get 'cache-control': 'public, max-age=300', -283 silly get etag: 'W/"c223fda42dcf547145c5fcea3c32c5da"', -283 silly get 'last-modified': 'Mon, 30 Sep 2019 10:49:43 GMT', -283 silly get vary: 'accept-encoding, accept', -283 silly get 'cf-cache-status': 'HIT', -283 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -283 silly get server: 'cloudflare', -283 silly get 'content-encoding': 'gzip', -283 silly get 'cf-request-id': '02ddd0191b0000648bda3f1200000001' } ] -284 verbose get saving image-size to /home/christine/.npm/registry.npmjs.org/image-size/.cache.json -285 silly resolveWithNewModule promise@7.3.1 checking installable status -286 silly cache add args [ 'promise@^7.1.1', null ] -287 verbose cache add spec promise@^7.1.1 -288 silly cache add parsed spec Result { -288 silly cache add raw: 'promise@^7.1.1', -288 silly cache add scope: null, -288 silly cache add name: 'promise', -288 silly cache add rawSpec: '^7.1.1', -288 silly cache add spec: '>=7.1.1 <8.0.0', -288 silly cache add type: 'range' } -289 silly addNamed promise@>=7.1.1 <8.0.0 -290 verbose addNamed ">=7.1.1 <8.0.0" is a valid semver range for promise -291 silly addNameRange { name: 'promise', range: '>=7.1.1 <8.0.0', hasData: false } -292 silly mapToRegistry name promise -293 silly mapToRegistry using default registry -294 silly mapToRegistry registry https://registry.npmjs.org/ -295 silly mapToRegistry uri https://registry.npmjs.org/promise -296 verbose addNameRange registry:https://registry.npmjs.org/promise not in flight; fetching -297 info retry fetch attempt 1 at 13:48:57 -298 info attempt registry request try #1 at 13:48:57 -299 http fetch GET https://registry.npmjs.org/mime/-/mime-1.6.0.tgz -300 silly resolveWithNewModule tslib@1.13.0 checking installable status -301 silly cache add args [ 'tslib@^1.10.0', null ] -302 verbose cache add spec tslib@^1.10.0 -303 silly cache add parsed spec Result { -303 silly cache add raw: 'tslib@^1.10.0', -303 silly cache add scope: null, -303 silly cache add name: 'tslib', -303 silly cache add rawSpec: '^1.10.0', -303 silly cache add spec: '>=1.10.0 <2.0.0', -303 silly cache add type: 'range' } -304 silly addNamed tslib@>=1.10.0 <2.0.0 -305 verbose addNamed ">=1.10.0 <2.0.0" is a valid semver range for tslib -306 silly addNameRange { name: 'tslib', range: '>=1.10.0 <2.0.0', hasData: false } -307 silly mapToRegistry name tslib -308 silly mapToRegistry using default registry -309 silly mapToRegistry registry https://registry.npmjs.org/ -310 silly mapToRegistry uri https://registry.npmjs.org/tslib -311 verbose addNameRange registry:https://registry.npmjs.org/tslib not in flight; fetching -312 verbose afterAdd /home/christine/.npm/clone/2.1.2/package/package.json written -313 verbose get https://registry.npmjs.org/graceful-fs not expired, no request -314 silly addNameRange number 2 { name: 'graceful-fs', range: '>=4.1.2 <5.0.0', hasData: true } -315 silly addNameRange versions [ 'graceful-fs', -315 silly addNameRange [ '1.0.0', -315 silly addNameRange '1.0.1', -315 silly addNameRange '1.0.2', -315 silly addNameRange '1.1.0', -315 silly addNameRange '1.1.1', -315 silly addNameRange '1.1.2', -315 silly addNameRange '1.1.3', -315 silly addNameRange '1.1.4', -315 silly addNameRange '1.1.5', -315 silly addNameRange '1.1.6', -315 silly addNameRange '1.1.7', -315 silly addNameRange '1.1.8', -315 silly addNameRange '1.1.9', -315 silly addNameRange '1.1.10', -315 silly addNameRange '1.1.11', -315 silly addNameRange '1.1.12', -315 silly addNameRange '1.1.13', -315 silly addNameRange '1.1.14', -315 silly addNameRange '1.2.0', -315 silly addNameRange '1.2.1', -315 silly addNameRange '1.2.2', -315 silly addNameRange '1.2.3', -315 silly addNameRange '2.0.0', -315 silly addNameRange '2.0.1', -315 silly addNameRange '2.0.2', -315 silly addNameRange '2.0.3', -315 silly addNameRange '3.0.0', -315 silly addNameRange '3.0.1', -315 silly addNameRange '3.0.2', -315 silly addNameRange '3.0.3', -315 silly addNameRange '3.0.4', -315 silly addNameRange '3.0.5', -315 silly addNameRange '3.0.6', -315 silly addNameRange '3.0.7', -315 silly addNameRange '3.0.8', -315 silly addNameRange '4.1.0', -315 silly addNameRange '4.1.1', -315 silly addNameRange '4.1.2', -315 silly addNameRange '4.1.3', -315 silly addNameRange '4.1.4', -315 silly addNameRange '4.1.5', -315 silly addNameRange '3.0.9', -315 silly addNameRange '4.1.6', -315 silly addNameRange '3.0.10', -315 silly addNameRange '3.0.11', -315 silly addNameRange '4.1.7', -315 silly addNameRange '4.1.8', -315 silly addNameRange '4.1.9', -315 silly addNameRange '4.1.10', -315 silly addNameRange '4.1.11', -315 silly addNameRange '4.1.12', -315 silly addNameRange '4.1.13', -315 silly addNameRange '4.1.14', -315 silly addNameRange '4.1.15', -315 silly addNameRange '4.2.0', -315 silly addNameRange '4.2.1', -315 silly addNameRange '3.0.12', -315 silly addNameRange '4.2.2', -315 silly addNameRange '4.2.3', -315 silly addNameRange '4.2.4' ] ] -316 silly addNamed graceful-fs@4.2.4 -317 verbose addNamed "4.2.4" is a plain semver version for graceful-fs -318 silly cache afterAdd errno@0.1.7 -319 verbose afterAdd /home/christine/.npm/errno/0.1.7/package/package.json not in flight; writing -320 silly mapToRegistry name graceful-fs -321 silly mapToRegistry using default registry -322 silly mapToRegistry registry https://registry.npmjs.org/ -323 silly mapToRegistry uri https://registry.npmjs.org/graceful-fs -324 verbose addRemoteTarball https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz not in flight; adding -325 verbose addRemoteTarball [ 'https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz', -325 verbose addRemoteTarball '2256bde14d3632958c465ebc96dc467ca07a29fb' ] -326 verbose get https://registry.npmjs.org/promise not expired, no request -327 silly addNameRange number 2 { name: 'promise', range: '>=7.1.1 <8.0.0', hasData: true } -328 silly addNameRange versions [ 'promise', -328 silly addNameRange [ '1.2.1', -328 silly addNameRange '1.2.2', -328 silly addNameRange '1.3.0', -328 silly addNameRange '2.0.0', -328 silly addNameRange '3.0.0', -328 silly addNameRange '3.0.1', -328 silly addNameRange '3.1.0', -328 silly addNameRange '3.2.0', -328 silly addNameRange '4.0.0', -328 silly addNameRange '5.0.0', -328 silly addNameRange '6.0.0', -328 silly addNameRange '6.0.1', -328 silly addNameRange '6.1.0', -328 silly addNameRange '7.0.0', -328 silly addNameRange '7.0.1', -328 silly addNameRange '7.0.2', -328 silly addNameRange '7.0.3', -328 silly addNameRange '7.0.4', -328 silly addNameRange '7.1.0', -328 silly addNameRange '7.1.1', -328 silly addNameRange '7.2.0', -328 silly addNameRange '7.3.0', -328 silly addNameRange '7.3.1', -328 silly addNameRange '8.0.0', -328 silly addNameRange '8.0.1', -328 silly addNameRange '8.0.2', -328 silly addNameRange '8.0.3', -328 silly addNameRange '8.1.0' ] ] -329 silly addNamed promise@7.3.1 -330 verbose addNamed "7.3.1" is a plain semver version for promise -331 verbose get https://registry.npmjs.org/tslib not expired, no request -332 silly addNameRange number 2 { name: 'tslib', range: '>=1.10.0 <2.0.0', hasData: true } -333 silly addNameRange versions [ 'tslib', -333 silly addNameRange [ '0.0.1-security', -333 silly addNameRange '1.0.0', -333 silly addNameRange '1.1.0', -333 silly addNameRange '1.2.0', -333 silly addNameRange '1.3.0', -333 silly addNameRange '1.4.0', -333 silly addNameRange '1.5.0', -333 silly addNameRange '1.6.0', -333 silly addNameRange '1.6.1', -333 silly addNameRange '1.7.0', -333 silly addNameRange '1.7.1', -333 silly addNameRange '1.8.0', -333 silly addNameRange '1.8.1', -333 silly addNameRange '1.9.0', -333 silly addNameRange '1.9.1', -333 silly addNameRange '1.9.2', -333 silly addNameRange '1.9.3', -333 silly addNameRange '1.10.0', -333 silly addNameRange '1.11.0', -333 silly addNameRange '1.11.1', -333 silly addNameRange '1.11.2', -333 silly addNameRange '1.12.0', -333 silly addNameRange '1.13.0', -333 silly addNameRange '2.0.0' ] ] -334 silly addNamed tslib@1.13.0 -335 verbose addNamed "1.13.0" is a plain semver version for tslib -336 silly mapToRegistry name promise -337 silly mapToRegistry using default registry -338 silly mapToRegistry registry https://registry.npmjs.org/ -339 silly mapToRegistry uri https://registry.npmjs.org/promise -340 verbose addRemoteTarball https://registry.npmjs.org/promise/-/promise-7.3.1.tgz not in flight; adding -341 verbose addRemoteTarball [ 'https://registry.npmjs.org/promise/-/promise-7.3.1.tgz', -341 verbose addRemoteTarball '064b72602b18f90f29192b8b1bc418ffd1ebd3bf' ] -342 silly resolveWithNewModule mkdirp@0.5.5 checking installable status -343 silly cache add args [ 'mkdirp@^0.5.0', null ] -344 verbose cache add spec mkdirp@^0.5.0 -345 silly cache add parsed spec Result { -345 silly cache add raw: 'mkdirp@^0.5.0', -345 silly cache add scope: null, -345 silly cache add name: 'mkdirp', -345 silly cache add rawSpec: '^0.5.0', -345 silly cache add spec: '>=0.5.0 <0.6.0', -345 silly cache add type: 'range' } -346 silly addNamed mkdirp@>=0.5.0 <0.6.0 -347 verbose addNamed ">=0.5.0 <0.6.0" is a valid semver range for mkdirp -348 silly addNameRange { name: 'mkdirp', range: '>=0.5.0 <0.6.0', hasData: false } -349 silly mapToRegistry name mkdirp -350 silly mapToRegistry using default registry -351 silly mapToRegistry registry https://registry.npmjs.org/ -352 silly mapToRegistry uri https://registry.npmjs.org/mkdirp -353 verbose addNameRange registry:https://registry.npmjs.org/mkdirp not in flight; fetching -354 silly mapToRegistry name tslib -355 silly mapToRegistry using default registry -356 silly mapToRegistry registry https://registry.npmjs.org/ -357 silly mapToRegistry uri https://registry.npmjs.org/tslib -358 verbose addRemoteTarball https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz not in flight; adding -359 verbose addRemoteTarball [ 'https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz', -359 verbose addRemoteTarball 'c881e13cc7015894ed914862d276436fa9a47043' ] -360 info retry fetch attempt 1 at 13:48:57 -361 info attempt registry request try #1 at 13:48:57 -362 http fetch GET https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz -363 info retry fetch attempt 1 at 13:48:57 -364 info attempt registry request try #1 at 13:48:57 -365 http fetch GET https://registry.npmjs.org/promise/-/promise-7.3.1.tgz -366 http 200 https://registry.npmjs.org/source-map -367 verbose headers { date: 'Fri, 22 May 2020 11:48:57 GMT', -367 verbose headers 'content-type': 'application/json', -367 verbose headers 'transfer-encoding': 'chunked', -367 verbose headers connection: 'keep-alive', -367 verbose headers 'set-cookie': -367 verbose headers [ '__cfduid=d850f5e63141a007f397139d82cf517f01590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -367 verbose headers 'cf-ray': '59764fa1f8a405fd-FRA', -367 verbose headers age: '5629', -367 verbose headers 'cache-control': 'public, max-age=300', -367 verbose headers etag: 'W/"ed6422e25077febab77501a786cb4bdd"', -367 verbose headers 'last-modified': 'Thu, 07 May 2020 17:23:05 GMT', -367 verbose headers vary: 'accept-encoding, accept', -367 verbose headers 'cf-cache-status': 'HIT', -367 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -367 verbose headers server: 'cloudflare', -367 verbose headers 'content-encoding': 'gzip', -367 verbose headers 'cf-request-id': '02ddd0193d000005fd8da0d200000001' } -368 silly get cb [ 200, -368 silly get { date: 'Fri, 22 May 2020 11:48:57 GMT', -368 silly get 'content-type': 'application/json', -368 silly get 'transfer-encoding': 'chunked', -368 silly get connection: 'keep-alive', -368 silly get 'set-cookie': -368 silly get [ '__cfduid=d850f5e63141a007f397139d82cf517f01590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -368 silly get 'cf-ray': '59764fa1f8a405fd-FRA', -368 silly get age: '5629', -368 silly get 'cache-control': 'public, max-age=300', -368 silly get etag: 'W/"ed6422e25077febab77501a786cb4bdd"', -368 silly get 'last-modified': 'Thu, 07 May 2020 17:23:05 GMT', -368 silly get vary: 'accept-encoding, accept', -368 silly get 'cf-cache-status': 'HIT', -368 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -368 silly get server: 'cloudflare', -368 silly get 'content-encoding': 'gzip', -368 silly get 'cf-request-id': '02ddd0193d000005fd8da0d200000001' } ] -369 verbose get saving source-map to /home/christine/.npm/registry.npmjs.org/source-map/.cache.json -370 silly resolveWithNewModule image-size@0.5.5 checking installable status -371 silly cache add args [ 'image-size@~0.5.0', null ] -372 verbose cache add spec image-size@~0.5.0 -373 silly cache add parsed spec Result { -373 silly cache add raw: 'image-size@~0.5.0', -373 silly cache add scope: null, -373 silly cache add name: 'image-size', -373 silly cache add rawSpec: '~0.5.0', -373 silly cache add spec: '>=0.5.0 <0.6.0', -373 silly cache add type: 'range' } -374 silly addNamed image-size@>=0.5.0 <0.6.0 -375 verbose addNamed ">=0.5.0 <0.6.0" is a valid semver range for image-size -376 silly addNameRange { name: 'image-size', range: '>=0.5.0 <0.6.0', hasData: false } -377 silly mapToRegistry name image-size -378 silly mapToRegistry using default registry -379 silly mapToRegistry registry https://registry.npmjs.org/ -380 silly mapToRegistry uri https://registry.npmjs.org/image-size -381 verbose addNameRange registry:https://registry.npmjs.org/image-size not in flight; fetching -382 info retry fetch attempt 1 at 13:48:57 -383 info attempt registry request try #1 at 13:48:57 -384 http fetch GET https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz -385 verbose afterAdd /home/christine/.npm/errno/0.1.7/package/package.json written -386 verbose get https://registry.npmjs.org/mkdirp not expired, no request -387 silly addNameRange number 2 { name: 'mkdirp', range: '>=0.5.0 <0.6.0', hasData: true } -388 silly addNameRange versions [ 'mkdirp', -388 silly addNameRange [ '0.0.1', -388 silly addNameRange '0.0.2', -388 silly addNameRange '0.0.3', -388 silly addNameRange '0.0.4', -388 silly addNameRange '0.0.5', -388 silly addNameRange '0.0.6', -388 silly addNameRange '0.0.7', -388 silly addNameRange '0.1.0', -388 silly addNameRange '0.2.0', -388 silly addNameRange '0.2.1', -388 silly addNameRange '0.2.2', -388 silly addNameRange '0.3.0', -388 silly addNameRange '0.3.1', -388 silly addNameRange '0.3.2', -388 silly addNameRange '0.3.3', -388 silly addNameRange '0.3.4', -388 silly addNameRange '0.3.5', -388 silly addNameRange '0.4.0', -388 silly addNameRange '0.4.1', -388 silly addNameRange '0.4.2', -388 silly addNameRange '0.5.0', -388 silly addNameRange '0.5.1', -388 silly addNameRange '1.0.0', -388 silly addNameRange '1.0.1', -388 silly addNameRange '1.0.2', -388 silly addNameRange '1.0.3', -388 silly addNameRange '0.5.2', -388 silly addNameRange '0.5.3', -388 silly addNameRange '0.5.4', -388 silly addNameRange '1.0.4', -388 silly addNameRange '0.5.5' ] ] -389 silly addNamed mkdirp@0.5.5 -390 verbose addNamed "0.5.5" is a plain semver version for mkdirp -391 silly mapToRegistry name mkdirp -392 silly mapToRegistry using default registry -393 silly mapToRegistry registry https://registry.npmjs.org/ -394 silly mapToRegistry uri https://registry.npmjs.org/mkdirp -395 verbose addRemoteTarball https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz not in flight; adding -396 verbose addRemoteTarball [ 'https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz', -396 verbose addRemoteTarball 'd91cefd62d1436ca0f41620e251288d420099def' ] -397 verbose get https://registry.npmjs.org/image-size not expired, no request -398 silly addNameRange number 2 { name: 'image-size', range: '>=0.5.0 <0.6.0', hasData: true } -399 silly addNameRange versions [ 'image-size', -399 silly addNameRange [ '0.0.2', -399 silly addNameRange '0.0.3', -399 silly addNameRange '0.0.5', -399 silly addNameRange '0.1.0', -399 silly addNameRange '0.1.1', -399 silly addNameRange '0.1.2', -399 silly addNameRange '0.1.3', -399 silly addNameRange '0.1.4', -399 silly addNameRange '0.1.5', -399 silly addNameRange '0.1.6', -399 silly addNameRange '0.1.7', -399 silly addNameRange '0.1.10', -399 silly addNameRange '0.1.15', -399 silly addNameRange '0.0.16', -399 silly addNameRange '0.1.16', -399 silly addNameRange '0.1.17', -399 silly addNameRange '0.1.20', -399 silly addNameRange '0.2.1', -399 silly addNameRange '0.2.2', -399 silly addNameRange '0.2.3', -399 silly addNameRange '0.2.4', -399 silly addNameRange '0.2.5', -399 silly addNameRange '0.3.0', -399 silly addNameRange '0.3.1', -399 silly addNameRange '0.3.2', -399 silly addNameRange '0.3.3', -399 silly addNameRange '0.3.5', -399 silly addNameRange '0.4.0', -399 silly addNameRange '0.5.0', -399 silly addNameRange '0.5.1', -399 silly addNameRange '0.5.2', -399 silly addNameRange '0.5.3', -399 silly addNameRange '0.5.4', -399 silly addNameRange '0.5.5', -399 silly addNameRange '0.6.0', -399 silly addNameRange '0.6.1', -399 silly addNameRange '0.6.2', -399 silly addNameRange '0.6.3', -399 silly addNameRange '0.7.0', -399 silly addNameRange '0.7.1', -399 silly addNameRange '0.7.2', -399 silly addNameRange '0.7.3', -399 silly addNameRange '0.7.4', -399 silly addNameRange '0.7.5', -399 silly addNameRange '0.8.0', -399 silly addNameRange '0.8.1', -399 silly addNameRange '0.8.2', -399 silly addNameRange '0.8.3' ] ] -400 silly addNamed image-size@0.5.5 -401 verbose addNamed "0.5.5" is a plain semver version for image-size -402 silly mapToRegistry name image-size -403 silly mapToRegistry using default registry -404 silly mapToRegistry registry https://registry.npmjs.org/ -405 silly mapToRegistry uri https://registry.npmjs.org/image-size -406 verbose addRemoteTarball https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz not in flight; adding -407 verbose addRemoteTarball [ 'https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz', -407 verbose addRemoteTarball '09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c' ] -408 http fetch 200 https://registry.npmjs.org/mime/-/mime-1.6.0.tgz -409 info retry fetch attempt 1 at 13:48:57 -410 info attempt registry request try #1 at 13:48:57 -411 http fetch GET https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz -412 http 200 https://registry.npmjs.org/request -413 verbose headers { date: 'Fri, 22 May 2020 11:48:57 GMT', -413 verbose headers 'content-type': 'application/json', -413 verbose headers 'transfer-encoding': 'chunked', -413 verbose headers connection: 'keep-alive', -413 verbose headers 'set-cookie': -413 verbose headers [ '__cfduid=da26bd26924c67acdff0555528c279ae61590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -413 verbose headers 'cf-ray': '59764fa1dc0ec272-FRA', -413 verbose headers age: '5668', -413 verbose headers 'cache-control': 'public, max-age=300', -413 verbose headers etag: 'W/"f6a50554348a0710692c70f1bd6574ab"', -413 verbose headers 'last-modified': 'Mon, 11 May 2020 15:19:07 GMT', -413 verbose headers vary: 'accept-encoding, accept', -413 verbose headers 'cf-cache-status': 'HIT', -413 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -413 verbose headers server: 'cloudflare', -413 verbose headers 'content-encoding': 'gzip', -413 verbose headers 'cf-request-id': '02ddd0192b0000c27238899200000001' } -414 silly get cb [ 200, -414 silly get { date: 'Fri, 22 May 2020 11:48:57 GMT', -414 silly get 'content-type': 'application/json', -414 silly get 'transfer-encoding': 'chunked', -414 silly get connection: 'keep-alive', -414 silly get 'set-cookie': -414 silly get [ '__cfduid=da26bd26924c67acdff0555528c279ae61590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -414 silly get 'cf-ray': '59764fa1dc0ec272-FRA', -414 silly get age: '5668', -414 silly get 'cache-control': 'public, max-age=300', -414 silly get etag: 'W/"f6a50554348a0710692c70f1bd6574ab"', -414 silly get 'last-modified': 'Mon, 11 May 2020 15:19:07 GMT', -414 silly get vary: 'accept-encoding, accept', -414 silly get 'cf-cache-status': 'HIT', -414 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -414 silly get server: 'cloudflare', -414 silly get 'content-encoding': 'gzip', -414 silly get 'cf-request-id': '02ddd0192b0000c27238899200000001' } ] -415 verbose get saving request to /home/christine/.npm/registry.npmjs.org/request/.cache.json -416 silly resolveWithNewModule source-map@0.6.1 checking installable status -417 silly cache add args [ 'source-map@~0.6.0', null ] -418 verbose cache add spec source-map@~0.6.0 -419 silly cache add parsed spec Result { -419 silly cache add raw: 'source-map@~0.6.0', -419 silly cache add scope: null, -419 silly cache add name: 'source-map', -419 silly cache add rawSpec: '~0.6.0', -419 silly cache add spec: '>=0.6.0 <0.7.0', -419 silly cache add type: 'range' } -420 silly addNamed source-map@>=0.6.0 <0.7.0 -421 verbose addNamed ">=0.6.0 <0.7.0" is a valid semver range for source-map -422 silly addNameRange { name: 'source-map', range: '>=0.6.0 <0.7.0', hasData: false } -423 silly mapToRegistry name source-map -424 silly mapToRegistry using default registry -425 silly mapToRegistry registry https://registry.npmjs.org/ -426 silly mapToRegistry uri https://registry.npmjs.org/source-map -427 verbose addNameRange registry:https://registry.npmjs.org/source-map not in flight; fetching -428 info retry fetch attempt 1 at 13:48:57 -429 info attempt registry request try #1 at 13:48:57 -430 http fetch GET https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz -431 silly fetchAndShaCheck shasum 32cd9e5c64553bd58d19a568af452acff04981b1 -432 http fetch 200 https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz -433 http fetch 200 https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz -434 verbose addTmpTarball /tmp/npm-5369-43d945e1/registry.npmjs.org/mime/-/mime-1.6.0.tgz not in flight; adding -435 verbose addTmpTarball already have metadata; skipping unpack for mime@1.6.0 -436 verbose get https://registry.npmjs.org/source-map not expired, no request -437 silly addNameRange number 2 { name: 'source-map', range: '>=0.6.0 <0.7.0', hasData: true } -438 silly addNameRange versions [ 'source-map', -438 silly addNameRange [ '0.0.0', -438 silly addNameRange '0.1.0', -438 silly addNameRange '0.1.1', -438 silly addNameRange '0.1.2', -438 silly addNameRange '0.1.3', -438 silly addNameRange '0.1.4', -438 silly addNameRange '0.1.5', -438 silly addNameRange '0.1.6', -438 silly addNameRange '0.1.7', -438 silly addNameRange '0.1.8', -438 silly addNameRange '0.1.9', -438 silly addNameRange '0.1.10', -438 silly addNameRange '0.1.11', -438 silly addNameRange '0.1.12', -438 silly addNameRange '0.1.13', -438 silly addNameRange '0.1.14', -438 silly addNameRange '0.1.15', -438 silly addNameRange '0.1.16', -438 silly addNameRange '0.1.17', -438 silly addNameRange '0.1.18', -438 silly addNameRange '0.1.19', -438 silly addNameRange '0.1.20', -438 silly addNameRange '0.1.21', -438 silly addNameRange '0.1.22', -438 silly addNameRange '0.1.23', -438 silly addNameRange '0.1.24', -438 silly addNameRange '0.1.25', -438 silly addNameRange '0.1.26', -438 silly addNameRange '0.1.27', -438 silly addNameRange '0.1.28', -438 silly addNameRange '0.1.29', -438 silly addNameRange '0.1.30', -438 silly addNameRange '0.1.31', -438 silly addNameRange '0.1.32', -438 silly addNameRange '0.1.33', -438 silly addNameRange '0.1.34', -438 silly addNameRange '0.1.35', -438 silly addNameRange '0.1.36', -438 silly addNameRange '0.1.37', -438 silly addNameRange '0.1.38', -438 silly addNameRange '0.1.39', -438 silly addNameRange '0.1.40', -438 silly addNameRange '0.1.41', -438 silly addNameRange '0.1.42', -438 silly addNameRange '0.1.43', -438 silly addNameRange '0.2.0', -438 silly addNameRange '0.3.0', -438 silly addNameRange '0.4.0', -438 silly addNameRange '0.4.1', -438 silly addNameRange '0.4.2', -438 silly addNameRange '0.4.3', -438 silly addNameRange '0.4.4', -438 silly addNameRange '0.5.0', -438 silly addNameRange '0.5.1', -438 silly addNameRange '0.5.2', -438 silly addNameRange '0.5.3', -438 silly addNameRange '0.5.4', -438 silly addNameRange '0.5.5', -438 silly addNameRange '0.5.6', -438 silly addNameRange '0.5.7', -438 silly addNameRange '0.6.0', -438 silly addNameRange '0.6.1', -438 silly addNameRange '0.7.0', -438 silly addNameRange '0.7.1', -438 silly addNameRange '0.7.2', -438 silly addNameRange '0.7.3', -438 silly addNameRange '0.8.0-beta.0' ] ] -439 silly addNamed source-map@0.6.1 -440 verbose addNamed "0.6.1" is a plain semver version for source-map -441 silly fetchAndShaCheck shasum 2256bde14d3632958c465ebc96dc467ca07a29fb -442 silly fetchAndShaCheck shasum c881e13cc7015894ed914862d276436fa9a47043 -443 silly resolveWithNewModule request@2.88.2 checking installable status -444 silly cache add args [ 'request@^2.83.0', null ] -445 verbose cache add spec request@^2.83.0 -446 silly cache add parsed spec Result { -446 silly cache add raw: 'request@^2.83.0', -446 silly cache add scope: null, -446 silly cache add name: 'request', -446 silly cache add rawSpec: '^2.83.0', -446 silly cache add spec: '>=2.83.0 <3.0.0', -446 silly cache add type: 'range' } -447 silly addNamed request@>=2.83.0 <3.0.0 -448 verbose addNamed ">=2.83.0 <3.0.0" is a valid semver range for request -449 silly addNameRange { name: 'request', range: '>=2.83.0 <3.0.0', hasData: false } -450 silly mapToRegistry name request -451 silly mapToRegistry using default registry -452 silly mapToRegistry registry https://registry.npmjs.org/ -453 silly mapToRegistry uri https://registry.npmjs.org/request -454 verbose addNameRange registry:https://registry.npmjs.org/request not in flight; fetching -455 verbose addTmpTarball /tmp/npm-5369-43d945e1/registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz not in flight; adding -456 verbose addTmpTarball already have metadata; skipping unpack for graceful-fs@4.2.4 -457 http fetch 200 https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz -458 verbose addTmpTarball /tmp/npm-5369-43d945e1/registry.npmjs.org/tslib/-/tslib-1.13.0.tgz not in flight; adding -459 verbose addTmpTarball already have metadata; skipping unpack for tslib@1.13.0 -460 verbose get https://registry.npmjs.org/request not expired, no request -461 silly addNameRange number 2 { name: 'request', range: '>=2.83.0 <3.0.0', hasData: true } -462 silly addNameRange versions [ 'request', -462 silly addNameRange [ '0.10.0', -462 silly addNameRange '0.8.3', -462 silly addNameRange '0.9.0', -462 silly addNameRange '0.9.1', -462 silly addNameRange '0.9.5', -462 silly addNameRange '1.0.0', -462 silly addNameRange '1.1.0', -462 silly addNameRange '1.1.1', -462 silly addNameRange '1.2.0', -462 silly addNameRange '1.9.0', -462 silly addNameRange '1.9.1', -462 silly addNameRange '1.9.2', -462 silly addNameRange '1.9.3', -462 silly addNameRange '1.9.5', -462 silly addNameRange '1.9.7', -462 silly addNameRange '1.9.8', -462 silly addNameRange '1.9.9', -462 silly addNameRange '2.0.0', -462 silly addNameRange '2.0.1', -462 silly addNameRange '2.0.2', -462 silly addNameRange '2.0.3', -462 silly addNameRange '2.0.4', -462 silly addNameRange '2.0.5', -462 silly addNameRange '2.1.0', -462 silly addNameRange '2.1.1', -462 silly addNameRange '2.2.0', -462 silly addNameRange '2.2.5', -462 silly addNameRange '2.2.6', -462 silly addNameRange '2.2.9', -462 silly addNameRange '2.9.0', -462 silly addNameRange '2.9.1', -462 silly addNameRange '2.9.2', -462 silly addNameRange '2.9.3', -462 silly addNameRange '2.9.100', -462 silly addNameRange '2.9.150', -462 silly addNameRange '2.9.151', -462 silly addNameRange '2.9.152', -462 silly addNameRange '2.9.153', -462 silly addNameRange '2.9.200', -462 silly addNameRange '2.9.201', -462 silly addNameRange '2.9.202', -462 silly addNameRange '2.9.203', -462 silly addNameRange '2.10.0', -462 silly addNameRange '2.11.0', -462 silly addNameRange '2.11.1', -462 silly addNameRange '2.11.2', -462 silly addNameRange '2.11.3', -462 silly addNameRange '2.11.4', -462 silly addNameRange '2.12.0', -462 silly addNameRange '2.14.0', -462 silly addNameRange '2.16.0', -462 silly addNameRange '2.16.2', -462 silly addNameRange '2.16.4', -462 silly addNameRange '2.16.6', -462 silly addNameRange '2.18.0', -462 silly addNameRange '2.19.0', -462 silly addNameRange '2.20.0', -462 silly addNameRange '2.21.0', -462 silly addNameRange '2.22.0', -462 silly addNameRange '2.23.0', -462 silly addNameRange '2.24.0', -462 silly addNameRange '2.25.0', -462 silly addNameRange '2.26.0', -462 silly addNameRange '2.27.0', -462 silly addNameRange '2.28.0', -462 silly addNameRange '2.29.0', -462 silly addNameRange '2.30.0', -462 silly addNameRange '2.31.0', -462 silly addNameRange '2.32.0', -462 silly addNameRange '2.33.0', -462 silly addNameRange '2.34.0', -462 silly addNameRange '2.35.0', -462 silly addNameRange '2.36.0', -462 silly addNameRange '2.37.0', -462 silly addNameRange '2.38.0', -462 silly addNameRange '2.39.0', -462 silly addNameRange '2.40.0', -462 silly addNameRange '2.41.0', -462 silly addNameRange '2.42.0', -462 silly addNameRange '2.43.0', -462 silly addNameRange '2.44.0', -462 silly addNameRange '2.45.0', -462 silly addNameRange '2.46.0', -462 silly addNameRange '2.47.0', -462 silly addNameRange '2.48.0', -462 silly addNameRange '2.49.0', -462 silly addNameRange '2.50.0', -462 silly addNameRange '2.51.0', -462 silly addNameRange '2.52.0', -462 silly addNameRange '2.53.0', -462 silly addNameRange '2.54.0', -462 silly addNameRange '2.55.0', -462 silly addNameRange '2.56.0', -462 silly addNameRange '2.57.0', -462 silly addNameRange '2.58.0', -462 silly addNameRange '2.59.0', -462 silly addNameRange '2.60.0', -462 silly addNameRange '2.61.0', -462 silly addNameRange '2.62.0', -462 silly addNameRange '2.63.0', -462 silly addNameRange ... 26 more items ] ] -463 silly addNamed request@2.88.2 -464 verbose addNamed "2.88.2" is a plain semver version for request -465 warn deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142 -466 silly fetchAndShaCheck shasum d91cefd62d1436ca0f41620e251288d420099def -467 silly cache afterAdd source-map@0.6.1 -468 verbose afterAdd /home/christine/.npm/source-map/0.6.1/package/package.json not in flight; writing -469 silly mapToRegistry name request -470 silly mapToRegistry using default registry -471 silly mapToRegistry registry https://registry.npmjs.org/ -472 silly mapToRegistry uri https://registry.npmjs.org/request -473 verbose addRemoteTarball https://registry.npmjs.org/request/-/request-2.88.2.tgz not in flight; adding -474 verbose addRemoteTarball [ 'https://registry.npmjs.org/request/-/request-2.88.2.tgz', -474 verbose addRemoteTarball 'd73c918731cb5a87da047e207234146f664d12b3' ] -475 verbose addTmpTarball /tmp/npm-5369-43d945e1/registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz not in flight; adding -476 verbose addTmpTarball already have metadata; skipping unpack for mkdirp@0.5.5 -477 info retry fetch attempt 1 at 13:48:57 -478 info attempt registry request try #1 at 13:48:57 -479 http fetch GET https://registry.npmjs.org/request/-/request-2.88.2.tgz -480 verbose afterAdd /home/christine/.npm/source-map/0.6.1/package/package.json written -481 silly cache afterAdd graceful-fs@4.2.4 -482 verbose afterAdd /home/christine/.npm/graceful-fs/4.2.4/package/package.json not in flight; writing -483 silly cache afterAdd tslib@1.13.0 -484 verbose afterAdd /home/christine/.npm/tslib/1.13.0/package/package.json not in flight; writing -485 silly cache afterAdd mime@1.6.0 -486 verbose afterAdd /home/christine/.npm/mime/1.6.0/package/package.json not in flight; writing -487 verbose afterAdd /home/christine/.npm/graceful-fs/4.2.4/package/package.json written -488 verbose afterAdd /home/christine/.npm/tslib/1.13.0/package/package.json written -489 verbose afterAdd /home/christine/.npm/mime/1.6.0/package/package.json written -490 silly cache afterAdd mkdirp@0.5.5 -491 verbose afterAdd /home/christine/.npm/mkdirp/0.5.5/package/package.json not in flight; writing -492 verbose afterAdd /home/christine/.npm/mkdirp/0.5.5/package/package.json written -493 http fetch 200 https://registry.npmjs.org/promise/-/promise-7.3.1.tgz -494 silly fetchAndShaCheck shasum 064b72602b18f90f29192b8b1bc418ffd1ebd3bf -495 verbose addTmpTarball /tmp/npm-5369-43d945e1/registry.npmjs.org/promise/-/promise-7.3.1.tgz not in flight; adding -496 verbose addTmpTarball already have metadata; skipping unpack for promise@7.3.1 -497 silly cache afterAdd promise@7.3.1 -498 verbose afterAdd /home/christine/.npm/promise/7.3.1/package/package.json not in flight; writing -499 verbose afterAdd /home/christine/.npm/promise/7.3.1/package/package.json written -500 http fetch 200 https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz -501 silly fetchAndShaCheck shasum 09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c -502 verbose addTmpTarball /tmp/npm-5369-43d945e1/registry.npmjs.org/image-size/-/image-size-0.5.5.tgz not in flight; adding -503 verbose addTmpTarball already have metadata; skipping unpack for image-size@0.5.5 -504 http fetch 200 https://registry.npmjs.org/request/-/request-2.88.2.tgz -505 silly cache afterAdd image-size@0.5.5 -506 verbose afterAdd /home/christine/.npm/image-size/0.5.5/package/package.json not in flight; writing -507 verbose afterAdd /home/christine/.npm/image-size/0.5.5/package/package.json written -508 silly fetchAndShaCheck shasum d73c918731cb5a87da047e207234146f664d12b3 -509 verbose addTmpTarball /tmp/npm-5369-43d945e1/registry.npmjs.org/request/-/request-2.88.2.tgz not in flight; adding -510 verbose addTmpTarball already have metadata; skipping unpack for request@2.88.2 -511 silly cache afterAdd request@2.88.2 -512 verbose afterAdd /home/christine/.npm/request/2.88.2/package/package.json not in flight; writing -513 verbose afterAdd /home/christine/.npm/request/2.88.2/package/package.json written -514 silly fetchNamedPackageData prr -515 silly mapToRegistry name prr -516 silly mapToRegistry using default registry -517 silly mapToRegistry registry https://registry.npmjs.org/ -518 silly mapToRegistry uri https://registry.npmjs.org/prr -519 verbose request uri https://registry.npmjs.org/prr -520 verbose request no auth needed -521 info attempt registry request try #1 at 13:48:57 -522 verbose etag W/"07ebb6c11e7a8b0a67aabb93f8b3aa09" -523 verbose lastModified Sun, 27 May 2018 13:04:47 GMT -524 http request GET https://registry.npmjs.org/prr -525 http 304 https://registry.npmjs.org/prr -526 verbose headers { date: 'Fri, 22 May 2020 11:48:57 GMT', -526 verbose headers connection: 'keep-alive', -526 verbose headers 'set-cookie': -526 verbose headers [ '__cfduid=d69b2d3a0ed04b60eed400c38cdaaf9511590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -526 verbose headers 'cf-ray': '59764fa31fae648b-FRA', -526 verbose headers age: '5629', -526 verbose headers 'cache-control': 'public, max-age=300', -526 verbose headers etag: '"07ebb6c11e7a8b0a67aabb93f8b3aa09"', -526 verbose headers 'last-modified': 'Sun, 27 May 2018 13:04:47 GMT', -526 verbose headers vary: 'Accept-Encoding', -526 verbose headers 'cf-cache-status': 'HIT', -526 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -526 verbose headers server: 'cloudflare', -526 verbose headers 'cf-request-id': '02ddd019ef0000648bda3f9200000001' } -527 silly get cb [ 304, -527 silly get { date: 'Fri, 22 May 2020 11:48:57 GMT', -527 silly get connection: 'keep-alive', -527 silly get 'set-cookie': -527 silly get [ '__cfduid=d69b2d3a0ed04b60eed400c38cdaaf9511590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -527 silly get 'cf-ray': '59764fa31fae648b-FRA', -527 silly get age: '5629', -527 silly get 'cache-control': 'public, max-age=300', -527 silly get etag: '"07ebb6c11e7a8b0a67aabb93f8b3aa09"', -527 silly get 'last-modified': 'Sun, 27 May 2018 13:04:47 GMT', -527 silly get vary: 'Accept-Encoding', -527 silly get 'cf-cache-status': 'HIT', -527 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -527 silly get server: 'cloudflare', -527 silly get 'cf-request-id': '02ddd019ef0000648bda3f9200000001' } ] -528 verbose etag https://registry.npmjs.org/prr from cache -529 verbose get saving prr to /home/christine/.npm/registry.npmjs.org/prr/.cache.json -530 silly resolveWithNewModule prr@1.0.1 checking installable status -531 silly cache add args [ 'prr@~1.0.1', null ] -532 verbose cache add spec prr@~1.0.1 -533 silly cache add parsed spec Result { -533 silly cache add raw: 'prr@~1.0.1', -533 silly cache add scope: null, -533 silly cache add name: 'prr', -533 silly cache add rawSpec: '~1.0.1', -533 silly cache add spec: '>=1.0.1 <1.1.0', -533 silly cache add type: 'range' } -534 silly addNamed prr@>=1.0.1 <1.1.0 -535 verbose addNamed ">=1.0.1 <1.1.0" is a valid semver range for prr -536 silly addNameRange { name: 'prr', range: '>=1.0.1 <1.1.0', hasData: false } -537 silly mapToRegistry name prr -538 silly mapToRegistry using default registry -539 silly mapToRegistry registry https://registry.npmjs.org/ -540 silly mapToRegistry uri https://registry.npmjs.org/prr -541 verbose addNameRange registry:https://registry.npmjs.org/prr not in flight; fetching -542 verbose get https://registry.npmjs.org/prr not expired, no request -543 silly addNameRange number 2 { name: 'prr', range: '>=1.0.1 <1.1.0', hasData: true } -544 silly addNameRange versions [ 'prr', [ '0.0.0', '1.0.0', '1.0.1' ] ] -545 silly addNamed prr@1.0.1 -546 verbose addNamed "1.0.1" is a plain semver version for prr -547 silly cache afterAdd prr@1.0.1 -548 verbose afterAdd /home/christine/.npm/prr/1.0.1/package/package.json not in flight; writing -549 verbose afterAdd /home/christine/.npm/prr/1.0.1/package/package.json written -550 silly fetchNamedPackageData minimist -551 silly mapToRegistry name minimist -552 silly mapToRegistry using default registry -553 silly mapToRegistry registry https://registry.npmjs.org/ -554 silly mapToRegistry uri https://registry.npmjs.org/minimist -555 verbose request uri https://registry.npmjs.org/minimist -556 verbose request no auth needed -557 info attempt registry request try #1 at 13:48:57 -558 verbose etag W/"81c2eaf8bba19c1bd6131ba9e932902f" -559 verbose lastModified Sun, 11 Aug 2019 09:03:19 GMT -560 http request GET https://registry.npmjs.org/minimist -561 http 200 https://registry.npmjs.org/minimist -562 verbose headers { date: 'Fri, 22 May 2020 11:48:57 GMT', -562 verbose headers 'content-type': 'application/json', -562 verbose headers 'transfer-encoding': 'chunked', -562 verbose headers connection: 'keep-alive', -562 verbose headers 'set-cookie': -562 verbose headers [ '__cfduid=d850f5e63141a007f397139d82cf517f01590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -562 verbose headers 'cf-ray': '59764fa35d5205fd-FRA', -562 verbose headers age: '5653', -562 verbose headers 'cache-control': 'public, max-age=300', -562 verbose headers etag: 'W/"ab6c93df45eeb8867cab5ea4f62b4b74"', -562 verbose headers 'last-modified': 'Thu, 12 Mar 2020 22:16:24 GMT', -562 verbose headers vary: 'accept-encoding, accept', -562 verbose headers 'cf-cache-status': 'HIT', -562 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -562 verbose headers server: 'cloudflare', -562 verbose headers 'content-encoding': 'gzip', -562 verbose headers 'cf-request-id': '02ddd01a16000005fd8da2d200000001' } -563 silly get cb [ 200, -563 silly get { date: 'Fri, 22 May 2020 11:48:57 GMT', -563 silly get 'content-type': 'application/json', -563 silly get 'transfer-encoding': 'chunked', -563 silly get connection: 'keep-alive', -563 silly get 'set-cookie': -563 silly get [ '__cfduid=d850f5e63141a007f397139d82cf517f01590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -563 silly get 'cf-ray': '59764fa35d5205fd-FRA', -563 silly get age: '5653', -563 silly get 'cache-control': 'public, max-age=300', -563 silly get etag: 'W/"ab6c93df45eeb8867cab5ea4f62b4b74"', -563 silly get 'last-modified': 'Thu, 12 Mar 2020 22:16:24 GMT', -563 silly get vary: 'accept-encoding, accept', -563 silly get 'cf-cache-status': 'HIT', -563 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -563 silly get server: 'cloudflare', -563 silly get 'content-encoding': 'gzip', -563 silly get 'cf-request-id': '02ddd01a16000005fd8da2d200000001' } ] -564 verbose get saving minimist to /home/christine/.npm/registry.npmjs.org/minimist/.cache.json -565 silly resolveWithNewModule minimist@1.2.5 checking installable status -566 silly cache add args [ 'minimist@^1.2.5', null ] -567 verbose cache add spec minimist@^1.2.5 -568 silly cache add parsed spec Result { -568 silly cache add raw: 'minimist@^1.2.5', -568 silly cache add scope: null, -568 silly cache add name: 'minimist', -568 silly cache add rawSpec: '^1.2.5', -568 silly cache add spec: '>=1.2.5 <2.0.0', -568 silly cache add type: 'range' } -569 silly addNamed minimist@>=1.2.5 <2.0.0 -570 verbose addNamed ">=1.2.5 <2.0.0" is a valid semver range for minimist -571 silly addNameRange { name: 'minimist', range: '>=1.2.5 <2.0.0', hasData: false } -572 silly mapToRegistry name minimist -573 silly mapToRegistry using default registry -574 silly mapToRegistry registry https://registry.npmjs.org/ -575 silly mapToRegistry uri https://registry.npmjs.org/minimist -576 verbose addNameRange registry:https://registry.npmjs.org/minimist not in flight; fetching -577 verbose get https://registry.npmjs.org/minimist not expired, no request -578 silly addNameRange number 2 { name: 'minimist', range: '>=1.2.5 <2.0.0', hasData: true } -579 silly addNameRange versions [ 'minimist', -579 silly addNameRange [ '0.0.0', -579 silly addNameRange '0.0.1', -579 silly addNameRange '0.0.2', -579 silly addNameRange '0.0.3', -579 silly addNameRange '0.0.4', -579 silly addNameRange '0.0.5', -579 silly addNameRange '0.0.6', -579 silly addNameRange '0.0.7', -579 silly addNameRange '0.0.8', -579 silly addNameRange '0.0.9', -579 silly addNameRange '0.0.10', -579 silly addNameRange '0.1.0', -579 silly addNameRange '0.2.0', -579 silly addNameRange '1.0.0', -579 silly addNameRange '1.1.0', -579 silly addNameRange '1.1.1', -579 silly addNameRange '1.1.2', -579 silly addNameRange '1.1.3', -579 silly addNameRange '1.2.0', -579 silly addNameRange '1.2.1', -579 silly addNameRange '1.2.2', -579 silly addNameRange '1.2.3', -579 silly addNameRange '1.2.4', -579 silly addNameRange '0.2.1', -579 silly addNameRange '1.2.5' ] ] -580 silly addNamed minimist@1.2.5 -581 verbose addNamed "1.2.5" is a plain semver version for minimist -582 silly mapToRegistry name minimist -583 silly mapToRegistry using default registry -584 silly mapToRegistry registry https://registry.npmjs.org/ -585 silly mapToRegistry uri https://registry.npmjs.org/minimist -586 verbose addRemoteTarball https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz not in flight; adding -587 verbose addRemoteTarball [ 'https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz', -587 verbose addRemoteTarball '67d66014b66a6a8aaa0c083c5fd58df4e4e97602' ] -588 info retry fetch attempt 1 at 13:48:57 -589 info attempt registry request try #1 at 13:48:57 -590 http fetch GET https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz -591 http fetch 200 https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz -592 silly fetchAndShaCheck shasum 67d66014b66a6a8aaa0c083c5fd58df4e4e97602 -593 verbose addTmpTarball /tmp/npm-5369-43d945e1/registry.npmjs.org/minimist/-/minimist-1.2.5.tgz not in flight; adding -594 verbose addTmpTarball already have metadata; skipping unpack for minimist@1.2.5 -595 silly cache afterAdd minimist@1.2.5 -596 verbose afterAdd /home/christine/.npm/minimist/1.2.5/package/package.json not in flight; writing -597 verbose afterAdd /home/christine/.npm/minimist/1.2.5/package/package.json written -598 silly fetchNamedPackageData asap -599 silly mapToRegistry name asap -600 silly mapToRegistry using default registry -601 silly mapToRegistry registry https://registry.npmjs.org/ -602 silly mapToRegistry uri https://registry.npmjs.org/asap -603 verbose request uri https://registry.npmjs.org/asap -604 verbose request no auth needed -605 info attempt registry request try #1 at 13:48:57 -606 http request GET https://registry.npmjs.org/asap -607 http 200 https://registry.npmjs.org/asap -608 verbose headers { date: 'Fri, 22 May 2020 11:48:57 GMT', -608 verbose headers 'content-type': 'application/json; charset=UTF-8', -608 verbose headers 'transfer-encoding': 'chunked', -608 verbose headers connection: 'keep-alive', -608 verbose headers 'set-cookie': -608 verbose headers [ '__cfduid=d3adb321249b44604682ca627e182cc9b1590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -608 verbose headers 'cf-ray': '59764fa3da5bdfc7-FRA', -608 verbose headers age: '5027', -608 verbose headers 'cache-control': 'public, max-age=300', -608 verbose headers etag: 'W/"b9309e9e7d929bcdb698cfa401f3696f"', -608 verbose headers 'last-modified': 'Sat, 26 May 2018 17:25:23 GMT', -608 verbose headers vary: 'accept-encoding, accept', -608 verbose headers 'cf-cache-status': 'HIT', -608 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -608 verbose headers server: 'cloudflare', -608 verbose headers 'content-encoding': 'gzip', -608 verbose headers 'cf-request-id': '02ddd01a6b0000dfc72a89b200000001' } -609 silly get cb [ 200, -609 silly get { date: 'Fri, 22 May 2020 11:48:57 GMT', -609 silly get 'content-type': 'application/json; charset=UTF-8', -609 silly get 'transfer-encoding': 'chunked', -609 silly get connection: 'keep-alive', -609 silly get 'set-cookie': -609 silly get [ '__cfduid=d3adb321249b44604682ca627e182cc9b1590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -609 silly get 'cf-ray': '59764fa3da5bdfc7-FRA', -609 silly get age: '5027', -609 silly get 'cache-control': 'public, max-age=300', -609 silly get etag: 'W/"b9309e9e7d929bcdb698cfa401f3696f"', -609 silly get 'last-modified': 'Sat, 26 May 2018 17:25:23 GMT', -609 silly get vary: 'accept-encoding, accept', -609 silly get 'cf-cache-status': 'HIT', -609 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -609 silly get server: 'cloudflare', -609 silly get 'content-encoding': 'gzip', -609 silly get 'cf-request-id': '02ddd01a6b0000dfc72a89b200000001' } ] -610 verbose get saving asap to /home/christine/.npm/registry.npmjs.org/asap/.cache.json -611 silly resolveWithNewModule asap@2.0.6 checking installable status -612 silly cache add args [ 'asap@~2.0.3', null ] -613 verbose cache add spec asap@~2.0.3 -614 silly cache add parsed spec Result { -614 silly cache add raw: 'asap@~2.0.3', -614 silly cache add scope: null, -614 silly cache add name: 'asap', -614 silly cache add rawSpec: '~2.0.3', -614 silly cache add spec: '>=2.0.3 <2.1.0', -614 silly cache add type: 'range' } -615 silly addNamed asap@>=2.0.3 <2.1.0 -616 verbose addNamed ">=2.0.3 <2.1.0" is a valid semver range for asap -617 silly addNameRange { name: 'asap', range: '>=2.0.3 <2.1.0', hasData: false } -618 silly mapToRegistry name asap -619 silly mapToRegistry using default registry -620 silly mapToRegistry registry https://registry.npmjs.org/ -621 silly mapToRegistry uri https://registry.npmjs.org/asap -622 verbose addNameRange registry:https://registry.npmjs.org/asap not in flight; fetching -623 verbose get https://registry.npmjs.org/asap not expired, no request -624 silly addNameRange number 2 { name: 'asap', range: '>=2.0.3 <2.1.0', hasData: true } -625 silly addNameRange versions [ 'asap', -625 silly addNameRange [ '0.0.0', -625 silly addNameRange '1.0.0', -625 silly addNameRange '2.0.0', -625 silly addNameRange '2.0.1', -625 silly addNameRange '2.0.2', -625 silly addNameRange '2.0.3', -625 silly addNameRange '2.0.4', -625 silly addNameRange '2.0.5', -625 silly addNameRange '2.0.6' ] ] -626 silly addNamed asap@2.0.6 -627 verbose addNamed "2.0.6" is a plain semver version for asap -628 silly mapToRegistry name asap -629 silly mapToRegistry using default registry -630 silly mapToRegistry registry https://registry.npmjs.org/ -631 silly mapToRegistry uri https://registry.npmjs.org/asap -632 verbose addRemoteTarball https://registry.npmjs.org/asap/-/asap-2.0.6.tgz not in flight; adding -633 verbose addRemoteTarball [ 'https://registry.npmjs.org/asap/-/asap-2.0.6.tgz', -633 verbose addRemoteTarball 'e50347611d7e690943208bbdafebcbc2fb866d46' ] -634 info retry fetch attempt 1 at 13:48:57 -635 info attempt registry request try #1 at 13:48:57 -636 http fetch GET https://registry.npmjs.org/asap/-/asap-2.0.6.tgz -637 http fetch 200 https://registry.npmjs.org/asap/-/asap-2.0.6.tgz -638 silly fetchAndShaCheck shasum e50347611d7e690943208bbdafebcbc2fb866d46 -639 verbose addTmpTarball /tmp/npm-5369-43d945e1/registry.npmjs.org/asap/-/asap-2.0.6.tgz not in flight; adding -640 verbose addTmpTarball already have metadata; skipping unpack for asap@2.0.6 -641 silly cache afterAdd asap@2.0.6 -642 verbose afterAdd /home/christine/.npm/asap/2.0.6/package/package.json not in flight; writing -643 verbose afterAdd /home/christine/.npm/asap/2.0.6/package/package.json written -644 silly fetchNamedPackageData aws-sign2 -645 silly mapToRegistry name aws-sign2 -646 silly mapToRegistry using default registry -647 silly mapToRegistry registry https://registry.npmjs.org/ -648 silly mapToRegistry uri https://registry.npmjs.org/aws-sign2 -649 silly fetchNamedPackageData aws4 -650 silly mapToRegistry name aws4 -651 silly mapToRegistry using default registry -652 silly mapToRegistry registry https://registry.npmjs.org/ -653 silly mapToRegistry uri https://registry.npmjs.org/aws4 -654 silly fetchNamedPackageData caseless -655 silly mapToRegistry name caseless -656 silly mapToRegistry using default registry -657 silly mapToRegistry registry https://registry.npmjs.org/ -658 silly mapToRegistry uri https://registry.npmjs.org/caseless -659 silly fetchNamedPackageData combined-stream -660 silly mapToRegistry name combined-stream -661 silly mapToRegistry using default registry -662 silly mapToRegistry registry https://registry.npmjs.org/ -663 silly mapToRegistry uri https://registry.npmjs.org/combined-stream -664 silly fetchNamedPackageData extend -665 silly mapToRegistry name extend -666 silly mapToRegistry using default registry -667 silly mapToRegistry registry https://registry.npmjs.org/ -668 silly mapToRegistry uri https://registry.npmjs.org/extend -669 silly fetchNamedPackageData forever-agent -670 silly mapToRegistry name forever-agent -671 silly mapToRegistry using default registry -672 silly mapToRegistry registry https://registry.npmjs.org/ -673 silly mapToRegistry uri https://registry.npmjs.org/forever-agent -674 silly fetchNamedPackageData form-data -675 silly mapToRegistry name form-data -676 silly mapToRegistry using default registry -677 silly mapToRegistry registry https://registry.npmjs.org/ -678 silly mapToRegistry uri https://registry.npmjs.org/form-data -679 silly fetchNamedPackageData har-validator -680 silly mapToRegistry name har-validator -681 silly mapToRegistry using default registry -682 silly mapToRegistry registry https://registry.npmjs.org/ -683 silly mapToRegistry uri https://registry.npmjs.org/har-validator -684 silly fetchNamedPackageData http-signature -685 silly mapToRegistry name http-signature -686 silly mapToRegistry using default registry -687 silly mapToRegistry registry https://registry.npmjs.org/ -688 silly mapToRegistry uri https://registry.npmjs.org/http-signature -689 silly fetchNamedPackageData is-typedarray -690 silly mapToRegistry name is-typedarray -691 silly mapToRegistry using default registry -692 silly mapToRegistry registry https://registry.npmjs.org/ -693 silly mapToRegistry uri https://registry.npmjs.org/is-typedarray -694 silly fetchNamedPackageData isstream -695 silly mapToRegistry name isstream -696 silly mapToRegistry using default registry -697 silly mapToRegistry registry https://registry.npmjs.org/ -698 silly mapToRegistry uri https://registry.npmjs.org/isstream -699 silly fetchNamedPackageData json-stringify-safe -700 silly mapToRegistry name json-stringify-safe -701 silly mapToRegistry using default registry -702 silly mapToRegistry registry https://registry.npmjs.org/ -703 silly mapToRegistry uri https://registry.npmjs.org/json-stringify-safe -704 silly fetchNamedPackageData mime-types -705 silly mapToRegistry name mime-types -706 silly mapToRegistry using default registry -707 silly mapToRegistry registry https://registry.npmjs.org/ -708 silly mapToRegistry uri https://registry.npmjs.org/mime-types -709 silly fetchNamedPackageData oauth-sign -710 silly mapToRegistry name oauth-sign -711 silly mapToRegistry using default registry -712 silly mapToRegistry registry https://registry.npmjs.org/ -713 silly mapToRegistry uri https://registry.npmjs.org/oauth-sign -714 silly fetchNamedPackageData performance-now -715 silly mapToRegistry name performance-now -716 silly mapToRegistry using default registry -717 silly mapToRegistry registry https://registry.npmjs.org/ -718 silly mapToRegistry uri https://registry.npmjs.org/performance-now -719 silly fetchNamedPackageData qs -720 silly mapToRegistry name qs -721 silly mapToRegistry using default registry -722 silly mapToRegistry registry https://registry.npmjs.org/ -723 silly mapToRegistry uri https://registry.npmjs.org/qs -724 silly fetchNamedPackageData safe-buffer -725 silly mapToRegistry name safe-buffer -726 silly mapToRegistry using default registry -727 silly mapToRegistry registry https://registry.npmjs.org/ -728 silly mapToRegistry uri https://registry.npmjs.org/safe-buffer -729 silly fetchNamedPackageData tough-cookie -730 silly mapToRegistry name tough-cookie -731 silly mapToRegistry using default registry -732 silly mapToRegistry registry https://registry.npmjs.org/ -733 silly mapToRegistry uri https://registry.npmjs.org/tough-cookie -734 silly fetchNamedPackageData tunnel-agent -735 silly mapToRegistry name tunnel-agent -736 silly mapToRegistry using default registry -737 silly mapToRegistry registry https://registry.npmjs.org/ -738 silly mapToRegistry uri https://registry.npmjs.org/tunnel-agent -739 silly fetchNamedPackageData uuid -740 silly mapToRegistry name uuid -741 silly mapToRegistry using default registry -742 silly mapToRegistry registry https://registry.npmjs.org/ -743 silly mapToRegistry uri https://registry.npmjs.org/uuid -744 verbose request uri https://registry.npmjs.org/aws-sign2 -745 verbose request no auth needed -746 info attempt registry request try #1 at 13:48:57 -747 verbose etag W/"7bf763d2cccd0806178c5c3e43895950" -748 verbose lastModified Sat, 26 May 2018 17:48:52 GMT -749 http request GET https://registry.npmjs.org/aws-sign2 -750 verbose request uri https://registry.npmjs.org/aws4 -751 verbose request no auth needed -752 info attempt registry request try #1 at 13:48:57 -753 verbose etag W/"95c9834de9b7164b9a063970ba631035" -754 verbose lastModified Mon, 13 Jan 2020 23:25:51 GMT -755 http request GET https://registry.npmjs.org/aws4 -756 verbose request uri https://registry.npmjs.org/caseless -757 verbose request no auth needed -758 info attempt registry request try #1 at 13:48:57 -759 verbose etag W/"37dc2c2e48fd048da76bb52a97386418" -760 verbose lastModified Sat, 26 May 2018 19:27:25 GMT -761 http request GET https://registry.npmjs.org/caseless -762 verbose request uri https://registry.npmjs.org/combined-stream -763 verbose request no auth needed -764 info attempt registry request try #1 at 13:48:57 -765 verbose etag W/"01d038e7b9fcfd5e5654a7d7003bfe74" -766 verbose lastModified Sun, 12 May 2019 17:49:50 GMT -767 http request GET https://registry.npmjs.org/combined-stream -768 verbose request uri https://registry.npmjs.org/extend -769 verbose request no auth needed -770 info attempt registry request try #1 at 13:48:57 -771 verbose etag W/"924fa39abddd399eb964b1aa611da651" -772 verbose lastModified Thu, 19 Jul 2018 22:12:47 GMT -773 http request GET https://registry.npmjs.org/extend -774 verbose request uri https://registry.npmjs.org/forever-agent -775 verbose request no auth needed -776 info attempt registry request try #1 at 13:48:57 -777 verbose etag W/"9e6ef96089dd23304c2ea7d2fb731c9c" -778 verbose lastModified Sun, 27 May 2018 01:06:13 GMT -779 http request GET https://registry.npmjs.org/forever-agent -780 verbose request uri https://registry.npmjs.org/form-data -781 verbose request no auth needed -782 info attempt registry request try #1 at 13:48:57 -783 verbose etag W/"5e211bf0fabf58f7b2a855c8b4ce28a4" -784 verbose lastModified Wed, 06 Nov 2019 07:57:03 GMT -785 http request GET https://registry.npmjs.org/form-data -786 verbose request uri https://registry.npmjs.org/har-validator -787 verbose request no auth needed -788 info attempt registry request try #1 at 13:48:57 -789 verbose etag W/"a261ac4614f4e022065b83613ee209ab" -790 verbose lastModified Fri, 04 Jan 2019 02:36:17 GMT -791 http request GET https://registry.npmjs.org/har-validator -792 verbose request uri https://registry.npmjs.org/http-signature -793 verbose request no auth needed -794 info attempt registry request try #1 at 13:48:57 -795 verbose etag W/"a22cccd7d585d00e5e26fe5111bee01d" -796 verbose lastModified Fri, 13 Dec 2019 16:32:29 GMT -797 http request GET https://registry.npmjs.org/http-signature -798 verbose request uri https://registry.npmjs.org/is-typedarray -799 verbose request no auth needed -800 info attempt registry request try #1 at 13:48:57 -801 verbose etag W/"e7b88219ebe721b877b678c51795c9c5" -802 verbose lastModified Sun, 27 May 2018 04:59:55 GMT -803 http request GET https://registry.npmjs.org/is-typedarray -804 verbose request uri https://registry.npmjs.org/isstream -805 verbose request no auth needed -806 info attempt registry request try #1 at 13:48:57 -807 verbose etag W/"9dc7f37e087df077683bf238c847ad45" -808 verbose lastModified Sun, 27 May 2018 05:02:31 GMT -809 http request GET https://registry.npmjs.org/isstream -810 verbose request uri https://registry.npmjs.org/json-stringify-safe -811 verbose request no auth needed -812 info attempt registry request try #1 at 13:48:57 -813 verbose etag W/"7f39a9aafcaefe8efbf43a9f2e56c4eb" -814 verbose lastModified Sun, 27 May 2018 05:41:03 GMT -815 http request GET https://registry.npmjs.org/json-stringify-safe -816 verbose request uri https://registry.npmjs.org/oauth-sign -817 verbose request no auth needed -818 info attempt registry request try #1 at 13:48:57 -819 verbose etag W/"3032c1efe9ec61d748d027a1da2bab61" -820 verbose lastModified Thu, 02 Aug 2018 18:04:02 GMT -821 http request GET https://registry.npmjs.org/oauth-sign -822 verbose request uri https://registry.npmjs.org/mime-types -823 verbose request no auth needed -824 info attempt registry request try #1 at 13:48:57 -825 verbose etag W/"ace0d1d2bbdfabcc2f0fdf5db2297cb9" -826 verbose lastModified Mon, 06 Jan 2020 03:47:58 GMT -827 http request GET https://registry.npmjs.org/mime-types -828 verbose request uri https://registry.npmjs.org/performance-now -829 verbose request no auth needed -830 info attempt registry request try #1 at 13:48:57 -831 verbose etag W/"5f12ad497b3e39323dcdde75c34f5767" -832 verbose lastModified Sun, 27 May 2018 12:05:53 GMT -833 http request GET https://registry.npmjs.org/performance-now -834 verbose request uri https://registry.npmjs.org/qs -835 verbose request no auth needed -836 info attempt registry request try #1 at 13:48:57 -837 verbose etag W/"ccaef4541845c31c4cc05bcf8dd00ce6" -838 verbose lastModified Fri, 08 Nov 2019 06:46:39 GMT -839 http request GET https://registry.npmjs.org/qs -840 verbose request uri https://registry.npmjs.org/tough-cookie -841 verbose request no auth needed -842 info attempt registry request try #1 at 13:48:57 -843 verbose etag W/"f1d93d88b646bb4c354f8c481852a1b7" -844 verbose lastModified Tue, 05 Feb 2019 03:09:49 GMT -845 http request GET https://registry.npmjs.org/tough-cookie -846 verbose request uri https://registry.npmjs.org/tunnel-agent -847 verbose request no auth needed -848 info attempt registry request try #1 at 13:48:57 -849 verbose etag W/"03911fc1f433b33bccf8a4a2a5de2375" -850 verbose lastModified Sun, 27 May 2018 20:02:57 GMT -851 http request GET https://registry.npmjs.org/tunnel-agent -852 verbose request uri https://registry.npmjs.org/safe-buffer -853 verbose request no auth needed -854 info attempt registry request try #1 at 13:48:57 -855 verbose etag W/"00b820fed08175238fc3473b2b3e0278" -856 verbose lastModified Fri, 05 Jul 2019 18:04:37 GMT -857 http request GET https://registry.npmjs.org/safe-buffer -858 verbose request uri https://registry.npmjs.org/uuid -859 verbose request no auth needed -860 info attempt registry request try #1 at 13:48:57 -861 verbose etag W/"e1230e67a078f82b785335adbba5abd3" -862 verbose lastModified Thu, 16 Jan 2020 21:05:42 GMT -863 http request GET https://registry.npmjs.org/uuid -864 http 304 https://registry.npmjs.org/aws-sign2 -865 verbose headers { date: 'Fri, 22 May 2020 11:48:57 GMT', -865 verbose headers connection: 'keep-alive', -865 verbose headers 'set-cookie': -865 verbose headers [ '__cfduid=d6501da2c31d6ed13bf98ae2d437c1a051590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -865 verbose headers 'cf-ray': '59764fa49cf4d6e9-FRA', -865 verbose headers age: '5657', -865 verbose headers 'cache-control': 'public, max-age=300', -865 verbose headers etag: '"7bf763d2cccd0806178c5c3e43895950"', -865 verbose headers 'last-modified': 'Sat, 26 May 2018 17:48:52 GMT', -865 verbose headers vary: 'Accept-Encoding', -865 verbose headers 'cf-cache-status': 'HIT', -865 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -865 verbose headers server: 'cloudflare', -865 verbose headers 'cf-request-id': '02ddd01ae00000d6e975b28200000001' } -866 silly get cb [ 304, -866 silly get { date: 'Fri, 22 May 2020 11:48:57 GMT', -866 silly get connection: 'keep-alive', -866 silly get 'set-cookie': -866 silly get [ '__cfduid=d6501da2c31d6ed13bf98ae2d437c1a051590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -866 silly get 'cf-ray': '59764fa49cf4d6e9-FRA', -866 silly get age: '5657', -866 silly get 'cache-control': 'public, max-age=300', -866 silly get etag: '"7bf763d2cccd0806178c5c3e43895950"', -866 silly get 'last-modified': 'Sat, 26 May 2018 17:48:52 GMT', -866 silly get vary: 'Accept-Encoding', -866 silly get 'cf-cache-status': 'HIT', -866 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -866 silly get server: 'cloudflare', -866 silly get 'cf-request-id': '02ddd01ae00000d6e975b28200000001' } ] -867 verbose etag https://registry.npmjs.org/aws-sign2 from cache -868 verbose get saving aws-sign2 to /home/christine/.npm/registry.npmjs.org/aws-sign2/.cache.json -869 silly resolveWithNewModule aws-sign2@0.7.0 checking installable status -870 silly cache add args [ 'aws-sign2@~0.7.0', null ] -871 verbose cache add spec aws-sign2@~0.7.0 -872 silly cache add parsed spec Result { -872 silly cache add raw: 'aws-sign2@~0.7.0', -872 silly cache add scope: null, -872 silly cache add name: 'aws-sign2', -872 silly cache add rawSpec: '~0.7.0', -872 silly cache add spec: '>=0.7.0 <0.8.0', -872 silly cache add type: 'range' } -873 silly addNamed aws-sign2@>=0.7.0 <0.8.0 -874 verbose addNamed ">=0.7.0 <0.8.0" is a valid semver range for aws-sign2 -875 silly addNameRange { name: 'aws-sign2', range: '>=0.7.0 <0.8.0', hasData: false } -876 silly mapToRegistry name aws-sign2 -877 silly mapToRegistry using default registry -878 silly mapToRegistry registry https://registry.npmjs.org/ -879 silly mapToRegistry uri https://registry.npmjs.org/aws-sign2 -880 verbose addNameRange registry:https://registry.npmjs.org/aws-sign2 not in flight; fetching -881 verbose get https://registry.npmjs.org/aws-sign2 not expired, no request -882 silly addNameRange number 2 { name: 'aws-sign2', range: '>=0.7.0 <0.8.0', hasData: true } -883 silly addNameRange versions [ 'aws-sign2', [ '0.4.0', '0.5.0', '0.6.0', '0.7.0' ] ] -884 silly addNamed aws-sign2@0.7.0 -885 verbose addNamed "0.7.0" is a plain semver version for aws-sign2 -886 silly cache afterAdd aws-sign2@0.7.0 -887 verbose afterAdd /home/christine/.npm/aws-sign2/0.7.0/package/package.json not in flight; writing -888 verbose afterAdd /home/christine/.npm/aws-sign2/0.7.0/package/package.json written -889 http 304 https://registry.npmjs.org/form-data -890 verbose headers { date: 'Fri, 22 May 2020 11:48:57 GMT', -890 verbose headers connection: 'keep-alive', -890 verbose headers 'set-cookie': -890 verbose headers [ '__cfduid=d850f5e63141a007f397139d82cf517f01590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -890 verbose headers 'cf-ray': '59764fa4ba1305fd-FRA', -890 verbose headers age: '5355', -890 verbose headers 'cache-control': 'public, max-age=300', -890 verbose headers etag: '"5e211bf0fabf58f7b2a855c8b4ce28a4"', -890 verbose headers 'last-modified': 'Wed, 06 Nov 2019 07:57:03 GMT', -890 verbose headers vary: 'Accept-Encoding', -890 verbose headers 'cf-cache-status': 'HIT', -890 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -890 verbose headers server: 'cloudflare', -890 verbose headers 'cf-request-id': '02ddd01af4000005fd8da55200000001' } -891 silly get cb [ 304, -891 silly get { date: 'Fri, 22 May 2020 11:48:57 GMT', -891 silly get connection: 'keep-alive', -891 silly get 'set-cookie': -891 silly get [ '__cfduid=d850f5e63141a007f397139d82cf517f01590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -891 silly get 'cf-ray': '59764fa4ba1305fd-FRA', -891 silly get age: '5355', -891 silly get 'cache-control': 'public, max-age=300', -891 silly get etag: '"5e211bf0fabf58f7b2a855c8b4ce28a4"', -891 silly get 'last-modified': 'Wed, 06 Nov 2019 07:57:03 GMT', -891 silly get vary: 'Accept-Encoding', -891 silly get 'cf-cache-status': 'HIT', -891 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -891 silly get server: 'cloudflare', -891 silly get 'cf-request-id': '02ddd01af4000005fd8da55200000001' } ] -892 verbose etag https://registry.npmjs.org/form-data from cache -893 verbose get saving form-data to /home/christine/.npm/registry.npmjs.org/form-data/.cache.json -894 http 304 https://registry.npmjs.org/har-validator -895 verbose headers { date: 'Fri, 22 May 2020 11:48:57 GMT', -895 verbose headers connection: 'keep-alive', -895 verbose headers 'set-cookie': -895 verbose headers [ '__cfduid=da26bd26924c67acdff0555528c279ae61590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -895 verbose headers 'cf-ray': '59764fa4b9a6c272-FRA', -895 verbose headers age: '5655', -895 verbose headers 'cache-control': 'public, max-age=300', -895 verbose headers etag: '"a261ac4614f4e022065b83613ee209ab"', -895 verbose headers 'last-modified': 'Fri, 04 Jan 2019 02:36:17 GMT', -895 verbose headers vary: 'Accept-Encoding', -895 verbose headers 'cf-cache-status': 'HIT', -895 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -895 verbose headers server: 'cloudflare', -895 verbose headers 'cf-request-id': '02ddd01af40000c272388b2200000001' } -896 silly get cb [ 304, -896 silly get { date: 'Fri, 22 May 2020 11:48:57 GMT', -896 silly get connection: 'keep-alive', -896 silly get 'set-cookie': -896 silly get [ '__cfduid=da26bd26924c67acdff0555528c279ae61590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -896 silly get 'cf-ray': '59764fa4b9a6c272-FRA', -896 silly get age: '5655', -896 silly get 'cache-control': 'public, max-age=300', -896 silly get etag: '"a261ac4614f4e022065b83613ee209ab"', -896 silly get 'last-modified': 'Fri, 04 Jan 2019 02:36:17 GMT', -896 silly get vary: 'Accept-Encoding', -896 silly get 'cf-cache-status': 'HIT', -896 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -896 silly get server: 'cloudflare', -896 silly get 'cf-request-id': '02ddd01af40000c272388b2200000001' } ] -897 verbose etag https://registry.npmjs.org/har-validator from cache -898 verbose get saving har-validator to /home/christine/.npm/registry.npmjs.org/har-validator/.cache.json -899 http 304 https://registry.npmjs.org/caseless -900 verbose headers { date: 'Fri, 22 May 2020 11:48:57 GMT', -900 verbose headers connection: 'keep-alive', -900 verbose headers 'set-cookie': -900 verbose headers [ '__cfduid=d1ba0ebb5b0def6eb801cd0e2e5f4b1541590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -900 verbose headers 'cf-ray': '59764fa4b9de325c-FRA', -900 verbose headers age: '5655', -900 verbose headers 'cache-control': 'public, max-age=300', -900 verbose headers etag: '"37dc2c2e48fd048da76bb52a97386418"', -900 verbose headers 'last-modified': 'Sat, 26 May 2018 19:27:25 GMT', -900 verbose headers vary: 'Accept-Encoding', -900 verbose headers 'cf-cache-status': 'HIT', -900 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -900 verbose headers server: 'cloudflare', -900 verbose headers 'cf-request-id': '02ddd01af40000325c4c810200000001' } -901 silly get cb [ 304, -901 silly get { date: 'Fri, 22 May 2020 11:48:57 GMT', -901 silly get connection: 'keep-alive', -901 silly get 'set-cookie': -901 silly get [ '__cfduid=d1ba0ebb5b0def6eb801cd0e2e5f4b1541590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -901 silly get 'cf-ray': '59764fa4b9de325c-FRA', -901 silly get age: '5655', -901 silly get 'cache-control': 'public, max-age=300', -901 silly get etag: '"37dc2c2e48fd048da76bb52a97386418"', -901 silly get 'last-modified': 'Sat, 26 May 2018 19:27:25 GMT', -901 silly get vary: 'Accept-Encoding', -901 silly get 'cf-cache-status': 'HIT', -901 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -901 silly get server: 'cloudflare', -901 silly get 'cf-request-id': '02ddd01af40000325c4c810200000001' } ] -902 verbose etag https://registry.npmjs.org/caseless from cache -903 verbose get saving caseless to /home/christine/.npm/registry.npmjs.org/caseless/.cache.json -904 http 304 https://registry.npmjs.org/is-typedarray -905 verbose headers { date: 'Fri, 22 May 2020 11:48:57 GMT', -905 verbose headers connection: 'keep-alive', -905 verbose headers 'set-cookie': -905 verbose headers [ '__cfduid=d2f816bc144e9d07683b5f46095af6dd51590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -905 verbose headers 'cf-ray': '59764fa4bc4a6347-FRA', -905 verbose headers age: '5655', -905 verbose headers 'cache-control': 'public, max-age=300', -905 verbose headers etag: '"e7b88219ebe721b877b678c51795c9c5"', -905 verbose headers 'last-modified': 'Sun, 27 May 2018 04:59:55 GMT', -905 verbose headers vary: 'Accept-Encoding', -905 verbose headers 'cf-cache-status': 'HIT', -905 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -905 verbose headers server: 'cloudflare', -905 verbose headers 'cf-request-id': '02ddd01af400006347e88ad200000001' } -906 silly get cb [ 304, -906 silly get { date: 'Fri, 22 May 2020 11:48:57 GMT', -906 silly get connection: 'keep-alive', -906 silly get 'set-cookie': -906 silly get [ '__cfduid=d2f816bc144e9d07683b5f46095af6dd51590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -906 silly get 'cf-ray': '59764fa4bc4a6347-FRA', -906 silly get age: '5655', -906 silly get 'cache-control': 'public, max-age=300', -906 silly get etag: '"e7b88219ebe721b877b678c51795c9c5"', -906 silly get 'last-modified': 'Sun, 27 May 2018 04:59:55 GMT', -906 silly get vary: 'Accept-Encoding', -906 silly get 'cf-cache-status': 'HIT', -906 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -906 silly get server: 'cloudflare', -906 silly get 'cf-request-id': '02ddd01af400006347e88ad200000001' } ] -907 verbose etag https://registry.npmjs.org/is-typedarray from cache -908 verbose get saving is-typedarray to /home/christine/.npm/registry.npmjs.org/is-typedarray/.cache.json -909 http 304 https://registry.npmjs.org/forever-agent -910 verbose headers { date: 'Fri, 22 May 2020 11:48:57 GMT', -910 verbose headers connection: 'keep-alive', -910 verbose headers 'set-cookie': -910 verbose headers [ '__cfduid=d69b2d3a0ed04b60eed400c38cdaaf9511590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -910 verbose headers 'cf-ray': '59764fa4b87c648b-FRA', -910 verbose headers age: '5655', -910 verbose headers 'cache-control': 'public, max-age=300', -910 verbose headers etag: '"9e6ef96089dd23304c2ea7d2fb731c9c"', -910 verbose headers 'last-modified': 'Sun, 27 May 2018 01:06:13 GMT', -910 verbose headers vary: 'Accept-Encoding', -910 verbose headers 'cf-cache-status': 'HIT', -910 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -910 verbose headers server: 'cloudflare', -910 verbose headers 'cf-request-id': '02ddd01af40000648bda003200000001' } -911 silly get cb [ 304, -911 silly get { date: 'Fri, 22 May 2020 11:48:57 GMT', -911 silly get connection: 'keep-alive', -911 silly get 'set-cookie': -911 silly get [ '__cfduid=d69b2d3a0ed04b60eed400c38cdaaf9511590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -911 silly get 'cf-ray': '59764fa4b87c648b-FRA', -911 silly get age: '5655', -911 silly get 'cache-control': 'public, max-age=300', -911 silly get etag: '"9e6ef96089dd23304c2ea7d2fb731c9c"', -911 silly get 'last-modified': 'Sun, 27 May 2018 01:06:13 GMT', -911 silly get vary: 'Accept-Encoding', -911 silly get 'cf-cache-status': 'HIT', -911 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -911 silly get server: 'cloudflare', -911 silly get 'cf-request-id': '02ddd01af40000648bda003200000001' } ] -912 verbose etag https://registry.npmjs.org/forever-agent from cache -913 verbose get saving forever-agent to /home/christine/.npm/registry.npmjs.org/forever-agent/.cache.json -914 silly resolveWithNewModule form-data@2.3.3 checking installable status -915 silly cache add args [ 'form-data@~2.3.2', null ] -916 verbose cache add spec form-data@~2.3.2 -917 silly cache add parsed spec Result { -917 silly cache add raw: 'form-data@~2.3.2', -917 silly cache add scope: null, -917 silly cache add name: 'form-data', -917 silly cache add rawSpec: '~2.3.2', -917 silly cache add spec: '>=2.3.2 <2.4.0', -917 silly cache add type: 'range' } -918 silly addNamed form-data@>=2.3.2 <2.4.0 -919 verbose addNamed ">=2.3.2 <2.4.0" is a valid semver range for form-data -920 silly addNameRange { name: 'form-data', range: '>=2.3.2 <2.4.0', hasData: false } -921 silly mapToRegistry name form-data -922 silly mapToRegistry using default registry -923 silly mapToRegistry registry https://registry.npmjs.org/ -924 silly mapToRegistry uri https://registry.npmjs.org/form-data -925 verbose addNameRange registry:https://registry.npmjs.org/form-data not in flight; fetching -926 silly resolveWithNewModule har-validator@5.1.3 checking installable status -927 silly cache add args [ 'har-validator@~5.1.3', null ] -928 verbose cache add spec har-validator@~5.1.3 -929 silly cache add parsed spec Result { -929 silly cache add raw: 'har-validator@~5.1.3', -929 silly cache add scope: null, -929 silly cache add name: 'har-validator', -929 silly cache add rawSpec: '~5.1.3', -929 silly cache add spec: '>=5.1.3 <5.2.0', -929 silly cache add type: 'range' } -930 silly addNamed har-validator@>=5.1.3 <5.2.0 -931 verbose addNamed ">=5.1.3 <5.2.0" is a valid semver range for har-validator -932 silly addNameRange { name: 'har-validator', -932 silly addNameRange range: '>=5.1.3 <5.2.0', -932 silly addNameRange hasData: false } -933 silly mapToRegistry name har-validator -934 silly mapToRegistry using default registry -935 silly mapToRegistry registry https://registry.npmjs.org/ -936 silly mapToRegistry uri https://registry.npmjs.org/har-validator -937 verbose addNameRange registry:https://registry.npmjs.org/har-validator not in flight; fetching -938 http 304 https://registry.npmjs.org/extend -939 verbose headers { date: 'Fri, 22 May 2020 11:48:57 GMT', -939 verbose headers connection: 'keep-alive', -939 verbose headers 'set-cookie': -939 verbose headers [ '__cfduid=d29dbbf504bb01fed0e3216d3e4c64fcc1590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -939 verbose headers 'cf-ray': '59764fa4bc61175a-FRA', -939 verbose headers age: '5656', -939 verbose headers 'cache-control': 'public, max-age=300', -939 verbose headers etag: '"924fa39abddd399eb964b1aa611da651"', -939 verbose headers 'last-modified': 'Thu, 19 Jul 2018 22:12:47 GMT', -939 verbose headers vary: 'Accept-Encoding', -939 verbose headers 'cf-cache-status': 'HIT', -939 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -939 verbose headers server: 'cloudflare', -939 verbose headers 'cf-request-id': '02ddd01af40000175a1e1fb200000001' } -940 silly get cb [ 304, -940 silly get { date: 'Fri, 22 May 2020 11:48:57 GMT', -940 silly get connection: 'keep-alive', -940 silly get 'set-cookie': -940 silly get [ '__cfduid=d29dbbf504bb01fed0e3216d3e4c64fcc1590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -940 silly get 'cf-ray': '59764fa4bc61175a-FRA', -940 silly get age: '5656', -940 silly get 'cache-control': 'public, max-age=300', -940 silly get etag: '"924fa39abddd399eb964b1aa611da651"', -940 silly get 'last-modified': 'Thu, 19 Jul 2018 22:12:47 GMT', -940 silly get vary: 'Accept-Encoding', -940 silly get 'cf-cache-status': 'HIT', -940 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -940 silly get server: 'cloudflare', -940 silly get 'cf-request-id': '02ddd01af40000175a1e1fb200000001' } ] -941 verbose etag https://registry.npmjs.org/extend from cache -942 verbose get saving extend to /home/christine/.npm/registry.npmjs.org/extend/.cache.json -943 http 304 https://registry.npmjs.org/combined-stream -944 verbose headers { date: 'Fri, 22 May 2020 11:48:57 GMT', -944 verbose headers connection: 'keep-alive', -944 verbose headers 'set-cookie': -944 verbose headers [ '__cfduid=de2f13b30bfc4f0fe2c257a08857023531590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -944 verbose headers 'cf-ray': '59764fa4b963d715-FRA', -944 verbose headers age: '5355', -944 verbose headers 'cache-control': 'public, max-age=300', -944 verbose headers etag: '"01d038e7b9fcfd5e5654a7d7003bfe74"', -944 verbose headers 'last-modified': 'Sun, 12 May 2019 17:49:50 GMT', -944 verbose headers vary: 'Accept-Encoding', -944 verbose headers 'cf-cache-status': 'HIT', -944 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -944 verbose headers server: 'cloudflare', -944 verbose headers 'cf-request-id': '02ddd01af40000d715c11f3200000001' } -945 silly get cb [ 304, -945 silly get { date: 'Fri, 22 May 2020 11:48:57 GMT', -945 silly get connection: 'keep-alive', -945 silly get 'set-cookie': -945 silly get [ '__cfduid=de2f13b30bfc4f0fe2c257a08857023531590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -945 silly get 'cf-ray': '59764fa4b963d715-FRA', -945 silly get age: '5355', -945 silly get 'cache-control': 'public, max-age=300', -945 silly get etag: '"01d038e7b9fcfd5e5654a7d7003bfe74"', -945 silly get 'last-modified': 'Sun, 12 May 2019 17:49:50 GMT', -945 silly get vary: 'Accept-Encoding', -945 silly get 'cf-cache-status': 'HIT', -945 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -945 silly get server: 'cloudflare', -945 silly get 'cf-request-id': '02ddd01af40000d715c11f3200000001' } ] -946 verbose etag https://registry.npmjs.org/combined-stream from cache -947 verbose get saving combined-stream to /home/christine/.npm/registry.npmjs.org/combined-stream/.cache.json -948 silly resolveWithNewModule is-typedarray@1.0.0 checking installable status -949 silly cache add args [ 'is-typedarray@~1.0.0', null ] -950 verbose cache add spec is-typedarray@~1.0.0 -951 silly cache add parsed spec Result { -951 silly cache add raw: 'is-typedarray@~1.0.0', -951 silly cache add scope: null, -951 silly cache add name: 'is-typedarray', -951 silly cache add rawSpec: '~1.0.0', -951 silly cache add spec: '>=1.0.0 <1.1.0', -951 silly cache add type: 'range' } -952 silly addNamed is-typedarray@>=1.0.0 <1.1.0 -953 verbose addNamed ">=1.0.0 <1.1.0" is a valid semver range for is-typedarray -954 silly addNameRange { name: 'is-typedarray', -954 silly addNameRange range: '>=1.0.0 <1.1.0', -954 silly addNameRange hasData: false } -955 silly mapToRegistry name is-typedarray -956 silly mapToRegistry using default registry -957 silly mapToRegistry registry https://registry.npmjs.org/ -958 silly mapToRegistry uri https://registry.npmjs.org/is-typedarray -959 verbose addNameRange registry:https://registry.npmjs.org/is-typedarray not in flight; fetching -960 silly resolveWithNewModule caseless@0.12.0 checking installable status -961 silly cache add args [ 'caseless@~0.12.0', null ] -962 verbose cache add spec caseless@~0.12.0 -963 silly cache add parsed spec Result { -963 silly cache add raw: 'caseless@~0.12.0', -963 silly cache add scope: null, -963 silly cache add name: 'caseless', -963 silly cache add rawSpec: '~0.12.0', -963 silly cache add spec: '>=0.12.0 <0.13.0', -963 silly cache add type: 'range' } -964 silly addNamed caseless@>=0.12.0 <0.13.0 -965 verbose addNamed ">=0.12.0 <0.13.0" is a valid semver range for caseless -966 silly addNameRange { name: 'caseless', range: '>=0.12.0 <0.13.0', hasData: false } -967 silly mapToRegistry name caseless -968 silly mapToRegistry using default registry -969 silly mapToRegistry registry https://registry.npmjs.org/ -970 silly mapToRegistry uri https://registry.npmjs.org/caseless -971 verbose addNameRange registry:https://registry.npmjs.org/caseless not in flight; fetching -972 http 304 https://registry.npmjs.org/aws4 -973 verbose headers { date: 'Fri, 22 May 2020 11:48:57 GMT', -973 verbose headers connection: 'keep-alive', -973 verbose headers 'set-cookie': -973 verbose headers [ '__cfduid=d0651730248de197cc0bf9e0b3e6fc5ab1590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -973 verbose headers 'cf-ray': '59764fa4bb7d6413-FRA', -973 verbose headers age: '5655', -973 verbose headers 'cache-control': 'public, max-age=300', -973 verbose headers etag: '"95c9834de9b7164b9a063970ba631035"', -973 verbose headers 'last-modified': 'Mon, 13 Jan 2020 23:25:51 GMT', -973 verbose headers vary: 'Accept-Encoding', -973 verbose headers 'cf-cache-status': 'HIT', -973 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -973 verbose headers server: 'cloudflare', -973 verbose headers 'cf-request-id': '02ddd01af4000064135f8e3200000001' } -974 silly get cb [ 304, -974 silly get { date: 'Fri, 22 May 2020 11:48:57 GMT', -974 silly get connection: 'keep-alive', -974 silly get 'set-cookie': -974 silly get [ '__cfduid=d0651730248de197cc0bf9e0b3e6fc5ab1590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -974 silly get 'cf-ray': '59764fa4bb7d6413-FRA', -974 silly get age: '5655', -974 silly get 'cache-control': 'public, max-age=300', -974 silly get etag: '"95c9834de9b7164b9a063970ba631035"', -974 silly get 'last-modified': 'Mon, 13 Jan 2020 23:25:51 GMT', -974 silly get vary: 'Accept-Encoding', -974 silly get 'cf-cache-status': 'HIT', -974 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -974 silly get server: 'cloudflare', -974 silly get 'cf-request-id': '02ddd01af4000064135f8e3200000001' } ] -975 verbose etag https://registry.npmjs.org/aws4 from cache -976 verbose get saving aws4 to /home/christine/.npm/registry.npmjs.org/aws4/.cache.json -977 silly resolveWithNewModule forever-agent@0.6.1 checking installable status -978 silly cache add args [ 'forever-agent@~0.6.1', null ] -979 verbose cache add spec forever-agent@~0.6.1 -980 silly cache add parsed spec Result { -980 silly cache add raw: 'forever-agent@~0.6.1', -980 silly cache add scope: null, -980 silly cache add name: 'forever-agent', -980 silly cache add rawSpec: '~0.6.1', -980 silly cache add spec: '>=0.6.1 <0.7.0', -980 silly cache add type: 'range' } -981 silly addNamed forever-agent@>=0.6.1 <0.7.0 -982 verbose addNamed ">=0.6.1 <0.7.0" is a valid semver range for forever-agent -983 silly addNameRange { name: 'forever-agent', -983 silly addNameRange range: '>=0.6.1 <0.7.0', -983 silly addNameRange hasData: false } -984 silly mapToRegistry name forever-agent -985 silly mapToRegistry using default registry -986 silly mapToRegistry registry https://registry.npmjs.org/ -987 silly mapToRegistry uri https://registry.npmjs.org/forever-agent -988 verbose addNameRange registry:https://registry.npmjs.org/forever-agent not in flight; fetching -989 verbose get https://registry.npmjs.org/form-data not expired, no request -990 silly addNameRange number 2 { name: 'form-data', range: '>=2.3.2 <2.4.0', hasData: true } -991 silly addNameRange versions [ 'form-data', -991 silly addNameRange [ '0.0.0', -991 silly addNameRange '0.0.2', -991 silly addNameRange '0.0.3', -991 silly addNameRange '0.0.4', -991 silly addNameRange '0.0.5', -991 silly addNameRange '0.0.6', -991 silly addNameRange '0.0.7', -991 silly addNameRange '0.0.8', -991 silly addNameRange '0.0.9', -991 silly addNameRange '0.0.10', -991 silly addNameRange '0.1.0', -991 silly addNameRange '0.1.1', -991 silly addNameRange '0.1.2', -991 silly addNameRange '0.1.3', -991 silly addNameRange '0.1.4', -991 silly addNameRange '0.2.0', -991 silly addNameRange '1.0.0-rc1', -991 silly addNameRange '1.0.0-rc2', -991 silly addNameRange '1.0.0-rc3', -991 silly addNameRange '1.0.0-rc4', -991 silly addNameRange '1.0.0', -991 silly addNameRange '1.0.1', -991 silly addNameRange '2.0.0', -991 silly addNameRange '2.1.0', -991 silly addNameRange '2.1.1', -991 silly addNameRange '2.1.2', -991 silly addNameRange '2.1.4', -991 silly addNameRange '2.2.0', -991 silly addNameRange '2.3.1', -991 silly addNameRange '2.3.2-rc1', -991 silly addNameRange '2.3.2', -991 silly addNameRange '2.3.3', -991 silly addNameRange '2.4.0', -991 silly addNameRange '2.5.0', -991 silly addNameRange '2.5.1', -991 silly addNameRange '3.0.0' ] ] -992 silly addNamed form-data@2.3.3 -993 verbose addNamed "2.3.3" is a plain semver version for form-data -994 http 200 https://registry.npmjs.org/http-signature -995 verbose headers { date: 'Fri, 22 May 2020 11:48:57 GMT', -995 verbose headers 'content-type': 'application/json', -995 verbose headers 'transfer-encoding': 'chunked', -995 verbose headers connection: 'keep-alive', -995 verbose headers 'set-cookie': -995 verbose headers [ '__cfduid=d3adb321249b44604682ca627e182cc9b1590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -995 verbose headers 'cf-ray': '59764fa4bcfedfc7-FRA', -995 verbose headers age: '5657', -995 verbose headers 'cache-control': 'public, max-age=300', -995 verbose headers etag: 'W/"3b46cb4c3a2db9af415ea171ef07cebe"', -995 verbose headers 'last-modified': 'Wed, 06 May 2020 14:47:40 GMT', -995 verbose headers vary: 'accept-encoding, accept', -995 verbose headers 'cf-cache-status': 'HIT', -995 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -995 verbose headers server: 'cloudflare', -995 verbose headers 'content-encoding': 'gzip', -995 verbose headers 'cf-request-id': '02ddd01af40000dfc72a8a0200000001' } -996 silly get cb [ 200, -996 silly get { date: 'Fri, 22 May 2020 11:48:57 GMT', -996 silly get 'content-type': 'application/json', -996 silly get 'transfer-encoding': 'chunked', -996 silly get connection: 'keep-alive', -996 silly get 'set-cookie': -996 silly get [ '__cfduid=d3adb321249b44604682ca627e182cc9b1590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -996 silly get 'cf-ray': '59764fa4bcfedfc7-FRA', -996 silly get age: '5657', -996 silly get 'cache-control': 'public, max-age=300', -996 silly get etag: 'W/"3b46cb4c3a2db9af415ea171ef07cebe"', -996 silly get 'last-modified': 'Wed, 06 May 2020 14:47:40 GMT', -996 silly get vary: 'accept-encoding, accept', -996 silly get 'cf-cache-status': 'HIT', -996 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -996 silly get server: 'cloudflare', -996 silly get 'content-encoding': 'gzip', -996 silly get 'cf-request-id': '02ddd01af40000dfc72a8a0200000001' } ] -997 verbose get saving http-signature to /home/christine/.npm/registry.npmjs.org/http-signature/.cache.json -998 verbose get https://registry.npmjs.org/har-validator not expired, no request -999 silly addNameRange number 2 { name: 'har-validator', range: '>=5.1.3 <5.2.0', hasData: true } -1000 silly addNameRange versions [ 'har-validator', -1000 silly addNameRange [ '1.0.0', -1000 silly addNameRange '1.0.1', -1000 silly addNameRange '1.0.2', -1000 silly addNameRange '1.1.0', -1000 silly addNameRange '1.1.1', -1000 silly addNameRange '1.1.2', -1000 silly addNameRange '1.1.3', -1000 silly addNameRange '1.2.0', -1000 silly addNameRange '1.3.0', -1000 silly addNameRange '1.3.1', -1000 silly addNameRange '1.4.0', -1000 silly addNameRange '1.5.0', -1000 silly addNameRange '1.5.1', -1000 silly addNameRange '1.6.0', -1000 silly addNameRange '1.6.1', -1000 silly addNameRange '1.7.0', -1000 silly addNameRange '1.7.1', -1000 silly addNameRange '1.8.0', -1000 silly addNameRange '2.0.0', -1000 silly addNameRange '2.0.1', -1000 silly addNameRange '2.0.2', -1000 silly addNameRange '2.0.3', -1000 silly addNameRange '2.0.4', -1000 silly addNameRange '2.0.5', -1000 silly addNameRange '2.0.6', -1000 silly addNameRange '2.1.0', -1000 silly addNameRange '2.1.1', -1000 silly addNameRange '2.1.2', -1000 silly addNameRange '2.1.3', -1000 silly addNameRange '3.0.0', -1000 silly addNameRange '3.1.0', -1000 silly addNameRange '3.2.0', -1000 silly addNameRange '3.3.0', -1000 silly addNameRange '3.3.1', -1000 silly addNameRange '3.4.0', -1000 silly addNameRange '4.0.0', -1000 silly addNameRange '4.0.1', -1000 silly addNameRange '4.0.2', -1000 silly addNameRange '4.0.3', -1000 silly addNameRange '4.0.4', -1000 silly addNameRange '4.1.0', -1000 silly addNameRange '4.1.1', -1000 silly addNameRange '4.1.2', -1000 silly addNameRange '4.2.0', -1000 silly addNameRange '4.2.1', -1000 silly addNameRange '5.0.0', -1000 silly addNameRange '5.0.1', -1000 silly addNameRange '5.0.2', -1000 silly addNameRange '5.0.3', -1000 silly addNameRange '5.1.0', -1000 silly addNameRange '5.1.3' ] ] -1001 silly addNamed har-validator@5.1.3 -1002 verbose addNamed "5.1.3" is a plain semver version for har-validator -1003 verbose get https://registry.npmjs.org/is-typedarray not expired, no request -1004 silly addNameRange number 2 { name: 'is-typedarray', range: '>=1.0.0 <1.1.0', hasData: true } -1005 silly addNameRange versions [ 'is-typedarray', [ '0.0.0', '1.0.0' ] ] -1006 silly addNamed is-typedarray@1.0.0 -1007 verbose addNamed "1.0.0" is a plain semver version for is-typedarray -1008 verbose get https://registry.npmjs.org/caseless not expired, no request -1009 silly addNameRange number 2 { name: 'caseless', range: '>=0.12.0 <0.13.0', hasData: true } -1010 silly addNameRange versions [ 'caseless', -1010 silly addNameRange [ '0.1.0', -1010 silly addNameRange '0.2.0', -1010 silly addNameRange '0.3.0', -1010 silly addNameRange '0.4.0', -1010 silly addNameRange '0.5.0', -1010 silly addNameRange '0.6.0', -1010 silly addNameRange '0.7.0', -1010 silly addNameRange '0.8.0', -1010 silly addNameRange '0.9.0', -1010 silly addNameRange '0.10.0', -1010 silly addNameRange '0.11.0', -1010 silly addNameRange '0.12.0' ] ] -1011 silly addNamed caseless@0.12.0 -1012 verbose addNamed "0.12.0" is a plain semver version for caseless -1013 verbose get https://registry.npmjs.org/forever-agent not expired, no request -1014 silly addNameRange number 2 { name: 'forever-agent', range: '>=0.6.1 <0.7.0', hasData: true } -1015 silly addNameRange versions [ 'forever-agent', -1015 silly addNameRange [ '0.2.0', '0.3.0', '0.4.0', '0.5.0', '0.5.2', '0.6.0', '0.6.1' ] ] -1016 silly addNamed forever-agent@0.6.1 -1017 verbose addNamed "0.6.1" is a plain semver version for forever-agent -1018 silly resolveWithNewModule combined-stream@1.0.8 checking installable status -1019 silly cache add args [ 'combined-stream@~1.0.6', null ] -1020 verbose cache add spec combined-stream@~1.0.6 -1021 silly cache add parsed spec Result { -1021 silly cache add raw: 'combined-stream@~1.0.6', -1021 silly cache add scope: null, -1021 silly cache add name: 'combined-stream', -1021 silly cache add rawSpec: '~1.0.6', -1021 silly cache add spec: '>=1.0.6 <1.1.0', -1021 silly cache add type: 'range' } -1022 silly addNamed combined-stream@>=1.0.6 <1.1.0 -1023 verbose addNamed ">=1.0.6 <1.1.0" is a valid semver range for combined-stream -1024 silly addNameRange { name: 'combined-stream', -1024 silly addNameRange range: '>=1.0.6 <1.1.0', -1024 silly addNameRange hasData: false } -1025 silly mapToRegistry name combined-stream -1026 silly mapToRegistry using default registry -1027 silly mapToRegistry registry https://registry.npmjs.org/ -1028 silly mapToRegistry uri https://registry.npmjs.org/combined-stream -1029 verbose addNameRange registry:https://registry.npmjs.org/combined-stream not in flight; fetching -1030 silly resolveWithNewModule extend@3.0.2 checking installable status -1031 silly cache add args [ 'extend@~3.0.2', null ] -1032 verbose cache add spec extend@~3.0.2 -1033 silly cache add parsed spec Result { -1033 silly cache add raw: 'extend@~3.0.2', -1033 silly cache add scope: null, -1033 silly cache add name: 'extend', -1033 silly cache add rawSpec: '~3.0.2', -1033 silly cache add spec: '>=3.0.2 <3.1.0', -1033 silly cache add type: 'range' } -1034 silly addNamed extend@>=3.0.2 <3.1.0 -1035 verbose addNamed ">=3.0.2 <3.1.0" is a valid semver range for extend -1036 silly addNameRange { name: 'extend', range: '>=3.0.2 <3.1.0', hasData: false } -1037 silly mapToRegistry name extend -1038 silly mapToRegistry using default registry -1039 silly mapToRegistry registry https://registry.npmjs.org/ -1040 silly mapToRegistry uri https://registry.npmjs.org/extend -1041 verbose addNameRange registry:https://registry.npmjs.org/extend not in flight; fetching -1042 silly cache afterAdd form-data@2.3.3 -1043 verbose afterAdd /home/christine/.npm/form-data/2.3.3/package/package.json not in flight; writing -1044 silly resolveWithNewModule aws4@1.9.1 checking installable status -1045 silly cache add args [ 'aws4@^1.8.0', null ] -1046 verbose cache add spec aws4@^1.8.0 -1047 silly cache add parsed spec Result { -1047 silly cache add raw: 'aws4@^1.8.0', -1047 silly cache add scope: null, -1047 silly cache add name: 'aws4', -1047 silly cache add rawSpec: '^1.8.0', -1047 silly cache add spec: '>=1.8.0 <2.0.0', -1047 silly cache add type: 'range' } -1048 silly addNamed aws4@>=1.8.0 <2.0.0 -1049 verbose addNamed ">=1.8.0 <2.0.0" is a valid semver range for aws4 -1050 silly addNameRange { name: 'aws4', range: '>=1.8.0 <2.0.0', hasData: false } -1051 silly mapToRegistry name aws4 -1052 silly mapToRegistry using default registry -1053 silly mapToRegistry registry https://registry.npmjs.org/ -1054 silly mapToRegistry uri https://registry.npmjs.org/aws4 -1055 verbose addNameRange registry:https://registry.npmjs.org/aws4 not in flight; fetching -1056 silly resolveWithNewModule http-signature@1.2.0 checking installable status -1057 silly cache add args [ 'http-signature@~1.2.0', null ] -1058 verbose cache add spec http-signature@~1.2.0 -1059 silly cache add parsed spec Result { -1059 silly cache add raw: 'http-signature@~1.2.0', -1059 silly cache add scope: null, -1059 silly cache add name: 'http-signature', -1059 silly cache add rawSpec: '~1.2.0', -1059 silly cache add spec: '>=1.2.0 <1.3.0', -1059 silly cache add type: 'range' } -1060 silly addNamed http-signature@>=1.2.0 <1.3.0 -1061 verbose addNamed ">=1.2.0 <1.3.0" is a valid semver range for http-signature -1062 silly addNameRange { name: 'http-signature', -1062 silly addNameRange range: '>=1.2.0 <1.3.0', -1062 silly addNameRange hasData: false } -1063 silly mapToRegistry name http-signature -1064 silly mapToRegistry using default registry -1065 silly mapToRegistry registry https://registry.npmjs.org/ -1066 silly mapToRegistry uri https://registry.npmjs.org/http-signature -1067 verbose addNameRange registry:https://registry.npmjs.org/http-signature not in flight; fetching -1068 silly cache afterAdd har-validator@5.1.3 -1069 verbose afterAdd /home/christine/.npm/har-validator/5.1.3/package/package.json not in flight; writing -1070 verbose get https://registry.npmjs.org/extend not expired, no request -1071 silly addNameRange number 2 { name: 'extend', range: '>=3.0.2 <3.1.0', hasData: true } -1072 silly addNameRange versions [ 'extend', -1072 silly addNameRange [ '1.0.0', -1072 silly addNameRange '1.1.0', -1072 silly addNameRange '1.1.1', -1072 silly addNameRange '1.1.3', -1072 silly addNameRange '1.2.0', -1072 silly addNameRange '1.2.1', -1072 silly addNameRange '1.3.0', -1072 silly addNameRange '2.0.0', -1072 silly addNameRange '2.0.1', -1072 silly addNameRange '3.0.0', -1072 silly addNameRange '3.0.1', -1072 silly addNameRange '3.0.2', -1072 silly addNameRange '2.0.2' ] ] -1073 silly addNamed extend@3.0.2 -1074 verbose addNamed "3.0.2" is a plain semver version for extend -1075 verbose get https://registry.npmjs.org/combined-stream not expired, no request -1076 silly addNameRange number 2 { name: 'combined-stream', -1076 silly addNameRange range: '>=1.0.6 <1.1.0', -1076 silly addNameRange hasData: true } -1077 silly addNameRange versions [ 'combined-stream', -1077 silly addNameRange [ '0.0.0', -1077 silly addNameRange '0.0.1', -1077 silly addNameRange '0.0.2', -1077 silly addNameRange '0.0.3', -1077 silly addNameRange '0.0.4', -1077 silly addNameRange '0.0.5', -1077 silly addNameRange '0.0.7', -1077 silly addNameRange '1.0.0', -1077 silly addNameRange '1.0.1', -1077 silly addNameRange '1.0.2', -1077 silly addNameRange '1.0.3', -1077 silly addNameRange '1.0.4', -1077 silly addNameRange '1.0.5', -1077 silly addNameRange '1.0.6-rc1', -1077 silly addNameRange '1.0.6', -1077 silly addNameRange '1.0.7', -1077 silly addNameRange '1.0.8' ] ] -1078 silly addNamed combined-stream@1.0.8 -1079 verbose addNamed "1.0.8" is a plain semver version for combined-stream -1080 silly cache afterAdd is-typedarray@1.0.0 -1081 verbose afterAdd /home/christine/.npm/is-typedarray/1.0.0/package/package.json not in flight; writing -1082 silly cache afterAdd caseless@0.12.0 -1083 verbose afterAdd /home/christine/.npm/caseless/0.12.0/package/package.json not in flight; writing -1084 silly cache afterAdd forever-agent@0.6.1 -1085 verbose afterAdd /home/christine/.npm/forever-agent/0.6.1/package/package.json not in flight; writing -1086 verbose get https://registry.npmjs.org/aws4 not expired, no request -1087 silly addNameRange number 2 { name: 'aws4', range: '>=1.8.0 <2.0.0', hasData: true } -1088 silly addNameRange versions [ 'aws4', -1088 silly addNameRange [ '0.0.1', -1088 silly addNameRange '0.1.0', -1088 silly addNameRange '0.1.1', -1088 silly addNameRange '0.1.2', -1088 silly addNameRange '0.1.3', -1088 silly addNameRange '0.1.4', -1088 silly addNameRange '0.1.5', -1088 silly addNameRange '0.1.6', -1088 silly addNameRange '0.1.7', -1088 silly addNameRange '0.1.8', -1088 silly addNameRange '0.1.9', -1088 silly addNameRange '0.1.10', -1088 silly addNameRange '0.1.12', -1088 silly addNameRange '0.2.0', -1088 silly addNameRange '0.2.1', -1088 silly addNameRange '0.2.2', -1088 silly addNameRange '0.2.3', -1088 silly addNameRange '0.3.0', -1088 silly addNameRange '0.4.0', -1088 silly addNameRange '0.4.1', -1088 silly addNameRange '0.4.2', -1088 silly addNameRange '0.5.0', -1088 silly addNameRange '0.5.1', -1088 silly addNameRange '1.0.0', -1088 silly addNameRange '1.0.1', -1088 silly addNameRange '1.0.2', -1088 silly addNameRange '1.0.3', -1088 silly addNameRange '1.0.4', -1088 silly addNameRange '1.1.0', -1088 silly addNameRange '1.2.0', -1088 silly addNameRange '1.2.1', -1088 silly addNameRange '1.3.1', -1088 silly addNameRange '1.3.2', -1088 silly addNameRange '1.4.0', -1088 silly addNameRange '1.4.1', -1088 silly addNameRange '1.5.0', -1088 silly addNameRange '1.6.0', -1088 silly addNameRange '1.7.0', -1088 silly addNameRange '1.8.0', -1088 silly addNameRange '1.9.0', -1088 silly addNameRange '1.9.1' ] ] -1089 silly addNamed aws4@1.9.1 -1090 verbose addNamed "1.9.1" is a plain semver version for aws4 -1091 verbose afterAdd /home/christine/.npm/form-data/2.3.3/package/package.json written -1092 verbose get https://registry.npmjs.org/http-signature not expired, no request -1093 silly addNameRange number 2 { name: 'http-signature', -1093 silly addNameRange range: '>=1.2.0 <1.3.0', -1093 silly addNameRange hasData: true } -1094 silly addNameRange versions [ 'http-signature', -1094 silly addNameRange [ '0.9.0', -1094 silly addNameRange '0.9.2', -1094 silly addNameRange '0.9.3', -1094 silly addNameRange '0.9.4', -1094 silly addNameRange '0.9.5', -1094 silly addNameRange '0.9.6', -1094 silly addNameRange '0.9.7', -1094 silly addNameRange '0.9.8', -1094 silly addNameRange '0.9.9', -1094 silly addNameRange '0.9.10', -1094 silly addNameRange '0.9.11', -1094 silly addNameRange '0.10.0', -1094 silly addNameRange '0.10.1', -1094 silly addNameRange '0.11.0', -1094 silly addNameRange '1.0.0', -1094 silly addNameRange '1.0.1', -1094 silly addNameRange '1.0.2', -1094 silly addNameRange '1.1.0', -1094 silly addNameRange '1.1.1', -1094 silly addNameRange '1.2.0', -1094 silly addNameRange '1.3.0', -1094 silly addNameRange '1.3.1', -1094 silly addNameRange '1.3.2', -1094 silly addNameRange '1.3.3', -1094 silly addNameRange '1.3.4' ] ] -1095 silly addNamed http-signature@1.2.0 -1096 verbose addNamed "1.2.0" is a plain semver version for http-signature -1097 verbose afterAdd /home/christine/.npm/har-validator/5.1.3/package/package.json written -1098 http 304 https://registry.npmjs.org/isstream -1099 verbose headers { date: 'Fri, 22 May 2020 11:48:57 GMT', -1099 verbose headers connection: 'keep-alive', -1099 verbose headers 'set-cookie': -1099 verbose headers [ '__cfduid=daf4947ff118e7cd8a36c058a538ff6131590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -1099 verbose headers 'cf-ray': '59764fa4fe4d05bb-FRA', -1099 verbose headers age: '5355', -1099 verbose headers 'cache-control': 'public, max-age=300', -1099 verbose headers etag: '"9dc7f37e087df077683bf238c847ad45"', -1099 verbose headers 'last-modified': 'Sun, 27 May 2018 05:02:31 GMT', -1099 verbose headers vary: 'Accept-Encoding', -1099 verbose headers 'cf-cache-status': 'HIT', -1099 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -1099 verbose headers server: 'cloudflare', -1099 verbose headers 'cf-request-id': '02ddd01b1f000005bb0ca62200000001' } -1100 silly get cb [ 304, -1100 silly get { date: 'Fri, 22 May 2020 11:48:57 GMT', -1100 silly get connection: 'keep-alive', -1100 silly get 'set-cookie': -1100 silly get [ '__cfduid=daf4947ff118e7cd8a36c058a538ff6131590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -1100 silly get 'cf-ray': '59764fa4fe4d05bb-FRA', -1100 silly get age: '5355', -1100 silly get 'cache-control': 'public, max-age=300', -1100 silly get etag: '"9dc7f37e087df077683bf238c847ad45"', -1100 silly get 'last-modified': 'Sun, 27 May 2018 05:02:31 GMT', -1100 silly get vary: 'Accept-Encoding', -1100 silly get 'cf-cache-status': 'HIT', -1100 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -1100 silly get server: 'cloudflare', -1100 silly get 'cf-request-id': '02ddd01b1f000005bb0ca62200000001' } ] -1101 verbose etag https://registry.npmjs.org/isstream from cache -1102 verbose get saving isstream to /home/christine/.npm/registry.npmjs.org/isstream/.cache.json -1103 verbose afterAdd /home/christine/.npm/is-typedarray/1.0.0/package/package.json written -1104 silly cache afterAdd combined-stream@1.0.8 -1105 verbose afterAdd /home/christine/.npm/combined-stream/1.0.8/package/package.json not in flight; writing -1106 verbose afterAdd /home/christine/.npm/caseless/0.12.0/package/package.json written -1107 verbose afterAdd /home/christine/.npm/forever-agent/0.6.1/package/package.json written -1108 silly cache afterAdd extend@3.0.2 -1109 verbose afterAdd /home/christine/.npm/extend/3.0.2/package/package.json not in flight; writing -1110 silly cache afterAdd aws4@1.9.1 -1111 verbose afterAdd /home/christine/.npm/aws4/1.9.1/package/package.json not in flight; writing -1112 http 304 https://registry.npmjs.org/json-stringify-safe -1113 verbose headers { date: 'Fri, 22 May 2020 11:48:57 GMT', -1113 verbose headers connection: 'keep-alive', -1113 verbose headers 'set-cookie': -1113 verbose headers [ '__cfduid=dd03692ace9824ebd46c46f408f2989131590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -1113 verbose headers 'cf-ray': '59764fa4fe54d6e1-FRA', -1113 verbose headers age: '5657', -1113 verbose headers 'cache-control': 'public, max-age=300', -1113 verbose headers etag: '"7f39a9aafcaefe8efbf43a9f2e56c4eb"', -1113 verbose headers 'last-modified': 'Sun, 27 May 2018 05:41:03 GMT', -1113 verbose headers vary: 'Accept-Encoding', -1113 verbose headers 'cf-cache-status': 'HIT', -1113 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -1113 verbose headers server: 'cloudflare', -1113 verbose headers 'cf-request-id': '02ddd01b1e0000d6e132367200000001' } -1114 silly get cb [ 304, -1114 silly get { date: 'Fri, 22 May 2020 11:48:57 GMT', -1114 silly get connection: 'keep-alive', -1114 silly get 'set-cookie': -1114 silly get [ '__cfduid=dd03692ace9824ebd46c46f408f2989131590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -1114 silly get 'cf-ray': '59764fa4fe54d6e1-FRA', -1114 silly get age: '5657', -1114 silly get 'cache-control': 'public, max-age=300', -1114 silly get etag: '"7f39a9aafcaefe8efbf43a9f2e56c4eb"', -1114 silly get 'last-modified': 'Sun, 27 May 2018 05:41:03 GMT', -1114 silly get vary: 'Accept-Encoding', -1114 silly get 'cf-cache-status': 'HIT', -1114 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -1114 silly get server: 'cloudflare', -1114 silly get 'cf-request-id': '02ddd01b1e0000d6e132367200000001' } ] -1115 verbose etag https://registry.npmjs.org/json-stringify-safe from cache -1116 verbose get saving json-stringify-safe to /home/christine/.npm/registry.npmjs.org/json-stringify-safe/.cache.json -1117 silly cache afterAdd http-signature@1.2.0 -1118 verbose afterAdd /home/christine/.npm/http-signature/1.2.0/package/package.json not in flight; writing -1119 verbose afterAdd /home/christine/.npm/combined-stream/1.0.8/package/package.json written -1120 verbose afterAdd /home/christine/.npm/extend/3.0.2/package/package.json written -1121 verbose afterAdd /home/christine/.npm/aws4/1.9.1/package/package.json written -1122 silly resolveWithNewModule isstream@0.1.2 checking installable status -1123 silly cache add args [ 'isstream@~0.1.2', null ] -1124 verbose cache add spec isstream@~0.1.2 -1125 silly cache add parsed spec Result { -1125 silly cache add raw: 'isstream@~0.1.2', -1125 silly cache add scope: null, -1125 silly cache add name: 'isstream', -1125 silly cache add rawSpec: '~0.1.2', -1125 silly cache add spec: '>=0.1.2 <0.2.0', -1125 silly cache add type: 'range' } -1126 silly addNamed isstream@>=0.1.2 <0.2.0 -1127 verbose addNamed ">=0.1.2 <0.2.0" is a valid semver range for isstream -1128 silly addNameRange { name: 'isstream', range: '>=0.1.2 <0.2.0', hasData: false } -1129 silly mapToRegistry name isstream -1130 silly mapToRegistry using default registry -1131 silly mapToRegistry registry https://registry.npmjs.org/ -1132 silly mapToRegistry uri https://registry.npmjs.org/isstream -1133 verbose addNameRange registry:https://registry.npmjs.org/isstream not in flight; fetching -1134 http 304 https://registry.npmjs.org/tunnel-agent -1135 verbose headers { date: 'Fri, 22 May 2020 11:48:57 GMT', -1135 verbose headers connection: 'keep-alive', -1135 verbose headers 'set-cookie': -1135 verbose headers [ '__cfduid=dd8a9957676dab4f7a1bd7377a7d9ca671590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -1135 verbose headers 'cf-ray': '59764fa51970c2f9-FRA', -1135 verbose headers age: '5655', -1135 verbose headers 'cache-control': 'public, max-age=300', -1135 verbose headers etag: '"03911fc1f433b33bccf8a4a2a5de2375"', -1135 verbose headers 'last-modified': 'Sun, 27 May 2018 20:02:57 GMT', -1135 verbose headers vary: 'Accept-Encoding', -1135 verbose headers 'cf-cache-status': 'HIT', -1135 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -1135 verbose headers server: 'cloudflare', -1135 verbose headers 'cf-request-id': '02ddd01b2a0000c2f926071200000001' } -1136 silly get cb [ 304, -1136 silly get { date: 'Fri, 22 May 2020 11:48:57 GMT', -1136 silly get connection: 'keep-alive', -1136 silly get 'set-cookie': -1136 silly get [ '__cfduid=dd8a9957676dab4f7a1bd7377a7d9ca671590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -1136 silly get 'cf-ray': '59764fa51970c2f9-FRA', -1136 silly get age: '5655', -1136 silly get 'cache-control': 'public, max-age=300', -1136 silly get etag: '"03911fc1f433b33bccf8a4a2a5de2375"', -1136 silly get 'last-modified': 'Sun, 27 May 2018 20:02:57 GMT', -1136 silly get vary: 'Accept-Encoding', -1136 silly get 'cf-cache-status': 'HIT', -1136 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -1136 silly get server: 'cloudflare', -1136 silly get 'cf-request-id': '02ddd01b2a0000c2f926071200000001' } ] -1137 verbose etag https://registry.npmjs.org/tunnel-agent from cache -1138 verbose get saving tunnel-agent to /home/christine/.npm/registry.npmjs.org/tunnel-agent/.cache.json -1139 verbose afterAdd /home/christine/.npm/http-signature/1.2.0/package/package.json written -1140 http 304 https://registry.npmjs.org/performance-now -1141 verbose headers { date: 'Fri, 22 May 2020 11:48:57 GMT', -1141 verbose headers connection: 'keep-alive', -1141 verbose headers 'set-cookie': -1141 verbose headers [ '__cfduid=d42ce80dcff65dca26b6883967f7411d41590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -1141 verbose headers 'cf-ray': '59764fa51f721772-FRA', -1141 verbose headers age: '5657', -1141 verbose headers 'cache-control': 'public, max-age=300', -1141 verbose headers etag: '"5f12ad497b3e39323dcdde75c34f5767"', -1141 verbose headers 'last-modified': 'Sun, 27 May 2018 12:05:53 GMT', -1141 verbose headers vary: 'Accept-Encoding', -1141 verbose headers 'cf-cache-status': 'HIT', -1141 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -1141 verbose headers server: 'cloudflare', -1141 verbose headers 'cf-request-id': '02ddd01b2a0000177264160200000001' } -1142 silly get cb [ 304, -1142 silly get { date: 'Fri, 22 May 2020 11:48:57 GMT', -1142 silly get connection: 'keep-alive', -1142 silly get 'set-cookie': -1142 silly get [ '__cfduid=d42ce80dcff65dca26b6883967f7411d41590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -1142 silly get 'cf-ray': '59764fa51f721772-FRA', -1142 silly get age: '5657', -1142 silly get 'cache-control': 'public, max-age=300', -1142 silly get etag: '"5f12ad497b3e39323dcdde75c34f5767"', -1142 silly get 'last-modified': 'Sun, 27 May 2018 12:05:53 GMT', -1142 silly get vary: 'Accept-Encoding', -1142 silly get 'cf-cache-status': 'HIT', -1142 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -1142 silly get server: 'cloudflare', -1142 silly get 'cf-request-id': '02ddd01b2a0000177264160200000001' } ] -1143 verbose etag https://registry.npmjs.org/performance-now from cache -1144 verbose get saving performance-now to /home/christine/.npm/registry.npmjs.org/performance-now/.cache.json -1145 silly resolveWithNewModule json-stringify-safe@5.0.1 checking installable status -1146 silly cache add args [ 'json-stringify-safe@~5.0.1', null ] -1147 verbose cache add spec json-stringify-safe@~5.0.1 -1148 silly cache add parsed spec Result { -1148 silly cache add raw: 'json-stringify-safe@~5.0.1', -1148 silly cache add scope: null, -1148 silly cache add name: 'json-stringify-safe', -1148 silly cache add rawSpec: '~5.0.1', -1148 silly cache add spec: '>=5.0.1 <5.1.0', -1148 silly cache add type: 'range' } -1149 silly addNamed json-stringify-safe@>=5.0.1 <5.1.0 -1150 verbose addNamed ">=5.0.1 <5.1.0" is a valid semver range for json-stringify-safe -1151 silly addNameRange { name: 'json-stringify-safe', -1151 silly addNameRange range: '>=5.0.1 <5.1.0', -1151 silly addNameRange hasData: false } -1152 silly mapToRegistry name json-stringify-safe -1153 silly mapToRegistry using default registry -1154 silly mapToRegistry registry https://registry.npmjs.org/ -1155 silly mapToRegistry uri https://registry.npmjs.org/json-stringify-safe -1156 verbose addNameRange registry:https://registry.npmjs.org/json-stringify-safe not in flight; fetching -1157 verbose get https://registry.npmjs.org/isstream not expired, no request -1158 silly addNameRange number 2 { name: 'isstream', range: '>=0.1.2 <0.2.0', hasData: true } -1159 silly addNameRange versions [ 'isstream', [ '0.0.0', '0.1.0', '0.1.1', '0.1.2' ] ] -1160 silly addNamed isstream@0.1.2 -1161 verbose addNamed "0.1.2" is a plain semver version for isstream -1162 http 200 https://registry.npmjs.org/safe-buffer -1163 verbose headers { date: 'Fri, 22 May 2020 11:48:57 GMT', -1163 verbose headers 'content-type': 'application/json', -1163 verbose headers 'transfer-encoding': 'chunked', -1163 verbose headers connection: 'keep-alive', -1163 verbose headers 'set-cookie': -1163 verbose headers [ '__cfduid=d242459e8d4d49451c98a98743f04b3251590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -1163 verbose headers 'cf-ray': '59764fa51a7b0eab-FRA', -1163 verbose headers age: '5658', -1163 verbose headers 'cache-control': 'public, max-age=300', -1163 verbose headers etag: 'W/"7d10eeac57e4baa4c8bd0dd7caa1703c"', -1163 verbose headers 'last-modified': 'Sun, 10 May 2020 16:37:34 GMT', -1163 verbose headers vary: 'accept-encoding, accept', -1163 verbose headers 'cf-cache-status': 'HIT', -1163 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -1163 verbose headers server: 'cloudflare', -1163 verbose headers 'content-encoding': 'gzip', -1163 verbose headers 'cf-request-id': '02ddd01b2a00000eabe9143200000001' } -1164 silly get cb [ 200, -1164 silly get { date: 'Fri, 22 May 2020 11:48:57 GMT', -1164 silly get 'content-type': 'application/json', -1164 silly get 'transfer-encoding': 'chunked', -1164 silly get connection: 'keep-alive', -1164 silly get 'set-cookie': -1164 silly get [ '__cfduid=d242459e8d4d49451c98a98743f04b3251590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -1164 silly get 'cf-ray': '59764fa51a7b0eab-FRA', -1164 silly get age: '5658', -1164 silly get 'cache-control': 'public, max-age=300', -1164 silly get etag: 'W/"7d10eeac57e4baa4c8bd0dd7caa1703c"', -1164 silly get 'last-modified': 'Sun, 10 May 2020 16:37:34 GMT', -1164 silly get vary: 'accept-encoding, accept', -1164 silly get 'cf-cache-status': 'HIT', -1164 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -1164 silly get server: 'cloudflare', -1164 silly get 'content-encoding': 'gzip', -1164 silly get 'cf-request-id': '02ddd01b2a00000eabe9143200000001' } ] -1165 verbose get saving safe-buffer to /home/christine/.npm/registry.npmjs.org/safe-buffer/.cache.json -1166 http 304 https://registry.npmjs.org/oauth-sign -1167 verbose headers { date: 'Fri, 22 May 2020 11:48:57 GMT', -1167 verbose headers connection: 'keep-alive', -1167 verbose headers 'set-cookie': -1167 verbose headers [ '__cfduid=d287f9144cf6663f63602865423a0b4ea1590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -1167 verbose headers 'cf-ray': '59764fa51ff7dfbb-FRA', -1167 verbose headers age: '5355', -1167 verbose headers 'cache-control': 'public, max-age=300', -1167 verbose headers etag: '"3032c1efe9ec61d748d027a1da2bab61"', -1167 verbose headers 'last-modified': 'Thu, 02 Aug 2018 18:04:02 GMT', -1167 verbose headers vary: 'Accept-Encoding', -1167 verbose headers 'cf-cache-status': 'HIT', -1167 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -1167 verbose headers server: 'cloudflare', -1167 verbose headers 'cf-request-id': '02ddd01b2a0000dfbb5fa74200000001' } -1168 silly get cb [ 304, -1168 silly get { date: 'Fri, 22 May 2020 11:48:57 GMT', -1168 silly get connection: 'keep-alive', -1168 silly get 'set-cookie': -1168 silly get [ '__cfduid=d287f9144cf6663f63602865423a0b4ea1590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -1168 silly get 'cf-ray': '59764fa51ff7dfbb-FRA', -1168 silly get age: '5355', -1168 silly get 'cache-control': 'public, max-age=300', -1168 silly get etag: '"3032c1efe9ec61d748d027a1da2bab61"', -1168 silly get 'last-modified': 'Thu, 02 Aug 2018 18:04:02 GMT', -1168 silly get vary: 'Accept-Encoding', -1168 silly get 'cf-cache-status': 'HIT', -1168 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -1168 silly get server: 'cloudflare', -1168 silly get 'cf-request-id': '02ddd01b2a0000dfbb5fa74200000001' } ] -1169 verbose etag https://registry.npmjs.org/oauth-sign from cache -1170 verbose get saving oauth-sign to /home/christine/.npm/registry.npmjs.org/oauth-sign/.cache.json -1171 verbose get https://registry.npmjs.org/json-stringify-safe not expired, no request -1172 silly addNameRange number 2 { name: 'json-stringify-safe', -1172 silly addNameRange range: '>=5.0.1 <5.1.0', -1172 silly addNameRange hasData: true } -1173 silly addNameRange versions [ 'json-stringify-safe', -1173 silly addNameRange [ '2.0.0', '3.0.0', '4.0.0', '5.0.0', '5.0.1' ] ] -1174 silly addNamed json-stringify-safe@5.0.1 -1175 verbose addNamed "5.0.1" is a plain semver version for json-stringify-safe -1176 silly resolveWithNewModule tunnel-agent@0.6.0 checking installable status -1177 silly cache add args [ 'tunnel-agent@^0.6.0', null ] -1178 verbose cache add spec tunnel-agent@^0.6.0 -1179 silly cache add parsed spec Result { -1179 silly cache add raw: 'tunnel-agent@^0.6.0', -1179 silly cache add scope: null, -1179 silly cache add name: 'tunnel-agent', -1179 silly cache add rawSpec: '^0.6.0', -1179 silly cache add spec: '>=0.6.0 <0.7.0', -1179 silly cache add type: 'range' } -1180 silly addNamed tunnel-agent@>=0.6.0 <0.7.0 -1181 verbose addNamed ">=0.6.0 <0.7.0" is a valid semver range for tunnel-agent -1182 silly addNameRange { name: 'tunnel-agent', range: '>=0.6.0 <0.7.0', hasData: false } -1183 silly mapToRegistry name tunnel-agent -1184 silly mapToRegistry using default registry -1185 silly mapToRegistry registry https://registry.npmjs.org/ -1186 silly mapToRegistry uri https://registry.npmjs.org/tunnel-agent -1187 verbose addNameRange registry:https://registry.npmjs.org/tunnel-agent not in flight; fetching -1188 silly resolveWithNewModule performance-now@2.1.0 checking installable status -1189 silly cache add args [ 'performance-now@^2.1.0', null ] -1190 verbose cache add spec performance-now@^2.1.0 -1191 silly cache add parsed spec Result { -1191 silly cache add raw: 'performance-now@^2.1.0', -1191 silly cache add scope: null, -1191 silly cache add name: 'performance-now', -1191 silly cache add rawSpec: '^2.1.0', -1191 silly cache add spec: '>=2.1.0 <3.0.0', -1191 silly cache add type: 'range' } -1192 silly addNamed performance-now@>=2.1.0 <3.0.0 -1193 verbose addNamed ">=2.1.0 <3.0.0" is a valid semver range for performance-now -1194 silly addNameRange { name: 'performance-now', -1194 silly addNameRange range: '>=2.1.0 <3.0.0', -1194 silly addNameRange hasData: false } -1195 silly mapToRegistry name performance-now -1196 silly mapToRegistry using default registry -1197 silly mapToRegistry registry https://registry.npmjs.org/ -1198 silly mapToRegistry uri https://registry.npmjs.org/performance-now -1199 verbose addNameRange registry:https://registry.npmjs.org/performance-now not in flight; fetching -1200 silly cache afterAdd isstream@0.1.2 -1201 verbose afterAdd /home/christine/.npm/isstream/0.1.2/package/package.json not in flight; writing -1202 http 200 https://registry.npmjs.org/tough-cookie -1203 verbose headers { date: 'Fri, 22 May 2020 11:48:57 GMT', -1203 verbose headers 'content-type': 'application/json', -1203 verbose headers 'transfer-encoding': 'chunked', -1203 verbose headers connection: 'keep-alive', -1203 verbose headers 'set-cookie': -1203 verbose headers [ '__cfduid=d898cd72de597ecab2d8a354f76a0072c1590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -1203 verbose headers 'cf-ray': '59764fa518cb05e9-FRA', -1203 verbose headers age: '5655', -1203 verbose headers 'cache-control': 'public, max-age=300', -1203 verbose headers etag: 'W/"818fa172eb6f27e219e81140db530363"', -1203 verbose headers 'last-modified': 'Thu, 19 Mar 2020 19:20:30 GMT', -1203 verbose headers vary: 'accept-encoding, accept', -1203 verbose headers 'cf-cache-status': 'HIT', -1203 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -1203 verbose headers server: 'cloudflare', -1203 verbose headers 'content-encoding': 'gzip', -1203 verbose headers 'cf-request-id': '02ddd01b2a000005e903b1d200000001' } -1204 silly get cb [ 200, -1204 silly get { date: 'Fri, 22 May 2020 11:48:57 GMT', -1204 silly get 'content-type': 'application/json', -1204 silly get 'transfer-encoding': 'chunked', -1204 silly get connection: 'keep-alive', -1204 silly get 'set-cookie': -1204 silly get [ '__cfduid=d898cd72de597ecab2d8a354f76a0072c1590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -1204 silly get 'cf-ray': '59764fa518cb05e9-FRA', -1204 silly get age: '5655', -1204 silly get 'cache-control': 'public, max-age=300', -1204 silly get etag: 'W/"818fa172eb6f27e219e81140db530363"', -1204 silly get 'last-modified': 'Thu, 19 Mar 2020 19:20:30 GMT', -1204 silly get vary: 'accept-encoding, accept', -1204 silly get 'cf-cache-status': 'HIT', -1204 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -1204 silly get server: 'cloudflare', -1204 silly get 'content-encoding': 'gzip', -1204 silly get 'cf-request-id': '02ddd01b2a000005e903b1d200000001' } ] -1205 verbose get saving tough-cookie to /home/christine/.npm/registry.npmjs.org/tough-cookie/.cache.json -1206 silly cache afterAdd json-stringify-safe@5.0.1 -1207 verbose afterAdd /home/christine/.npm/json-stringify-safe/5.0.1/package/package.json not in flight; writing -1208 silly resolveWithNewModule safe-buffer@5.2.1 checking installable status -1209 silly cache add args [ 'safe-buffer@^5.1.2', null ] -1210 verbose cache add spec safe-buffer@^5.1.2 -1211 silly cache add parsed spec Result { -1211 silly cache add raw: 'safe-buffer@^5.1.2', -1211 silly cache add scope: null, -1211 silly cache add name: 'safe-buffer', -1211 silly cache add rawSpec: '^5.1.2', -1211 silly cache add spec: '>=5.1.2 <6.0.0', -1211 silly cache add type: 'range' } -1212 silly addNamed safe-buffer@>=5.1.2 <6.0.0 -1213 verbose addNamed ">=5.1.2 <6.0.0" is a valid semver range for safe-buffer -1214 silly addNameRange { name: 'safe-buffer', range: '>=5.1.2 <6.0.0', hasData: false } -1215 silly mapToRegistry name safe-buffer -1216 silly mapToRegistry using default registry -1217 silly mapToRegistry registry https://registry.npmjs.org/ -1218 silly mapToRegistry uri https://registry.npmjs.org/safe-buffer -1219 verbose addNameRange registry:https://registry.npmjs.org/safe-buffer not in flight; fetching -1220 http 200 https://registry.npmjs.org/mime-types -1221 verbose headers { date: 'Fri, 22 May 2020 11:48:57 GMT', -1221 verbose headers 'content-type': 'application/json', -1221 verbose headers 'transfer-encoding': 'chunked', -1221 verbose headers connection: 'keep-alive', -1221 verbose headers 'set-cookie': -1221 verbose headers [ '__cfduid=d8091989cd66bf129670ccfa4d20cf63d1590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -1221 verbose headers 'cf-ray': '59764fa51e27c2ae-FRA', -1221 verbose headers age: '5656', -1221 verbose headers 'cache-control': 'public, max-age=300', -1221 verbose headers etag: 'W/"b0572cbc8ddbbb6b61205820d06deb3a"', -1221 verbose headers 'last-modified': 'Fri, 24 Apr 2020 03:36:16 GMT', -1221 verbose headers vary: 'accept-encoding, accept', -1221 verbose headers 'cf-cache-status': 'HIT', -1221 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -1221 verbose headers server: 'cloudflare', -1221 verbose headers 'content-encoding': 'gzip', -1221 verbose headers 'cf-request-id': '02ddd01b2a0000c2aea0161200000001' } -1222 silly get cb [ 200, -1222 silly get { date: 'Fri, 22 May 2020 11:48:57 GMT', -1222 silly get 'content-type': 'application/json', -1222 silly get 'transfer-encoding': 'chunked', -1222 silly get connection: 'keep-alive', -1222 silly get 'set-cookie': -1222 silly get [ '__cfduid=d8091989cd66bf129670ccfa4d20cf63d1590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -1222 silly get 'cf-ray': '59764fa51e27c2ae-FRA', -1222 silly get age: '5656', -1222 silly get 'cache-control': 'public, max-age=300', -1222 silly get etag: 'W/"b0572cbc8ddbbb6b61205820d06deb3a"', -1222 silly get 'last-modified': 'Fri, 24 Apr 2020 03:36:16 GMT', -1222 silly get vary: 'accept-encoding, accept', -1222 silly get 'cf-cache-status': 'HIT', -1222 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -1222 silly get server: 'cloudflare', -1222 silly get 'content-encoding': 'gzip', -1222 silly get 'cf-request-id': '02ddd01b2a0000c2aea0161200000001' } ] -1223 verbose get saving mime-types to /home/christine/.npm/registry.npmjs.org/mime-types/.cache.json -1224 verbose get https://registry.npmjs.org/tunnel-agent not expired, no request -1225 silly addNameRange number 2 { name: 'tunnel-agent', range: '>=0.6.0 <0.7.0', hasData: true } -1226 silly addNameRange versions [ 'tunnel-agent', -1226 silly addNameRange [ '0.2.0', -1226 silly addNameRange '0.3.0', -1226 silly addNameRange '0.4.0', -1226 silly addNameRange '0.4.1', -1226 silly addNameRange '0.4.2', -1226 silly addNameRange '0.4.3', -1226 silly addNameRange '0.5.0', -1226 silly addNameRange '0.6.0' ] ] -1227 silly addNamed tunnel-agent@0.6.0 -1228 verbose addNamed "0.6.0" is a plain semver version for tunnel-agent -1229 silly resolveWithNewModule oauth-sign@0.9.0 checking installable status -1230 silly cache add args [ 'oauth-sign@~0.9.0', null ] -1231 verbose cache add spec oauth-sign@~0.9.0 -1232 silly cache add parsed spec Result { -1232 silly cache add raw: 'oauth-sign@~0.9.0', -1232 silly cache add scope: null, -1232 silly cache add name: 'oauth-sign', -1232 silly cache add rawSpec: '~0.9.0', -1232 silly cache add spec: '>=0.9.0 <0.10.0', -1232 silly cache add type: 'range' } -1233 silly addNamed oauth-sign@>=0.9.0 <0.10.0 -1234 verbose addNamed ">=0.9.0 <0.10.0" is a valid semver range for oauth-sign -1235 silly addNameRange { name: 'oauth-sign', range: '>=0.9.0 <0.10.0', hasData: false } -1236 silly mapToRegistry name oauth-sign -1237 silly mapToRegistry using default registry -1238 silly mapToRegistry registry https://registry.npmjs.org/ -1239 silly mapToRegistry uri https://registry.npmjs.org/oauth-sign -1240 verbose addNameRange registry:https://registry.npmjs.org/oauth-sign not in flight; fetching -1241 verbose get https://registry.npmjs.org/performance-now not expired, no request -1242 silly addNameRange number 2 { name: 'performance-now', -1242 silly addNameRange range: '>=2.1.0 <3.0.0', -1242 silly addNameRange hasData: true } -1243 silly addNameRange versions [ 'performance-now', -1243 silly addNameRange [ '0.1.0', -1243 silly addNameRange '0.1.1', -1243 silly addNameRange '0.1.2', -1243 silly addNameRange '0.1.3', -1243 silly addNameRange '0.1.4', -1243 silly addNameRange '0.2.0', -1243 silly addNameRange '1.0.0', -1243 silly addNameRange '1.0.1', -1243 silly addNameRange '1.0.2', -1243 silly addNameRange '2.0.0', -1243 silly addNameRange '2.1.0' ] ] -1244 silly addNamed performance-now@2.1.0 -1245 verbose addNamed "2.1.0" is a plain semver version for performance-now -1246 verbose afterAdd /home/christine/.npm/isstream/0.1.2/package/package.json written -1247 http 200 https://registry.npmjs.org/uuid -1248 verbose headers { date: 'Fri, 22 May 2020 11:48:57 GMT', -1248 verbose headers 'content-type': 'application/json', -1248 verbose headers 'transfer-encoding': 'chunked', -1248 verbose headers connection: 'keep-alive', -1248 verbose headers 'set-cookie': -1248 verbose headers [ '__cfduid=d42e977fd11818895c4979b1006ea23be1590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -1248 verbose headers 'cf-ray': '59764fa5195d1f2d-FRA', -1248 verbose headers age: '5355', -1248 verbose headers 'cache-control': 'public, max-age=300', -1248 verbose headers etag: 'W/"3fc4e0f16b6e5d55bc0144a7f38b6e49"', -1248 verbose headers 'last-modified': 'Wed, 20 May 2020 18:52:41 GMT', -1248 verbose headers vary: 'accept-encoding, accept', -1248 verbose headers 'cf-cache-status': 'HIT', -1248 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -1248 verbose headers server: 'cloudflare', -1248 verbose headers 'content-encoding': 'gzip', -1248 verbose headers 'cf-request-id': '02ddd01b2a00001f2df51ed200000001' } -1249 silly get cb [ 200, -1249 silly get { date: 'Fri, 22 May 2020 11:48:57 GMT', -1249 silly get 'content-type': 'application/json', -1249 silly get 'transfer-encoding': 'chunked', -1249 silly get connection: 'keep-alive', -1249 silly get 'set-cookie': -1249 silly get [ '__cfduid=d42e977fd11818895c4979b1006ea23be1590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -1249 silly get 'cf-ray': '59764fa5195d1f2d-FRA', -1249 silly get age: '5355', -1249 silly get 'cache-control': 'public, max-age=300', -1249 silly get etag: 'W/"3fc4e0f16b6e5d55bc0144a7f38b6e49"', -1249 silly get 'last-modified': 'Wed, 20 May 2020 18:52:41 GMT', -1249 silly get vary: 'accept-encoding, accept', -1249 silly get 'cf-cache-status': 'HIT', -1249 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -1249 silly get server: 'cloudflare', -1249 silly get 'content-encoding': 'gzip', -1249 silly get 'cf-request-id': '02ddd01b2a00001f2df51ed200000001' } ] -1250 verbose get saving uuid to /home/christine/.npm/registry.npmjs.org/uuid/.cache.json -1251 verbose get https://registry.npmjs.org/safe-buffer not expired, no request -1252 silly addNameRange number 2 { name: 'safe-buffer', range: '>=5.1.2 <6.0.0', hasData: true } -1253 silly addNameRange versions [ 'safe-buffer', -1253 silly addNameRange [ '1.0.0', -1253 silly addNameRange '2.0.0', -1253 silly addNameRange '3.0.0', -1253 silly addNameRange '4.0.0', -1253 silly addNameRange '5.0.0', -1253 silly addNameRange '5.0.1', -1253 silly addNameRange '5.1.0', -1253 silly addNameRange '5.1.1', -1253 silly addNameRange '5.1.2', -1253 silly addNameRange '5.2.0', -1253 silly addNameRange '5.2.1' ] ] -1254 silly addNamed safe-buffer@5.2.1 -1255 verbose addNamed "5.2.1" is a plain semver version for safe-buffer -1256 verbose afterAdd /home/christine/.npm/json-stringify-safe/5.0.1/package/package.json written -1257 verbose get https://registry.npmjs.org/oauth-sign not expired, no request -1258 silly addNameRange number 2 { name: 'oauth-sign', range: '>=0.9.0 <0.10.0', hasData: true } -1259 silly addNameRange versions [ 'oauth-sign', -1259 silly addNameRange [ '0.2.0', -1259 silly addNameRange '0.3.0', -1259 silly addNameRange '0.4.0', -1259 silly addNameRange '0.5.0', -1259 silly addNameRange '0.6.0', -1259 silly addNameRange '0.7.0', -1259 silly addNameRange '0.8.0', -1259 silly addNameRange '0.8.1', -1259 silly addNameRange '0.8.2', -1259 silly addNameRange '0.9.0' ] ] -1260 silly addNamed oauth-sign@0.9.0 -1261 verbose addNamed "0.9.0" is a plain semver version for oauth-sign -1262 silly mapToRegistry name safe-buffer -1263 silly mapToRegistry using default registry -1264 silly mapToRegistry registry https://registry.npmjs.org/ -1265 silly mapToRegistry uri https://registry.npmjs.org/safe-buffer -1266 verbose addRemoteTarball https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz not in flight; adding -1267 verbose addRemoteTarball [ 'https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz', -1267 verbose addRemoteTarball '1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6' ] -1268 silly resolveWithNewModule tough-cookie@2.5.0 checking installable status -1269 silly cache add args [ 'tough-cookie@~2.5.0', null ] -1270 verbose cache add spec tough-cookie@~2.5.0 -1271 silly cache add parsed spec Result { -1271 silly cache add raw: 'tough-cookie@~2.5.0', -1271 silly cache add scope: null, -1271 silly cache add name: 'tough-cookie', -1271 silly cache add rawSpec: '~2.5.0', -1271 silly cache add spec: '>=2.5.0 <2.6.0', -1271 silly cache add type: 'range' } -1272 silly addNamed tough-cookie@>=2.5.0 <2.6.0 -1273 verbose addNamed ">=2.5.0 <2.6.0" is a valid semver range for tough-cookie -1274 silly addNameRange { name: 'tough-cookie', range: '>=2.5.0 <2.6.0', hasData: false } -1275 silly mapToRegistry name tough-cookie -1276 silly mapToRegistry using default registry -1277 silly mapToRegistry registry https://registry.npmjs.org/ -1278 silly mapToRegistry uri https://registry.npmjs.org/tough-cookie -1279 verbose addNameRange registry:https://registry.npmjs.org/tough-cookie not in flight; fetching -1280 silly cache afterAdd tunnel-agent@0.6.0 -1281 verbose afterAdd /home/christine/.npm/tunnel-agent/0.6.0/package/package.json not in flight; writing -1282 silly cache afterAdd performance-now@2.1.0 -1283 verbose afterAdd /home/christine/.npm/performance-now/2.1.0/package/package.json not in flight; writing -1284 silly resolveWithNewModule mime-types@2.1.27 checking installable status -1285 silly cache add args [ 'mime-types@~2.1.19', null ] -1286 verbose cache add spec mime-types@~2.1.19 -1287 silly cache add parsed spec Result { -1287 silly cache add raw: 'mime-types@~2.1.19', -1287 silly cache add scope: null, -1287 silly cache add name: 'mime-types', -1287 silly cache add rawSpec: '~2.1.19', -1287 silly cache add spec: '>=2.1.19 <2.2.0', -1287 silly cache add type: 'range' } -1288 silly addNamed mime-types@>=2.1.19 <2.2.0 -1289 verbose addNamed ">=2.1.19 <2.2.0" is a valid semver range for mime-types -1290 silly addNameRange { name: 'mime-types', range: '>=2.1.19 <2.2.0', hasData: false } -1291 silly mapToRegistry name mime-types -1292 silly mapToRegistry using default registry -1293 silly mapToRegistry registry https://registry.npmjs.org/ -1294 silly mapToRegistry uri https://registry.npmjs.org/mime-types -1295 verbose addNameRange registry:https://registry.npmjs.org/mime-types not in flight; fetching -1296 http 200 https://registry.npmjs.org/qs -1297 verbose headers { date: 'Fri, 22 May 2020 11:48:57 GMT', -1297 verbose headers 'content-type': 'application/json', -1297 verbose headers 'transfer-encoding': 'chunked', -1297 verbose headers connection: 'keep-alive', -1297 verbose headers 'set-cookie': -1297 verbose headers [ '__cfduid=dd8aaa3b832fe3de3ea175ff8604d63411590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -1297 verbose headers 'cf-ray': '59764fa5183d176a-FRA', -1297 verbose headers age: '5657', -1297 verbose headers 'cache-control': 'public, max-age=300', -1297 verbose headers etag: 'W/"679aa380b84cf75f89f99363ed5f9c98"', -1297 verbose headers 'last-modified': 'Sun, 03 May 2020 21:52:54 GMT', -1297 verbose headers vary: 'accept-encoding, accept', -1297 verbose headers 'cf-cache-status': 'HIT', -1297 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -1297 verbose headers server: 'cloudflare', -1297 verbose headers 'content-encoding': 'gzip', -1297 verbose headers 'cf-request-id': '02ddd01b2a0000176a65b45200000001' } -1298 silly get cb [ 200, -1298 silly get { date: 'Fri, 22 May 2020 11:48:57 GMT', -1298 silly get 'content-type': 'application/json', -1298 silly get 'transfer-encoding': 'chunked', -1298 silly get connection: 'keep-alive', -1298 silly get 'set-cookie': -1298 silly get [ '__cfduid=dd8aaa3b832fe3de3ea175ff8604d63411590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -1298 silly get 'cf-ray': '59764fa5183d176a-FRA', -1298 silly get age: '5657', -1298 silly get 'cache-control': 'public, max-age=300', -1298 silly get etag: 'W/"679aa380b84cf75f89f99363ed5f9c98"', -1298 silly get 'last-modified': 'Sun, 03 May 2020 21:52:54 GMT', -1298 silly get vary: 'accept-encoding, accept', -1298 silly get 'cf-cache-status': 'HIT', -1298 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -1298 silly get server: 'cloudflare', -1298 silly get 'content-encoding': 'gzip', -1298 silly get 'cf-request-id': '02ddd01b2a0000176a65b45200000001' } ] -1299 verbose get saving qs to /home/christine/.npm/registry.npmjs.org/qs/.cache.json -1300 info retry fetch attempt 1 at 13:48:57 -1301 info attempt registry request try #1 at 13:48:57 -1302 http fetch GET https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz -1303 verbose get https://registry.npmjs.org/tough-cookie not expired, no request -1304 silly addNameRange number 2 { name: 'tough-cookie', range: '>=2.5.0 <2.6.0', hasData: true } -1305 silly addNameRange versions [ 'tough-cookie', -1305 silly addNameRange [ '0.9.0', -1305 silly addNameRange '0.9.1', -1305 silly addNameRange '0.9.3', -1305 silly addNameRange '0.9.4', -1305 silly addNameRange '0.9.5', -1305 silly addNameRange '0.9.6', -1305 silly addNameRange '0.9.7', -1305 silly addNameRange '0.9.8', -1305 silly addNameRange '0.9.9', -1305 silly addNameRange '0.9.11', -1305 silly addNameRange '0.9.12', -1305 silly addNameRange '0.9.13', -1305 silly addNameRange '0.9.14', -1305 silly addNameRange '0.9.15', -1305 silly addNameRange '0.10.0', -1305 silly addNameRange '0.11.0', -1305 silly addNameRange '0.12.0', -1305 silly addNameRange '0.12.1', -1305 silly addNameRange '0.13.0', -1305 silly addNameRange '1.0.0', -1305 silly addNameRange '1.1.0', -1305 silly addNameRange '1.2.0', -1305 silly addNameRange '2.0.0', -1305 silly addNameRange '2.1.0', -1305 silly addNameRange '2.2.0', -1305 silly addNameRange '2.2.1', -1305 silly addNameRange '2.2.2', -1305 silly addNameRange '2.3.0', -1305 silly addNameRange '2.3.1', -1305 silly addNameRange '2.3.2', -1305 silly addNameRange '2.3.3', -1305 silly addNameRange '2.3.4', -1305 silly addNameRange '2.4.2', -1305 silly addNameRange '2.4.3', -1305 silly addNameRange '2.5.0', -1305 silly addNameRange '3.0.0', -1305 silly addNameRange '3.0.1', -1305 silly addNameRange '4.0.0' ] ] -1306 silly addNamed tough-cookie@2.5.0 -1307 verbose addNamed "2.5.0" is a plain semver version for tough-cookie -1308 silly cache afterAdd oauth-sign@0.9.0 -1309 verbose afterAdd /home/christine/.npm/oauth-sign/0.9.0/package/package.json not in flight; writing -1310 silly resolveWithNewModule uuid@3.4.0 checking installable status -1311 silly cache add args [ 'uuid@^3.3.2', null ] -1312 verbose cache add spec uuid@^3.3.2 -1313 silly cache add parsed spec Result { -1313 silly cache add raw: 'uuid@^3.3.2', -1313 silly cache add scope: null, -1313 silly cache add name: 'uuid', -1313 silly cache add rawSpec: '^3.3.2', -1313 silly cache add spec: '>=3.3.2 <4.0.0', -1313 silly cache add type: 'range' } -1314 silly addNamed uuid@>=3.3.2 <4.0.0 -1315 verbose addNamed ">=3.3.2 <4.0.0" is a valid semver range for uuid -1316 silly addNameRange { name: 'uuid', range: '>=3.3.2 <4.0.0', hasData: false } -1317 silly mapToRegistry name uuid -1318 silly mapToRegistry using default registry -1319 silly mapToRegistry registry https://registry.npmjs.org/ -1320 silly mapToRegistry uri https://registry.npmjs.org/uuid -1321 verbose addNameRange registry:https://registry.npmjs.org/uuid not in flight; fetching -1322 verbose afterAdd /home/christine/.npm/tunnel-agent/0.6.0/package/package.json written -1323 silly mapToRegistry name tough-cookie -1324 silly mapToRegistry using default registry -1325 silly mapToRegistry registry https://registry.npmjs.org/ -1326 silly mapToRegistry uri https://registry.npmjs.org/tough-cookie -1327 verbose addRemoteTarball https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz not in flight; adding -1328 verbose addRemoteTarball [ 'https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz', -1328 verbose addRemoteTarball 'cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2' ] -1329 verbose afterAdd /home/christine/.npm/performance-now/2.1.0/package/package.json written -1330 verbose get https://registry.npmjs.org/mime-types not expired, no request -1331 silly addNameRange number 2 { name: 'mime-types', range: '>=2.1.19 <2.2.0', hasData: true } -1332 silly addNameRange versions [ 'mime-types', -1332 silly addNameRange [ '0.1.0', -1332 silly addNameRange '1.0.0', -1332 silly addNameRange '1.0.1', -1332 silly addNameRange '1.0.2', -1332 silly addNameRange '2.0.0', -1332 silly addNameRange '2.0.1', -1332 silly addNameRange '2.0.2', -1332 silly addNameRange '2.0.3', -1332 silly addNameRange '2.0.4', -1332 silly addNameRange '2.0.5', -1332 silly addNameRange '2.0.6', -1332 silly addNameRange '2.0.7', -1332 silly addNameRange '2.0.8', -1332 silly addNameRange '2.0.9', -1332 silly addNameRange '2.0.10', -1332 silly addNameRange '2.0.11', -1332 silly addNameRange '2.0.12', -1332 silly addNameRange '2.0.13', -1332 silly addNameRange '2.0.14', -1332 silly addNameRange '2.1.0', -1332 silly addNameRange '2.1.1', -1332 silly addNameRange '2.1.2', -1332 silly addNameRange '2.1.3', -1332 silly addNameRange '2.1.4', -1332 silly addNameRange '2.1.5', -1332 silly addNameRange '2.1.6', -1332 silly addNameRange '2.1.7', -1332 silly addNameRange '2.1.8', -1332 silly addNameRange '2.1.9', -1332 silly addNameRange '2.1.10', -1332 silly addNameRange '2.1.11', -1332 silly addNameRange '2.1.12', -1332 silly addNameRange '2.1.13', -1332 silly addNameRange '2.1.14', -1332 silly addNameRange '2.1.15', -1332 silly addNameRange '2.1.16', -1332 silly addNameRange '2.1.17', -1332 silly addNameRange '2.1.18', -1332 silly addNameRange '2.1.19', -1332 silly addNameRange '2.1.20', -1332 silly addNameRange '2.1.21', -1332 silly addNameRange '2.1.22', -1332 silly addNameRange '2.1.23', -1332 silly addNameRange '2.1.24', -1332 silly addNameRange '2.1.25', -1332 silly addNameRange '2.1.26', -1332 silly addNameRange '2.1.27' ] ] -1333 silly addNamed mime-types@2.1.27 -1334 verbose addNamed "2.1.27" is a plain semver version for mime-types -1335 silly mapToRegistry name mime-types -1336 silly mapToRegistry using default registry -1337 silly mapToRegistry registry https://registry.npmjs.org/ -1338 silly mapToRegistry uri https://registry.npmjs.org/mime-types -1339 verbose addRemoteTarball https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz not in flight; adding -1340 verbose addRemoteTarball [ 'https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz', -1340 verbose addRemoteTarball '47949f98e279ea53119f5722e0f34e529bec009f' ] -1341 info retry fetch attempt 1 at 13:48:57 -1342 info attempt registry request try #1 at 13:48:57 -1343 http fetch GET https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz -1344 verbose get https://registry.npmjs.org/uuid not expired, no request -1345 silly addNameRange number 2 { name: 'uuid', range: '>=3.3.2 <4.0.0', hasData: true } -1346 silly addNameRange versions [ 'uuid', -1346 silly addNameRange [ '0.0.1', -1346 silly addNameRange '0.0.2', -1346 silly addNameRange '1.4.0', -1346 silly addNameRange '1.4.1', -1346 silly addNameRange '1.4.2', -1346 silly addNameRange '2.0.0', -1346 silly addNameRange '2.0.1', -1346 silly addNameRange '2.0.2', -1346 silly addNameRange '2.0.3', -1346 silly addNameRange '3.0.0', -1346 silly addNameRange '3.0.1', -1346 silly addNameRange '3.1.0', -1346 silly addNameRange '3.2.0', -1346 silly addNameRange '3.2.1', -1346 silly addNameRange '3.3.0', -1346 silly addNameRange '3.3.2', -1346 silly addNameRange '3.3.3', -1346 silly addNameRange '3.4.0', -1346 silly addNameRange '7.0.0-beta.0', -1346 silly addNameRange '7.0.0', -1346 silly addNameRange '7.0.1', -1346 silly addNameRange '7.0.2-beta.0', -1346 silly addNameRange '7.0.2', -1346 silly addNameRange '7.0.3', -1346 silly addNameRange '8.0.0-beta.0', -1346 silly addNameRange '8.0.0', -1346 silly addNameRange '8.1.0' ] ] -1347 silly addNamed uuid@3.4.0 -1348 verbose addNamed "3.4.0" is a plain semver version for uuid -1349 silly resolveWithNewModule qs@6.5.2 checking installable status -1350 silly cache add args [ 'qs@~6.5.2', null ] -1351 verbose cache add spec qs@~6.5.2 -1352 silly cache add parsed spec Result { -1352 silly cache add raw: 'qs@~6.5.2', -1352 silly cache add scope: null, -1352 silly cache add name: 'qs', -1352 silly cache add rawSpec: '~6.5.2', -1352 silly cache add spec: '>=6.5.2 <6.6.0', -1352 silly cache add type: 'range' } -1353 silly addNamed qs@>=6.5.2 <6.6.0 -1354 verbose addNamed ">=6.5.2 <6.6.0" is a valid semver range for qs -1355 silly addNameRange { name: 'qs', range: '>=6.5.2 <6.6.0', hasData: false } -1356 silly mapToRegistry name qs -1357 silly mapToRegistry using default registry -1358 silly mapToRegistry registry https://registry.npmjs.org/ -1359 silly mapToRegistry uri https://registry.npmjs.org/qs -1360 verbose addNameRange registry:https://registry.npmjs.org/qs not in flight; fetching -1361 verbose afterAdd /home/christine/.npm/oauth-sign/0.9.0/package/package.json written -1362 http fetch 200 https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz -1363 info retry fetch attempt 1 at 13:48:57 -1364 info attempt registry request try #1 at 13:48:57 -1365 http fetch GET https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz -1366 verbose get https://registry.npmjs.org/qs not expired, no request -1367 silly addNameRange number 2 { name: 'qs', range: '>=6.5.2 <6.6.0', hasData: true } -1368 silly addNameRange versions [ 'qs', -1368 silly addNameRange [ '0.0.1', -1368 silly addNameRange '0.0.2', -1368 silly addNameRange '0.0.3', -1368 silly addNameRange '0.0.4', -1368 silly addNameRange '0.0.5', -1368 silly addNameRange '0.0.6', -1368 silly addNameRange '0.0.7', -1368 silly addNameRange '0.1.0', -1368 silly addNameRange '0.2.0', -1368 silly addNameRange '0.3.0', -1368 silly addNameRange '0.3.1', -1368 silly addNameRange '0.3.2', -1368 silly addNameRange '0.4.0', -1368 silly addNameRange '0.4.1', -1368 silly addNameRange '0.4.2', -1368 silly addNameRange '0.5.0', -1368 silly addNameRange '0.5.1', -1368 silly addNameRange '0.5.2', -1368 silly addNameRange '0.5.3', -1368 silly addNameRange '0.5.4', -1368 silly addNameRange '0.5.5', -1368 silly addNameRange '0.5.6', -1368 silly addNameRange '0.6.0', -1368 silly addNameRange '0.6.1', -1368 silly addNameRange '0.6.2', -1368 silly addNameRange '0.6.3', -1368 silly addNameRange '0.6.4', -1368 silly addNameRange '0.6.5', -1368 silly addNameRange '0.6.6', -1368 silly addNameRange '1.0.0', -1368 silly addNameRange '1.0.1', -1368 silly addNameRange '1.0.2', -1368 silly addNameRange '1.1.0', -1368 silly addNameRange '1.2.0', -1368 silly addNameRange '1.2.1', -1368 silly addNameRange '1.2.2', -1368 silly addNameRange '2.0.0', -1368 silly addNameRange '2.1.0', -1368 silly addNameRange '2.2.0', -1368 silly addNameRange '2.2.1', -1368 silly addNameRange '2.2.2', -1368 silly addNameRange '2.2.3', -1368 silly addNameRange '2.2.4', -1368 silly addNameRange '2.2.5', -1368 silly addNameRange '2.3.0', -1368 silly addNameRange '2.3.1', -1368 silly addNameRange '2.3.2', -1368 silly addNameRange '2.3.3', -1368 silly addNameRange '2.4.0', -1368 silly addNameRange '2.4.1', -1368 silly addNameRange '2.4.2', -1368 silly addNameRange '3.0.0', -1368 silly addNameRange '3.1.0', -1368 silly addNameRange '4.0.0', -1368 silly addNameRange '5.0.0', -1368 silly addNameRange '5.1.0', -1368 silly addNameRange '5.2.0', -1368 silly addNameRange '6.0.0', -1368 silly addNameRange '6.0.1', -1368 silly addNameRange '6.0.2', -1368 silly addNameRange '6.1.0', -1368 silly addNameRange '6.2.0', -1368 silly addNameRange '5.2.1', -1368 silly addNameRange '6.2.1', -1368 silly addNameRange '6.3.0', -1368 silly addNameRange '6.3.1', -1368 silly addNameRange '6.1.1', -1368 silly addNameRange '6.0.3', -1368 silly addNameRange '6.2.2', -1368 silly addNameRange '6.4.0', -1368 silly addNameRange '6.3.2', -1368 silly addNameRange '6.2.3', -1368 silly addNameRange '6.1.2', -1368 silly addNameRange '6.0.4', -1368 silly addNameRange '6.5.0', -1368 silly addNameRange '6.5.1', -1368 silly addNameRange '6.5.2', -1368 silly addNameRange '6.6.0', -1368 silly addNameRange '6.7.0', -1368 silly addNameRange '6.8.0', -1368 silly addNameRange '6.9.0', -1368 silly addNameRange '6.9.1', -1368 silly addNameRange '6.9.2', -1368 silly addNameRange '6.8.1', -1368 silly addNameRange '6.7.1', -1368 silly addNameRange '6.7.2', -1368 silly addNameRange '6.8.2', -1368 silly addNameRange '6.9.3', -1368 silly addNameRange '6.9.4' ] ] -1369 silly addNamed qs@6.5.2 -1370 verbose addNamed "6.5.2" is a plain semver version for qs -1371 silly fetchAndShaCheck shasum 1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6 -1372 http fetch 200 https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz -1373 silly cache afterAdd uuid@3.4.0 -1374 verbose afterAdd /home/christine/.npm/uuid/3.4.0/package/package.json not in flight; writing -1375 verbose addTmpTarball /tmp/npm-5369-43d945e1/registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz not in flight; adding -1376 verbose addTmpTarball already have metadata; skipping unpack for safe-buffer@5.2.1 -1377 silly cache afterAdd qs@6.5.2 -1378 verbose afterAdd /home/christine/.npm/qs/6.5.2/package/package.json not in flight; writing -1379 verbose afterAdd /home/christine/.npm/uuid/3.4.0/package/package.json written -1380 silly fetchAndShaCheck shasum cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2 -1381 verbose afterAdd /home/christine/.npm/qs/6.5.2/package/package.json written -1382 verbose addTmpTarball /tmp/npm-5369-43d945e1/registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz not in flight; adding -1383 verbose addTmpTarball already have metadata; skipping unpack for tough-cookie@2.5.0 -1384 silly cache afterAdd safe-buffer@5.2.1 -1385 verbose afterAdd /home/christine/.npm/safe-buffer/5.2.1/package/package.json not in flight; writing -1386 verbose afterAdd /home/christine/.npm/safe-buffer/5.2.1/package/package.json written -1387 silly cache afterAdd tough-cookie@2.5.0 -1388 verbose afterAdd /home/christine/.npm/tough-cookie/2.5.0/package/package.json not in flight; writing -1389 verbose afterAdd /home/christine/.npm/tough-cookie/2.5.0/package/package.json written -1390 http fetch 200 https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz -1391 silly fetchAndShaCheck shasum 47949f98e279ea53119f5722e0f34e529bec009f -1392 verbose addTmpTarball /tmp/npm-5369-43d945e1/registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz not in flight; adding -1393 verbose addTmpTarball already have metadata; skipping unpack for mime-types@2.1.27 -1394 silly cache afterAdd mime-types@2.1.27 -1395 verbose afterAdd /home/christine/.npm/mime-types/2.1.27/package/package.json not in flight; writing -1396 verbose afterAdd /home/christine/.npm/mime-types/2.1.27/package/package.json written -1397 silly fetchNamedPackageData delayed-stream -1398 silly mapToRegistry name delayed-stream -1399 silly mapToRegistry using default registry -1400 silly mapToRegistry registry https://registry.npmjs.org/ -1401 silly mapToRegistry uri https://registry.npmjs.org/delayed-stream -1402 verbose request uri https://registry.npmjs.org/delayed-stream -1403 verbose request no auth needed -1404 info attempt registry request try #1 at 13:48:57 -1405 verbose etag W/"d93fb1e0b12584f566e6f17a70c49721" -1406 verbose lastModified Sat, 26 May 2018 21:57:10 GMT -1407 http request GET https://registry.npmjs.org/delayed-stream -1408 http 304 https://registry.npmjs.org/delayed-stream -1409 verbose headers { date: 'Fri, 22 May 2020 11:48:57 GMT', -1409 verbose headers connection: 'keep-alive', -1409 verbose headers 'set-cookie': -1409 verbose headers [ '__cfduid=d1ba0ebb5b0def6eb801cd0e2e5f4b1541590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -1409 verbose headers 'cf-ray': '59764fa5ecd6325c-FRA', -1409 verbose headers age: '5355', -1409 verbose headers 'cache-control': 'public, max-age=300', -1409 verbose headers etag: '"d93fb1e0b12584f566e6f17a70c49721"', -1409 verbose headers 'last-modified': 'Sat, 26 May 2018 21:57:10 GMT', -1409 verbose headers vary: 'Accept-Encoding', -1409 verbose headers 'cf-cache-status': 'HIT', -1409 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -1409 verbose headers server: 'cloudflare', -1409 verbose headers 'cf-request-id': '02ddd01baf0000325c4c82b200000001' } -1410 silly get cb [ 304, -1410 silly get { date: 'Fri, 22 May 2020 11:48:57 GMT', -1410 silly get connection: 'keep-alive', -1410 silly get 'set-cookie': -1410 silly get [ '__cfduid=d1ba0ebb5b0def6eb801cd0e2e5f4b1541590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -1410 silly get 'cf-ray': '59764fa5ecd6325c-FRA', -1410 silly get age: '5355', -1410 silly get 'cache-control': 'public, max-age=300', -1410 silly get etag: '"d93fb1e0b12584f566e6f17a70c49721"', -1410 silly get 'last-modified': 'Sat, 26 May 2018 21:57:10 GMT', -1410 silly get vary: 'Accept-Encoding', -1410 silly get 'cf-cache-status': 'HIT', -1410 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -1410 silly get server: 'cloudflare', -1410 silly get 'cf-request-id': '02ddd01baf0000325c4c82b200000001' } ] -1411 verbose etag https://registry.npmjs.org/delayed-stream from cache -1412 verbose get saving delayed-stream to /home/christine/.npm/registry.npmjs.org/delayed-stream/.cache.json -1413 silly resolveWithNewModule delayed-stream@1.0.0 checking installable status -1414 silly cache add args [ 'delayed-stream@~1.0.0', null ] -1415 verbose cache add spec delayed-stream@~1.0.0 -1416 silly cache add parsed spec Result { -1416 silly cache add raw: 'delayed-stream@~1.0.0', -1416 silly cache add scope: null, -1416 silly cache add name: 'delayed-stream', -1416 silly cache add rawSpec: '~1.0.0', -1416 silly cache add spec: '>=1.0.0 <1.1.0', -1416 silly cache add type: 'range' } -1417 silly addNamed delayed-stream@>=1.0.0 <1.1.0 -1418 verbose addNamed ">=1.0.0 <1.1.0" is a valid semver range for delayed-stream -1419 silly addNameRange { name: 'delayed-stream', -1419 silly addNameRange range: '>=1.0.0 <1.1.0', -1419 silly addNameRange hasData: false } -1420 silly mapToRegistry name delayed-stream -1421 silly mapToRegistry using default registry -1422 silly mapToRegistry registry https://registry.npmjs.org/ -1423 silly mapToRegistry uri https://registry.npmjs.org/delayed-stream -1424 verbose addNameRange registry:https://registry.npmjs.org/delayed-stream not in flight; fetching -1425 verbose get https://registry.npmjs.org/delayed-stream not expired, no request -1426 silly addNameRange number 2 { name: 'delayed-stream', -1426 silly addNameRange range: '>=1.0.0 <1.1.0', -1426 silly addNameRange hasData: true } -1427 silly addNameRange versions [ 'delayed-stream', -1427 silly addNameRange [ '0.0.0', -1427 silly addNameRange '0.0.1', -1427 silly addNameRange '0.0.2', -1427 silly addNameRange '0.0.3', -1427 silly addNameRange '0.0.4', -1427 silly addNameRange '0.0.5', -1427 silly addNameRange '0.0.6', -1427 silly addNameRange '0.0.7', -1427 silly addNameRange '1.0.0' ] ] -1428 silly addNamed delayed-stream@1.0.0 -1429 verbose addNamed "1.0.0" is a plain semver version for delayed-stream -1430 silly cache afterAdd delayed-stream@1.0.0 -1431 verbose afterAdd /home/christine/.npm/delayed-stream/1.0.0/package/package.json not in flight; writing -1432 verbose afterAdd /home/christine/.npm/delayed-stream/1.0.0/package/package.json written -1433 silly fetchNamedPackageData asynckit -1434 silly mapToRegistry name asynckit -1435 silly mapToRegistry using default registry -1436 silly mapToRegistry registry https://registry.npmjs.org/ -1437 silly mapToRegistry uri https://registry.npmjs.org/asynckit -1438 verbose request uri https://registry.npmjs.org/asynckit -1439 verbose request no auth needed -1440 info attempt registry request try #1 at 13:48:57 -1441 verbose etag W/"34349b180d8fff99867769eadfb4b93e" -1442 verbose lastModified Sat, 26 May 2018 17:31:47 GMT -1443 http request GET https://registry.npmjs.org/asynckit -1444 http 304 https://registry.npmjs.org/asynckit -1445 verbose headers { date: 'Fri, 22 May 2020 11:48:57 GMT', -1445 verbose headers connection: 'keep-alive', -1445 verbose headers 'set-cookie': -1445 verbose headers [ '__cfduid=d2f816bc144e9d07683b5f46095af6dd51590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -1445 verbose headers 'cf-ray': '59764fa64d096347-FRA', -1445 verbose headers age: '5354', -1445 verbose headers 'cache-control': 'public, max-age=300', -1445 verbose headers etag: '"34349b180d8fff99867769eadfb4b93e"', -1445 verbose headers 'last-modified': 'Sat, 26 May 2018 17:31:47 GMT', -1445 verbose headers vary: 'Accept-Encoding', -1445 verbose headers 'cf-cache-status': 'HIT', -1445 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -1445 verbose headers server: 'cloudflare', -1445 verbose headers 'cf-request-id': '02ddd01be900006347e88c6200000001' } -1446 silly get cb [ 304, -1446 silly get { date: 'Fri, 22 May 2020 11:48:57 GMT', -1446 silly get connection: 'keep-alive', -1446 silly get 'set-cookie': -1446 silly get [ '__cfduid=d2f816bc144e9d07683b5f46095af6dd51590148137; expires=Sun, 21-Jun-20 11:48:57 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -1446 silly get 'cf-ray': '59764fa64d096347-FRA', -1446 silly get age: '5354', -1446 silly get 'cache-control': 'public, max-age=300', -1446 silly get etag: '"34349b180d8fff99867769eadfb4b93e"', -1446 silly get 'last-modified': 'Sat, 26 May 2018 17:31:47 GMT', -1446 silly get vary: 'Accept-Encoding', -1446 silly get 'cf-cache-status': 'HIT', -1446 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -1446 silly get server: 'cloudflare', -1446 silly get 'cf-request-id': '02ddd01be900006347e88c6200000001' } ] -1447 verbose etag https://registry.npmjs.org/asynckit from cache -1448 verbose get saving asynckit to /home/christine/.npm/registry.npmjs.org/asynckit/.cache.json -1449 silly resolveWithNewModule asynckit@0.4.0 checking installable status -1450 silly cache add args [ 'asynckit@^0.4.0', null ] -1451 verbose cache add spec asynckit@^0.4.0 -1452 silly cache add parsed spec Result { -1452 silly cache add raw: 'asynckit@^0.4.0', -1452 silly cache add scope: null, -1452 silly cache add name: 'asynckit', -1452 silly cache add rawSpec: '^0.4.0', -1452 silly cache add spec: '>=0.4.0 <0.5.0', -1452 silly cache add type: 'range' } -1453 silly addNamed asynckit@>=0.4.0 <0.5.0 -1454 verbose addNamed ">=0.4.0 <0.5.0" is a valid semver range for asynckit -1455 silly addNameRange { name: 'asynckit', range: '>=0.4.0 <0.5.0', hasData: false } -1456 silly mapToRegistry name asynckit -1457 silly mapToRegistry using default registry -1458 silly mapToRegistry registry https://registry.npmjs.org/ -1459 silly mapToRegistry uri https://registry.npmjs.org/asynckit -1460 verbose addNameRange registry:https://registry.npmjs.org/asynckit not in flight; fetching -1461 verbose get https://registry.npmjs.org/asynckit not expired, no request -1462 silly addNameRange number 2 { name: 'asynckit', range: '>=0.4.0 <0.5.0', hasData: true } -1463 silly addNameRange versions [ 'asynckit', [ '0.1.0', '0.2.0', '0.3.0', '0.4.0' ] ] -1464 silly addNamed asynckit@0.4.0 -1465 verbose addNamed "0.4.0" is a plain semver version for asynckit -1466 silly cache afterAdd asynckit@0.4.0 -1467 verbose afterAdd /home/christine/.npm/asynckit/0.4.0/package/package.json not in flight; writing -1468 verbose afterAdd /home/christine/.npm/asynckit/0.4.0/package/package.json written -1469 silly fetchNamedPackageData mime-db -1470 silly mapToRegistry name mime-db -1471 silly mapToRegistry using default registry -1472 silly mapToRegistry registry https://registry.npmjs.org/ -1473 silly mapToRegistry uri https://registry.npmjs.org/mime-db -1474 verbose request uri https://registry.npmjs.org/mime-db -1475 verbose request no auth needed -1476 info attempt registry request try #1 at 13:48:57 -1477 verbose etag W/"2b27fd56fd1f376697dd3c190a16cbca" -1478 verbose lastModified Mon, 06 Jan 2020 03:24:41 GMT -1479 http request GET https://registry.npmjs.org/mime-db -1480 http 200 https://registry.npmjs.org/mime-db -1481 verbose headers { date: 'Fri, 22 May 2020 11:48:58 GMT', -1481 verbose headers 'content-type': 'application/json', -1481 verbose headers 'transfer-encoding': 'chunked', -1481 verbose headers connection: 'keep-alive', -1481 verbose headers 'set-cookie': -1481 verbose headers [ '__cfduid=d5c44467f99426bc8ed81135e17d288951590148138; expires=Sun, 21-Jun-20 11:48:58 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -1481 verbose headers 'cf-ray': '59764fa68978648b-FRA', -1481 verbose headers age: '5355', -1481 verbose headers 'cache-control': 'public, max-age=300', -1481 verbose headers etag: 'W/"b954c5c9a96f2fe6e200fdac9b6d1184"', -1481 verbose headers 'last-modified': 'Thu, 23 Apr 2020 00:55:28 GMT', -1481 verbose headers vary: 'accept-encoding, accept', -1481 verbose headers 'cf-cache-status': 'HIT', -1481 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -1481 verbose headers server: 'cloudflare', -1481 verbose headers 'content-encoding': 'gzip', -1481 verbose headers 'cf-request-id': '02ddd01c160000648bda012200000001' } -1482 silly get cb [ 200, -1482 silly get { date: 'Fri, 22 May 2020 11:48:58 GMT', -1482 silly get 'content-type': 'application/json', -1482 silly get 'transfer-encoding': 'chunked', -1482 silly get connection: 'keep-alive', -1482 silly get 'set-cookie': -1482 silly get [ '__cfduid=d5c44467f99426bc8ed81135e17d288951590148138; expires=Sun, 21-Jun-20 11:48:58 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -1482 silly get 'cf-ray': '59764fa68978648b-FRA', -1482 silly get age: '5355', -1482 silly get 'cache-control': 'public, max-age=300', -1482 silly get etag: 'W/"b954c5c9a96f2fe6e200fdac9b6d1184"', -1482 silly get 'last-modified': 'Thu, 23 Apr 2020 00:55:28 GMT', -1482 silly get vary: 'accept-encoding, accept', -1482 silly get 'cf-cache-status': 'HIT', -1482 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -1482 silly get server: 'cloudflare', -1482 silly get 'content-encoding': 'gzip', -1482 silly get 'cf-request-id': '02ddd01c160000648bda012200000001' } ] -1483 verbose get saving mime-db to /home/christine/.npm/registry.npmjs.org/mime-db/.cache.json -1484 silly resolveWithNewModule mime-db@1.44.0 checking installable status -1485 silly cache add args [ 'mime-db@1.44.0', null ] -1486 verbose cache add spec mime-db@1.44.0 -1487 silly cache add parsed spec Result { -1487 silly cache add raw: 'mime-db@1.44.0', -1487 silly cache add scope: null, -1487 silly cache add name: 'mime-db', -1487 silly cache add rawSpec: '1.44.0', -1487 silly cache add spec: '1.44.0', -1487 silly cache add type: 'version' } -1488 silly addNamed mime-db@1.44.0 -1489 verbose addNamed "1.44.0" is a plain semver version for mime-db -1490 silly mapToRegistry name mime-db -1491 silly mapToRegistry using default registry -1492 silly mapToRegistry registry https://registry.npmjs.org/ -1493 silly mapToRegistry uri https://registry.npmjs.org/mime-db -1494 verbose addNameVersion registry:https://registry.npmjs.org/mime-db not in flight; fetching -1495 verbose get https://registry.npmjs.org/mime-db not expired, no request -1496 silly mapToRegistry name mime-db -1497 silly mapToRegistry using default registry -1498 silly mapToRegistry registry https://registry.npmjs.org/ -1499 silly mapToRegistry uri https://registry.npmjs.org/mime-db -1500 verbose addRemoteTarball https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz not in flight; adding -1501 verbose addRemoteTarball [ 'https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz', -1501 verbose addRemoteTarball 'fa11c5eb0aca1334b4233cb4d52f10c5a6272f92' ] -1502 info retry fetch attempt 1 at 13:48:58 -1503 info attempt registry request try #1 at 13:48:58 -1504 http fetch GET https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz -1505 http fetch 200 https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz -1506 silly fetchAndShaCheck shasum fa11c5eb0aca1334b4233cb4d52f10c5a6272f92 -1507 verbose addTmpTarball /tmp/npm-5369-43d945e1/registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz not in flight; adding -1508 verbose addTmpTarball already have metadata; skipping unpack for mime-db@1.44.0 -1509 silly cache afterAdd mime-db@1.44.0 -1510 verbose afterAdd /home/christine/.npm/mime-db/1.44.0/package/package.json not in flight; writing -1511 verbose afterAdd /home/christine/.npm/mime-db/1.44.0/package/package.json written -1512 silly fetchNamedPackageData ajv -1513 silly mapToRegistry name ajv -1514 silly mapToRegistry using default registry -1515 silly mapToRegistry registry https://registry.npmjs.org/ -1516 silly mapToRegistry uri https://registry.npmjs.org/ajv -1517 silly fetchNamedPackageData har-schema -1518 silly mapToRegistry name har-schema -1519 silly mapToRegistry using default registry -1520 silly mapToRegistry registry https://registry.npmjs.org/ -1521 silly mapToRegistry uri https://registry.npmjs.org/har-schema -1522 verbose request uri https://registry.npmjs.org/har-schema -1523 verbose request no auth needed -1524 info attempt registry request try #1 at 13:48:58 -1525 verbose etag W/"63c48c25d01ab9ec3e3fb5fe89f0600c" -1526 verbose lastModified Tue, 08 Jan 2019 06:13:01 GMT -1527 http request GET https://registry.npmjs.org/har-schema -1528 verbose request uri https://registry.npmjs.org/ajv -1529 verbose request no auth needed -1530 info attempt registry request try #1 at 13:48:58 -1531 verbose etag W/"da116ce9064cf3ae300f7c5410f85976" -1532 verbose lastModified Sat, 22 Feb 2020 13:51:53 GMT -1533 http request GET https://registry.npmjs.org/ajv -1534 http 304 https://registry.npmjs.org/har-schema -1535 verbose headers { date: 'Fri, 22 May 2020 11:48:58 GMT', -1535 verbose headers connection: 'keep-alive', -1535 verbose headers 'set-cookie': -1535 verbose headers [ '__cfduid=d4522c061ac7d1a53e179487bb5d818481590148138; expires=Sun, 21-Jun-20 11:48:58 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -1535 verbose headers 'cf-ray': '59764fa77b11175a-FRA', -1535 verbose headers age: '5352', -1535 verbose headers 'cache-control': 'public, max-age=300', -1535 verbose headers etag: '"63c48c25d01ab9ec3e3fb5fe89f0600c"', -1535 verbose headers 'last-modified': 'Tue, 08 Jan 2019 06:13:01 GMT', -1535 verbose headers vary: 'Accept-Encoding', -1535 verbose headers 'cf-cache-status': 'HIT', -1535 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -1535 verbose headers server: 'cloudflare', -1535 verbose headers 'cf-request-id': '02ddd01caf0000175a1e21a200000001' } -1536 silly get cb [ 304, -1536 silly get { date: 'Fri, 22 May 2020 11:48:58 GMT', -1536 silly get connection: 'keep-alive', -1536 silly get 'set-cookie': -1536 silly get [ '__cfduid=d4522c061ac7d1a53e179487bb5d818481590148138; expires=Sun, 21-Jun-20 11:48:58 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -1536 silly get 'cf-ray': '59764fa77b11175a-FRA', -1536 silly get age: '5352', -1536 silly get 'cache-control': 'public, max-age=300', -1536 silly get etag: '"63c48c25d01ab9ec3e3fb5fe89f0600c"', -1536 silly get 'last-modified': 'Tue, 08 Jan 2019 06:13:01 GMT', -1536 silly get vary: 'Accept-Encoding', -1536 silly get 'cf-cache-status': 'HIT', -1536 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -1536 silly get server: 'cloudflare', -1536 silly get 'cf-request-id': '02ddd01caf0000175a1e21a200000001' } ] -1537 verbose etag https://registry.npmjs.org/har-schema from cache -1538 verbose get saving har-schema to /home/christine/.npm/registry.npmjs.org/har-schema/.cache.json -1539 silly resolveWithNewModule har-schema@2.0.0 checking installable status -1540 silly cache add args [ 'har-schema@^2.0.0', null ] -1541 verbose cache add spec har-schema@^2.0.0 -1542 silly cache add parsed spec Result { -1542 silly cache add raw: 'har-schema@^2.0.0', -1542 silly cache add scope: null, -1542 silly cache add name: 'har-schema', -1542 silly cache add rawSpec: '^2.0.0', -1542 silly cache add spec: '>=2.0.0 <3.0.0', -1542 silly cache add type: 'range' } -1543 silly addNamed har-schema@>=2.0.0 <3.0.0 -1544 verbose addNamed ">=2.0.0 <3.0.0" is a valid semver range for har-schema -1545 silly addNameRange { name: 'har-schema', range: '>=2.0.0 <3.0.0', hasData: false } -1546 silly mapToRegistry name har-schema -1547 silly mapToRegistry using default registry -1548 silly mapToRegistry registry https://registry.npmjs.org/ -1549 silly mapToRegistry uri https://registry.npmjs.org/har-schema -1550 verbose addNameRange registry:https://registry.npmjs.org/har-schema not in flight; fetching -1551 verbose get https://registry.npmjs.org/har-schema not expired, no request -1552 silly addNameRange number 2 { name: 'har-schema', range: '>=2.0.0 <3.0.0', hasData: true } -1553 silly addNameRange versions [ 'har-schema', -1553 silly addNameRange [ '0.0.1', -1553 silly addNameRange '0.1.0', -1553 silly addNameRange '0.2.0', -1553 silly addNameRange '1.0.0', -1553 silly addNameRange '1.0.1', -1553 silly addNameRange '1.0.2', -1553 silly addNameRange '1.0.3', -1553 silly addNameRange '1.0.4', -1553 silly addNameRange '1.0.5', -1553 silly addNameRange '2.0.0' ] ] -1554 silly addNamed har-schema@2.0.0 -1555 verbose addNamed "2.0.0" is a plain semver version for har-schema -1556 silly cache afterAdd har-schema@2.0.0 -1557 verbose afterAdd /home/christine/.npm/har-schema/2.0.0/package/package.json not in flight; writing -1558 verbose afterAdd /home/christine/.npm/har-schema/2.0.0/package/package.json written -1559 http 200 https://registry.npmjs.org/ajv -1560 verbose headers { date: 'Fri, 22 May 2020 11:48:58 GMT', -1560 verbose headers 'content-type': 'application/json', -1560 verbose headers 'transfer-encoding': 'chunked', -1560 verbose headers connection: 'keep-alive', -1560 verbose headers 'set-cookie': -1560 verbose headers [ '__cfduid=da40e9f27d1dea0fa61ff6ca4322cb73c1590148138; expires=Sun, 21-Jun-20 11:48:58 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -1560 verbose headers 'cf-ray': '59764fa798ddd715-FRA', -1560 verbose headers age: '5352', -1560 verbose headers 'cache-control': 'public, max-age=300', -1560 verbose headers etag: 'W/"ba29f88f088d4acc36748d3083785459"', -1560 verbose headers 'last-modified': 'Sun, 19 Apr 2020 23:18:27 GMT', -1560 verbose headers vary: 'accept-encoding, accept', -1560 verbose headers 'cf-cache-status': 'HIT', -1560 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -1560 verbose headers server: 'cloudflare', -1560 verbose headers 'content-encoding': 'gzip', -1560 verbose headers 'cf-request-id': '02ddd01cc30000d715c1209200000001' } -1561 silly get cb [ 200, -1561 silly get { date: 'Fri, 22 May 2020 11:48:58 GMT', -1561 silly get 'content-type': 'application/json', -1561 silly get 'transfer-encoding': 'chunked', -1561 silly get connection: 'keep-alive', -1561 silly get 'set-cookie': -1561 silly get [ '__cfduid=da40e9f27d1dea0fa61ff6ca4322cb73c1590148138; expires=Sun, 21-Jun-20 11:48:58 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -1561 silly get 'cf-ray': '59764fa798ddd715-FRA', -1561 silly get age: '5352', -1561 silly get 'cache-control': 'public, max-age=300', -1561 silly get etag: 'W/"ba29f88f088d4acc36748d3083785459"', -1561 silly get 'last-modified': 'Sun, 19 Apr 2020 23:18:27 GMT', -1561 silly get vary: 'accept-encoding, accept', -1561 silly get 'cf-cache-status': 'HIT', -1561 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -1561 silly get server: 'cloudflare', -1561 silly get 'content-encoding': 'gzip', -1561 silly get 'cf-request-id': '02ddd01cc30000d715c1209200000001' } ] -1562 verbose get saving ajv to /home/christine/.npm/registry.npmjs.org/ajv/.cache.json -1563 silly resolveWithNewModule ajv@6.12.2 checking installable status -1564 silly cache add args [ 'ajv@^6.5.5', null ] -1565 verbose cache add spec ajv@^6.5.5 -1566 silly cache add parsed spec Result { -1566 silly cache add raw: 'ajv@^6.5.5', -1566 silly cache add scope: null, -1566 silly cache add name: 'ajv', -1566 silly cache add rawSpec: '^6.5.5', -1566 silly cache add spec: '>=6.5.5 <7.0.0', -1566 silly cache add type: 'range' } -1567 silly addNamed ajv@>=6.5.5 <7.0.0 -1568 verbose addNamed ">=6.5.5 <7.0.0" is a valid semver range for ajv -1569 silly addNameRange { name: 'ajv', range: '>=6.5.5 <7.0.0', hasData: false } -1570 silly mapToRegistry name ajv -1571 silly mapToRegistry using default registry -1572 silly mapToRegistry registry https://registry.npmjs.org/ -1573 silly mapToRegistry uri https://registry.npmjs.org/ajv -1574 verbose addNameRange registry:https://registry.npmjs.org/ajv not in flight; fetching -1575 verbose get https://registry.npmjs.org/ajv not expired, no request -1576 silly addNameRange number 2 { name: 'ajv', range: '>=6.5.5 <7.0.0', hasData: true } -1577 silly addNameRange versions [ 'ajv', -1577 silly addNameRange [ '0.0.4', -1577 silly addNameRange '0.0.5', -1577 silly addNameRange '0.0.6', -1577 silly addNameRange '0.0.7', -1577 silly addNameRange '0.0.8', -1577 silly addNameRange '0.0.9', -1577 silly addNameRange '0.0.10', -1577 silly addNameRange '0.0.11', -1577 silly addNameRange '0.0.12', -1577 silly addNameRange '0.1.0', -1577 silly addNameRange '0.1.1', -1577 silly addNameRange '0.1.2', -1577 silly addNameRange '0.1.3', -1577 silly addNameRange '0.1.4', -1577 silly addNameRange '0.1.5', -1577 silly addNameRange '0.1.6', -1577 silly addNameRange '0.1.7', -1577 silly addNameRange '0.1.8', -1577 silly addNameRange '0.1.9', -1577 silly addNameRange '0.1.10', -1577 silly addNameRange '0.1.11', -1577 silly addNameRange '0.1.12', -1577 silly addNameRange '0.1.13', -1577 silly addNameRange '0.1.14', -1577 silly addNameRange '0.1.15', -1577 silly addNameRange '0.1.16', -1577 silly addNameRange '0.2.0', -1577 silly addNameRange '0.2.1', -1577 silly addNameRange '0.2.2', -1577 silly addNameRange '0.2.3', -1577 silly addNameRange '0.2.4', -1577 silly addNameRange '0.2.5', -1577 silly addNameRange '0.2.6', -1577 silly addNameRange '0.2.7', -1577 silly addNameRange '0.2.8', -1577 silly addNameRange '0.2.9', -1577 silly addNameRange '0.3.0', -1577 silly addNameRange '0.3.1', -1577 silly addNameRange '0.3.2', -1577 silly addNameRange '0.3.3', -1577 silly addNameRange '0.3.4', -1577 silly addNameRange '0.3.5', -1577 silly addNameRange '0.3.6', -1577 silly addNameRange '0.3.7', -1577 silly addNameRange '0.3.8', -1577 silly addNameRange '0.3.11', -1577 silly addNameRange '0.3.12', -1577 silly addNameRange '0.4.0', -1577 silly addNameRange '0.4.1', -1577 silly addNameRange '0.4.2', -1577 silly addNameRange '0.4.3', -1577 silly addNameRange '0.4.4', -1577 silly addNameRange '0.4.5', -1577 silly addNameRange '0.4.6', -1577 silly addNameRange '0.4.7', -1577 silly addNameRange '0.4.8', -1577 silly addNameRange '0.4.9', -1577 silly addNameRange '0.4.10', -1577 silly addNameRange '0.4.12', -1577 silly addNameRange '0.4.14', -1577 silly addNameRange '0.4.15', -1577 silly addNameRange '0.5.0', -1577 silly addNameRange '0.5.2', -1577 silly addNameRange '0.5.3', -1577 silly addNameRange '0.5.4', -1577 silly addNameRange '0.5.5', -1577 silly addNameRange '0.5.6', -1577 silly addNameRange '0.5.7', -1577 silly addNameRange '0.5.8', -1577 silly addNameRange '0.5.9', -1577 silly addNameRange '0.5.10', -1577 silly addNameRange '0.5.11', -1577 silly addNameRange '0.5.12', -1577 silly addNameRange '0.6.0', -1577 silly addNameRange '0.6.1', -1577 silly addNameRange '0.6.2', -1577 silly addNameRange '0.6.3', -1577 silly addNameRange '0.6.4', -1577 silly addNameRange '0.6.5', -1577 silly addNameRange '0.6.6', -1577 silly addNameRange '0.6.7', -1577 silly addNameRange '0.6.8', -1577 silly addNameRange '0.6.9', -1577 silly addNameRange '0.6.10', -1577 silly addNameRange '0.6.11', -1577 silly addNameRange '0.6.12', -1577 silly addNameRange '0.6.13', -1577 silly addNameRange '0.6.14', -1577 silly addNameRange '0.6.15', -1577 silly addNameRange '0.7.0', -1577 silly addNameRange '0.7.1', -1577 silly addNameRange '0.7.2', -1577 silly addNameRange '1.0.0', -1577 silly addNameRange '1.0.1', -1577 silly addNameRange '1.1.1', -1577 silly addNameRange '1.2.0', -1577 silly addNameRange '1.2.1', -1577 silly addNameRange '1.3.0', -1577 silly addNameRange '1.3.1', -1577 silly addNameRange '1.3.2', -1577 silly addNameRange ... 185 more items ] ] -1578 silly addNamed ajv@6.12.2 -1579 verbose addNamed "6.12.2" is a plain semver version for ajv -1580 silly mapToRegistry name ajv -1581 silly mapToRegistry using default registry -1582 silly mapToRegistry registry https://registry.npmjs.org/ -1583 silly mapToRegistry uri https://registry.npmjs.org/ajv -1584 verbose addRemoteTarball https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz not in flight; adding -1585 verbose addRemoteTarball [ 'https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz', -1585 verbose addRemoteTarball 'c629c5eced17baf314437918d2da88c99d5958cd' ] -1586 info retry fetch attempt 1 at 13:48:58 -1587 info attempt registry request try #1 at 13:48:58 -1588 http fetch GET https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz -1589 http fetch 200 https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz -1590 silly fetchAndShaCheck shasum c629c5eced17baf314437918d2da88c99d5958cd -1591 verbose addTmpTarball /tmp/npm-5369-43d945e1/registry.npmjs.org/ajv/-/ajv-6.12.2.tgz not in flight; adding -1592 verbose addTmpTarball already have metadata; skipping unpack for ajv@6.12.2 -1593 silly cache afterAdd ajv@6.12.2 -1594 verbose afterAdd /home/christine/.npm/ajv/6.12.2/package/package.json not in flight; writing -1595 verbose afterAdd /home/christine/.npm/ajv/6.12.2/package/package.json written -1596 silly fetchNamedPackageData fast-deep-equal -1597 silly mapToRegistry name fast-deep-equal -1598 silly mapToRegistry using default registry -1599 silly mapToRegistry registry https://registry.npmjs.org/ -1600 silly mapToRegistry uri https://registry.npmjs.org/fast-deep-equal -1601 silly fetchNamedPackageData fast-json-stable-stringify -1602 silly mapToRegistry name fast-json-stable-stringify -1603 silly mapToRegistry using default registry -1604 silly mapToRegistry registry https://registry.npmjs.org/ -1605 silly mapToRegistry uri https://registry.npmjs.org/fast-json-stable-stringify -1606 silly fetchNamedPackageData json-schema-traverse -1607 silly mapToRegistry name json-schema-traverse -1608 silly mapToRegistry using default registry -1609 silly mapToRegistry registry https://registry.npmjs.org/ -1610 silly mapToRegistry uri https://registry.npmjs.org/json-schema-traverse -1611 silly fetchNamedPackageData uri-js -1612 silly mapToRegistry name uri-js -1613 silly mapToRegistry using default registry -1614 silly mapToRegistry registry https://registry.npmjs.org/ -1615 silly mapToRegistry uri https://registry.npmjs.org/uri-js -1616 verbose request uri https://registry.npmjs.org/fast-deep-equal -1617 verbose request no auth needed -1618 info attempt registry request try #1 at 13:48:58 -1619 verbose etag W/"db2dac15e1de3baf39963d09ad4d32a5" -1620 verbose lastModified Wed, 22 Jan 2020 05:22:55 GMT -1621 http request GET https://registry.npmjs.org/fast-deep-equal -1622 verbose request uri https://registry.npmjs.org/json-schema-traverse -1623 verbose request no auth needed -1624 info attempt registry request try #1 at 13:48:58 -1625 verbose etag W/"ff9cf4d0fe6dae90110c679f03d42f51" -1626 verbose lastModified Sun, 10 Jun 2018 08:42:10 GMT -1627 http request GET https://registry.npmjs.org/json-schema-traverse -1628 verbose request uri https://registry.npmjs.org/fast-json-stable-stringify -1629 verbose request no auth needed -1630 info attempt registry request try #1 at 13:48:58 -1631 verbose etag W/"ae0fff93e18698c6aa2dc573fe85ad0a" -1632 verbose lastModified Sat, 14 Dec 2019 16:18:01 GMT -1633 http request GET https://registry.npmjs.org/fast-json-stable-stringify -1634 verbose request uri https://registry.npmjs.org/uri-js -1635 verbose request no auth needed -1636 info attempt registry request try #1 at 13:48:58 -1637 verbose etag W/"98dc8f4198063595fc640811868341b2" -1638 verbose lastModified Wed, 09 Jan 2019 05:32:41 GMT -1639 http request GET https://registry.npmjs.org/uri-js -1640 http 304 https://registry.npmjs.org/fast-deep-equal -1641 verbose headers { date: 'Fri, 22 May 2020 11:48:58 GMT', -1641 verbose headers connection: 'keep-alive', -1641 verbose headers 'set-cookie': -1641 verbose headers [ '__cfduid=dde7af43ea1a3381d8e635d144d452f041590148138; expires=Sun, 21-Jun-20 11:48:58 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -1641 verbose headers 'cf-ray': '59764fa919db05bb-FRA', -1641 verbose headers age: '5351', -1641 verbose headers 'cache-control': 'public, max-age=300', -1641 verbose headers etag: '"db2dac15e1de3baf39963d09ad4d32a5"', -1641 verbose headers 'last-modified': 'Wed, 22 Jan 2020 05:22:55 GMT', -1641 verbose headers vary: 'Accept-Encoding', -1641 verbose headers 'cf-cache-status': 'HIT', -1641 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -1641 verbose headers server: 'cloudflare', -1641 verbose headers 'cf-request-id': '02ddd01db3000005bb0ca9e200000001' } -1642 silly get cb [ 304, -1642 silly get { date: 'Fri, 22 May 2020 11:48:58 GMT', -1642 silly get connection: 'keep-alive', -1642 silly get 'set-cookie': -1642 silly get [ '__cfduid=dde7af43ea1a3381d8e635d144d452f041590148138; expires=Sun, 21-Jun-20 11:48:58 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -1642 silly get 'cf-ray': '59764fa919db05bb-FRA', -1642 silly get age: '5351', -1642 silly get 'cache-control': 'public, max-age=300', -1642 silly get etag: '"db2dac15e1de3baf39963d09ad4d32a5"', -1642 silly get 'last-modified': 'Wed, 22 Jan 2020 05:22:55 GMT', -1642 silly get vary: 'Accept-Encoding', -1642 silly get 'cf-cache-status': 'HIT', -1642 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -1642 silly get server: 'cloudflare', -1642 silly get 'cf-request-id': '02ddd01db3000005bb0ca9e200000001' } ] -1643 verbose etag https://registry.npmjs.org/fast-deep-equal from cache -1644 verbose get saving fast-deep-equal to /home/christine/.npm/registry.npmjs.org/fast-deep-equal/.cache.json -1645 silly resolveWithNewModule fast-deep-equal@3.1.1 checking installable status -1646 silly cache add args [ 'fast-deep-equal@^3.1.1', null ] -1647 verbose cache add spec fast-deep-equal@^3.1.1 -1648 silly cache add parsed spec Result { -1648 silly cache add raw: 'fast-deep-equal@^3.1.1', -1648 silly cache add scope: null, -1648 silly cache add name: 'fast-deep-equal', -1648 silly cache add rawSpec: '^3.1.1', -1648 silly cache add spec: '>=3.1.1 <4.0.0', -1648 silly cache add type: 'range' } -1649 silly addNamed fast-deep-equal@>=3.1.1 <4.0.0 -1650 verbose addNamed ">=3.1.1 <4.0.0" is a valid semver range for fast-deep-equal -1651 silly addNameRange { name: 'fast-deep-equal', -1651 silly addNameRange range: '>=3.1.1 <4.0.0', -1651 silly addNameRange hasData: false } -1652 silly mapToRegistry name fast-deep-equal -1653 silly mapToRegistry using default registry -1654 silly mapToRegistry registry https://registry.npmjs.org/ -1655 silly mapToRegistry uri https://registry.npmjs.org/fast-deep-equal -1656 verbose addNameRange registry:https://registry.npmjs.org/fast-deep-equal not in flight; fetching -1657 verbose get https://registry.npmjs.org/fast-deep-equal not expired, no request -1658 silly addNameRange number 2 { name: 'fast-deep-equal', -1658 silly addNameRange range: '>=3.1.1 <4.0.0', -1658 silly addNameRange hasData: true } -1659 silly addNameRange versions [ 'fast-deep-equal', -1659 silly addNameRange [ '0.0.1', -1659 silly addNameRange '0.1.0', -1659 silly addNameRange '1.0.0', -1659 silly addNameRange '1.1.0', -1659 silly addNameRange '2.0.0', -1659 silly addNameRange '2.0.1', -1659 silly addNameRange '3.0.0-beta.0', -1659 silly addNameRange '3.0.0-beta.1', -1659 silly addNameRange '3.0.0-beta.2', -1659 silly addNameRange '3.0.0', -1659 silly addNameRange '3.0.1', -1659 silly addNameRange '3.1.0', -1659 silly addNameRange '3.1.1' ] ] -1660 silly addNamed fast-deep-equal@3.1.1 -1661 verbose addNamed "3.1.1" is a plain semver version for fast-deep-equal -1662 silly cache afterAdd fast-deep-equal@3.1.1 -1663 verbose afterAdd /home/christine/.npm/fast-deep-equal/3.1.1/package/package.json not in flight; writing -1664 verbose afterAdd /home/christine/.npm/fast-deep-equal/3.1.1/package/package.json written -1665 http 304 https://registry.npmjs.org/fast-json-stable-stringify -1666 verbose headers { date: 'Fri, 22 May 2020 11:48:58 GMT', -1666 verbose headers connection: 'keep-alive', -1666 verbose headers 'set-cookie': -1666 verbose headers [ '__cfduid=d2af9fdb41f2d4571645353fe78c8280d1590148138; expires=Sun, 21-Jun-20 11:48:58 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -1666 verbose headers 'cf-ray': '59764fa92ba70eab-FRA', -1666 verbose headers age: '5351', -1666 verbose headers 'cache-control': 'public, max-age=300', -1666 verbose headers etag: '"ae0fff93e18698c6aa2dc573fe85ad0a"', -1666 verbose headers 'last-modified': 'Sat, 14 Dec 2019 16:18:01 GMT', -1666 verbose headers vary: 'Accept-Encoding', -1666 verbose headers 'cf-cache-status': 'HIT', -1666 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -1666 verbose headers server: 'cloudflare', -1666 verbose headers 'cf-request-id': '02ddd01db900000eabe9180200000001' } -1667 silly get cb [ 304, -1667 silly get { date: 'Fri, 22 May 2020 11:48:58 GMT', -1667 silly get connection: 'keep-alive', -1667 silly get 'set-cookie': -1667 silly get [ '__cfduid=d2af9fdb41f2d4571645353fe78c8280d1590148138; expires=Sun, 21-Jun-20 11:48:58 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -1667 silly get 'cf-ray': '59764fa92ba70eab-FRA', -1667 silly get age: '5351', -1667 silly get 'cache-control': 'public, max-age=300', -1667 silly get etag: '"ae0fff93e18698c6aa2dc573fe85ad0a"', -1667 silly get 'last-modified': 'Sat, 14 Dec 2019 16:18:01 GMT', -1667 silly get vary: 'Accept-Encoding', -1667 silly get 'cf-cache-status': 'HIT', -1667 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -1667 silly get server: 'cloudflare', -1667 silly get 'cf-request-id': '02ddd01db900000eabe9180200000001' } ] -1668 verbose etag https://registry.npmjs.org/fast-json-stable-stringify from cache -1669 verbose get saving fast-json-stable-stringify to /home/christine/.npm/registry.npmjs.org/fast-json-stable-stringify/.cache.json -1670 silly resolveWithNewModule fast-json-stable-stringify@2.1.0 checking installable status -1671 silly cache add args [ 'fast-json-stable-stringify@^2.0.0', null ] -1672 verbose cache add spec fast-json-stable-stringify@^2.0.0 -1673 silly cache add parsed spec Result { -1673 silly cache add raw: 'fast-json-stable-stringify@^2.0.0', -1673 silly cache add scope: null, -1673 silly cache add name: 'fast-json-stable-stringify', -1673 silly cache add rawSpec: '^2.0.0', -1673 silly cache add spec: '>=2.0.0 <3.0.0', -1673 silly cache add type: 'range' } -1674 silly addNamed fast-json-stable-stringify@>=2.0.0 <3.0.0 -1675 verbose addNamed ">=2.0.0 <3.0.0" is a valid semver range for fast-json-stable-stringify -1676 silly addNameRange { name: 'fast-json-stable-stringify', -1676 silly addNameRange range: '>=2.0.0 <3.0.0', -1676 silly addNameRange hasData: false } -1677 silly mapToRegistry name fast-json-stable-stringify -1678 silly mapToRegistry using default registry -1679 silly mapToRegistry registry https://registry.npmjs.org/ -1680 silly mapToRegistry uri https://registry.npmjs.org/fast-json-stable-stringify -1681 verbose addNameRange registry:https://registry.npmjs.org/fast-json-stable-stringify not in flight; fetching -1682 http 304 https://registry.npmjs.org/json-schema-traverse -1683 verbose headers { date: 'Fri, 22 May 2020 11:48:58 GMT', -1683 verbose headers connection: 'keep-alive', -1683 verbose headers 'set-cookie': -1683 verbose headers [ '__cfduid=d3221de8ef62ba021521e3facdf4646ed1590148138; expires=Sun, 21-Jun-20 11:48:58 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -1683 verbose headers 'cf-ray': '59764fa928dbd6e1-FRA', -1683 verbose headers age: '5351', -1683 verbose headers 'cache-control': 'public, max-age=300', -1683 verbose headers etag: '"ff9cf4d0fe6dae90110c679f03d42f51"', -1683 verbose headers 'last-modified': 'Sun, 10 Jun 2018 08:42:10 GMT', -1683 verbose headers vary: 'Accept-Encoding', -1683 verbose headers 'cf-cache-status': 'HIT', -1683 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -1683 verbose headers server: 'cloudflare', -1683 verbose headers 'cf-request-id': '02ddd01db80000d6e132393200000001' } -1684 silly get cb [ 304, -1684 silly get { date: 'Fri, 22 May 2020 11:48:58 GMT', -1684 silly get connection: 'keep-alive', -1684 silly get 'set-cookie': -1684 silly get [ '__cfduid=d3221de8ef62ba021521e3facdf4646ed1590148138; expires=Sun, 21-Jun-20 11:48:58 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -1684 silly get 'cf-ray': '59764fa928dbd6e1-FRA', -1684 silly get age: '5351', -1684 silly get 'cache-control': 'public, max-age=300', -1684 silly get etag: '"ff9cf4d0fe6dae90110c679f03d42f51"', -1684 silly get 'last-modified': 'Sun, 10 Jun 2018 08:42:10 GMT', -1684 silly get vary: 'Accept-Encoding', -1684 silly get 'cf-cache-status': 'HIT', -1684 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -1684 silly get server: 'cloudflare', -1684 silly get 'cf-request-id': '02ddd01db80000d6e132393200000001' } ] -1685 verbose etag https://registry.npmjs.org/json-schema-traverse from cache -1686 verbose get saving json-schema-traverse to /home/christine/.npm/registry.npmjs.org/json-schema-traverse/.cache.json -1687 http 304 https://registry.npmjs.org/uri-js -1688 verbose headers { date: 'Fri, 22 May 2020 11:48:58 GMT', -1688 verbose headers connection: 'keep-alive', -1688 verbose headers 'set-cookie': -1688 verbose headers [ '__cfduid=daac5443483b19b682dfd1142d78174b81590148138; expires=Sun, 21-Jun-20 11:48:58 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -1688 verbose headers 'cf-ray': '59764fa92aaec2f9-FRA', -1688 verbose headers age: '5351', -1688 verbose headers 'cache-control': 'public, max-age=300', -1688 verbose headers etag: '"98dc8f4198063595fc640811868341b2"', -1688 verbose headers 'last-modified': 'Wed, 09 Jan 2019 05:32:41 GMT', -1688 verbose headers vary: 'Accept-Encoding', -1688 verbose headers 'cf-cache-status': 'HIT', -1688 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -1688 verbose headers server: 'cloudflare', -1688 verbose headers 'cf-request-id': '02ddd01db90000c2f92609d200000001' } -1689 silly get cb [ 304, -1689 silly get { date: 'Fri, 22 May 2020 11:48:58 GMT', -1689 silly get connection: 'keep-alive', -1689 silly get 'set-cookie': -1689 silly get [ '__cfduid=daac5443483b19b682dfd1142d78174b81590148138; expires=Sun, 21-Jun-20 11:48:58 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -1689 silly get 'cf-ray': '59764fa92aaec2f9-FRA', -1689 silly get age: '5351', -1689 silly get 'cache-control': 'public, max-age=300', -1689 silly get etag: '"98dc8f4198063595fc640811868341b2"', -1689 silly get 'last-modified': 'Wed, 09 Jan 2019 05:32:41 GMT', -1689 silly get vary: 'Accept-Encoding', -1689 silly get 'cf-cache-status': 'HIT', -1689 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -1689 silly get server: 'cloudflare', -1689 silly get 'cf-request-id': '02ddd01db90000c2f92609d200000001' } ] -1690 verbose etag https://registry.npmjs.org/uri-js from cache -1691 verbose get saving uri-js to /home/christine/.npm/registry.npmjs.org/uri-js/.cache.json -1692 verbose get https://registry.npmjs.org/fast-json-stable-stringify not expired, no request -1693 silly addNameRange number 2 { name: 'fast-json-stable-stringify', -1693 silly addNameRange range: '>=2.0.0 <3.0.0', -1693 silly addNameRange hasData: true } -1694 silly addNameRange versions [ 'fast-json-stable-stringify', [ '1.0.2', '2.0.0', '2.1.0' ] ] -1695 silly addNamed fast-json-stable-stringify@2.1.0 -1696 verbose addNamed "2.1.0" is a plain semver version for fast-json-stable-stringify -1697 silly resolveWithNewModule json-schema-traverse@0.4.1 checking installable status -1698 silly cache add args [ 'json-schema-traverse@^0.4.1', null ] -1699 verbose cache add spec json-schema-traverse@^0.4.1 -1700 silly cache add parsed spec Result { -1700 silly cache add raw: 'json-schema-traverse@^0.4.1', -1700 silly cache add scope: null, -1700 silly cache add name: 'json-schema-traverse', -1700 silly cache add rawSpec: '^0.4.1', -1700 silly cache add spec: '>=0.4.1 <0.5.0', -1700 silly cache add type: 'range' } -1701 silly addNamed json-schema-traverse@>=0.4.1 <0.5.0 -1702 verbose addNamed ">=0.4.1 <0.5.0" is a valid semver range for json-schema-traverse -1703 silly addNameRange { name: 'json-schema-traverse', -1703 silly addNameRange range: '>=0.4.1 <0.5.0', -1703 silly addNameRange hasData: false } -1704 silly mapToRegistry name json-schema-traverse -1705 silly mapToRegistry using default registry -1706 silly mapToRegistry registry https://registry.npmjs.org/ -1707 silly mapToRegistry uri https://registry.npmjs.org/json-schema-traverse -1708 verbose addNameRange registry:https://registry.npmjs.org/json-schema-traverse not in flight; fetching -1709 silly resolveWithNewModule uri-js@4.2.2 checking installable status -1710 silly cache add args [ 'uri-js@^4.2.2', null ] -1711 verbose cache add spec uri-js@^4.2.2 -1712 silly cache add parsed spec Result { -1712 silly cache add raw: 'uri-js@^4.2.2', -1712 silly cache add scope: null, -1712 silly cache add name: 'uri-js', -1712 silly cache add rawSpec: '^4.2.2', -1712 silly cache add spec: '>=4.2.2 <5.0.0', -1712 silly cache add type: 'range' } -1713 silly addNamed uri-js@>=4.2.2 <5.0.0 -1714 verbose addNamed ">=4.2.2 <5.0.0" is a valid semver range for uri-js -1715 silly addNameRange { name: 'uri-js', range: '>=4.2.2 <5.0.0', hasData: false } -1716 silly mapToRegistry name uri-js -1717 silly mapToRegistry using default registry -1718 silly mapToRegistry registry https://registry.npmjs.org/ -1719 silly mapToRegistry uri https://registry.npmjs.org/uri-js -1720 verbose addNameRange registry:https://registry.npmjs.org/uri-js not in flight; fetching -1721 verbose get https://registry.npmjs.org/json-schema-traverse not expired, no request -1722 silly addNameRange number 2 { name: 'json-schema-traverse', -1722 silly addNameRange range: '>=0.4.1 <0.5.0', -1722 silly addNameRange hasData: true } -1723 silly addNameRange versions [ 'json-schema-traverse', -1723 silly addNameRange [ '0.0.1', '0.1.0', '0.2.0', '0.3.0', '0.3.1', '0.4.0', '0.4.1' ] ] -1724 silly addNamed json-schema-traverse@0.4.1 -1725 verbose addNamed "0.4.1" is a plain semver version for json-schema-traverse -1726 verbose get https://registry.npmjs.org/uri-js not expired, no request -1727 silly addNameRange number 2 { name: 'uri-js', range: '>=4.2.2 <5.0.0', hasData: true } -1728 silly addNameRange versions [ 'uri-js', -1728 silly addNameRange [ '1.4.0', -1728 silly addNameRange '1.4.2', -1728 silly addNameRange '2.0.0', -1728 silly addNameRange '2.1.0', -1728 silly addNameRange '2.1.1', -1728 silly addNameRange '3.0.0', -1728 silly addNameRange '3.0.1', -1728 silly addNameRange '3.0.2', -1728 silly addNameRange '4.2.0', -1728 silly addNameRange '4.2.1', -1728 silly addNameRange '4.2.2' ] ] -1729 silly addNamed uri-js@4.2.2 -1730 verbose addNamed "4.2.2" is a plain semver version for uri-js -1731 silly cache afterAdd fast-json-stable-stringify@2.1.0 -1732 verbose afterAdd /home/christine/.npm/fast-json-stable-stringify/2.1.0/package/package.json not in flight; writing -1733 verbose afterAdd /home/christine/.npm/fast-json-stable-stringify/2.1.0/package/package.json written -1734 silly cache afterAdd json-schema-traverse@0.4.1 -1735 verbose afterAdd /home/christine/.npm/json-schema-traverse/0.4.1/package/package.json not in flight; writing -1736 silly cache afterAdd uri-js@4.2.2 -1737 verbose afterAdd /home/christine/.npm/uri-js/4.2.2/package/package.json not in flight; writing -1738 verbose afterAdd /home/christine/.npm/json-schema-traverse/0.4.1/package/package.json written -1739 verbose afterAdd /home/christine/.npm/uri-js/4.2.2/package/package.json written -1740 silly fetchNamedPackageData punycode -1741 silly mapToRegistry name punycode -1742 silly mapToRegistry using default registry -1743 silly mapToRegistry registry https://registry.npmjs.org/ -1744 silly mapToRegistry uri https://registry.npmjs.org/punycode -1745 verbose request uri https://registry.npmjs.org/punycode -1746 verbose request no auth needed -1747 info attempt registry request try #1 at 13:48:58 -1748 verbose etag W/"27ef686d9a29403de9242fe625c85934" -1749 verbose lastModified Sun, 27 May 2018 13:11:15 GMT -1750 http request GET https://registry.npmjs.org/punycode -1751 http 304 https://registry.npmjs.org/punycode -1752 verbose headers { date: 'Fri, 22 May 2020 11:48:58 GMT', -1752 verbose headers connection: 'keep-alive', -1752 verbose headers 'set-cookie': -1752 verbose headers [ '__cfduid=d27785e001b27740005b62566f67820581590148138; expires=Sun, 21-Jun-20 11:48:58 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -1752 verbose headers 'cf-ray': '59764fa969ce1772-FRA', -1752 verbose headers age: '5655', -1752 verbose headers 'cache-control': 'public, max-age=300', -1752 verbose headers etag: '"27ef686d9a29403de9242fe625c85934"', -1752 verbose headers 'last-modified': 'Sun, 27 May 2018 13:11:15 GMT', -1752 verbose headers vary: 'Accept-Encoding', -1752 verbose headers 'cf-cache-status': 'HIT', -1752 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -1752 verbose headers server: 'cloudflare', -1752 verbose headers 'cf-request-id': '02ddd01de4000017726419b200000001' } -1753 silly get cb [ 304, -1753 silly get { date: 'Fri, 22 May 2020 11:48:58 GMT', -1753 silly get connection: 'keep-alive', -1753 silly get 'set-cookie': -1753 silly get [ '__cfduid=d27785e001b27740005b62566f67820581590148138; expires=Sun, 21-Jun-20 11:48:58 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -1753 silly get 'cf-ray': '59764fa969ce1772-FRA', -1753 silly get age: '5655', -1753 silly get 'cache-control': 'public, max-age=300', -1753 silly get etag: '"27ef686d9a29403de9242fe625c85934"', -1753 silly get 'last-modified': 'Sun, 27 May 2018 13:11:15 GMT', -1753 silly get vary: 'Accept-Encoding', -1753 silly get 'cf-cache-status': 'HIT', -1753 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -1753 silly get server: 'cloudflare', -1753 silly get 'cf-request-id': '02ddd01de4000017726419b200000001' } ] -1754 verbose etag https://registry.npmjs.org/punycode from cache -1755 verbose get saving punycode to /home/christine/.npm/registry.npmjs.org/punycode/.cache.json -1756 silly resolveWithNewModule punycode@2.1.1 checking installable status -1757 silly cache add args [ 'punycode@^2.1.0', null ] -1758 verbose cache add spec punycode@^2.1.0 -1759 silly cache add parsed spec Result { -1759 silly cache add raw: 'punycode@^2.1.0', -1759 silly cache add scope: null, -1759 silly cache add name: 'punycode', -1759 silly cache add rawSpec: '^2.1.0', -1759 silly cache add spec: '>=2.1.0 <3.0.0', -1759 silly cache add type: 'range' } -1760 silly addNamed punycode@>=2.1.0 <3.0.0 -1761 verbose addNamed ">=2.1.0 <3.0.0" is a valid semver range for punycode -1762 silly addNameRange { name: 'punycode', range: '>=2.1.0 <3.0.0', hasData: false } -1763 silly mapToRegistry name punycode -1764 silly mapToRegistry using default registry -1765 silly mapToRegistry registry https://registry.npmjs.org/ -1766 silly mapToRegistry uri https://registry.npmjs.org/punycode -1767 verbose addNameRange registry:https://registry.npmjs.org/punycode not in flight; fetching -1768 verbose get https://registry.npmjs.org/punycode not expired, no request -1769 silly addNameRange number 2 { name: 'punycode', range: '>=2.1.0 <3.0.0', hasData: true } -1770 silly addNameRange versions [ 'punycode', -1770 silly addNameRange [ '0.0.1', -1770 silly addNameRange '0.0.2', -1770 silly addNameRange '0.0.1337', -1770 silly addNameRange '0.1.0', -1770 silly addNameRange '0.1.1', -1770 silly addNameRange '0.1.2', -1770 silly addNameRange '0.2.0', -1770 silly addNameRange '0.2.1', -1770 silly addNameRange '0.2.2', -1770 silly addNameRange '0.3.0', -1770 silly addNameRange '1.0.0', -1770 silly addNameRange '1.1.0', -1770 silly addNameRange '1.1.1', -1770 silly addNameRange '1.2.0', -1770 silly addNameRange '1.2.1', -1770 silly addNameRange '1.2.2', -1770 silly addNameRange '1.2.3', -1770 silly addNameRange '1.2.4', -1770 silly addNameRange '1.3.0', -1770 silly addNameRange '1.3.1', -1770 silly addNameRange '1.3.2', -1770 silly addNameRange '1.4.0', -1770 silly addNameRange '1.4.1', -1770 silly addNameRange '2.0.0', -1770 silly addNameRange '2.0.1', -1770 silly addNameRange '2.1.0', -1770 silly addNameRange '2.1.1' ] ] -1771 silly addNamed punycode@2.1.1 -1772 verbose addNamed "2.1.1" is a plain semver version for punycode -1773 silly cache afterAdd punycode@2.1.1 -1774 verbose afterAdd /home/christine/.npm/punycode/2.1.1/package/package.json not in flight; writing -1775 verbose afterAdd /home/christine/.npm/punycode/2.1.1/package/package.json written -1776 silly fetchNamedPackageData assert-plus -1777 silly mapToRegistry name assert-plus -1778 silly mapToRegistry using default registry -1779 silly mapToRegistry registry https://registry.npmjs.org/ -1780 silly mapToRegistry uri https://registry.npmjs.org/assert-plus -1781 silly fetchNamedPackageData jsprim -1782 silly mapToRegistry name jsprim -1783 silly mapToRegistry using default registry -1784 silly mapToRegistry registry https://registry.npmjs.org/ -1785 silly mapToRegistry uri https://registry.npmjs.org/jsprim -1786 silly fetchNamedPackageData sshpk -1787 silly mapToRegistry name sshpk -1788 silly mapToRegistry using default registry -1789 silly mapToRegistry registry https://registry.npmjs.org/ -1790 silly mapToRegistry uri https://registry.npmjs.org/sshpk -1791 verbose request uri https://registry.npmjs.org/assert-plus -1792 verbose request no auth needed -1793 info attempt registry request try #1 at 13:48:58 -1794 verbose etag W/"5f1c38f02647d4e0324c53fe90ea160c" -1795 verbose lastModified Fri, 13 Dec 2019 16:32:10 GMT -1796 http request GET https://registry.npmjs.org/assert-plus -1797 verbose request uri https://registry.npmjs.org/jsprim -1798 verbose request no auth needed -1799 info attempt registry request try #1 at 13:48:58 -1800 verbose etag W/"ec307a0d291a7abbcabe4ca63c75468e" -1801 verbose lastModified Fri, 13 Dec 2019 16:32:36 GMT -1802 http request GET https://registry.npmjs.org/jsprim -1803 verbose request uri https://registry.npmjs.org/sshpk -1804 verbose request no auth needed -1805 info attempt registry request try #1 at 13:48:58 -1806 verbose etag W/"e8e015112a9fbc16cc4a367405b14614" -1807 verbose lastModified Fri, 13 Dec 2019 16:33:04 GMT -1808 http request GET https://registry.npmjs.org/sshpk -1809 http 200 https://registry.npmjs.org/assert-plus -1810 verbose headers { date: 'Fri, 22 May 2020 11:48:58 GMT', -1810 verbose headers 'content-type': 'application/json', -1810 verbose headers 'transfer-encoding': 'chunked', -1810 verbose headers connection: 'keep-alive', -1810 verbose headers 'set-cookie': -1810 verbose headers [ '__cfduid=d7b1200d8018131cb680b33099b4da6111590148138; expires=Sun, 21-Jun-20 11:48:58 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -1810 verbose headers 'cf-ray': '59764fa9af0505e9-FRA', -1810 verbose headers age: '5654', -1810 verbose headers 'cache-control': 'public, max-age=300', -1810 verbose headers etag: 'W/"a6e598834cba689561f3d676e817bde6"', -1810 verbose headers 'last-modified': 'Wed, 06 May 2020 14:47:21 GMT', -1810 verbose headers vary: 'accept-encoding, accept', -1810 verbose headers 'cf-cache-status': 'HIT', -1810 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -1810 verbose headers server: 'cloudflare', -1810 verbose headers 'content-encoding': 'gzip', -1810 verbose headers 'cf-request-id': '02ddd01e0b000005e903b57200000001' } -1811 silly get cb [ 200, -1811 silly get { date: 'Fri, 22 May 2020 11:48:58 GMT', -1811 silly get 'content-type': 'application/json', -1811 silly get 'transfer-encoding': 'chunked', -1811 silly get connection: 'keep-alive', -1811 silly get 'set-cookie': -1811 silly get [ '__cfduid=d7b1200d8018131cb680b33099b4da6111590148138; expires=Sun, 21-Jun-20 11:48:58 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -1811 silly get 'cf-ray': '59764fa9af0505e9-FRA', -1811 silly get age: '5654', -1811 silly get 'cache-control': 'public, max-age=300', -1811 silly get etag: 'W/"a6e598834cba689561f3d676e817bde6"', -1811 silly get 'last-modified': 'Wed, 06 May 2020 14:47:21 GMT', -1811 silly get vary: 'accept-encoding, accept', -1811 silly get 'cf-cache-status': 'HIT', -1811 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -1811 silly get server: 'cloudflare', -1811 silly get 'content-encoding': 'gzip', -1811 silly get 'cf-request-id': '02ddd01e0b000005e903b57200000001' } ] -1812 verbose get saving assert-plus to /home/christine/.npm/registry.npmjs.org/assert-plus/.cache.json -1813 silly resolveWithNewModule assert-plus@1.0.0 checking installable status -1814 silly cache add args [ 'assert-plus@^1.0.0', null ] -1815 verbose cache add spec assert-plus@^1.0.0 -1816 silly cache add parsed spec Result { -1816 silly cache add raw: 'assert-plus@^1.0.0', -1816 silly cache add scope: null, -1816 silly cache add name: 'assert-plus', -1816 silly cache add rawSpec: '^1.0.0', -1816 silly cache add spec: '>=1.0.0 <2.0.0', -1816 silly cache add type: 'range' } -1817 silly addNamed assert-plus@>=1.0.0 <2.0.0 -1818 verbose addNamed ">=1.0.0 <2.0.0" is a valid semver range for assert-plus -1819 silly addNameRange { name: 'assert-plus', range: '>=1.0.0 <2.0.0', hasData: false } -1820 silly mapToRegistry name assert-plus -1821 silly mapToRegistry using default registry -1822 silly mapToRegistry registry https://registry.npmjs.org/ -1823 silly mapToRegistry uri https://registry.npmjs.org/assert-plus -1824 verbose addNameRange registry:https://registry.npmjs.org/assert-plus not in flight; fetching -1825 verbose get https://registry.npmjs.org/assert-plus not expired, no request -1826 silly addNameRange number 2 { name: 'assert-plus', range: '>=1.0.0 <2.0.0', hasData: true } -1827 silly addNameRange versions [ 'assert-plus', -1827 silly addNameRange [ '0.1.0', -1827 silly addNameRange '0.1.1', -1827 silly addNameRange '0.1.2', -1827 silly addNameRange '0.1.3', -1827 silly addNameRange '0.1.4', -1827 silly addNameRange '0.1.5', -1827 silly addNameRange '0.2.0', -1827 silly addNameRange '1.0.0' ] ] -1828 silly addNamed assert-plus@1.0.0 -1829 verbose addNamed "1.0.0" is a plain semver version for assert-plus -1830 silly cache afterAdd assert-plus@1.0.0 -1831 verbose afterAdd /home/christine/.npm/assert-plus/1.0.0/package/package.json not in flight; writing -1832 verbose afterAdd /home/christine/.npm/assert-plus/1.0.0/package/package.json written -1833 http 200 https://registry.npmjs.org/jsprim -1834 verbose headers { date: 'Fri, 22 May 2020 11:48:58 GMT', -1834 verbose headers 'content-type': 'application/json', -1834 verbose headers 'transfer-encoding': 'chunked', -1834 verbose headers connection: 'keep-alive', -1834 verbose headers 'set-cookie': -1834 verbose headers [ '__cfduid=d570054c58525c9612ff8b11e8fa974871590148138; expires=Sun, 21-Jun-20 11:48:58 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -1834 verbose headers 'cf-ray': '59764fa9bc0d176a-FRA', -1834 verbose headers age: '5654', -1834 verbose headers 'cache-control': 'public, max-age=300', -1834 verbose headers etag: 'W/"64e1b4713c2eacf5f810b5a6ad366cd9"', -1834 verbose headers 'last-modified': 'Wed, 06 May 2020 14:47:51 GMT', -1834 verbose headers vary: 'accept-encoding, accept', -1834 verbose headers 'cf-cache-status': 'HIT', -1834 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -1834 verbose headers server: 'cloudflare', -1834 verbose headers 'content-encoding': 'gzip', -1834 verbose headers 'cf-request-id': '02ddd01e100000176a65ba5200000001' } -1835 silly get cb [ 200, -1835 silly get { date: 'Fri, 22 May 2020 11:48:58 GMT', -1835 silly get 'content-type': 'application/json', -1835 silly get 'transfer-encoding': 'chunked', -1835 silly get connection: 'keep-alive', -1835 silly get 'set-cookie': -1835 silly get [ '__cfduid=d570054c58525c9612ff8b11e8fa974871590148138; expires=Sun, 21-Jun-20 11:48:58 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -1835 silly get 'cf-ray': '59764fa9bc0d176a-FRA', -1835 silly get age: '5654', -1835 silly get 'cache-control': 'public, max-age=300', -1835 silly get etag: 'W/"64e1b4713c2eacf5f810b5a6ad366cd9"', -1835 silly get 'last-modified': 'Wed, 06 May 2020 14:47:51 GMT', -1835 silly get vary: 'accept-encoding, accept', -1835 silly get 'cf-cache-status': 'HIT', -1835 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -1835 silly get server: 'cloudflare', -1835 silly get 'content-encoding': 'gzip', -1835 silly get 'cf-request-id': '02ddd01e100000176a65ba5200000001' } ] -1836 verbose get saving jsprim to /home/christine/.npm/registry.npmjs.org/jsprim/.cache.json -1837 silly resolveWithNewModule jsprim@1.4.1 checking installable status -1838 silly cache add args [ 'jsprim@^1.2.2', null ] -1839 verbose cache add spec jsprim@^1.2.2 -1840 silly cache add parsed spec Result { -1840 silly cache add raw: 'jsprim@^1.2.2', -1840 silly cache add scope: null, -1840 silly cache add name: 'jsprim', -1840 silly cache add rawSpec: '^1.2.2', -1840 silly cache add spec: '>=1.2.2 <2.0.0', -1840 silly cache add type: 'range' } -1841 silly addNamed jsprim@>=1.2.2 <2.0.0 -1842 verbose addNamed ">=1.2.2 <2.0.0" is a valid semver range for jsprim -1843 silly addNameRange { name: 'jsprim', range: '>=1.2.2 <2.0.0', hasData: false } -1844 silly mapToRegistry name jsprim -1845 silly mapToRegistry using default registry -1846 silly mapToRegistry registry https://registry.npmjs.org/ -1847 silly mapToRegistry uri https://registry.npmjs.org/jsprim -1848 verbose addNameRange registry:https://registry.npmjs.org/jsprim not in flight; fetching -1849 verbose get https://registry.npmjs.org/jsprim not expired, no request -1850 silly addNameRange number 2 { name: 'jsprim', range: '>=1.2.2 <2.0.0', hasData: true } -1851 silly addNameRange versions [ 'jsprim', -1851 silly addNameRange [ '0.0.1', -1851 silly addNameRange '0.0.2', -1851 silly addNameRange '0.0.3', -1851 silly addNameRange '0.0.4', -1851 silly addNameRange '0.0.5', -1851 silly addNameRange '0.1.0', -1851 silly addNameRange '0.2.0', -1851 silly addNameRange '0.3.0', -1851 silly addNameRange '0.3.1', -1851 silly addNameRange '0.4.0', -1851 silly addNameRange '0.5.0', -1851 silly addNameRange '0.5.1', -1851 silly addNameRange '0.6.0', -1851 silly addNameRange '0.6.1', -1851 silly addNameRange '0.7.0', -1851 silly addNameRange '0.8.0', -1851 silly addNameRange '1.0.0', -1851 silly addNameRange '1.1.0', -1851 silly addNameRange '1.2.0', -1851 silly addNameRange '1.2.1', -1851 silly addNameRange '1.2.2', -1851 silly addNameRange '1.3.0', -1851 silly addNameRange '1.3.1', -1851 silly addNameRange '1.4.0', -1851 silly addNameRange '1.4.1', -1851 silly addNameRange '2.0.0' ] ] -1852 silly addNamed jsprim@1.4.1 -1853 verbose addNamed "1.4.1" is a plain semver version for jsprim -1854 http 200 https://registry.npmjs.org/sshpk -1855 verbose headers { date: 'Fri, 22 May 2020 11:48:58 GMT', -1855 verbose headers 'content-type': 'application/json', -1855 verbose headers 'transfer-encoding': 'chunked', -1855 verbose headers connection: 'keep-alive', -1855 verbose headers 'set-cookie': -1855 verbose headers [ '__cfduid=def5a536cfc1c142382a82585aa4561c11590148138; expires=Sun, 21-Jun-20 11:48:58 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -1855 verbose headers 'cf-ray': '59764fa9bc65dfbb-FRA', -1855 verbose headers age: '5654', -1855 verbose headers 'cache-control': 'public, max-age=300', -1855 verbose headers etag: 'W/"4bb612bfd8ff73b94a8861a146b38953"', -1855 verbose headers 'last-modified': 'Wed, 06 May 2020 14:48:13 GMT', -1855 verbose headers vary: 'accept-encoding, accept', -1855 verbose headers 'cf-cache-status': 'HIT', -1855 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -1855 verbose headers server: 'cloudflare', -1855 verbose headers 'content-encoding': 'gzip', -1855 verbose headers 'cf-request-id': '02ddd01e100000dfbb5fae5200000001' } -1856 silly get cb [ 200, -1856 silly get { date: 'Fri, 22 May 2020 11:48:58 GMT', -1856 silly get 'content-type': 'application/json', -1856 silly get 'transfer-encoding': 'chunked', -1856 silly get connection: 'keep-alive', -1856 silly get 'set-cookie': -1856 silly get [ '__cfduid=def5a536cfc1c142382a82585aa4561c11590148138; expires=Sun, 21-Jun-20 11:48:58 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -1856 silly get 'cf-ray': '59764fa9bc65dfbb-FRA', -1856 silly get age: '5654', -1856 silly get 'cache-control': 'public, max-age=300', -1856 silly get etag: 'W/"4bb612bfd8ff73b94a8861a146b38953"', -1856 silly get 'last-modified': 'Wed, 06 May 2020 14:48:13 GMT', -1856 silly get vary: 'accept-encoding, accept', -1856 silly get 'cf-cache-status': 'HIT', -1856 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -1856 silly get server: 'cloudflare', -1856 silly get 'content-encoding': 'gzip', -1856 silly get 'cf-request-id': '02ddd01e100000dfbb5fae5200000001' } ] -1857 verbose get saving sshpk to /home/christine/.npm/registry.npmjs.org/sshpk/.cache.json -1858 silly cache afterAdd jsprim@1.4.1 -1859 verbose afterAdd /home/christine/.npm/jsprim/1.4.1/package/package.json not in flight; writing -1860 silly resolveWithNewModule sshpk@1.16.1 checking installable status -1861 silly cache add args [ 'sshpk@^1.7.0', null ] -1862 verbose cache add spec sshpk@^1.7.0 -1863 silly cache add parsed spec Result { -1863 silly cache add raw: 'sshpk@^1.7.0', -1863 silly cache add scope: null, -1863 silly cache add name: 'sshpk', -1863 silly cache add rawSpec: '^1.7.0', -1863 silly cache add spec: '>=1.7.0 <2.0.0', -1863 silly cache add type: 'range' } -1864 silly addNamed sshpk@>=1.7.0 <2.0.0 -1865 verbose addNamed ">=1.7.0 <2.0.0" is a valid semver range for sshpk -1866 silly addNameRange { name: 'sshpk', range: '>=1.7.0 <2.0.0', hasData: false } -1867 silly mapToRegistry name sshpk -1868 silly mapToRegistry using default registry -1869 silly mapToRegistry registry https://registry.npmjs.org/ -1870 silly mapToRegistry uri https://registry.npmjs.org/sshpk -1871 verbose addNameRange registry:https://registry.npmjs.org/sshpk not in flight; fetching -1872 verbose afterAdd /home/christine/.npm/jsprim/1.4.1/package/package.json written -1873 verbose get https://registry.npmjs.org/sshpk not expired, no request -1874 silly addNameRange number 2 { name: 'sshpk', range: '>=1.7.0 <2.0.0', hasData: true } -1875 silly addNameRange versions [ 'sshpk', -1875 silly addNameRange [ '1.0.0', -1875 silly addNameRange '1.0.1', -1875 silly addNameRange '1.0.2', -1875 silly addNameRange '1.0.3', -1875 silly addNameRange '1.0.4', -1875 silly addNameRange '1.1.0', -1875 silly addNameRange '1.2.0', -1875 silly addNameRange '1.2.1', -1875 silly addNameRange '1.3.0', -1875 silly addNameRange '1.4.0', -1875 silly addNameRange '1.4.1', -1875 silly addNameRange '1.4.2', -1875 silly addNameRange '1.4.3', -1875 silly addNameRange '1.4.4', -1875 silly addNameRange '1.4.5', -1875 silly addNameRange '1.4.6', -1875 silly addNameRange '1.4.7', -1875 silly addNameRange '1.5.0', -1875 silly addNameRange '1.5.1', -1875 silly addNameRange '1.6.0', -1875 silly addNameRange '1.6.1', -1875 silly addNameRange '1.6.2', -1875 silly addNameRange '1.7.0', -1875 silly addNameRange '1.7.1', -1875 silly addNameRange '1.7.2', -1875 silly addNameRange '1.7.3', -1875 silly addNameRange '1.7.4', -1875 silly addNameRange '1.8.0', -1875 silly addNameRange '1.8.1', -1875 silly addNameRange '1.8.2', -1875 silly addNameRange '1.8.3', -1875 silly addNameRange '1.9.0', -1875 silly addNameRange '1.9.1', -1875 silly addNameRange '1.9.2', -1875 silly addNameRange '1.10.0', -1875 silly addNameRange '1.10.1', -1875 silly addNameRange '1.10.2', -1875 silly addNameRange '1.11.0', -1875 silly addNameRange '1.13.0', -1875 silly addNameRange '1.13.1', -1875 silly addNameRange '1.13.2', -1875 silly addNameRange '1.14.1', -1875 silly addNameRange '1.14.2', -1875 silly addNameRange '1.15.0', -1875 silly addNameRange '1.15.1', -1875 silly addNameRange '1.15.2', -1875 silly addNameRange '1.16.0', -1875 silly addNameRange '1.16.1' ] ] -1876 silly addNamed sshpk@1.16.1 -1877 verbose addNamed "1.16.1" is a plain semver version for sshpk -1878 silly cache afterAdd sshpk@1.16.1 -1879 verbose afterAdd /home/christine/.npm/sshpk/1.16.1/package/package.json not in flight; writing -1880 verbose afterAdd /home/christine/.npm/sshpk/1.16.1/package/package.json written -1881 silly fetchNamedPackageData extsprintf -1882 silly mapToRegistry name extsprintf -1883 silly mapToRegistry using default registry -1884 silly mapToRegistry registry https://registry.npmjs.org/ -1885 silly mapToRegistry uri https://registry.npmjs.org/extsprintf -1886 silly fetchNamedPackageData json-schema -1887 silly mapToRegistry name json-schema -1888 silly mapToRegistry using default registry -1889 silly mapToRegistry registry https://registry.npmjs.org/ -1890 silly mapToRegistry uri https://registry.npmjs.org/json-schema -1891 silly fetchNamedPackageData verror -1892 silly mapToRegistry name verror -1893 silly mapToRegistry using default registry -1894 silly mapToRegistry registry https://registry.npmjs.org/ -1895 silly mapToRegistry uri https://registry.npmjs.org/verror -1896 verbose request uri https://registry.npmjs.org/json-schema -1897 verbose request no auth needed -1898 info attempt registry request try #1 at 13:48:58 -1899 verbose etag W/"5274dd0ff41b090868548552fd39da3b" -1900 verbose lastModified Fri, 06 Sep 2019 03:31:48 GMT -1901 http request GET https://registry.npmjs.org/json-schema -1902 verbose request uri https://registry.npmjs.org/extsprintf -1903 verbose request no auth needed -1904 info attempt registry request try #1 at 13:48:58 -1905 verbose etag W/"181f798a7717cf280fb342d9306fa973" -1906 verbose lastModified Fri, 13 Dec 2019 16:32:18 GMT -1907 http request GET https://registry.npmjs.org/extsprintf -1908 verbose request uri https://registry.npmjs.org/verror -1909 verbose request no auth needed -1910 info attempt registry request try #1 at 13:48:58 -1911 verbose etag W/"cee3cbe58715caedf23b4d5aa0f1317b" -1912 verbose lastModified Fri, 13 Dec 2019 16:33:19 GMT -1913 http request GET https://registry.npmjs.org/verror -1914 http 200 https://registry.npmjs.org/extsprintf -1915 verbose headers { date: 'Fri, 22 May 2020 11:48:58 GMT', -1915 verbose headers 'content-type': 'application/json', -1915 verbose headers 'transfer-encoding': 'chunked', -1915 verbose headers connection: 'keep-alive', -1915 verbose headers 'set-cookie': -1915 verbose headers [ '__cfduid=d97096327dc35362784756beebc4958ed1590148138; expires=Sun, 21-Jun-20 11:48:58 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -1915 verbose headers 'cf-ray': '59764faa2855c2ae-FRA', -1915 verbose headers age: '5351', -1915 verbose headers 'cache-control': 'public, max-age=300', -1915 verbose headers etag: 'W/"c1458bfec410835c4eaea2e0b344814b"', -1915 verbose headers 'last-modified': 'Wed, 06 May 2020 14:47:29 GMT', -1915 verbose headers vary: 'accept-encoding, accept', -1915 verbose headers 'cf-cache-status': 'HIT', -1915 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -1915 verbose headers server: 'cloudflare', -1915 verbose headers 'content-encoding': 'gzip', -1915 verbose headers 'cf-request-id': '02ddd01e550000c2aea018c200000001' } -1916 silly get cb [ 200, -1916 silly get { date: 'Fri, 22 May 2020 11:48:58 GMT', -1916 silly get 'content-type': 'application/json', -1916 silly get 'transfer-encoding': 'chunked', -1916 silly get connection: 'keep-alive', -1916 silly get 'set-cookie': -1916 silly get [ '__cfduid=d97096327dc35362784756beebc4958ed1590148138; expires=Sun, 21-Jun-20 11:48:58 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -1916 silly get 'cf-ray': '59764faa2855c2ae-FRA', -1916 silly get age: '5351', -1916 silly get 'cache-control': 'public, max-age=300', -1916 silly get etag: 'W/"c1458bfec410835c4eaea2e0b344814b"', -1916 silly get 'last-modified': 'Wed, 06 May 2020 14:47:29 GMT', -1916 silly get vary: 'accept-encoding, accept', -1916 silly get 'cf-cache-status': 'HIT', -1916 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -1916 silly get server: 'cloudflare', -1916 silly get 'content-encoding': 'gzip', -1916 silly get 'cf-request-id': '02ddd01e550000c2aea018c200000001' } ] -1917 verbose get saving extsprintf to /home/christine/.npm/registry.npmjs.org/extsprintf/.cache.json -1918 silly resolveWithNewModule extsprintf@1.3.0 checking installable status -1919 silly cache add args [ 'extsprintf@1.3.0', null ] -1920 verbose cache add spec extsprintf@1.3.0 -1921 silly cache add parsed spec Result { -1921 silly cache add raw: 'extsprintf@1.3.0', -1921 silly cache add scope: null, -1921 silly cache add name: 'extsprintf', -1921 silly cache add rawSpec: '1.3.0', -1921 silly cache add spec: '1.3.0', -1921 silly cache add type: 'version' } -1922 silly addNamed extsprintf@1.3.0 -1923 verbose addNamed "1.3.0" is a plain semver version for extsprintf -1924 silly mapToRegistry name extsprintf -1925 silly mapToRegistry using default registry -1926 silly mapToRegistry registry https://registry.npmjs.org/ -1927 silly mapToRegistry uri https://registry.npmjs.org/extsprintf -1928 verbose addNameVersion registry:https://registry.npmjs.org/extsprintf not in flight; fetching -1929 verbose get https://registry.npmjs.org/extsprintf not expired, no request -1930 silly cache afterAdd extsprintf@1.3.0 -1931 verbose afterAdd /home/christine/.npm/extsprintf/1.3.0/package/package.json not in flight; writing -1932 verbose afterAdd /home/christine/.npm/extsprintf/1.3.0/package/package.json written -1933 http 200 https://registry.npmjs.org/verror -1934 verbose headers { date: 'Fri, 22 May 2020 11:48:58 GMT', -1934 verbose headers 'content-type': 'application/json', -1934 verbose headers 'transfer-encoding': 'chunked', -1934 verbose headers connection: 'keep-alive', -1934 verbose headers 'set-cookie': -1934 verbose headers [ '__cfduid=dddfaf86196e34967260afba6c78f92301590148138; expires=Sun, 21-Jun-20 11:48:58 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -1934 verbose headers 'cf-ray': '59764faa2b02d6e9-FRA', -1934 verbose headers age: '5351', -1934 verbose headers 'cache-control': 'public, max-age=300', -1934 verbose headers etag: 'W/"2464db9fac3b8d5a76540c0581baa37d"', -1934 verbose headers 'last-modified': 'Wed, 06 May 2020 14:48:30 GMT', -1934 verbose headers vary: 'accept-encoding, accept', -1934 verbose headers 'cf-cache-status': 'HIT', -1934 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -1934 verbose headers server: 'cloudflare', -1934 verbose headers 'content-encoding': 'gzip', -1934 verbose headers 'cf-request-id': '02ddd01e550000d6e975b63200000001' } -1935 silly get cb [ 200, -1935 silly get { date: 'Fri, 22 May 2020 11:48:58 GMT', -1935 silly get 'content-type': 'application/json', -1935 silly get 'transfer-encoding': 'chunked', -1935 silly get connection: 'keep-alive', -1935 silly get 'set-cookie': -1935 silly get [ '__cfduid=dddfaf86196e34967260afba6c78f92301590148138; expires=Sun, 21-Jun-20 11:48:58 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -1935 silly get 'cf-ray': '59764faa2b02d6e9-FRA', -1935 silly get age: '5351', -1935 silly get 'cache-control': 'public, max-age=300', -1935 silly get etag: 'W/"2464db9fac3b8d5a76540c0581baa37d"', -1935 silly get 'last-modified': 'Wed, 06 May 2020 14:48:30 GMT', -1935 silly get vary: 'accept-encoding, accept', -1935 silly get 'cf-cache-status': 'HIT', -1935 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -1935 silly get server: 'cloudflare', -1935 silly get 'content-encoding': 'gzip', -1935 silly get 'cf-request-id': '02ddd01e550000d6e975b63200000001' } ] -1936 verbose get saving verror to /home/christine/.npm/registry.npmjs.org/verror/.cache.json -1937 silly resolveWithNewModule verror@1.10.0 checking installable status -1938 silly cache add args [ 'verror@1.10.0', null ] -1939 verbose cache add spec verror@1.10.0 -1940 silly cache add parsed spec Result { -1940 silly cache add raw: 'verror@1.10.0', -1940 silly cache add scope: null, -1940 silly cache add name: 'verror', -1940 silly cache add rawSpec: '1.10.0', -1940 silly cache add spec: '1.10.0', -1940 silly cache add type: 'version' } -1941 silly addNamed verror@1.10.0 -1942 verbose addNamed "1.10.0" is a plain semver version for verror -1943 silly mapToRegistry name verror -1944 silly mapToRegistry using default registry -1945 silly mapToRegistry registry https://registry.npmjs.org/ -1946 silly mapToRegistry uri https://registry.npmjs.org/verror -1947 verbose addNameVersion registry:https://registry.npmjs.org/verror not in flight; fetching -1948 verbose get https://registry.npmjs.org/verror not expired, no request -1949 http 304 https://registry.npmjs.org/json-schema -1950 verbose headers { date: 'Fri, 22 May 2020 11:48:58 GMT', -1950 verbose headers connection: 'keep-alive', -1950 verbose headers 'set-cookie': -1950 verbose headers [ '__cfduid=dcd1e19ee0a127106f70d3cbc3e6456db1590148138; expires=Sun, 21-Jun-20 11:48:58 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -1950 verbose headers 'cf-ray': '59764faa2c451f2d-FRA', -1950 verbose headers age: '5351', -1950 verbose headers 'cache-control': 'public, max-age=300', -1950 verbose headers etag: '"5274dd0ff41b090868548552fd39da3b"', -1950 verbose headers 'last-modified': 'Fri, 06 Sep 2019 03:31:48 GMT', -1950 verbose headers vary: 'Accept-Encoding', -1950 verbose headers 'cf-cache-status': 'HIT', -1950 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -1950 verbose headers server: 'cloudflare', -1950 verbose headers 'cf-request-id': '02ddd01e5500001f2df5221200000001' } -1951 silly get cb [ 304, -1951 silly get { date: 'Fri, 22 May 2020 11:48:58 GMT', -1951 silly get connection: 'keep-alive', -1951 silly get 'set-cookie': -1951 silly get [ '__cfduid=dcd1e19ee0a127106f70d3cbc3e6456db1590148138; expires=Sun, 21-Jun-20 11:48:58 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -1951 silly get 'cf-ray': '59764faa2c451f2d-FRA', -1951 silly get age: '5351', -1951 silly get 'cache-control': 'public, max-age=300', -1951 silly get etag: '"5274dd0ff41b090868548552fd39da3b"', -1951 silly get 'last-modified': 'Fri, 06 Sep 2019 03:31:48 GMT', -1951 silly get vary: 'Accept-Encoding', -1951 silly get 'cf-cache-status': 'HIT', -1951 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -1951 silly get server: 'cloudflare', -1951 silly get 'cf-request-id': '02ddd01e5500001f2df5221200000001' } ] -1952 verbose etag https://registry.npmjs.org/json-schema from cache -1953 verbose get saving json-schema to /home/christine/.npm/registry.npmjs.org/json-schema/.cache.json -1954 silly cache afterAdd verror@1.10.0 -1955 verbose afterAdd /home/christine/.npm/verror/1.10.0/package/package.json not in flight; writing -1956 silly resolveWithNewModule json-schema@0.2.3 checking installable status -1957 silly cache add args [ 'json-schema@0.2.3', null ] -1958 verbose cache add spec json-schema@0.2.3 -1959 silly cache add parsed spec Result { -1959 silly cache add raw: 'json-schema@0.2.3', -1959 silly cache add scope: null, -1959 silly cache add name: 'json-schema', -1959 silly cache add rawSpec: '0.2.3', -1959 silly cache add spec: '0.2.3', -1959 silly cache add type: 'version' } -1960 silly addNamed json-schema@0.2.3 -1961 verbose addNamed "0.2.3" is a plain semver version for json-schema -1962 silly mapToRegistry name json-schema -1963 silly mapToRegistry using default registry -1964 silly mapToRegistry registry https://registry.npmjs.org/ -1965 silly mapToRegistry uri https://registry.npmjs.org/json-schema -1966 verbose addNameVersion registry:https://registry.npmjs.org/json-schema not in flight; fetching -1967 verbose afterAdd /home/christine/.npm/verror/1.10.0/package/package.json written -1968 verbose get https://registry.npmjs.org/json-schema not expired, no request -1969 silly cache afterAdd json-schema@0.2.3 -1970 verbose afterAdd /home/christine/.npm/json-schema/0.2.3/package/package.json not in flight; writing -1971 verbose afterAdd /home/christine/.npm/json-schema/0.2.3/package/package.json written -1972 silly fetchNamedPackageData core-util-is -1973 silly mapToRegistry name core-util-is -1974 silly mapToRegistry using default registry -1975 silly mapToRegistry registry https://registry.npmjs.org/ -1976 silly mapToRegistry uri https://registry.npmjs.org/core-util-is -1977 verbose request uri https://registry.npmjs.org/core-util-is -1978 verbose request no auth needed -1979 info attempt registry request try #1 at 13:48:58 -1980 verbose etag W/"8076d16a76bac5764f6fda9911b2b501" -1981 verbose lastModified Sat, 26 May 2018 21:08:01 GMT -1982 http request GET https://registry.npmjs.org/core-util-is -1983 http 304 https://registry.npmjs.org/core-util-is -1984 verbose headers { date: 'Fri, 22 May 2020 11:48:58 GMT', -1984 verbose headers connection: 'keep-alive', -1984 verbose headers 'set-cookie': -1984 verbose headers [ '__cfduid=dd8c554223c8c1f8d1054bd78bd816a791590148138; expires=Sun, 21-Jun-20 11:48:58 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -1984 verbose headers 'cf-ray': '59764faa6c9405fd-FRA', -1984 verbose headers age: '5358', -1984 verbose headers 'cache-control': 'public, max-age=300', -1984 verbose headers etag: '"8076d16a76bac5764f6fda9911b2b501"', -1984 verbose headers 'last-modified': 'Sat, 26 May 2018 21:08:01 GMT', -1984 verbose headers vary: 'Accept-Encoding', -1984 verbose headers 'cf-cache-status': 'HIT', -1984 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -1984 verbose headers server: 'cloudflare', -1984 verbose headers 'cf-request-id': '02ddd01e80000005fd8daad200000001' } -1985 silly get cb [ 304, -1985 silly get { date: 'Fri, 22 May 2020 11:48:58 GMT', -1985 silly get connection: 'keep-alive', -1985 silly get 'set-cookie': -1985 silly get [ '__cfduid=dd8c554223c8c1f8d1054bd78bd816a791590148138; expires=Sun, 21-Jun-20 11:48:58 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -1985 silly get 'cf-ray': '59764faa6c9405fd-FRA', -1985 silly get age: '5358', -1985 silly get 'cache-control': 'public, max-age=300', -1985 silly get etag: '"8076d16a76bac5764f6fda9911b2b501"', -1985 silly get 'last-modified': 'Sat, 26 May 2018 21:08:01 GMT', -1985 silly get vary: 'Accept-Encoding', -1985 silly get 'cf-cache-status': 'HIT', -1985 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -1985 silly get server: 'cloudflare', -1985 silly get 'cf-request-id': '02ddd01e80000005fd8daad200000001' } ] -1986 verbose etag https://registry.npmjs.org/core-util-is from cache -1987 verbose get saving core-util-is to /home/christine/.npm/registry.npmjs.org/core-util-is/.cache.json -1988 silly resolveWithNewModule core-util-is@1.0.2 checking installable status -1989 silly cache add args [ 'core-util-is@1.0.2', null ] -1990 verbose cache add spec core-util-is@1.0.2 -1991 silly cache add parsed spec Result { -1991 silly cache add raw: 'core-util-is@1.0.2', -1991 silly cache add scope: null, -1991 silly cache add name: 'core-util-is', -1991 silly cache add rawSpec: '1.0.2', -1991 silly cache add spec: '1.0.2', -1991 silly cache add type: 'version' } -1992 silly addNamed core-util-is@1.0.2 -1993 verbose addNamed "1.0.2" is a plain semver version for core-util-is -1994 silly mapToRegistry name core-util-is -1995 silly mapToRegistry using default registry -1996 silly mapToRegistry registry https://registry.npmjs.org/ -1997 silly mapToRegistry uri https://registry.npmjs.org/core-util-is -1998 verbose addNameVersion registry:https://registry.npmjs.org/core-util-is not in flight; fetching -1999 verbose get https://registry.npmjs.org/core-util-is not expired, no request -2000 silly cache afterAdd core-util-is@1.0.2 -2001 verbose afterAdd /home/christine/.npm/core-util-is/1.0.2/package/package.json not in flight; writing -2002 verbose afterAdd /home/christine/.npm/core-util-is/1.0.2/package/package.json written -2003 silly fetchNamedPackageData asn1 -2004 silly mapToRegistry name asn1 -2005 silly mapToRegistry using default registry -2006 silly mapToRegistry registry https://registry.npmjs.org/ -2007 silly mapToRegistry uri https://registry.npmjs.org/asn1 -2008 silly fetchNamedPackageData dashdash -2009 silly mapToRegistry name dashdash -2010 silly mapToRegistry using default registry -2011 silly mapToRegistry registry https://registry.npmjs.org/ -2012 silly mapToRegistry uri https://registry.npmjs.org/dashdash -2013 silly fetchNamedPackageData getpass -2014 silly mapToRegistry name getpass -2015 silly mapToRegistry using default registry -2016 silly mapToRegistry registry https://registry.npmjs.org/ -2017 silly mapToRegistry uri https://registry.npmjs.org/getpass -2018 silly fetchNamedPackageData safer-buffer -2019 silly mapToRegistry name safer-buffer -2020 silly mapToRegistry using default registry -2021 silly mapToRegistry registry https://registry.npmjs.org/ -2022 silly mapToRegistry uri https://registry.npmjs.org/safer-buffer -2023 silly fetchNamedPackageData jsbn -2024 silly mapToRegistry name jsbn -2025 silly mapToRegistry using default registry -2026 silly mapToRegistry registry https://registry.npmjs.org/ -2027 silly mapToRegistry uri https://registry.npmjs.org/jsbn -2028 silly fetchNamedPackageData tweetnacl -2029 silly mapToRegistry name tweetnacl -2030 silly mapToRegistry using default registry -2031 silly mapToRegistry registry https://registry.npmjs.org/ -2032 silly mapToRegistry uri https://registry.npmjs.org/tweetnacl -2033 silly fetchNamedPackageData ecc-jsbn -2034 silly mapToRegistry name ecc-jsbn -2035 silly mapToRegistry using default registry -2036 silly mapToRegistry registry https://registry.npmjs.org/ -2037 silly mapToRegistry uri https://registry.npmjs.org/ecc-jsbn -2038 silly fetchNamedPackageData bcrypt-pbkdf -2039 silly mapToRegistry name bcrypt-pbkdf -2040 silly mapToRegistry using default registry -2041 silly mapToRegistry registry https://registry.npmjs.org/ -2042 silly mapToRegistry uri https://registry.npmjs.org/bcrypt-pbkdf -2043 verbose request uri https://registry.npmjs.org/asn1 -2044 verbose request no auth needed -2045 info attempt registry request try #1 at 13:48:58 -2046 verbose etag W/"de813efa4f95d8b4547fcf05d55dc504" -2047 verbose lastModified Fri, 13 Dec 2019 16:32:09 GMT -2048 http request GET https://registry.npmjs.org/asn1 -2049 verbose request uri https://registry.npmjs.org/jsbn -2050 verbose request no auth needed -2051 info attempt registry request try #1 at 13:48:58 -2052 verbose etag W/"0611ae2a6c0b557511e766ff564197a0" -2053 verbose lastModified Sun, 27 May 2018 05:34:52 GMT -2054 http request GET https://registry.npmjs.org/jsbn -2055 verbose request uri https://registry.npmjs.org/getpass -2056 verbose request no auth needed -2057 info attempt registry request try #1 at 13:48:58 -2058 verbose etag W/"cbefe53bd31f73e662e9120b48930d2f" -2059 verbose lastModified Fri, 13 Dec 2019 16:32:27 GMT -2060 http request GET https://registry.npmjs.org/getpass -2061 verbose request uri https://registry.npmjs.org/safer-buffer -2062 verbose request no auth needed -2063 info attempt registry request try #1 at 13:48:58 -2064 verbose etag W/"af6bd5bd8c6f8fc6f2baa03c0e1637e9" -2065 verbose lastModified Sun, 27 May 2018 16:29:44 GMT -2066 http request GET https://registry.npmjs.org/safer-buffer -2067 verbose request uri https://registry.npmjs.org/ecc-jsbn -2068 verbose request no auth needed -2069 info attempt registry request try #1 at 13:48:58 -2070 verbose etag W/"972b128f4c15e931ec8836237cce37e0" -2071 verbose lastModified Sun, 29 Jul 2018 17:44:41 GMT -2072 http request GET https://registry.npmjs.org/ecc-jsbn -2073 verbose request uri https://registry.npmjs.org/dashdash -2074 verbose request no auth needed -2075 info attempt registry request try #1 at 13:48:58 -2076 verbose etag W/"4ed0f11669a0fcb66513077f2f321ea9" -2077 verbose lastModified Sat, 26 May 2018 21:43:37 GMT -2078 http request GET https://registry.npmjs.org/dashdash -2079 verbose request uri https://registry.npmjs.org/tweetnacl -2080 verbose request no auth needed -2081 info attempt registry request try #1 at 13:48:58 -2082 verbose etag W/"fbf94e62e5226cbf0f67805b6d51d6fe" -2083 verbose lastModified Thu, 16 Jan 2020 19:29:00 GMT -2084 http request GET https://registry.npmjs.org/tweetnacl -2085 verbose request uri https://registry.npmjs.org/bcrypt-pbkdf -2086 verbose request no auth needed -2087 info attempt registry request try #1 at 13:48:58 -2088 verbose etag W/"46ae03958b9d75cded3b6f53d3277a12" -2089 verbose lastModified Fri, 13 Dec 2019 16:32:11 GMT -2090 http request GET https://registry.npmjs.org/bcrypt-pbkdf -2091 http 304 https://registry.npmjs.org/jsbn -2092 verbose headers { date: 'Fri, 22 May 2020 11:48:58 GMT', -2092 verbose headers connection: 'keep-alive', -2092 verbose headers 'set-cookie': -2092 verbose headers [ '__cfduid=d7325b855bbed19ce898226d1ffb9a3291590148138; expires=Sun, 21-Jun-20 11:48:58 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -2092 verbose headers 'cf-ray': '59764faad8fd325c-FRA', -2092 verbose headers age: '5657', -2092 verbose headers 'cache-control': 'public, max-age=300', -2092 verbose headers etag: '"0611ae2a6c0b557511e766ff564197a0"', -2092 verbose headers 'last-modified': 'Sun, 27 May 2018 05:34:52 GMT', -2092 verbose headers vary: 'Accept-Encoding', -2092 verbose headers 'cf-cache-status': 'HIT', -2092 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -2092 verbose headers server: 'cloudflare', -2092 verbose headers 'cf-request-id': '02ddd01ec40000325c4c86d200000001' } -2093 silly get cb [ 304, -2093 silly get { date: 'Fri, 22 May 2020 11:48:58 GMT', -2093 silly get connection: 'keep-alive', -2093 silly get 'set-cookie': -2093 silly get [ '__cfduid=d7325b855bbed19ce898226d1ffb9a3291590148138; expires=Sun, 21-Jun-20 11:48:58 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -2093 silly get 'cf-ray': '59764faad8fd325c-FRA', -2093 silly get age: '5657', -2093 silly get 'cache-control': 'public, max-age=300', -2093 silly get etag: '"0611ae2a6c0b557511e766ff564197a0"', -2093 silly get 'last-modified': 'Sun, 27 May 2018 05:34:52 GMT', -2093 silly get vary: 'Accept-Encoding', -2093 silly get 'cf-cache-status': 'HIT', -2093 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -2093 silly get server: 'cloudflare', -2093 silly get 'cf-request-id': '02ddd01ec40000325c4c86d200000001' } ] -2094 verbose etag https://registry.npmjs.org/jsbn from cache -2095 verbose get saving jsbn to /home/christine/.npm/registry.npmjs.org/jsbn/.cache.json -2096 silly resolveWithNewModule jsbn@0.1.1 checking installable status -2097 silly cache add args [ 'jsbn@~0.1.0', null ] -2098 verbose cache add spec jsbn@~0.1.0 -2099 silly cache add parsed spec Result { -2099 silly cache add raw: 'jsbn@~0.1.0', -2099 silly cache add scope: null, -2099 silly cache add name: 'jsbn', -2099 silly cache add rawSpec: '~0.1.0', -2099 silly cache add spec: '>=0.1.0 <0.2.0', -2099 silly cache add type: 'range' } -2100 silly addNamed jsbn@>=0.1.0 <0.2.0 -2101 verbose addNamed ">=0.1.0 <0.2.0" is a valid semver range for jsbn -2102 silly addNameRange { name: 'jsbn', range: '>=0.1.0 <0.2.0', hasData: false } -2103 silly mapToRegistry name jsbn -2104 silly mapToRegistry using default registry -2105 silly mapToRegistry registry https://registry.npmjs.org/ -2106 silly mapToRegistry uri https://registry.npmjs.org/jsbn -2107 verbose addNameRange registry:https://registry.npmjs.org/jsbn not in flight; fetching -2108 http 304 https://registry.npmjs.org/safer-buffer -2109 verbose headers { date: 'Fri, 22 May 2020 11:48:58 GMT', -2109 verbose headers connection: 'keep-alive', -2109 verbose headers 'set-cookie': -2109 verbose headers [ '__cfduid=d5c44467f99426bc8ed81135e17d288951590148138; expires=Sun, 21-Jun-20 11:48:58 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -2109 verbose headers 'cf-ray': '59764faadb96648b-FRA', -2109 verbose headers age: '5660', -2109 verbose headers 'cache-control': 'public, max-age=300', -2109 verbose headers etag: '"af6bd5bd8c6f8fc6f2baa03c0e1637e9"', -2109 verbose headers 'last-modified': 'Sun, 27 May 2018 16:29:44 GMT', -2109 verbose headers vary: 'Accept-Encoding', -2109 verbose headers 'cf-cache-status': 'HIT', -2109 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -2109 verbose headers server: 'cloudflare', -2109 verbose headers 'cf-request-id': '02ddd01ec80000648bda035200000001' } -2110 silly get cb [ 304, -2110 silly get { date: 'Fri, 22 May 2020 11:48:58 GMT', -2110 silly get connection: 'keep-alive', -2110 silly get 'set-cookie': -2110 silly get [ '__cfduid=d5c44467f99426bc8ed81135e17d288951590148138; expires=Sun, 21-Jun-20 11:48:58 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -2110 silly get 'cf-ray': '59764faadb96648b-FRA', -2110 silly get age: '5660', -2110 silly get 'cache-control': 'public, max-age=300', -2110 silly get etag: '"af6bd5bd8c6f8fc6f2baa03c0e1637e9"', -2110 silly get 'last-modified': 'Sun, 27 May 2018 16:29:44 GMT', -2110 silly get vary: 'Accept-Encoding', -2110 silly get 'cf-cache-status': 'HIT', -2110 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -2110 silly get server: 'cloudflare', -2110 silly get 'cf-request-id': '02ddd01ec80000648bda035200000001' } ] -2111 verbose etag https://registry.npmjs.org/safer-buffer from cache -2112 verbose get saving safer-buffer to /home/christine/.npm/registry.npmjs.org/safer-buffer/.cache.json -2113 http 200 https://registry.npmjs.org/getpass -2114 verbose headers { date: 'Fri, 22 May 2020 11:48:58 GMT', -2114 verbose headers 'content-type': 'application/json', -2114 verbose headers 'transfer-encoding': 'chunked', -2114 verbose headers connection: 'keep-alive', -2114 verbose headers 'set-cookie': -2114 verbose headers [ '__cfduid=dd010058b9e3e0b8be866b1c539f3a13d1590148138; expires=Sun, 21-Jun-20 11:48:58 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -2114 verbose headers 'cf-ray': '59764faadf226347-FRA', -2114 verbose headers age: '5656', -2114 verbose headers 'cache-control': 'public, max-age=300', -2114 verbose headers etag: 'W/"869ca13d164a27967315d623e8ce7ed7"', -2114 verbose headers 'last-modified': 'Wed, 06 May 2020 14:47:37 GMT', -2114 verbose headers vary: 'accept-encoding, accept', -2114 verbose headers 'cf-cache-status': 'HIT', -2114 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -2114 verbose headers server: 'cloudflare', -2114 verbose headers 'content-encoding': 'gzip', -2114 verbose headers 'cf-request-id': '02ddd01ec800006347e88e6200000001' } -2115 silly get cb [ 200, -2115 silly get { date: 'Fri, 22 May 2020 11:48:58 GMT', -2115 silly get 'content-type': 'application/json', -2115 silly get 'transfer-encoding': 'chunked', -2115 silly get connection: 'keep-alive', -2115 silly get 'set-cookie': -2115 silly get [ '__cfduid=dd010058b9e3e0b8be866b1c539f3a13d1590148138; expires=Sun, 21-Jun-20 11:48:58 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -2115 silly get 'cf-ray': '59764faadf226347-FRA', -2115 silly get age: '5656', -2115 silly get 'cache-control': 'public, max-age=300', -2115 silly get etag: 'W/"869ca13d164a27967315d623e8ce7ed7"', -2115 silly get 'last-modified': 'Wed, 06 May 2020 14:47:37 GMT', -2115 silly get vary: 'accept-encoding, accept', -2115 silly get 'cf-cache-status': 'HIT', -2115 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -2115 silly get server: 'cloudflare', -2115 silly get 'content-encoding': 'gzip', -2115 silly get 'cf-request-id': '02ddd01ec800006347e88e6200000001' } ] -2116 verbose get saving getpass to /home/christine/.npm/registry.npmjs.org/getpass/.cache.json -2117 http 200 https://registry.npmjs.org/bcrypt-pbkdf -2118 verbose headers { date: 'Fri, 22 May 2020 11:48:58 GMT', -2118 verbose headers 'content-type': 'application/json', -2118 verbose headers 'transfer-encoding': 'chunked', -2118 verbose headers connection: 'keep-alive', -2118 verbose headers 'set-cookie': -2118 verbose headers [ '__cfduid=d0e932d8ab348df1bf36d2b5c827b275c1590148138; expires=Sun, 21-Jun-20 11:48:58 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -2118 verbose headers 'cf-ray': '59764faaef896413-FRA', -2118 verbose headers age: '5653', -2118 verbose headers 'cache-control': 'public, max-age=300', -2118 verbose headers etag: 'W/"f08505ab6749543a27b96d63fd64d6c1"', -2118 verbose headers 'last-modified': 'Wed, 06 May 2020 14:47:21 GMT', -2118 verbose headers vary: 'accept-encoding, accept', -2118 verbose headers 'cf-cache-status': 'HIT', -2118 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -2118 verbose headers server: 'cloudflare', -2118 verbose headers 'content-encoding': 'gzip', -2118 verbose headers 'cf-request-id': '02ddd01ece000064135f93f200000001' } -2119 silly get cb [ 200, -2119 silly get { date: 'Fri, 22 May 2020 11:48:58 GMT', -2119 silly get 'content-type': 'application/json', -2119 silly get 'transfer-encoding': 'chunked', -2119 silly get connection: 'keep-alive', -2119 silly get 'set-cookie': -2119 silly get [ '__cfduid=d0e932d8ab348df1bf36d2b5c827b275c1590148138; expires=Sun, 21-Jun-20 11:48:58 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -2119 silly get 'cf-ray': '59764faaef896413-FRA', -2119 silly get age: '5653', -2119 silly get 'cache-control': 'public, max-age=300', -2119 silly get etag: 'W/"f08505ab6749543a27b96d63fd64d6c1"', -2119 silly get 'last-modified': 'Wed, 06 May 2020 14:47:21 GMT', -2119 silly get vary: 'accept-encoding, accept', -2119 silly get 'cf-cache-status': 'HIT', -2119 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -2119 silly get server: 'cloudflare', -2119 silly get 'content-encoding': 'gzip', -2119 silly get 'cf-request-id': '02ddd01ece000064135f93f200000001' } ] -2120 verbose get saving bcrypt-pbkdf to /home/christine/.npm/registry.npmjs.org/bcrypt-pbkdf/.cache.json -2121 http 200 https://registry.npmjs.org/asn1 -2122 verbose headers { date: 'Fri, 22 May 2020 11:48:58 GMT', -2122 verbose headers 'content-type': 'application/json', -2122 verbose headers 'transfer-encoding': 'chunked', -2122 verbose headers connection: 'keep-alive', -2122 verbose headers 'set-cookie': -2122 verbose headers [ '__cfduid=d2a12158e0b1816dc3511d38bce84223a1590148138; expires=Sun, 21-Jun-20 11:48:58 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -2122 verbose headers 'cf-ray': '59764faadddcc272-FRA', -2122 verbose headers age: '5652', -2122 verbose headers 'cache-control': 'public, max-age=300', -2122 verbose headers etag: 'W/"53988a6250256bd0f9e9b253aaf39e0b"', -2122 verbose headers 'last-modified': 'Wed, 06 May 2020 14:47:19 GMT', -2122 verbose headers vary: 'accept-encoding, accept', -2122 verbose headers 'cf-cache-status': 'HIT', -2122 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -2122 verbose headers server: 'cloudflare', -2122 verbose headers 'content-encoding': 'gzip', -2122 verbose headers 'cf-request-id': '02ddd01ec40000c272388f9200000001' } -2123 silly get cb [ 200, -2123 silly get { date: 'Fri, 22 May 2020 11:48:58 GMT', -2123 silly get 'content-type': 'application/json', -2123 silly get 'transfer-encoding': 'chunked', -2123 silly get connection: 'keep-alive', -2123 silly get 'set-cookie': -2123 silly get [ '__cfduid=d2a12158e0b1816dc3511d38bce84223a1590148138; expires=Sun, 21-Jun-20 11:48:58 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -2123 silly get 'cf-ray': '59764faadddcc272-FRA', -2123 silly get age: '5652', -2123 silly get 'cache-control': 'public, max-age=300', -2123 silly get etag: 'W/"53988a6250256bd0f9e9b253aaf39e0b"', -2123 silly get 'last-modified': 'Wed, 06 May 2020 14:47:19 GMT', -2123 silly get vary: 'accept-encoding, accept', -2123 silly get 'cf-cache-status': 'HIT', -2123 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -2123 silly get server: 'cloudflare', -2123 silly get 'content-encoding': 'gzip', -2123 silly get 'cf-request-id': '02ddd01ec40000c272388f9200000001' } ] -2124 verbose get saving asn1 to /home/christine/.npm/registry.npmjs.org/asn1/.cache.json -2125 verbose get https://registry.npmjs.org/jsbn not expired, no request -2126 silly addNameRange number 2 { name: 'jsbn', range: '>=0.1.0 <0.2.0', hasData: true } -2127 silly addNameRange versions [ 'jsbn', [ '0.0.0', '0.1.0', '0.1.1', '1.1.0' ] ] -2128 silly addNamed jsbn@0.1.1 -2129 verbose addNamed "0.1.1" is a plain semver version for jsbn -2130 http 304 https://registry.npmjs.org/dashdash -2131 verbose headers { date: 'Fri, 22 May 2020 11:48:58 GMT', -2131 verbose headers connection: 'keep-alive', -2131 verbose headers 'set-cookie': -2131 verbose headers [ '__cfduid=d4522c061ac7d1a53e179487bb5d818481590148138; expires=Sun, 21-Jun-20 11:48:58 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -2131 verbose headers 'cf-ray': '59764faaeb21175a-FRA', -2131 verbose headers age: '5350', -2131 verbose headers 'cache-control': 'public, max-age=300', -2131 verbose headers etag: '"4ed0f11669a0fcb66513077f2f321ea9"', -2131 verbose headers 'last-modified': 'Sat, 26 May 2018 21:43:37 GMT', -2131 verbose headers vary: 'Accept-Encoding', -2131 verbose headers 'cf-cache-status': 'HIT', -2131 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -2131 verbose headers server: 'cloudflare', -2131 verbose headers 'cf-request-id': '02ddd01ece0000175a1e236200000001' } -2132 silly get cb [ 304, -2132 silly get { date: 'Fri, 22 May 2020 11:48:58 GMT', -2132 silly get connection: 'keep-alive', -2132 silly get 'set-cookie': -2132 silly get [ '__cfduid=d4522c061ac7d1a53e179487bb5d818481590148138; expires=Sun, 21-Jun-20 11:48:58 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -2132 silly get 'cf-ray': '59764faaeb21175a-FRA', -2132 silly get age: '5350', -2132 silly get 'cache-control': 'public, max-age=300', -2132 silly get etag: '"4ed0f11669a0fcb66513077f2f321ea9"', -2132 silly get 'last-modified': 'Sat, 26 May 2018 21:43:37 GMT', -2132 silly get vary: 'Accept-Encoding', -2132 silly get 'cf-cache-status': 'HIT', -2132 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -2132 silly get server: 'cloudflare', -2132 silly get 'cf-request-id': '02ddd01ece0000175a1e236200000001' } ] -2133 verbose etag https://registry.npmjs.org/dashdash from cache -2134 verbose get saving dashdash to /home/christine/.npm/registry.npmjs.org/dashdash/.cache.json -2135 silly resolveWithNewModule safer-buffer@2.1.2 checking installable status -2136 silly cache add args [ 'safer-buffer@^2.0.2', null ] -2137 verbose cache add spec safer-buffer@^2.0.2 -2138 silly cache add parsed spec Result { -2138 silly cache add raw: 'safer-buffer@^2.0.2', -2138 silly cache add scope: null, -2138 silly cache add name: 'safer-buffer', -2138 silly cache add rawSpec: '^2.0.2', -2138 silly cache add spec: '>=2.0.2 <3.0.0', -2138 silly cache add type: 'range' } -2139 silly addNamed safer-buffer@>=2.0.2 <3.0.0 -2140 verbose addNamed ">=2.0.2 <3.0.0" is a valid semver range for safer-buffer -2141 silly addNameRange { name: 'safer-buffer', range: '>=2.0.2 <3.0.0', hasData: false } -2142 silly mapToRegistry name safer-buffer -2143 silly mapToRegistry using default registry -2144 silly mapToRegistry registry https://registry.npmjs.org/ -2145 silly mapToRegistry uri https://registry.npmjs.org/safer-buffer -2146 verbose addNameRange registry:https://registry.npmjs.org/safer-buffer not in flight; fetching -2147 silly resolveWithNewModule getpass@0.1.7 checking installable status -2148 silly cache add args [ 'getpass@^0.1.1', null ] -2149 verbose cache add spec getpass@^0.1.1 -2150 silly cache add parsed spec Result { -2150 silly cache add raw: 'getpass@^0.1.1', -2150 silly cache add scope: null, -2150 silly cache add name: 'getpass', -2150 silly cache add rawSpec: '^0.1.1', -2150 silly cache add spec: '>=0.1.1 <0.2.0', -2150 silly cache add type: 'range' } -2151 silly addNamed getpass@>=0.1.1 <0.2.0 -2152 verbose addNamed ">=0.1.1 <0.2.0" is a valid semver range for getpass -2153 silly addNameRange { name: 'getpass', range: '>=0.1.1 <0.2.0', hasData: false } -2154 silly mapToRegistry name getpass -2155 silly mapToRegistry using default registry -2156 silly mapToRegistry registry https://registry.npmjs.org/ -2157 silly mapToRegistry uri https://registry.npmjs.org/getpass -2158 verbose addNameRange registry:https://registry.npmjs.org/getpass not in flight; fetching -2159 silly resolveWithNewModule bcrypt-pbkdf@1.0.2 checking installable status -2160 silly cache add args [ 'bcrypt-pbkdf@^1.0.0', null ] -2161 verbose cache add spec bcrypt-pbkdf@^1.0.0 -2162 silly cache add parsed spec Result { -2162 silly cache add raw: 'bcrypt-pbkdf@^1.0.0', -2162 silly cache add scope: null, -2162 silly cache add name: 'bcrypt-pbkdf', -2162 silly cache add rawSpec: '^1.0.0', -2162 silly cache add spec: '>=1.0.0 <2.0.0', -2162 silly cache add type: 'range' } -2163 silly addNamed bcrypt-pbkdf@>=1.0.0 <2.0.0 -2164 verbose addNamed ">=1.0.0 <2.0.0" is a valid semver range for bcrypt-pbkdf -2165 silly addNameRange { name: 'bcrypt-pbkdf', range: '>=1.0.0 <2.0.0', hasData: false } -2166 silly mapToRegistry name bcrypt-pbkdf -2167 silly mapToRegistry using default registry -2168 silly mapToRegistry registry https://registry.npmjs.org/ -2169 silly mapToRegistry uri https://registry.npmjs.org/bcrypt-pbkdf -2170 verbose addNameRange registry:https://registry.npmjs.org/bcrypt-pbkdf not in flight; fetching -2171 silly cache afterAdd jsbn@0.1.1 -2172 verbose afterAdd /home/christine/.npm/jsbn/0.1.1/package/package.json not in flight; writing -2173 silly resolveWithNewModule asn1@0.2.4 checking installable status -2174 silly cache add args [ 'asn1@~0.2.3', null ] -2175 verbose cache add spec asn1@~0.2.3 -2176 silly cache add parsed spec Result { -2176 silly cache add raw: 'asn1@~0.2.3', -2176 silly cache add scope: null, -2176 silly cache add name: 'asn1', -2176 silly cache add rawSpec: '~0.2.3', -2176 silly cache add spec: '>=0.2.3 <0.3.0', -2176 silly cache add type: 'range' } -2177 silly addNamed asn1@>=0.2.3 <0.3.0 -2178 verbose addNamed ">=0.2.3 <0.3.0" is a valid semver range for asn1 -2179 silly addNameRange { name: 'asn1', range: '>=0.2.3 <0.3.0', hasData: false } -2180 silly mapToRegistry name asn1 -2181 silly mapToRegistry using default registry -2182 silly mapToRegistry registry https://registry.npmjs.org/ -2183 silly mapToRegistry uri https://registry.npmjs.org/asn1 -2184 verbose addNameRange registry:https://registry.npmjs.org/asn1 not in flight; fetching -2185 silly resolveWithNewModule dashdash@1.14.1 checking installable status -2186 silly cache add args [ 'dashdash@^1.12.0', null ] -2187 verbose cache add spec dashdash@^1.12.0 -2188 silly cache add parsed spec Result { -2188 silly cache add raw: 'dashdash@^1.12.0', -2188 silly cache add scope: null, -2188 silly cache add name: 'dashdash', -2188 silly cache add rawSpec: '^1.12.0', -2188 silly cache add spec: '>=1.12.0 <2.0.0', -2188 silly cache add type: 'range' } -2189 silly addNamed dashdash@>=1.12.0 <2.0.0 -2190 verbose addNamed ">=1.12.0 <2.0.0" is a valid semver range for dashdash -2191 silly addNameRange { name: 'dashdash', range: '>=1.12.0 <2.0.0', hasData: false } -2192 silly mapToRegistry name dashdash -2193 silly mapToRegistry using default registry -2194 silly mapToRegistry registry https://registry.npmjs.org/ -2195 silly mapToRegistry uri https://registry.npmjs.org/dashdash -2196 verbose addNameRange registry:https://registry.npmjs.org/dashdash not in flight; fetching -2197 http 200 https://registry.npmjs.org/tweetnacl -2198 verbose headers { date: 'Fri, 22 May 2020 11:48:58 GMT', -2198 verbose headers 'content-type': 'application/json', -2198 verbose headers 'transfer-encoding': 'chunked', -2198 verbose headers connection: 'keep-alive', -2198 verbose headers 'set-cookie': -2198 verbose headers [ '__cfduid=da40e9f27d1dea0fa61ff6ca4322cb73c1590148138; expires=Sun, 21-Jun-20 11:48:58 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -2198 verbose headers 'cf-ray': '59764faae943d715-FRA', -2198 verbose headers age: '5653', -2198 verbose headers 'cache-control': 'public, max-age=300', -2198 verbose headers etag: 'W/"1b4cf5c8f09886b489d11782a23a9cbf"', -2198 verbose headers 'last-modified': 'Sat, 09 May 2020 13:43:32 GMT', -2198 verbose headers vary: 'accept-encoding, accept', -2198 verbose headers 'cf-cache-status': 'HIT', -2198 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -2198 verbose headers server: 'cloudflare', -2198 verbose headers 'content-encoding': 'gzip', -2198 verbose headers 'cf-request-id': '02ddd01ecf0000d715c122c200000001' } -2199 silly get cb [ 200, -2199 silly get { date: 'Fri, 22 May 2020 11:48:58 GMT', -2199 silly get 'content-type': 'application/json', -2199 silly get 'transfer-encoding': 'chunked', -2199 silly get connection: 'keep-alive', -2199 silly get 'set-cookie': -2199 silly get [ '__cfduid=da40e9f27d1dea0fa61ff6ca4322cb73c1590148138; expires=Sun, 21-Jun-20 11:48:58 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -2199 silly get 'cf-ray': '59764faae943d715-FRA', -2199 silly get age: '5653', -2199 silly get 'cache-control': 'public, max-age=300', -2199 silly get etag: 'W/"1b4cf5c8f09886b489d11782a23a9cbf"', -2199 silly get 'last-modified': 'Sat, 09 May 2020 13:43:32 GMT', -2199 silly get vary: 'accept-encoding, accept', -2199 silly get 'cf-cache-status': 'HIT', -2199 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -2199 silly get server: 'cloudflare', -2199 silly get 'content-encoding': 'gzip', -2199 silly get 'cf-request-id': '02ddd01ecf0000d715c122c200000001' } ] -2200 verbose get saving tweetnacl to /home/christine/.npm/registry.npmjs.org/tweetnacl/.cache.json -2201 verbose get https://registry.npmjs.org/safer-buffer not expired, no request -2202 silly addNameRange number 2 { name: 'safer-buffer', range: '>=2.0.2 <3.0.0', hasData: true } -2203 silly addNameRange versions [ 'safer-buffer', -2203 silly addNameRange [ '2.0.0', '2.0.1', '2.0.2', '2.1.0', '2.1.1', '2.1.2' ] ] -2204 silly addNamed safer-buffer@2.1.2 -2205 verbose addNamed "2.1.2" is a plain semver version for safer-buffer -2206 verbose get https://registry.npmjs.org/getpass not expired, no request -2207 silly addNameRange number 2 { name: 'getpass', range: '>=0.1.1 <0.2.0', hasData: true } -2208 silly addNameRange versions [ 'getpass', -2208 silly addNameRange [ '0.1.0', -2208 silly addNameRange '0.1.1', -2208 silly addNameRange '0.1.2', -2208 silly addNameRange '0.1.3', -2208 silly addNameRange '0.1.4', -2208 silly addNameRange '0.1.5', -2208 silly addNameRange '0.1.6', -2208 silly addNameRange '0.1.7' ] ] -2209 silly addNamed getpass@0.1.7 -2210 verbose addNamed "0.1.7" is a plain semver version for getpass -2211 verbose get https://registry.npmjs.org/bcrypt-pbkdf not expired, no request -2212 silly addNameRange number 2 { name: 'bcrypt-pbkdf', range: '>=1.0.0 <2.0.0', hasData: true } -2213 silly addNameRange versions [ 'bcrypt-pbkdf', [ '1.0.0', '1.0.1', '1.0.2' ] ] -2214 silly addNamed bcrypt-pbkdf@1.0.2 -2215 verbose addNamed "1.0.2" is a plain semver version for bcrypt-pbkdf -2216 verbose get https://registry.npmjs.org/asn1 not expired, no request -2217 silly addNameRange number 2 { name: 'asn1', range: '>=0.2.3 <0.3.0', hasData: true } -2218 silly addNameRange versions [ 'asn1', -2218 silly addNameRange [ '0.1.0', -2218 silly addNameRange '0.1.1', -2218 silly addNameRange '0.1.2', -2218 silly addNameRange '0.1.3', -2218 silly addNameRange '0.1.4', -2218 silly addNameRange '0.1.5', -2218 silly addNameRange '0.1.6', -2218 silly addNameRange '0.1.7', -2218 silly addNameRange '0.1.8', -2218 silly addNameRange '0.1.9', -2218 silly addNameRange '0.1.10', -2218 silly addNameRange '0.1.11', -2218 silly addNameRange '0.2.0', -2218 silly addNameRange '0.2.1', -2218 silly addNameRange '0.2.2', -2218 silly addNameRange '0.2.3', -2218 silly addNameRange '0.2.4' ] ] -2219 silly addNamed asn1@0.2.4 -2220 verbose addNamed "0.2.4" is a plain semver version for asn1 -2221 verbose afterAdd /home/christine/.npm/jsbn/0.1.1/package/package.json written -2222 http 304 https://registry.npmjs.org/ecc-jsbn -2223 verbose headers { date: 'Fri, 22 May 2020 11:48:58 GMT', -2223 verbose headers connection: 'keep-alive', -2223 verbose headers 'set-cookie': -2223 verbose headers [ '__cfduid=d3be9a0b80d7155f3e9da29972b7410c41590148138; expires=Sun, 21-Jun-20 11:48:58 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -2223 verbose headers 'cf-ray': '59764faaec18dfc7-FRA', -2223 verbose headers age: '5653', -2223 verbose headers 'cache-control': 'public, max-age=300', -2223 verbose headers etag: '"972b128f4c15e931ec8836237cce37e0"', -2223 verbose headers 'last-modified': 'Sun, 29 Jul 2018 17:44:41 GMT', -2223 verbose headers vary: 'Accept-Encoding', -2223 verbose headers 'cf-cache-status': 'HIT', -2223 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -2223 verbose headers server: 'cloudflare', -2223 verbose headers 'cf-request-id': '02ddd01ece0000dfc72a8d3200000001' } -2224 silly get cb [ 304, -2224 silly get { date: 'Fri, 22 May 2020 11:48:58 GMT', -2224 silly get connection: 'keep-alive', -2224 silly get 'set-cookie': -2224 silly get [ '__cfduid=d3be9a0b80d7155f3e9da29972b7410c41590148138; expires=Sun, 21-Jun-20 11:48:58 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -2224 silly get 'cf-ray': '59764faaec18dfc7-FRA', -2224 silly get age: '5653', -2224 silly get 'cache-control': 'public, max-age=300', -2224 silly get etag: '"972b128f4c15e931ec8836237cce37e0"', -2224 silly get 'last-modified': 'Sun, 29 Jul 2018 17:44:41 GMT', -2224 silly get vary: 'Accept-Encoding', -2224 silly get 'cf-cache-status': 'HIT', -2224 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -2224 silly get server: 'cloudflare', -2224 silly get 'cf-request-id': '02ddd01ece0000dfc72a8d3200000001' } ] -2225 verbose etag https://registry.npmjs.org/ecc-jsbn from cache -2226 verbose get saving ecc-jsbn to /home/christine/.npm/registry.npmjs.org/ecc-jsbn/.cache.json -2227 verbose get https://registry.npmjs.org/dashdash not expired, no request -2228 silly addNameRange number 2 { name: 'dashdash', range: '>=1.12.0 <2.0.0', hasData: true } -2229 silly addNameRange versions [ 'dashdash', -2229 silly addNameRange [ '1.0.0', -2229 silly addNameRange '1.0.1', -2229 silly addNameRange '1.0.2', -2229 silly addNameRange '1.1.0', -2229 silly addNameRange '1.2.0', -2229 silly addNameRange '1.2.1', -2229 silly addNameRange '1.3.0', -2229 silly addNameRange '1.3.1', -2229 silly addNameRange '1.3.2', -2229 silly addNameRange '1.4.0', -2229 silly addNameRange '1.5.0', -2229 silly addNameRange '1.6.0', -2229 silly addNameRange '1.7.0', -2229 silly addNameRange '1.7.1', -2229 silly addNameRange '1.7.2', -2229 silly addNameRange '1.7.3', -2229 silly addNameRange '1.8.0', -2229 silly addNameRange '1.9.0', -2229 silly addNameRange '1.10.0', -2229 silly addNameRange '1.10.1', -2229 silly addNameRange '1.11.0', -2229 silly addNameRange '1.12.0', -2229 silly addNameRange '1.12.1', -2229 silly addNameRange '1.12.2', -2229 silly addNameRange '1.13.0', -2229 silly addNameRange '1.13.1', -2229 silly addNameRange '1.14.0', -2229 silly addNameRange '1.14.1' ] ] -2230 silly addNamed dashdash@1.14.1 -2231 verbose addNamed "1.14.1" is a plain semver version for dashdash -2232 silly cache afterAdd safer-buffer@2.1.2 -2233 verbose afterAdd /home/christine/.npm/safer-buffer/2.1.2/package/package.json not in flight; writing -2234 silly resolveWithNewModule tweetnacl@0.14.5 checking installable status -2235 silly cache add args [ 'tweetnacl@~0.14.0', null ] -2236 verbose cache add spec tweetnacl@~0.14.0 -2237 silly cache add parsed spec Result { -2237 silly cache add raw: 'tweetnacl@~0.14.0', -2237 silly cache add scope: null, -2237 silly cache add name: 'tweetnacl', -2237 silly cache add rawSpec: '~0.14.0', -2237 silly cache add spec: '>=0.14.0 <0.15.0', -2237 silly cache add type: 'range' } -2238 silly addNamed tweetnacl@>=0.14.0 <0.15.0 -2239 verbose addNamed ">=0.14.0 <0.15.0" is a valid semver range for tweetnacl -2240 silly addNameRange { name: 'tweetnacl', range: '>=0.14.0 <0.15.0', hasData: false } -2241 silly mapToRegistry name tweetnacl -2242 silly mapToRegistry using default registry -2243 silly mapToRegistry registry https://registry.npmjs.org/ -2244 silly mapToRegistry uri https://registry.npmjs.org/tweetnacl -2245 verbose addNameRange registry:https://registry.npmjs.org/tweetnacl not in flight; fetching -2246 silly cache afterAdd getpass@0.1.7 -2247 verbose afterAdd /home/christine/.npm/getpass/0.1.7/package/package.json not in flight; writing -2248 silly cache afterAdd asn1@0.2.4 -2249 verbose afterAdd /home/christine/.npm/asn1/0.2.4/package/package.json not in flight; writing -2250 silly cache afterAdd bcrypt-pbkdf@1.0.2 -2251 verbose afterAdd /home/christine/.npm/bcrypt-pbkdf/1.0.2/package/package.json not in flight; writing -2252 silly resolveWithNewModule ecc-jsbn@0.1.2 checking installable status -2253 silly cache add args [ 'ecc-jsbn@~0.1.1', null ] -2254 verbose cache add spec ecc-jsbn@~0.1.1 -2255 silly cache add parsed spec Result { -2255 silly cache add raw: 'ecc-jsbn@~0.1.1', -2255 silly cache add scope: null, -2255 silly cache add name: 'ecc-jsbn', -2255 silly cache add rawSpec: '~0.1.1', -2255 silly cache add spec: '>=0.1.1 <0.2.0', -2255 silly cache add type: 'range' } -2256 silly addNamed ecc-jsbn@>=0.1.1 <0.2.0 -2257 verbose addNamed ">=0.1.1 <0.2.0" is a valid semver range for ecc-jsbn -2258 silly addNameRange { name: 'ecc-jsbn', range: '>=0.1.1 <0.2.0', hasData: false } -2259 silly mapToRegistry name ecc-jsbn -2260 silly mapToRegistry using default registry -2261 silly mapToRegistry registry https://registry.npmjs.org/ -2262 silly mapToRegistry uri https://registry.npmjs.org/ecc-jsbn -2263 verbose addNameRange registry:https://registry.npmjs.org/ecc-jsbn not in flight; fetching -2264 silly cache afterAdd dashdash@1.14.1 -2265 verbose afterAdd /home/christine/.npm/dashdash/1.14.1/package/package.json not in flight; writing -2266 verbose afterAdd /home/christine/.npm/safer-buffer/2.1.2/package/package.json written -2267 verbose get https://registry.npmjs.org/tweetnacl not expired, no request -2268 silly addNameRange number 2 { name: 'tweetnacl', range: '>=0.14.0 <0.15.0', hasData: true } -2269 silly addNameRange versions [ 'tweetnacl', -2269 silly addNameRange [ '0.9.1', -2269 silly addNameRange '0.9.2', -2269 silly addNameRange '0.10.0', -2269 silly addNameRange '0.10.1', -2269 silly addNameRange '0.11.0', -2269 silly addNameRange '0.11.1', -2269 silly addNameRange '0.11.2', -2269 silly addNameRange '0.12.0', -2269 silly addNameRange '0.12.1', -2269 silly addNameRange '0.12.2', -2269 silly addNameRange '0.13.0', -2269 silly addNameRange '0.13.1', -2269 silly addNameRange '0.13.2', -2269 silly addNameRange '0.13.3', -2269 silly addNameRange '0.14.0', -2269 silly addNameRange '0.14.1', -2269 silly addNameRange '0.14.2', -2269 silly addNameRange '0.14.3', -2269 silly addNameRange '0.14.4', -2269 silly addNameRange '0.14.5', -2269 silly addNameRange '1.0.0-rc.1', -2269 silly addNameRange '1.0.0', -2269 silly addNameRange '1.0.1', -2269 silly addNameRange '1.0.2', -2269 silly addNameRange '1.0.3' ] ] -2270 silly addNamed tweetnacl@0.14.5 -2271 verbose addNamed "0.14.5" is a plain semver version for tweetnacl -2272 verbose afterAdd /home/christine/.npm/getpass/0.1.7/package/package.json written -2273 verbose afterAdd /home/christine/.npm/asn1/0.2.4/package/package.json written -2274 verbose afterAdd /home/christine/.npm/bcrypt-pbkdf/1.0.2/package/package.json written -2275 verbose get https://registry.npmjs.org/ecc-jsbn not expired, no request -2276 silly addNameRange number 2 { name: 'ecc-jsbn', range: '>=0.1.1 <0.2.0', hasData: true } -2277 silly addNameRange versions [ 'ecc-jsbn', [ '0.0.1', '0.1.1', '0.1.2', '0.2.0' ] ] -2278 silly addNamed ecc-jsbn@0.1.2 -2279 verbose addNamed "0.1.2" is a plain semver version for ecc-jsbn -2280 verbose afterAdd /home/christine/.npm/dashdash/1.14.1/package/package.json written -2281 silly cache afterAdd tweetnacl@0.14.5 -2282 verbose afterAdd /home/christine/.npm/tweetnacl/0.14.5/package/package.json not in flight; writing -2283 silly cache afterAdd ecc-jsbn@0.1.2 -2284 verbose afterAdd /home/christine/.npm/ecc-jsbn/0.1.2/package/package.json not in flight; writing -2285 verbose afterAdd /home/christine/.npm/tweetnacl/0.14.5/package/package.json written -2286 verbose afterAdd /home/christine/.npm/ecc-jsbn/0.1.2/package/package.json written -2287 silly fetchNamedPackageData psl -2288 silly mapToRegistry name psl -2289 silly mapToRegistry using default registry -2290 silly mapToRegistry registry https://registry.npmjs.org/ -2291 silly mapToRegistry uri https://registry.npmjs.org/psl -2292 verbose request uri https://registry.npmjs.org/psl -2293 verbose request no auth needed -2294 info attempt registry request try #1 at 13:48:58 -2295 verbose etag W/"101ba2d632d4780d2de3d351ee1405be" -2296 verbose lastModified Sat, 28 Dec 2019 13:07:08 GMT -2297 http request GET https://registry.npmjs.org/psl -2298 http 200 https://registry.npmjs.org/psl -2299 verbose headers { date: 'Fri, 22 May 2020 11:48:58 GMT', -2299 verbose headers 'content-type': 'application/json', -2299 verbose headers 'transfer-encoding': 'chunked', -2299 verbose headers connection: 'keep-alive', -2299 verbose headers 'set-cookie': -2299 verbose headers [ '__cfduid=dde7af43ea1a3381d8e635d144d452f041590148138; expires=Sun, 21-Jun-20 11:48:58 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -2299 verbose headers 'cf-ray': '59764fab685905bb-FRA', -2299 verbose headers age: '5659', -2299 verbose headers 'cache-control': 'public, max-age=300', -2299 verbose headers etag: 'W/"da7a245ac77d8bce14f4297f73f7e4b3"', -2299 verbose headers 'last-modified': 'Wed, 25 Mar 2020 13:29:16 GMT', -2299 verbose headers vary: 'accept-encoding, accept', -2299 verbose headers 'cf-cache-status': 'HIT', -2299 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -2299 verbose headers server: 'cloudflare', -2299 verbose headers 'content-encoding': 'gzip', -2299 verbose headers 'cf-request-id': '02ddd01f1d000005bb0cac0200000001' } -2300 silly get cb [ 200, -2300 silly get { date: 'Fri, 22 May 2020 11:48:58 GMT', -2300 silly get 'content-type': 'application/json', -2300 silly get 'transfer-encoding': 'chunked', -2300 silly get connection: 'keep-alive', -2300 silly get 'set-cookie': -2300 silly get [ '__cfduid=dde7af43ea1a3381d8e635d144d452f041590148138; expires=Sun, 21-Jun-20 11:48:58 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax' ], -2300 silly get 'cf-ray': '59764fab685905bb-FRA', -2300 silly get age: '5659', -2300 silly get 'cache-control': 'public, max-age=300', -2300 silly get etag: 'W/"da7a245ac77d8bce14f4297f73f7e4b3"', -2300 silly get 'last-modified': 'Wed, 25 Mar 2020 13:29:16 GMT', -2300 silly get vary: 'accept-encoding, accept', -2300 silly get 'cf-cache-status': 'HIT', -2300 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', -2300 silly get server: 'cloudflare', -2300 silly get 'content-encoding': 'gzip', -2300 silly get 'cf-request-id': '02ddd01f1d000005bb0cac0200000001' } ] -2301 verbose get saving psl to /home/christine/.npm/registry.npmjs.org/psl/.cache.json -2302 silly resolveWithNewModule psl@1.8.0 checking installable status -2303 silly cache add args [ 'psl@^1.1.28', null ] -2304 verbose cache add spec psl@^1.1.28 -2305 silly cache add parsed spec Result { -2305 silly cache add raw: 'psl@^1.1.28', -2305 silly cache add scope: null, -2305 silly cache add name: 'psl', -2305 silly cache add rawSpec: '^1.1.28', -2305 silly cache add spec: '>=1.1.28 <2.0.0', -2305 silly cache add type: 'range' } -2306 silly addNamed psl@>=1.1.28 <2.0.0 -2307 verbose addNamed ">=1.1.28 <2.0.0" is a valid semver range for psl -2308 silly addNameRange { name: 'psl', range: '>=1.1.28 <2.0.0', hasData: false } -2309 silly mapToRegistry name psl -2310 silly mapToRegistry using default registry -2311 silly mapToRegistry registry https://registry.npmjs.org/ -2312 silly mapToRegistry uri https://registry.npmjs.org/psl -2313 verbose addNameRange registry:https://registry.npmjs.org/psl not in flight; fetching -2314 verbose get https://registry.npmjs.org/psl not expired, no request -2315 silly addNameRange number 2 { name: 'psl', range: '>=1.1.28 <2.0.0', hasData: true } -2316 silly addNameRange versions [ 'psl', -2316 silly addNameRange [ '1.0.0', -2316 silly addNameRange '1.0.1', -2316 silly addNameRange '1.0.2', -2316 silly addNameRange '1.1.0', -2316 silly addNameRange '1.1.1', -2316 silly addNameRange '1.1.2', -2316 silly addNameRange '1.1.3', -2316 silly addNameRange '1.1.4', -2316 silly addNameRange '1.1.5', -2316 silly addNameRange '1.1.6', -2316 silly addNameRange '1.1.7', -2316 silly addNameRange '1.1.8', -2316 silly addNameRange '1.1.9', -2316 silly addNameRange '1.1.10', -2316 silly addNameRange '1.1.11', -2316 silly addNameRange '1.1.12', -2316 silly addNameRange '1.1.13', -2316 silly addNameRange '1.1.14', -2316 silly addNameRange '1.1.15', -2316 silly addNameRange '1.1.16', -2316 silly addNameRange '1.1.17', -2316 silly addNameRange '1.1.18', -2316 silly addNameRange '1.1.19', -2316 silly addNameRange '1.1.20', -2316 silly addNameRange '1.1.21', -2316 silly addNameRange '1.1.22', -2316 silly addNameRange '1.1.23', -2316 silly addNameRange '1.1.24', -2316 silly addNameRange '1.1.25', -2316 silly addNameRange '1.1.26', -2316 silly addNameRange '1.1.27', -2316 silly addNameRange '1.1.28', -2316 silly addNameRange '1.1.29', -2316 silly addNameRange '1.1.30', -2316 silly addNameRange '1.1.31', -2316 silly addNameRange '1.1.32', -2316 silly addNameRange '1.1.33', -2316 silly addNameRange '1.2.0', -2316 silly addNameRange '1.3.0', -2316 silly addNameRange '1.3.1', -2316 silly addNameRange '1.4.0', -2316 silly addNameRange '1.5.0', -2316 silly addNameRange '1.6.0', -2316 silly addNameRange '1.7.0', -2316 silly addNameRange '1.8.0' ] ] -2317 silly addNamed psl@1.8.0 -2318 verbose addNamed "1.8.0" is a plain semver version for psl -2319 silly mapToRegistry name psl -2320 silly mapToRegistry using default registry -2321 silly mapToRegistry registry https://registry.npmjs.org/ -2322 silly mapToRegistry uri https://registry.npmjs.org/psl -2323 verbose addRemoteTarball https://registry.npmjs.org/psl/-/psl-1.8.0.tgz not in flight; adding -2324 verbose addRemoteTarball [ 'https://registry.npmjs.org/psl/-/psl-1.8.0.tgz', -2324 verbose addRemoteTarball '9326f8bcfb013adcc005fdff056acce020e51c24' ] -2325 info retry fetch attempt 1 at 13:48:58 -2326 info attempt registry request try #1 at 13:48:58 -2327 http fetch GET https://registry.npmjs.org/psl/-/psl-1.8.0.tgz -2328 http fetch 200 https://registry.npmjs.org/psl/-/psl-1.8.0.tgz -2329 silly fetchAndShaCheck shasum 9326f8bcfb013adcc005fdff056acce020e51c24 -2330 verbose addTmpTarball /tmp/npm-5369-43d945e1/registry.npmjs.org/psl/-/psl-1.8.0.tgz not in flight; adding -2331 verbose addTmpTarball already have metadata; skipping unpack for psl@1.8.0 -2332 silly cache afterAdd psl@1.8.0 -2333 verbose afterAdd /home/christine/.npm/psl/1.8.0/package/package.json not in flight; writing -2334 verbose afterAdd /home/christine/.npm/psl/1.8.0/package/package.json written -2335 silly loadAllDepsIntoIdealTree Finishing -2336 silly idealTree:prePrune lib -2336 silly idealTree:prePrune └─┬ less@3.11.1 -2336 silly idealTree:prePrune ├── ajv@6.12.2 -2336 silly idealTree:prePrune ├── asap@2.0.6 -2336 silly idealTree:prePrune ├── asn1@0.2.4 -2336 silly idealTree:prePrune ├── assert-plus@1.0.0 -2336 silly idealTree:prePrune ├── asynckit@0.4.0 -2336 silly idealTree:prePrune ├── aws-sign2@0.7.0 -2336 silly idealTree:prePrune ├── aws4@1.9.1 -2336 silly idealTree:prePrune ├── bcrypt-pbkdf@1.0.2 -2336 silly idealTree:prePrune ├── caseless@0.12.0 -2336 silly idealTree:prePrune ├── clone@2.1.2 -2336 silly idealTree:prePrune ├── combined-stream@1.0.8 -2336 silly idealTree:prePrune ├── core-util-is@1.0.2 -2336 silly idealTree:prePrune ├── dashdash@1.14.1 -2336 silly idealTree:prePrune ├── delayed-stream@1.0.0 -2336 silly idealTree:prePrune ├── ecc-jsbn@0.1.2 -2336 silly idealTree:prePrune ├── errno@0.1.7 -2336 silly idealTree:prePrune ├── extend@3.0.2 -2336 silly idealTree:prePrune ├── extsprintf@1.3.0 -2336 silly idealTree:prePrune ├── fast-deep-equal@3.1.1 -2336 silly idealTree:prePrune ├── fast-json-stable-stringify@2.1.0 -2336 silly idealTree:prePrune ├── forever-agent@0.6.1 -2336 silly idealTree:prePrune ├── form-data@2.3.3 -2336 silly idealTree:prePrune ├── getpass@0.1.7 -2336 silly idealTree:prePrune ├── graceful-fs@4.2.4 -2336 silly idealTree:prePrune ├── har-schema@2.0.0 -2336 silly idealTree:prePrune ├── har-validator@5.1.3 -2336 silly idealTree:prePrune ├── http-signature@1.2.0 -2336 silly idealTree:prePrune ├── image-size@0.5.5 -2336 silly idealTree:prePrune ├── is-typedarray@1.0.0 -2336 silly idealTree:prePrune ├── isstream@0.1.2 -2336 silly idealTree:prePrune ├── jsbn@0.1.1 -2336 silly idealTree:prePrune ├── json-schema-traverse@0.4.1 -2336 silly idealTree:prePrune ├── json-schema@0.2.3 -2336 silly idealTree:prePrune ├── json-stringify-safe@5.0.1 -2336 silly idealTree:prePrune ├── jsprim@1.4.1 -2336 silly idealTree:prePrune ├── mime-db@1.44.0 -2336 silly idealTree:prePrune ├── mime-types@2.1.27 -2336 silly idealTree:prePrune ├── mime@1.6.0 -2336 silly idealTree:prePrune ├── minimist@1.2.5 -2336 silly idealTree:prePrune ├── mkdirp@0.5.5 -2336 silly idealTree:prePrune ├── oauth-sign@0.9.0 -2336 silly idealTree:prePrune ├── performance-now@2.1.0 -2336 silly idealTree:prePrune ├── promise@7.3.1 -2336 silly idealTree:prePrune ├── prr@1.0.1 -2336 silly idealTree:prePrune ├── psl@1.8.0 -2336 silly idealTree:prePrune ├── punycode@2.1.1 -2336 silly idealTree:prePrune ├── qs@6.5.2 -2336 silly idealTree:prePrune ├── request@2.88.2 -2336 silly idealTree:prePrune ├── safe-buffer@5.2.1 -2336 silly idealTree:prePrune ├── safer-buffer@2.1.2 -2336 silly idealTree:prePrune ├── source-map@0.6.1 -2336 silly idealTree:prePrune ├── sshpk@1.16.1 -2336 silly idealTree:prePrune ├── tough-cookie@2.5.0 -2336 silly idealTree:prePrune ├── tslib@1.13.0 -2336 silly idealTree:prePrune ├── tunnel-agent@0.6.0 -2336 silly idealTree:prePrune ├── tweetnacl@0.14.5 -2336 silly idealTree:prePrune ├── uri-js@4.2.2 -2336 silly idealTree:prePrune ├── uuid@3.4.0 -2336 silly idealTree:prePrune └── verror@1.10.0 -2337 silly loadIdealTree Finishing -2338 silly currentTree lib -2339 silly idealTree lib -2339 silly idealTree └─┬ less@3.11.1 -2339 silly idealTree ├── ajv@6.12.2 -2339 silly idealTree ├── asap@2.0.6 -2339 silly idealTree ├── asn1@0.2.4 -2339 silly idealTree ├── assert-plus@1.0.0 -2339 silly idealTree ├── asynckit@0.4.0 -2339 silly idealTree ├── aws-sign2@0.7.0 -2339 silly idealTree ├── aws4@1.9.1 -2339 silly idealTree ├── bcrypt-pbkdf@1.0.2 -2339 silly idealTree ├── caseless@0.12.0 -2339 silly idealTree ├── clone@2.1.2 -2339 silly idealTree ├── combined-stream@1.0.8 -2339 silly idealTree ├── core-util-is@1.0.2 -2339 silly idealTree ├── dashdash@1.14.1 -2339 silly idealTree ├── delayed-stream@1.0.0 -2339 silly idealTree ├── ecc-jsbn@0.1.2 -2339 silly idealTree ├── errno@0.1.7 -2339 silly idealTree ├── extend@3.0.2 -2339 silly idealTree ├── extsprintf@1.3.0 -2339 silly idealTree ├── fast-deep-equal@3.1.1 -2339 silly idealTree ├── fast-json-stable-stringify@2.1.0 -2339 silly idealTree ├── forever-agent@0.6.1 -2339 silly idealTree ├── form-data@2.3.3 -2339 silly idealTree ├── getpass@0.1.7 -2339 silly idealTree ├── graceful-fs@4.2.4 -2339 silly idealTree ├── har-schema@2.0.0 -2339 silly idealTree ├── har-validator@5.1.3 -2339 silly idealTree ├── http-signature@1.2.0 -2339 silly idealTree ├── image-size@0.5.5 -2339 silly idealTree ├── is-typedarray@1.0.0 -2339 silly idealTree ├── isstream@0.1.2 -2339 silly idealTree ├── jsbn@0.1.1 -2339 silly idealTree ├── json-schema-traverse@0.4.1 -2339 silly idealTree ├── json-schema@0.2.3 -2339 silly idealTree ├── json-stringify-safe@5.0.1 -2339 silly idealTree ├── jsprim@1.4.1 -2339 silly idealTree ├── mime-db@1.44.0 -2339 silly idealTree ├── mime-types@2.1.27 -2339 silly idealTree ├── mime@1.6.0 -2339 silly idealTree ├── minimist@1.2.5 -2339 silly idealTree ├── mkdirp@0.5.5 -2339 silly idealTree ├── oauth-sign@0.9.0 -2339 silly idealTree ├── performance-now@2.1.0 -2339 silly idealTree ├── promise@7.3.1 -2339 silly idealTree ├── prr@1.0.1 -2339 silly idealTree ├── psl@1.8.0 -2339 silly idealTree ├── punycode@2.1.1 -2339 silly idealTree ├── qs@6.5.2 -2339 silly idealTree ├── request@2.88.2 -2339 silly idealTree ├── safe-buffer@5.2.1 -2339 silly idealTree ├── safer-buffer@2.1.2 -2339 silly idealTree ├── source-map@0.6.1 -2339 silly idealTree ├── sshpk@1.16.1 -2339 silly idealTree ├── tough-cookie@2.5.0 -2339 silly idealTree ├── tslib@1.13.0 -2339 silly idealTree ├── tunnel-agent@0.6.0 -2339 silly idealTree ├── tweetnacl@0.14.5 -2339 silly idealTree ├── uri-js@4.2.2 -2339 silly idealTree ├── uuid@3.4.0 -2339 silly idealTree └── verror@1.10.0 -2340 silly generateActionsToTake Starting -2341 silly install generateActionsToTake -2342 warn checkPermissions Missing write access to /usr/local/lib/node_modules -2343 silly rollbackFailedOptional Starting -2344 silly rollbackFailedOptional Finishing -2345 silly runTopLevelLifecycles Starting -2346 silly runTopLevelLifecycles Finishing -2347 silly install printInstalled -2348 verbose stack Error: EACCES: permission denied, access '/usr/local/lib/node_modules' -2349 verbose cwd /home/christine/0_WORK/gradcomm -2350 error Linux 4.15.0-99-generic -2351 error argv "/usr/bin/node" "/usr/bin/npm" "install" "-g" "less" -2352 error node v8.10.0 -2353 error npm v3.5.2 -2354 error path /usr/local/lib/node_modules -2355 error code EACCES -2356 error errno -13 -2357 error syscall access -2358 error Error: EACCES: permission denied, access '/usr/local/lib/node_modules' -2358 error { Error: EACCES: permission denied, access '/usr/local/lib/node_modules' -2358 error errno: -13, -2358 error code: 'EACCES', -2358 error syscall: 'access', -2358 error path: '/usr/local/lib/node_modules' } -2359 error Please try running this command again as root/Administrator. -2360 verbose exit [ -13, true ] diff --git a/community_server/parse_proto.sh b/community_server/parse_proto.sh deleted file mode 100755 index e6ccb451f..000000000 --- a/community_server/parse_proto.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash -# Copyright 2015 gRPC authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# need grpc only for hedera hashgraph -#PHP_PLUGIN="$(which grpc_php_plugin)" -#protoc --proto_path=./src/protobuf/gradido --php_out=./src/ --grpc_out=./src/ --plugin=protoc-gen-grpc=$PHP_PLUGIN ./src/protobuf/gradido/*.proto - -protoc --proto_path=./src/protobuf --php_out=./src/Model/Messages ./src/protobuf/gradido/*.proto - diff --git a/community_server/phpunit.xml.dist b/community_server/phpunit.xml.dist deleted file mode 100644 index ba971b637..000000000 --- a/community_server/phpunit.xml.dist +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - tests/TestCase/ - - - - - - - - - - - - - - - - - src/ - plugins/*/src/ - - src/Console/Installer.php - - - - diff --git a/community_server/plugins/empty b/community_server/plugins/empty deleted file mode 100644 index e69de29bb..000000000 diff --git a/community_server/src/Application.php b/community_server/src/Application.php deleted file mode 100644 index 66e00f733..000000000 --- a/community_server/src/Application.php +++ /dev/null @@ -1,117 +0,0 @@ -bootstrapCli(); - } - - /* - * Only try to load DebugKit in development mode - * Debug Kit should not be installed on a production system - */ - if (Configure::read('debug')) { - $this->addPlugin(\DebugKit\Plugin::class); - } - - // Load more plugins here - } - - - - /** - * Setup the middleware queue your application will use. - * - * @param \Cake\Http\MiddlewareQueue $middlewareQueue The middleware queue to setup. - * @return \Cake\Http\MiddlewareQueue The updated middleware queue. - */ - public function middleware($middlewareQueue) - { - //$csrf = new CsrfProtectionMiddleware(); - - // Token check will be skipped when callback returns `true`. - /*$csrf->whitelistCallback(function ($request) { - // Skip token check for API URLs. - //if ($request->getParam('prefix') === 'api') { - if($request->getAttribute('base') === 'TransactionJsonRequestHandler') { - return true; - } - }); -*/ - // Ensure routing middleware is added to the queue before CSRF protection middleware. - //$middlewareQueue->; - - $middlewareQueue - // ->add($csrf) - // Catch any exceptions in the lower layers, - // and make an error page/response - ->add(new ErrorHandlerMiddleware(null, Configure::read('Error'))) - - // Handle plugin/theme assets like CakePHP normally does. - ->add(new AssetMiddleware([ - 'cacheTime' => Configure::read('Asset.cacheTime') - ])) - - // Add routing middleware. - // If you have a large number of routes connected, turning on routes - // caching in production could improve performance. For that when - // creating the middleware instance specify the cache config name by - // using it's second constructor argument: - // `new RoutingMiddleware($this, '_cake_routes_')` - ->add(new RoutingMiddleware($this)); - - return $middlewareQueue; - } - - /** - * @return void - */ - protected function bootstrapCli() - { - try { - $this->addPlugin('Bake'); - } catch (MissingPluginException $e) { - // Do not halt if the plugin is missing - } - - // Load more plugins here - } -} diff --git a/community_server/src/Console/Installer.php b/community_server/src/Console/Installer.php deleted file mode 100644 index 3bcef473b..000000000 --- a/community_server/src/Console/Installer.php +++ /dev/null @@ -1,246 +0,0 @@ -getIO(); - - $rootDir = dirname(dirname(__DIR__)); - - static::createAppConfig($rootDir, $io); - static::createWritableDirectories($rootDir, $io); - - // ask if the permissions should be changed - if ($io->isInteractive()) { - $validator = function ($arg) { - if (in_array($arg, ['Y', 'y', 'N', 'n'])) { - return $arg; - } - throw new Exception('This is not a valid answer. Please choose Y or n.'); - }; - $setFolderPermissions = $io->askAndValidate( - 'Set Folder Permissions ? (Default to Y) [Y,n]? ', - $validator, - 10, - 'Y' - ); - - if (in_array($setFolderPermissions, ['Y', 'y'])) { - static::setFolderPermissions($rootDir, $io); - } - } else { - static::setFolderPermissions($rootDir, $io); - } - - static::setSecuritySalt($rootDir, $io); - - $class = 'Cake\Codeception\Console\Installer'; - if (class_exists($class)) { - $class::customizeCodeceptionBinary($event); - } - } - - /** - * Create the config/app.php file if it does not exist. - * - * @param string $dir The application's root directory. - * @param \Composer\IO\IOInterface $io IO interface to write to console. - * @return void - */ - public static function createAppConfig($dir, $io) - { - $appConfig = $dir . '/config/app.php'; - $defaultConfig = $dir . '/config/app.default.php'; - if (!file_exists($appConfig)) { - copy($defaultConfig, $appConfig); - $io->write('Created `config/app.php` file'); - } - } - - /** - * Create the `logs` and `tmp` directories. - * - * @param string $dir The application's root directory. - * @param \Composer\IO\IOInterface $io IO interface to write to console. - * @return void - */ - public static function createWritableDirectories($dir, $io) - { - foreach (static::WRITABLE_DIRS as $path) { - $path = $dir . '/' . $path; - if (!file_exists($path)) { - mkdir($path); - $io->write('Created `' . $path . '` directory'); - } - } - } - - /** - * Set globally writable permissions on the "tmp" and "logs" directory. - * - * This is not the most secure default, but it gets people up and running quickly. - * - * @param string $dir The application's root directory. - * @param \Composer\IO\IOInterface $io IO interface to write to console. - * @return void - */ - public static function setFolderPermissions($dir, $io) - { - // Change the permissions on a path and output the results. - $changePerms = function ($path) use ($io) { - $currentPerms = fileperms($path) & 0777; - $worldWritable = $currentPerms | 0007; - if ($worldWritable == $currentPerms) { - return; - } - - $res = chmod($path, $worldWritable); - if ($res) { - $io->write('Permissions set on ' . $path); - } else { - $io->write('Failed to set permissions on ' . $path); - } - }; - - $walker = function ($dir) use (&$walker, $changePerms) { - $files = array_diff(scandir($dir), ['.', '..']); - foreach ($files as $file) { - $path = $dir . '/' . $file; - - if (!is_dir($path)) { - continue; - } - - $changePerms($path); - $walker($path); - } - }; - - $walker($dir . '/tmp'); - $changePerms($dir . '/tmp'); - $changePerms($dir . '/logs'); - } - - /** - * Set the security.salt value in the application's config file. - * - * @param string $dir The application's root directory. - * @param \Composer\IO\IOInterface $io IO interface to write to console. - * @return void - */ - public static function setSecuritySalt($dir, $io) - { - $newKey = hash('sha256', Security::randomBytes(64)); - static::setSecuritySaltInFile($dir, $io, $newKey, 'app.php'); - } - - /** - * Set the security.salt value in a given file - * - * @param string $dir The application's root directory. - * @param \Composer\IO\IOInterface $io IO interface to write to console. - * @param string $newKey key to set in the file - * @param string $file A path to a file relative to the application's root - * @return void - */ - public static function setSecuritySaltInFile($dir, $io, $newKey, $file) - { - $config = $dir . '/config/' . $file; - $content = file_get_contents($config); - - $content = str_replace('__SALT__', $newKey, $content, $count); - - if ($count == 0) { - $io->write('No Security.salt placeholder to replace.'); - - return; - } - - $result = file_put_contents($config, $content); - if ($result) { - $io->write('Updated Security.salt value in config/' . $file); - - return; - } - $io->write('Unable to update Security.salt value.'); - } - - /** - * Set the APP_NAME value in a given file - * - * @param string $dir The application's root directory. - * @param \Composer\IO\IOInterface $io IO interface to write to console. - * @param string $appName app name to set in the file - * @param string $file A path to a file relative to the application's root - * @return void - */ - public static function setAppNameInFile($dir, $io, $appName, $file) - { - $config = $dir . '/config/' . $file; - $content = file_get_contents($config); - $content = str_replace('__APP_NAME__', $appName, $content, $count); - - if ($count == 0) { - $io->write('No __APP_NAME__ placeholder to replace.'); - - return; - } - - $result = file_put_contents($config, $content); - if ($result) { - $io->write('Updated __APP_NAME__ value in config/' . $file); - - return; - } - $io->write('Unable to update __APP_NAME__ value.'); - } -} diff --git a/community_server/src/Controller/AddressTypesController.php b/community_server/src/Controller/AddressTypesController.php deleted file mode 100644 index 9b13a7720..000000000 --- a/community_server/src/Controller/AddressTypesController.php +++ /dev/null @@ -1,106 +0,0 @@ -paginate($this->AddressTypes); - - $this->set(compact('addressTypes')); - } - - /** - * View method - * - * @param string|null $id Address Type id. - * @return \Cake\Http\Response|null - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function view($id = null) - { - $addressType = $this->AddressTypes->get($id, [ - 'contain' => ['StateGroupAddresses', 'TransactionGroupAddaddress'], - ]); - - $this->set('addressType', $addressType); - } - - /** - * Add method - * - * @return \Cake\Http\Response|null Redirects on successful add, renders view otherwise. - */ - public function add() - { - $addressType = $this->AddressTypes->newEntity(); - if ($this->request->is('post')) { - $addressType = $this->AddressTypes->patchEntity($addressType, $this->request->getData()); - if ($this->AddressTypes->save($addressType)) { - $this->Flash->success(__('The address type has been saved.')); - - return $this->redirect(['action' => 'index']); - } - $this->Flash->error(__('The address type could not be saved. Please, try again.')); - } - $this->set(compact('addressType')); - } - - /** - * Edit method - * - * @param string|null $id Address Type id. - * @return \Cake\Http\Response|null Redirects on successful edit, renders view otherwise. - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function edit($id = null) - { - $addressType = $this->AddressTypes->get($id, [ - 'contain' => [], - ]); - if ($this->request->is(['patch', 'post', 'put'])) { - $addressType = $this->AddressTypes->patchEntity($addressType, $this->request->getData()); - if ($this->AddressTypes->save($addressType)) { - $this->Flash->success(__('The address type has been saved.')); - - return $this->redirect(['action' => 'index']); - } - $this->Flash->error(__('The address type could not be saved. Please, try again.')); - } - $this->set(compact('addressType')); - } - - /** - * Delete method - * - * @param string|null $id Address Type id. - * @return \Cake\Http\Response|null Redirects to index. - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function delete($id = null) - { - $this->request->allowMethod(['post', 'delete']); - $addressType = $this->AddressTypes->get($id); - if ($this->AddressTypes->delete($addressType)) { - $this->Flash->success(__('The address type has been deleted.')); - } else { - $this->Flash->error(__('The address type could not be deleted. Please, try again.')); - } - - return $this->redirect(['action' => 'index']); - } -} diff --git a/community_server/src/Controller/AdminErrorsController.php b/community_server/src/Controller/AdminErrorsController.php deleted file mode 100644 index a9688008e..000000000 --- a/community_server/src/Controller/AdminErrorsController.php +++ /dev/null @@ -1,111 +0,0 @@ -paginate = [ - 'contain' => ['StateUsers'] - ]; - $adminErrors = $this->paginate($this->AdminErrors); - - $this->set(compact('adminErrors')); - } - - /** - * View method - * - * @param string|null $id Admin Error id. - * @return \Cake\Http\Response|null - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function view($id = null) - { - $adminError = $this->AdminErrors->get($id, [ - 'contain' => ['StateUsers'] - ]); - - $this->set('adminError', $adminError); - } - - /** - * Add method - * - * @return \Cake\Http\Response|null Redirects on successful add, renders view otherwise. - */ - public function add() - { - $adminError = $this->AdminErrors->newEntity(); - if ($this->request->is('post')) { - $adminError = $this->AdminErrors->patchEntity($adminError, $this->request->getData()); - if ($this->AdminErrors->save($adminError)) { - $this->Flash->success(__('The admin error has been saved.')); - - return $this->redirect(['action' => 'index']); - } - $this->Flash->error(__('The admin error could not be saved. Please, try again.')); - } - $stateUsers = $this->AdminErrors->StateUsers->find('list', ['limit' => 200]); - $this->set(compact('adminError', 'stateUsers')); - } - - /** - * Edit method - * - * @param string|null $id Admin Error id. - * @return \Cake\Http\Response|null Redirects on successful edit, renders view otherwise. - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function edit($id = null) - { - $adminError = $this->AdminErrors->get($id, [ - 'contain' => [] - ]); - if ($this->request->is(['patch', 'post', 'put'])) { - $adminError = $this->AdminErrors->patchEntity($adminError, $this->request->getData()); - if ($this->AdminErrors->save($adminError)) { - $this->Flash->success(__('The admin error has been saved.')); - - return $this->redirect(['action' => 'index']); - } - $this->Flash->error(__('The admin error could not be saved. Please, try again.')); - } - $stateUsers = $this->AdminErrors->StateUsers->find('list', ['limit' => 200]); - $this->set(compact('adminError', 'stateUsers')); - } - - /** - * Delete method - * - * @param string|null $id Admin Error id. - * @return \Cake\Http\Response|null Redirects to index. - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function delete($id = null) - { - $this->request->allowMethod(['post', 'delete']); - $adminError = $this->AdminErrors->get($id); - if ($this->AdminErrors->delete($adminError)) { - $this->Flash->success(__('The admin error has been deleted.')); - } else { - $this->Flash->error(__('The admin error could not be deleted. Please, try again.')); - } - - return $this->redirect(['action' => 'index']); - } -} diff --git a/community_server/src/Controller/AppController.php b/community_server/src/Controller/AppController.php deleted file mode 100644 index e70b8e7bd..000000000 --- a/community_server/src/Controller/AppController.php +++ /dev/null @@ -1,386 +0,0 @@ -loadComponent('Security');` - * - * @return void - */ - public function initialize() - { - parent::initialize(); - - $this->loadComponent('RequestHandler', [ - 'enableBeforeRedirect' => false, - ]); - $this->loadComponent('Flash'); - - $this->loadComponent('Auth', [ - 'loginAction' => [ - 'controller' => 'ServerUsers', - 'action' => 'login' - ], - 'loginRedirect' => [ - 'controller' => 'Transactions', - 'action' => 'index' - ], - 'logoutRedirect' => [ - 'controller' => 'Pages', - 'action' => 'display', - 'gradido' - ], - 'authenticate' => [ - 'all' => ['userModel' => 'ServerUsers'], - 'Form' => [ - 'userModel' => 'ServerUsers', - ] - ] - ]); - - $this->Auth->deny(['index']); - - /* - * Enable the following component for recommended CakePHP security settings. - * see https://book.cakephp.org/3.0/en/controllers/components/security.html - */ - //$this->loadComponent('Security'); - - - // load current balance - $session = $this->getRequest()->getSession(); - $state_user_id = $session->read('StateUser.id'); - - - // load error count - if ($state_user_id) { - $stateErrorsTable = TableRegistry::getTableLocator()->get('stateErrors'); - $stateErrorQuery = $stateErrorsTable - ->find('all') - ->select('id') - ->contain(false) - ->where(['state_user_id' => $state_user_id]); - $session->write('StateUser.errorCount', $stateErrorQuery->count()); - } - - // put current page into global for navi - $GLOBALS["passed"] = null; - $side = $this->request->getParam('controller'); - $GLOBALS["side"] = $side; - $subside = $this->request->getParam('action'); - $passedArguments = $this->request->getParam('pass'); - if ($passedArguments) { - $GLOBALS["passed"] = $passedArguments[0]; - } - $GLOBALS["subside"] = $subside; - - // server login - if ($this->Auth->user('id')) { - $GLOBALS['ServerUser'] = $this->Auth->user(); - } - - // login server url - $loginServer = Configure::read('LoginServer'); - if ($loginServer && isset($loginServer['url'])) { - $this->loginServerUrl = $loginServer['url'] . '/'; - } else { - $this->loginServerUrl = Router::url('/', true); - } - /* - * - * 'GradidoBlockchain' => [ - * // type: - * // - mysql: centralized blockchain in mysql db, no cross group transactions - * // - hedera: send transaction over hedera - * 'type' => 'hedera', - * // gradido nodes with blockchain (if type != mysql) - * 'nodes' => [ - * ['host' => 'http://192.168.178.225', 'port' => 13702] - * ] - * ], - */ - $blockchain = Configure::read('GradidoBlockchain'); - if($blockchain && isset($blockchain['type'])) { - $this->blockchainType = $blockchain['type']; - } - } - - protected function requestLogin($sessionId = 0, $redirect = true) - { - $stateBalancesTable = TableRegistry::getTableLocator()->get('StateBalances'); - $session = $this->getRequest()->getSession(); - // check login - // disable encryption for cookies - $session_id = 0; - $php_session_id = 0; - if($session->check('session_id')) { - $php_session_id = intval($session->read('session_id')); - } - $cookie_session_id = intval($this->request->getCookie('GRADIDO_LOGIN', '')); - // decide in which order session_ids are tried - if($sessionId != 0) { - $session_id = $sessionId; - } else if($php_session_id != 0) { - $session_id = $php_session_id; - } else if($cookie_session_id != 0) { - $session_id = $cookie_session_id; - } - - $ip = $this->request->clientIp(); - if (!$session->check('client_ip')) { - $session->write('client_ip', $ip); - } - // login server cannot detect host ip - // TODO: update login server, recognize nginx real ip header - $loginServer = Configure::read('LoginServer'); - - if ($session_id != 0) { - $userStored = $session->read('StateUser'); - - $transactionPendings = $session->read('Transactions.pending'); - $transactionExecutings = $session->read('Transactions.executing'); - $transaction_can_signed = $session->read('Transactions.can_signed'); - - - - if ($session->read('session_id') != $session_id || - ( $userStored && (!isset($userStored['id']) || !$userStored['email_checked'])) || - intval($transactionPendings) > 0 || - intval($transactionExecutings) > 0 || - intval($transaction_can_signed > 0)) - { - $http = new Client(); - - try { - $url = $loginServer['host'] . ':' . $loginServer['port']; - - $response = $http->get($url . '/login', ['session_id' => $session_id]); - $json = $response->getJson(); - - if (isset($json) && count($json) > 0) { - if ($json['state'] === 'success') { - //echo "email checked: " . $json['user']['email_checked'] . ";
    "; - if ($session->read('session_id') != $session_id || - ( $userStored && !isset($userStored['id']))) { - $session->destroy(); - } - foreach ($json['user'] as $key => $value) { - // we don't need the id of user in login server db - if($key == 'id') continue; - $session->write('StateUser.' . $key, $value); - } - //var_dump($json); - $transactionPendings = $json['Transactions.pending']; - $transactionExecuting = $json['Transactions.executing']; - $transaction_can_signed = $json['Transactions.can_signed']; - //echo "read transaction pending: $transactionPendings
    "; - $session->write('Transactions.pending', $transactionPendings); - $session->write('Transactions.executing', $transactionExecuting); - $session->write('Transactions.can_signed', $transaction_can_signed); - $session->write('session_id', $session_id); - $stateUserTable = TableRegistry::getTableLocator()->get('StateUsers'); - - - if (isset($json['user']['public_hex']) && $json['user']['public_hex'] != '') { - $public_key_bin = hex2bin($json['user']['public_hex']); - $stateUserQuery = $stateUserTable - ->find('all') - ->where(['public_key' => $public_key_bin]) - ->contain('StateBalances', function ($q) { - return $q->order(['record_date' => 'DESC']) - ->limit(1); - }); - if ($stateUserQuery->count() == 1) { - $stateUser = $stateUserQuery->first(); - if ($stateUser->first_name != $json['user']['first_name'] || - $stateUser->last_name != $json['user']['last_name'] || - $stateUser->disabled != $json['user']['disabled'] || - //$stateUser->username != $json['user']['username'] || - // -> throws error - $stateUser->email != $json['user']['email'] - ) { - $stateUser->first_name = $json['user']['first_name']; - $stateUser->last_name = $json['user']['last_name']; - $stateUser->disabled = intval($json['user']['disabled']); - //$stateUser->username = $json['user']['username']; - $stateUser->email = $json['user']['email']; - if (!$stateUserTable->save($stateUser)) { - $this->Flash->error(__('error updating state user ' . json_encode($stateUser->errors()))); - } - } - $session->write('StateUser.id', $stateUser->id); - //echo $stateUser['id']; - } else { - $newStateUser = $stateUserTable->newEntity(); - $newStateUser->public_key = $public_key_bin; - $newStateUser->first_name = $json['user']['first_name']; - $newStateUser->last_name = $json['user']['last_name']; - $newStateUser->disabled = intval($json['user']['disabled']); - //$newStateUser->username = $json['user']['username']; - $newStateUser->email = $json['user']['email']; - if (!$stateUserTable->save($newStateUser)) { - $this->Flash->error(__('error saving state user ' . json_encode($newStateUser->errors()))); - } - $session->write('StateUser.id', $newStateUser->id); - //echo $newStateUser->id; - } - } else { - if(!$redirect) { - return ['state' => 'error', 'msg' => 'no pubkey']; - } - // we haven't get a pubkey? something seems to gone wrong on the login-server - $this->Flash->error(__('no pubkey')); - //var_dump($json); - return $this->redirect($this->loginServerUrl . 'account/error500/noPubkey', 303); - } - } else { - if(!$redirect) { - return ['state' => 'not found', 'msg' => 'invalid session', 'details' => $json]; - } - if ($json['state'] === 'not found') { - $this->Flash->error(__('invalid session')); - } else { - $this->Flash->error(__('Konto ist nicht aktiviert!')); - } - //die(json_encode($json)); - if(preg_match('/client ip/', $json['msg'])) { - return $this->redirect($this->loginServerUrl . 'account/error500/ipError', 303); - } - return $this->redirect($this->loginServerUrl . 'account/', 303); - } - } - } catch (\Exception $e) { - $msg = $e->getMessage(); - if(!$redirect) { - return ['state' => 'error', 'msg' => 'login-server http request error', 'details' => $msg]; - } - $this->Flash->error(__('error http request: ') . $msg); - return $this->redirect(['controller' => 'Dashboard', 'action' => 'errorHttpRequest']); - //continue; - } - } - $state_balance = $stateBalancesTable->find()->where(['state_user_id' => $session->read('StateUser.id')])->first(); - if ($state_balance) { - $now = new FrozenTime; - $session->write('StateUser.balance', $stateBalancesTable->calculateDecay($state_balance->amount, $state_balance->record_date, $now)); - } - } else { - // no login - //die("no login"); - if(!$redirect) { - return ['state' => 'error', 'msg' => 'not logged in']; - } - if (isset($loginServer['path'])) { - return $this->redirect($loginServer['path'], 303); - } else { - return $this->redirect($this->loginServerUrl . 'account/', 303); - } - } - return true; - } - - /* - public function beforeFilter(Event $event) - { - //$this->Auth->allow(['display']); - } - */ - - public function addAdminError($controller, $action, array $returnTable, $state_user_id) - { - if (!is_array($returnTable)) { - $this->addAdminError('AppController', 'addAdminError', ['state' => 'error', 'msg' => 'returnTable isn\'t array', 'details' => gettype($returnTable)], $state_user_id); - return false; - } - $adminErrorTable = TableRegistry::getTableLocator()->get('AdminErrors'); - $adminErrorEntity = $adminErrorTable->newEntity(); - $adminErrorEntity->state_user_id = $state_user_id; - $adminErrorEntity->controller = $controller; - $adminErrorEntity->action = $action; - $adminErrorEntity->state = $returnTable['state']; - if (isset($returnTable['msg'])) { - $adminErrorEntity->msg = $returnTable['msg']; - } else { - $adminErrorEntity->msg = __('(Leere Message)'); - } - if (isset($returnTable['details'])) { - $adminErrorEntity->details = $returnTable['details']; - } else { - $adminErrorEntity->details = __('(Leere Details)'); - } - if (!$adminErrorTable->save($adminErrorEntity)) { - $this->Flash->error( - __('Serious error, couldn\'t save to db, please write the admin: ' . $this->getAdminEmailLink()), - ['escape' => false] - ); - } - return true; - } - - public function getAdminEmailLink($text = '') - { - $serverAdminEmail = Configure::read('ServerAdminEmail'); - return ''. $serverAdminEmail . ''; - } - - public function returnJsonEncoded($json) - { - $this->autoRender = false; - $response = $this->response->withType('application/json'); - return $response->withStringBody($json); - } - - public function returnJson($array) - { - $this->autoRender = false; - $response = $this->response->withType('application/json'); - return $response->withStringBody(json_encode($array)); - } - - public function getStartEndForMonth($month, $year) - { - $timeString = $year . '-' . $month . '-01 00:00'; - $firstDay = new Time($timeString); - $lastDay = new Time($timeString); - $lastDay = $lastDay->addMonth(1); - return [$firstDay, $lastDay]; - } -} diff --git a/community_server/src/Controller/AppRequestsController.php b/community_server/src/Controller/AppRequestsController.php deleted file mode 100644 index 20b182f75..000000000 --- a/community_server/src/Controller/AppRequestsController.php +++ /dev/null @@ -1,465 +0,0 @@ -loadComponent('JsonRequestClient'); - $this->loadComponent('GradidoNumber'); - //$this->loadComponent('JsonRpcRequestClient'); - //$this->Auth->allow(['add', 'edit']); - $this->Auth->allow([ - 'index', 'sendCoins', 'createCoins', 'getBalance', - 'listTransactions','listGDTTransactions', 'getDecayStartBlock' - ]); - } - - - public function index() - { - if($this->request->is('get')) { - $method = $this->request->getQuery('method'); - switch($method) { - - } - return $this->returnJson(['state' => 'error', 'msg' => 'unknown method for get', 'details' => $method]); - } - else if($this->request->is('post')) { - $jsonData = $this->request->input('json_decode'); - //var_dump($jsonData); - if($jsonData == NULL || !isset($jsonData->method)) { - return $this->returnJson(['state' => 'error', 'msg' => 'parameter error']); - } - $method = $jsonData->method; - - switch($method) { - - } - return $this->returnJson(['state' => 'error', 'msg' => 'unknown method for post', 'details' => $method]); - } - return $this->returnJson(['state' => 'error', 'msg' => 'no post or get']); - } - - private function checkAndCopyRequiredFields($fields, &$param, $data = null) { - if($data == null) { - $data = $this->request->input('json_decode'); - } - foreach($fields as $field) { - if(is_array($field)) { - $one_exist = false; - foreach($field as $oneField) { - if(isset($data->$oneField)) { - $param[$oneField] = $data->$oneField; - $one_exist = true; - break; - } - } - if(!$one_exist) { - return ['state' => 'error', 'msg' => 'missing field of set', 'details' => $field]; - } - } else { - if(!isset($data->$field)) { - return ['state' => 'error', 'msg' => 'missing field', 'details' => $field . ' not found']; - } else { - $param[$field] = $data->$field; - } - } - } - return true; - } - - private function rewriteKeys(&$data, $replaceKeys) - { - foreach(array_keys($replaceKeys) as $key) { - $newKey = $replaceKeys[$key]; - if(isset($data->$key)) { - $data->$newKey = $data->$key; - unset($data->$key); - } - } - } - - private function parseParameterForCreateTransaction(&$param, $data = null) - { - if($data == null) { - $data = $this->request->input('json_decode'); - } - $session_id = 0; - if(isset($data->session_id)) { - $session_id = $data->session_id; - } - $login_request_result = $this->requestLogin($session_id, false); - if($login_request_result !== true) { - return $login_request_result; - } - $session = $this->getRequest()->getSession(); - $param['session_id'] = $session->read('session_id'); - $param['blockchain_type'] = $this->blockchainType; - - $this->rewriteKeys($data, ['email' => 'target_email', 'username' => 'target_username', 'pubkey' => 'target_pubkey']); - $required_fields = $this->checkAndCopyRequiredFields(['amount', ['target_email', 'target_username', 'target_pubkey']], $param, $data); - if($required_fields !== true) { - return $required_fields; - } - - if(floatval($param['amount']) <= 0.0) { - return ['state' => 'error', 'msg' => 'amount is invalid', 'details' => $param['amount']]; - } - $param['amount'] = $this->GradidoNumber->parseInputNumberToCentNumber($param['amount']); - - if(isset($data->memo)) { - $param['memo'] = $data->memo; - } - - if(isset($data->auto_sign)) { - $param['auto_sign'] = boolval($data->auto_sign); - } - - return true; - } - - public function sendCoins() - { - /* - * { - "session_id" : -127182, - "amount": 2000000, - "email": "max.musterman@gmail.de", - "memo":"Thank you :)", - "group": "gdd1", - "auto_sign": true - */ - if(!$this->request->is('post')) { - return $this->returnJson(['state' => 'error', 'msg' => 'no post']); - } - $data = $this->request->input('json_decode'); - $params = []; - $result = $this->parseParameterForCreateTransaction($params, $data); - if($result !== true) { - return $this->returnJson($result); - } - - if(!isset($params['memo']) || strlen($params['memo']) < 5 || strlen($params['memo']) > 150) { - return $this->returnJson(['state' => 'error', 'msg' => 'memo is not set or not in expected range [5;150]']); - } - $params['transaction_type'] = 'transfer'; - - $requestAnswear = $this->JsonRequestClient->sendRequest(json_encode($params), '/createTransaction'); - - - if('success' == $requestAnswear['state'] && 'success' == $requestAnswear['data']['state']) { - $session = $this->getRequest()->getSession(); - $pendingTransactionCount = $session->read('Transactions.pending'); - if($pendingTransactionCount == null) { - $pendingTransactionCount = 1; - } else { - $pendingTransactionCount++; - } - $session->write('Transactions.pending', $pendingTransactionCount); - //echo "pending: " . $pendingTransactionCount; - return $this->returnJson(['state' => 'success']); - } else { - - /* - * if request contain unknown parameter format, shouldn't happen't at all - * {"state": "error", "msg": "parameter format unknown"} - * if json parsing failed - * {"state": "error", "msg": "json exception", "details":"exception text"} - * if session_id is zero or not set - * {"state": "error", "msg": "session_id invalid"} - * if session id wasn't found on login server, if server was restartet or user logged out (also per timeout, default: 15 minutes) - * {"state": "error", "msg": "session not found"} - * if session hasn't active user, shouldn't happen't at all, login-server should be checked if happen - * {"state": "code error", "msg":"user is zero"} - * if transaction type not known - * {"state": "error", "msg":"transaction_type unknown"} - * if receiver wasn't known to Login-Server - * {"state": "not found", "msg":"receiver not found"} - * if receiver account disabled, and therefor cannto receive any coins - * {"state": "disabled", "msg":"receiver is disabled"} - * if transaction was okay and will be further proccessed - * {"state":"success"} - */ - $answear_data = $requestAnswear['data']; - return $this->returnJson($answear_data); - - } - - } - - public function createCoins() - { - /* - * "session_id" : -127182, - * "email": "max.musterman@gmail.de", - * "amount": 10000000, - * "target_date":"2021-02-19T13:25:36+00:00", - * "memo":"AGE", - * "auto_sign": true - */ - if(!$this->request->is('post')) { - return $this->returnJson(['state' => 'error', 'msg' => 'no post']); - } - $data = $this->request->input('json_decode'); - $params = []; - $result = $this->parseParameterForCreateTransaction($params, $data); - if($result !== true) { - return $this->returnJson($result); - } - $required_fields = $this->checkAndCopyRequiredFields(['target_date'], $params, $data); - if($required_fields !== true) { - return $this->returnJson($required_fields); - } - $params['transaction_type'] = 'creation'; - - $requestAnswear = $this->JsonRequestClient->sendRequest(json_encode($params), '/createTransaction'); - - if('success' == $requestAnswear['state'] && 'success' == $requestAnswear['data']['state']) { - $session = $this->getRequest()->getSession(); - $pendingTransactionCount = $session->read('Transactions.pending'); - if($pendingTransactionCount == null) { - $pendingTransactionCount = 1; - } else { - $pendingTransactionCount++; - } - $session->write('Transactions.pending', $pendingTransactionCount); - //echo "pending: " . $pendingTransactionCount; - return $this->returnJson(['state' => 'success']); - } else { - - /* - * if request contain unknown parameter format, shouldn't happen't at all - * {"state": "error", "msg": "parameter format unknown"} - * if json parsing failed - * {"state": "error", "msg": "json exception", "details":"exception text"} - * if session_id is zero or not set - * {"state": "error", "msg": "session_id invalid"} - * if session id wasn't found on login server, if server was restartet or user logged out (also per timeout, default: 15 minutes) - * {"state": "error", "msg": "session not found"} - * if session hasn't active user, shouldn't happen't at all, login-server should be checked if happen - * {"state": "code error", "msg":"user is zero"} - * if transaction type not known - * {"state": "error", "msg":"transaction_type unknown"} - * if receiver wasn't known to Login-Server - * {"state": "not found", "msg":"receiver not found"} - * if receiver account disabled, and therefor cannto receive any coins - * {"state": "disabled", "msg":"receiver is disabled"} - * if transaction was okay and will be further proccessed - * {"state":"success"} - */ - $answear_data = $requestAnswear['data']; - return $this->returnJson($answear_data); - - } - - } - - public function getBalance($session_id = 0) - { - $this->viewBuilder()->setLayout('ajax'); - $login_result = $this->requestLogin($session_id, false); - if($login_result !== true) { - $this->set('body', $login_result); - return; - } - $session = $this->getRequest()->getSession(); - $user = $session->read('StateUser'); - $state_balances_table = TableRegistry::getTableLocator()->get('StateBalances'); - $state_balances_table->updateBalances($user['id']); - - $state_balance = $state_balances_table->find()->where(['state_user_id' => $user['id']])->first(); - - - $now = new FrozenTime(); - if(!$state_balance) { - $body = [ - 'state' => 'success', - 'balance' => 0, - 'decay' => 0 - ]; - } else { - - $body = [ - 'state' => 'success', - 'balance' => $state_balance->amount, - 'decay' => $state_balance->partDecay($now), - ]; - } - - $body['decay_date'] = $now; - $this->set('body', $body); - } - - public function listTransactions($page = 1, $count = 25, $orderDirection = 'ASC', $session_id = 0) - { - $this->viewBuilder()->setLayout('ajax'); - $startTime = microtime(true); - - $login_result = $this->requestLogin($session_id, false); - - if($login_result !== true) { - return $this->returnJson($login_result); - } - $session = $this->getRequest()->getSession(); - $user = $session->read('StateUser'); - - $stateBalancesTable = TableRegistry::getTableLocator()->get('StateBalances'); - $stateUserTransactionsTable = TableRegistry::getTableLocator()->get('StateUserTransactions'); - $transactionsTable = TableRegistry::getTableLocator()->get('Transactions'); - - $stateBalancesTable->updateBalances($user['id']); - - $gdtSum = 0; - - $gdtEntries = $this->JsonRequestClient->sendRequestGDT(['email' => $user['email']], 'GdtEntries' . DS . 'sumPerEmailApi'); - - if('success' == $gdtEntries['state'] && 'success' == $gdtEntries['data']['state']) { - $gdtSum = intval($gdtEntries['data']['sum']); - } else { - $this->addAdminError('StateBalancesController', 'overview', $gdtEntries, $user['id'] ? $user['id'] : 0); - } - - //echo "count: $count, page: $page
    "; - $limit = $count; - $offset = 0; - $skip_first_transaction = false; - if($page > 1) { - $offset = (( $page - 1 ) * $count) - 1; - $limit++; - } - - if($offset && $orderDirection == 'ASC') { - $offset--; - } - - //echo "limit: $limit, offset: $offset, skip first transaction: $skip_first_transaction
    "; - $stateUserTransactionsQuery = $stateUserTransactionsTable - ->find() - ->where(['state_user_id' => $user['id']]) - ->order(['balance_date' => $orderDirection]) - ->contain([]) - ->limit($limit) - //->page($page) - ->offset($offset) - ; - $state_user_transactions_count = $stateUserTransactionsQuery->count(); - if($state_user_transactions_count > $offset + $limit) { - $skip_first_transaction = true; - } - - $decay = true; - if($page > 1) { - $decay = false; - } - $transactions = []; - $transactions_from_db = $stateUserTransactionsQuery->toArray(); - - if(count($transactions_from_db)) { - if($orderDirection == 'DESC') { - $transactions_from_db = array_reverse($transactions_from_db); - } - - $transactions = $transactionsTable->listTransactionsHumanReadable($transactions_from_db, $user, $decay, $skip_first_transaction); - //echo "transactions count: " . count($transactions) . "
    "; - if($orderDirection == 'DESC') { - $transactions = array_reverse($transactions); - } - } - - $state_balance = $stateBalancesTable->find()->where(['state_user_id' => $user['id']])->first(); - - $body = [ - 'state' => 'success', - 'transactions' => $transactions, - 'transactionExecutingCount' => $session->read('Transactions.executing'), - 'count' => $state_user_transactions_count, - 'gdtSum' => $gdtSum, - 'timeUsed' => microtime(true) - $startTime - ]; - $now = new FrozenTime(); - $body['decay_date'] = $now; - - if(!$state_balance) { - $body['balance'] = 0.0; - $body['decay'] = 0.0; - } else { - $body['balance'] = $state_balance->amount; - $body['decay'] = $stateBalancesTable->calculateDecay($state_balance->amount, $state_balance->record_date, $now); - } - - $this->set('body', $body); - } - - public function listGDTTransactions($page = 1, $count = 25, $orderDirection = 'ASC', $session_id = 0) - { - $timeBegin = microtime(true); - $this->viewBuilder()->setLayout('ajax'); - - $login_result = $this->requestLogin($session_id, false); - - if($login_result !== true) { - return $this->returnJson($login_result); - } - $session = $this->getRequest()->getSession(); - $user = $session->read('StateUser'); - - if(!$user) { - return $this->returnJson(['state' => 'error', 'msg' => 'user not found', 'details' => 'exist a valid session cookie?']); - } - - $gdtEntries = $this->JsonRequestClient->sendRequestGDT([ - 'email' => $user['email'], - 'page' => $page, - 'count' => $count, - 'orderDirection' => $orderDirection - ], 'GdtEntries' . DS . 'listPerEmailApi'); - - if('success' == $gdtEntries['state']) { - $timeEnd = microtime(true); - $gdtEntries['data']['timeUsed'] = $timeEnd - $timeBegin; - return $this->returnJson($gdtEntries['data']); - - } else { - if($user) { - $this->addAdminError('StateBalancesController', 'ajaxGdtOverview', $gdtEntries, $user['id']); - } else { - $this->addAdminError('StateBalancesController', 'ajaxGdtOverview', $gdtEntries, 0); - } - } - return $this->returnJson(['state' => 'error', 'msg' => 'error by requesting gdt server', 'details' => $gdtEntries]); - } - - public function getDecayStartBlock() - { - $transactionsTable = TableRegistry::getTableLocator()->get('Transactions'); - $decayStartBlock = $transactionsTable->find()->where(['transaction_type_id' => 9]); - if(!$decayStartBlock->count()) { - return $this->returnJson(['state' => 'error', 'msg' => 'not found']); - } - return $this->returnJson(['state' => 'success', 'decay_start' => $decayStartBlock->first()->received]); - } - - private function acquireAccessToken($session_id) - { - - } - -} - diff --git a/community_server/src/Controller/BlockchainTypesController.php b/community_server/src/Controller/BlockchainTypesController.php deleted file mode 100644 index 2a94037df..000000000 --- a/community_server/src/Controller/BlockchainTypesController.php +++ /dev/null @@ -1,106 +0,0 @@ -paginate($this->BlockchainTypes); - - $this->set(compact('blockchainTypes')); - } - - /** - * View method - * - * @param string|null $id Blockchain Type id. - * @return \Cake\Http\Response|null - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function view($id = null) - { - $blockchainType = $this->BlockchainTypes->get($id, [ - 'contain' => [], - ]); - - $this->set('blockchainType', $blockchainType); - } - - /** - * Add method - * - * @return \Cake\Http\Response|null Redirects on successful add, renders view otherwise. - */ - public function add() - { - $blockchainType = $this->BlockchainTypes->newEntity(); - if ($this->request->is('post')) { - $blockchainType = $this->BlockchainTypes->patchEntity($blockchainType, $this->request->getData()); - if ($this->BlockchainTypes->save($blockchainType)) { - $this->Flash->success(__('The blockchain type has been saved.')); - - return $this->redirect(['action' => 'index']); - } - $this->Flash->error(__('The blockchain type could not be saved. Please, try again.')); - } - $this->set(compact('blockchainType')); - } - - /** - * Edit method - * - * @param string|null $id Blockchain Type id. - * @return \Cake\Http\Response|null Redirects on successful edit, renders view otherwise. - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function edit($id = null) - { - $blockchainType = $this->BlockchainTypes->get($id, [ - 'contain' => [], - ]); - if ($this->request->is(['patch', 'post', 'put'])) { - $blockchainType = $this->BlockchainTypes->patchEntity($blockchainType, $this->request->getData()); - if ($this->BlockchainTypes->save($blockchainType)) { - $this->Flash->success(__('The blockchain type has been saved.')); - - return $this->redirect(['action' => 'index']); - } - $this->Flash->error(__('The blockchain type could not be saved. Please, try again.')); - } - $this->set(compact('blockchainType')); - } - - /** - * Delete method - * - * @param string|null $id Blockchain Type id. - * @return \Cake\Http\Response|null Redirects to index. - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function delete($id = null) - { - $this->request->allowMethod(['post', 'delete']); - $blockchainType = $this->BlockchainTypes->get($id); - if ($this->BlockchainTypes->delete($blockchainType)) { - $this->Flash->success(__('The blockchain type has been deleted.')); - } else { - $this->Flash->error(__('The blockchain type could not be deleted. Please, try again.')); - } - - return $this->redirect(['action' => 'index']); - } -} diff --git a/community_server/src/Controller/CommunityProfilesController.php b/community_server/src/Controller/CommunityProfilesController.php deleted file mode 100644 index c807da72c..000000000 --- a/community_server/src/Controller/CommunityProfilesController.php +++ /dev/null @@ -1,106 +0,0 @@ -paginate($this->CommunityProfiles); - - $this->set(compact('communityProfiles')); - } - - /** - * View method - * - * @param string|null $id Community Profile id. - * @return \Cake\Http\Response|null - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function view($id = null) - { - $communityProfile = $this->CommunityProfiles->get($id, [ - 'contain' => [], - ]); - - $this->set('communityProfile', $communityProfile); - } - - /** - * Add method - * - * @return \Cake\Http\Response|null Redirects on successful add, renders view otherwise. - */ - public function add() - { - $communityProfile = $this->CommunityProfiles->newEntity(); - if ($this->request->is('post')) { - $communityProfile = $this->CommunityProfiles->patchEntity($communityProfile, $this->request->getData()); - if ($this->CommunityProfiles->save($communityProfile)) { - $this->Flash->success(__('The community profile has been saved.')); - - return $this->redirect(['action' => 'index']); - } - $this->Flash->error(__('The community profile could not be saved. Please, try again.')); - } - $this->set(compact('communityProfile')); - } - - /** - * Edit method - * - * @param string|null $id Community Profile id. - * @return \Cake\Http\Response|null Redirects on successful edit, renders view otherwise. - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function edit($id = null) - { - $communityProfile = $this->CommunityProfiles->get($id, [ - 'contain' => [], - ]); - if ($this->request->is(['patch', 'post', 'put'])) { - $communityProfile = $this->CommunityProfiles->patchEntity($communityProfile, $this->request->getData()); - if ($this->CommunityProfiles->save($communityProfile)) { - $this->Flash->success(__('The community profile has been saved.')); - - return $this->redirect(['action' => 'index']); - } - $this->Flash->error(__('The community profile could not be saved. Please, try again.')); - } - $this->set(compact('communityProfile')); - } - - /** - * Delete method - * - * @param string|null $id Community Profile id. - * @return \Cake\Http\Response|null Redirects to index. - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function delete($id = null) - { - $this->request->allowMethod(['post', 'delete']); - $communityProfile = $this->CommunityProfiles->get($id); - if ($this->CommunityProfiles->delete($communityProfile)) { - $this->Flash->success(__('The community profile has been deleted.')); - } else { - $this->Flash->error(__('The community profile could not be deleted. Please, try again.')); - } - - return $this->redirect(['action' => 'index']); - } -} diff --git a/community_server/src/Controller/Component/GradidoNumberComponent.php b/community_server/src/Controller/Component/GradidoNumberComponent.php deleted file mode 100644 index 5db208c3a..000000000 --- a/community_server/src/Controller/Component/GradidoNumberComponent.php +++ /dev/null @@ -1,33 +0,0 @@ - 'error', 'type' => 'parameter error', 'msg' => 'session_id isn\'t numeric']; - } - if(!is_numeric($user_balance) || intval($user_balance) < 0) { - return ['state' => 'error', 'type' => 'parameter error', 'msg' => 'user_balance invalid']; - } - if(is_array($base64Message)) { - foreach($base64Message as $singleMessage) { - if(!$this->is_base64($singleMessage)) { - return ['state' => 'error', 'type' => 'parameter error', 'msg' => 'at least one base64Message contain invalid base64 characters']; - } - } - } else if(!$this->is_base64($base64Message)) { - return ['state' => 'error', 'type' => 'parameter error', 'msg' => 'base64Message contain invalid base64 characters']; - } - - return $this->sendRequest(json_encode([ - 'session_id' => $session_id, - 'transaction_base64' => $base64Message, - 'balance' => $user_balance, - 'auto_sign' => $auto_sign, - 'blockchain_type' => $this->blockchainType - ]), '/checkTransaction'); - - } - - public function findePublicKeyForEmailHash($emailHash) { - //'ask' = ['account_publickey' => ''] - $results = $this->sendRequestLoginServerNeighbors(json_encode(['ask' => ['account_publickey' => $emailHash]]), 'search'); - } - - public function getRunningUserTasks($email) - { - if($email == "") { - return ['state' => 'error', 'type' => 'parameter error', 'msg' => 'email is empty']; - } - if(!GenericValidation::email($email, [])) { - return ['state' => 'error', 'type' => 'parameter error', 'msg' => 'email is invalid']; - } - - return $this->sendRequest(json_encode([ - 'email' => $email - ]), '/getRunningUserTasks'); - } - - public function getUsers($session_id, $searchString, $accountState) - { - if($searchString == "") { - return ['state' => 'error', 'type' => 'parameter error', 'msg' => 'search string is empty']; - } - if(!is_numeric($session_id)) { - return ['state' => 'error', 'type' => 'parameter error', 'msg' => 'session_id isn\'t numeric']; - } - - return $this->sendRequest(json_encode([ - 'session_id' => $session_id, - 'search' => $searchString, - 'account_state' => $accountState, - ]), '/getUsers'); - } - - public function sendRequest($transactionBody, $url_last_part) { - $http = new Client(); - - $response = $http->post($this->getLoginServerUrl() . $url_last_part, $transactionBody, ['type' => 'json']); - $responseStatus = $response->getStatusCode(); - if($responseStatus != 200) { - return ['state' => 'error', 'type' => 'request error', 'msg' => 'server response status code isn\'t 200', 'details' => $responseStatus]; - } - //$responseType = $response->getType(); - //if($responseType != 'application/json') { -// return ['state' => 'error', 'type' => 'request error', 'msg' => 'server response isn\'t json', 'details' => $responseType]; -// } - $json = $response->getJson(); - if($json == null) { - //$responseType = $response->getType(); - return ['state' => 'error', 'type' => 'request error', 'msg' => 'server response isn\'t valid json']; - } - return ['state' => 'success', 'data' => $json]; - } - - public function sendRequestGDT($transactionBody, $url) { - - $http = new Client(); - $gdtServerHost = $this->getGDTServerUrl(); - if(!$gdtServerHost) { - return ['state' => 'warning', 'msg' => 'gdt server not configured']; - } - $fullUrl = $gdtServerHost . DS . $url; - $response = $http->post($this->getGDTServerUrl() . DS . $url, $transactionBody, ['type' => 'json']); - $responseStatus = $response->getStatusCode(); - if($responseStatus != 200) { - return [ - 'state' => 'error', - 'type' => 'request error', - 'msg' => 'server response status code isn\'t 200', - 'details' => $responseStatus, - 'fullUrl' => $fullUrl - ]; - } - //$responseType = $response->getType(); - //if($responseType != 'application/json') { -// return ['state' => 'error', 'type' => 'request error', 'msg' => 'server response isn\'t json', 'details' => $responseType]; -// } - $json = $response->getJson(); - if($json == null) { - //$responseType = $response->getType(); - return ['state' => 'error', 'type' => 'request error', 'msg' => 'server response isn\'t valid json']; - } - return ['state' => 'success', 'data' => $json]; - } - - public function sendRequestLoginServerNeighbors($transactionBody, $url) { - - $http = new Client(); - if(!Configure::check('NeighborLoginServers')) { - return ['state' => 'warning', 'msg' => 'no neighbor server configured']; - } - $nServers = Configure::read('NeighborLoginServers'); - $results = ['errors' => [], 'data' => []]; - foreach($nServers as $nServer) { - $full_url = $nServer['host'] . ':' . $nServer['port'] . '/' . $url; - $response = $http->post($full_url, $transactionBody, ['type' => 'json']); - $responseStatus = $response->getStatusCode(); - if($responseStatus != 200) { - $results['errors'][] = [ - 'state' => 'error', - 'type' => 'request error', - 'msg' => 'server response status code isn\'t 200', - 'details' => $responseStatus, - 'fullUrl' => $full_url - ]; - continue; - } - $json = $response->getJson(); - if($json == null) { - //$responseType = $response->getType(); - $results['errors'][] = ['state' => 'error', 'type' => 'request error', 'msg' => 'server response isn\'t valid json']; - continue; - } - $results['data'][] = $json; - } - return $results; - } - - static public function getLoginServerUrl() - { - $loginServer = Configure::read('LoginServer'); - return $loginServer['host'] . ':' . $loginServer['port']; - } - - static public function getGDTServerUrl() - { - $gdtServer = Configure::read('GDTServer'); - if(isset($gdtServer['host'])) { - return $gdtServer['host']; - } - return false; - } - - static public function is_base64($s) - { - return (bool) preg_match('/^[a-zA-Z0-9\/\r\n+]*={0,2}$/', $s); - } - -} diff --git a/community_server/src/Controller/Component/JsonRpcRequestClientComponent.php b/community_server/src/Controller/Component/JsonRpcRequestClientComponent.php deleted file mode 100644 index 504fc8fdd..000000000 --- a/community_server/src/Controller/Component/JsonRpcRequestClientComponent.php +++ /dev/null @@ -1,83 +0,0 @@ -rpcClient = new JsonRpcClient(); - } - - // @param id: if id = 0 call rand for it - public function request($method, $params = [], $id = 0) - { - - if(0 == $id) { - $id = random_int(1, 12000); - } - $this->rpcClient->query($id, $method, $params); - - $message = $this->rpcClient->encode(); - return $this->sendRequest($message); - // message: {"jsonrpc":"2.0","method":"add","params":[1,2],"id":1} - } - - public function sendRequest($message) { - $http = new Client(); - - try { - $url = $this->pickGradidoNodeUrl(); - if(is_array($url)) { - return $url; - } - $response = $http->post($url, $message, ['type' => 'json']); - } catch(Exception $e) { - return ['state' => 'error', 'type' => 'http exception', 'details' => $e->getMessage()]; - } - $responseStatus = $response->getStatusCode(); - if($responseStatus != 200) { - return ['state' => 'error', 'type' => 'request error', 'msg' => 'server response status code isn\'t 200', 'details' => $responseStatus]; - } - //$responseType = $response->getType(); - //if($responseType != 'application/json') { -// return ['state' => 'error', 'type' => 'request error', 'msg' => 'server response isn\'t json', 'details' => $responseType]; -// } - $json = $response->getJson(); - if($json == null) { - //$responseType = $response->getType(); - return ['state' => 'error', 'type' => 'request error', 'msg' => 'server response isn\'t valid json']; - } - return $json['result']; - //return ['state' => 'success', 'data' => $json]; - } - - static public function pickGradidoNodeUrl() - { - $gradidoNodes = Configure::read('GradidoBlockchain.nodes'); - if(count($gradidoNodes) == 0) { - return ['state' => 'error', 'msg' => 'no gradido nodes in config']; - } - $i = rand(0, count($gradidoNodes)-1); - return $gradidoNodes[$i]['host'] . ':' . $gradidoNodes[$i]['port']; - } - - -} - - diff --git a/community_server/src/Controller/DashboardController.php b/community_server/src/Controller/DashboardController.php deleted file mode 100644 index e25374821..000000000 --- a/community_server/src/Controller/DashboardController.php +++ /dev/null @@ -1,78 +0,0 @@ -Auth->allow(['add', 'edit']); - $this->Auth->allow(['index', 'errorHttpRequest']); - $this->set( - 'naviHierarchy', - (new NaviHierarchy())-> - add(new NaviHierarchyEntry(__('Startseite'), 'Dashboard', 'index', true)) - ); - } - /** - * Index method - * - * @return \Cake\Http\Response|null - */ - public function index() - { - $startTime = microtime(true); - $this->viewBuilder()->setLayout('frontend'); - $session = $this->getRequest()->getSession(); - $result = $this->requestLogin(); - if($result !== true) { - return $result; - } - $user = $session->read('StateUser'); - $serverUser = $this->Auth->user('id'); - if($serverUser) { - $adminErrorsTable = TableRegistry::getTableLocator()->get('AdminErrors'); - $adminErrorCount = $adminErrorsTable->find('all')->count(); - $this->set('adminErrorCount', $adminErrorCount); - } - - $this->set('user', $user); - $this->set('serverUser', $serverUser); - $this->set('timeUsed', microtime(true) - $startTime); - - } - - public function serverIndex() - { - $startTime = microtime(true); - $this->viewBuilder()->setLayout('frontend'); - $adminErrorsTable = TableRegistry::getTableLocator()->get('AdminErrors'); - $adminErrorCount = $adminErrorsTable->find('all')->count(); - - $this->set('adminErrorCount', $adminErrorCount); - $this->set('timeUsed', microtime(true) - $startTime); - } - - public function errorHttpRequest() - { - $startTime = microtime(true); - $this->viewBuilder()->setLayout('frontend'); - $this->set('timeUsed', microtime(true) - $startTime); - } - -} diff --git a/community_server/src/Controller/ElopageBuysController.php b/community_server/src/Controller/ElopageBuysController.php deleted file mode 100644 index e097eddbb..000000000 --- a/community_server/src/Controller/ElopageBuysController.php +++ /dev/null @@ -1,165 +0,0 @@ -paginate = [ - 'contain' => false, - ]; - $elopageBuys = $this->paginate($this->ElopageBuys); - - $this->set(compact('elopageBuys')); - } - - public function statistics() - { - $this->viewBuilder()->setLayout('frontend'); - $connection = ConnectionManager::get('loginServer'); - $dates = $connection->execute('SELECT success_date FROM elopage_buys group by CAST(success_date as DATE)')->fetchAll('assoc'); - - $datesTree = []; - foreach($dates as $i => $date) { - - $date = new Time($date['success_date']); - if(!isset($datesTree[$date->year])) { - $datesTree[$date->year] = []; - } - if(!isset($datesTree[$date->year][$date->month])) { - $datesTree[$date->year][$date->month] = true; - } - } - //var_dump($datesTree); - - $now = Time::now(); - $lastDay = Time::now(); - $lastDay->day = 1; - $now->day = 1; - $lastDay->setTime(0,0,0,0); - $now->setTime(0,0,0,0); - // only for test - $now->month = 11; - $lastDay->month = 11; - $now->year = 2019; - $lastDay->year = 2019; -// var_dump($now); - - $lastDay = $lastDay->addMonth(1); - $sortDate = $this->getStartEndForMonth(11, 2019); - $elopageBuys = $this->ElopageBuys - ->find('all') - ->where(['success_date >=' => $sortDate[0], 'success_date <' => $sortDate[1]]); - $users = []; - foreach($elopageBuys as $elopageEntry) { - array_push($users, $elopageEntry->payer_email); - } - $unique_users = array_unique($users); - - $userTable = TableRegistry::getTableLocator()->get('Users'); - $users = $userTable->find('all') - ->where(['created >=' => $sortDate[0], 'created <' => $sortDate[1]]); - - $this->set(compact('elopageBuys', 'users')); - } - - /** - * View method - * - * @param string|null $id Elopage Buy id. - * @return \Cake\Http\Response|null - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function view($id = null) - { - $elopageBuy = $this->ElopageBuys->get($id, [ - 'contain' => false, - ]); - - $this->set('elopageBuy', $elopageBuy); - } - - /** - * Add method - * - * @return \Cake\Http\Response|null Redirects on successful add, renders view otherwise. - */ - public function add() - { - $elopageBuy = $this->ElopageBuys->newEntity(); - if ($this->request->is('post')) { - $elopageBuy = $this->ElopageBuys->patchEntity($elopageBuy, $this->request->getData()); - if ($this->ElopageBuys->save($elopageBuy)) { - $this->Flash->success(__('The elopage buy has been saved.')); - - return $this->redirect(['action' => 'index']); - } - $this->Flash->error(__('The elopage buy could not be saved. Please, try again.')); - } - - $this->set(compact('elopageBuy')); - } - - /** - * Edit method - * - * @param string|null $id Elopage Buy id. - * @return \Cake\Http\Response|null Redirects on successful edit, renders view otherwise. - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function edit($id = null) - { - $elopageBuy = $this->ElopageBuys->get($id, [ - 'contain' => false, - ]); - if ($this->request->is(['patch', 'post', 'put'])) { - $elopageBuy = $this->ElopageBuys->patchEntity($elopageBuy, $this->request->getData()); - if ($this->ElopageBuys->save($elopageBuy)) { - $this->Flash->success(__('The elopage buy has been saved.')); - - return $this->redirect(['action' => 'index']); - } - $this->Flash->error(__('The elopage buy could not be saved. Please, try again.')); - } - $this->set(compact('elopageBuy')); - } - - /** - * Delete method - * - * @param string|null $id Elopage Buy id. - * @return \Cake\Http\Response|null Redirects to index. - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function delete($id = null) - { - $this->request->allowMethod(['post', 'delete']); - $elopageBuy = $this->ElopageBuys->get($id); - if ($this->ElopageBuys->delete($elopageBuy)) { - $this->Flash->success(__('The elopage buy has been deleted.')); - } else { - $this->Flash->error(__('The elopage buy could not be deleted. Please, try again.')); - } - - return $this->redirect(['action' => 'index']); - } -} diff --git a/community_server/src/Controller/ElopageWebhookController.php b/community_server/src/Controller/ElopageWebhookController.php deleted file mode 100644 index 4e806fa69..000000000 --- a/community_server/src/Controller/ElopageWebhookController.php +++ /dev/null @@ -1,51 +0,0 @@ -Auth->allow(['put']); - - } - - public function put() - { - $this->autoRender = false; - $data = $this->request->getData(); - $response = $this->response->withType('text/plain'); - - $dataString = http_build_query($data); - //$this->recursiveArrayToString($data, $dataString); - // %5B => [ - // %5D => ] - $dataString = preg_replace(['/\%5B/', '/\%5D/'], ['[', ']'], $dataString); - //var_dump($dataString); - - //2020-02-27T13:52:32+01:00 - $dateString = date('c'); - $fh = fopen('/etc/grd_login/php_elopage_requests.txt', 'a'); - if($fh === FALSE) { - return $response->withStringBody('400 ERROR'); - } - fwrite($fh, $dateString); - fwrite($fh, "\n"); - fwrite($fh, $dataString); - fwrite($fh, "\n"); - fclose($fh); - - - return $response->withStringBody('200 OK'); - - } -} diff --git a/community_server/src/Controller/ErrorController.php b/community_server/src/Controller/ErrorController.php deleted file mode 100644 index c5421a24d..000000000 --- a/community_server/src/Controller/ErrorController.php +++ /dev/null @@ -1,70 +0,0 @@ -loadComponent('RequestHandler', [ - 'enableBeforeRedirect' => false, - ]); - } - - /** - * beforeFilter callback. - * - * @param \Cake\Event\Event $event Event. - * @return \Cake\Http\Response|null|void - */ - public function beforeFilter(Event $event) - { - } - - /** - * beforeRender callback. - * - * @param \Cake\Event\Event $event Event. - * @return \Cake\Http\Response|null|void - */ - public function beforeRender(Event $event) - { - parent::beforeRender($event); - $this->RequestHandler->renderAs($this, 'json'); - $this->viewBuilder()->setTemplatePath('Error'); - } - - /** - * afterFilter callback. - * - * @param \Cake\Event\Event $event Event. - * @return \Cake\Http\Response|null|void - */ - public function afterFilter(Event $event) - { - } -} diff --git a/community_server/src/Controller/JsonRequestHandlerController.php b/community_server/src/Controller/JsonRequestHandlerController.php deleted file mode 100644 index 611984118..000000000 --- a/community_server/src/Controller/JsonRequestHandlerController.php +++ /dev/null @@ -1,559 +0,0 @@ -loadComponent('JsonRequestClient'); - $this->loadComponent('JsonRpcRequestClient'); - //$this->Auth->allow(['add', 'edit']); - $this->Auth->allow('index'); - } - - - public function index() - { - if($this->request->is('get')) { - $method = $this->request->getQuery('method'); - switch($method) { - case 'getRunningUserTasks': return $this->getRunningUserTasks(); - } - return $this->returnJson(['state' => 'error', 'msg' => 'unknown method for get', 'details' => $method]); - } - else if($this->request->is('post')) { - $jsonData = $this->request->input('json_decode'); - //var_dump($jsonData); - if($jsonData == NULL || !isset($jsonData->method)) { - return $this->returnJson(['state' => 'error', 'msg' => 'parameter error']); - } - $method = $jsonData->method; - - switch($method) { - case 'putTransaction': - if(!isset($jsonData->transaction)) { - return $this->returnJson(['state' => 'error', 'msg' => 'parameter error']); - } else { - return $this->putTransaction($jsonData->transaction); - } - case 'userDelete': return $this->userDelete($jsonData->user); - case 'moveTransaction': return $this->moveTransaction($jsonData->pubkeys, $jsonData->memo, $jsonData->session_id); - case 'checkUser': return $this->checkUser($jsonData->email, $jsonData->last_name); - case 'getUsers' : return $this->getUsers($jsonData->page, $jsonData->limit); - case 'getUserBalance': return $this->getUserBalance($jsonData->email, $jsonData->last_name); - case 'errorInTransaction': return $this->errorInTransaction($jsonData); - case 'updateReadNode': return $this->updateReadNode(); - case 'addUser' : return $this->addUser($jsonData->user); - } - return $this->returnJson(['state' => 'error', 'msg' => 'unknown method for post', 'details' => $method]); - } - return $this->returnJson(['state' => 'error', 'msg' => 'no post or get']); - } - - private function addUser($newUser) - { - $stateUsersTable = TableRegistry::getTableLocator()->get('StateUsers'); - $entity = $stateUsersTable->newEntity(); - $required_fields = ['first_name', 'last_name', 'email', 'public_key', 'disabled']; - foreach($required_fields as $required_field) { - if(!isset($newUser->$required_field)) { - return $this->returnJson(['state' => 'error', 'msg' => 'missing required field in addUser', 'details' => $required_field]); - } - if('public_key' == $required_field) { - $entity->$required_field = hex2bin($newUser->public_hex); - } else { - $entity->$required_field = $newUser->$required_field; - } - } - if($stateUsersTable->save($entity)) { - return $this->returnJson(['state' => 'success']); - } else { - return $this->returnJson(['state' => 'error', 'msg' => 'error saving state_user', 'details' => $entity->getErrors()]); - } - } - - // Called from login server like a cron job every 10 minutes or after sending transaction to hedera - private function updateReadNode() - { - $this->autoRender = false; - $response = $this->response->withType('application/json'); - - $transactionsTable = TableRegistry::getTableLocator()->get('Transactions'); - $last_transaction_query = $transactionsTable->find('all')->order(['id' => 'DESC']); - $last_transaction_id = 0; - if(!$last_transaction_query->isEmpty()) { - $last_transaction_id = $last_transaction_query->first()->id; - } - $last_known_sequence_number = $last_transaction_id; - - if($last_transaction_query->count() < $last_transaction_id) { - $last_transaction_id = $last_transaction_query->count(); - } - //$last_transaction_id = 0; - - - $group_alias = Configure::read('GroupAlias'); - $result = (array)$this->JsonRpcRequestClient->request('getTransactions', ['groupAlias' => $group_alias, 'lastKnownSequenceNumber' => $last_transaction_id]); - if(isset($result['state']) && $result['state'] == 'error') { - return $this->returnJson(['state' => 'error', 'msg' => 'jsonrpc error', 'details' => ['return' => $result, 'groupAlias' => $group_alias]]); - } - /* example - $result = json_decode("[ - { - \"record_type\":\"GRADIDO_TRANSACTION\", - \"transaction\":{ - \"version_number\":1, - \"signature\":{ - \"pubkey\":\"2ed28a1cf5e116d83615406bc577152221c2f774a5656f66a0e7540f7576d71b\", - \"signature\":\"aed6725baacabf903e51f92503d49fa7e6b93c6402d56d9e3784be9a3366a77459213d858af46b579287aba8b1b63d206febce18bc80cec6fa63da6289e56403\" - }, - \"signature_count\":1, - \"hedera_transaction\":{ - \"consensusTimestamp\":{ - \"seconds\":1604392811, - \"nanos\":172812 - }, - \"runningHash\":\"f9ccf04137be418c3117a28bb5add6dced9745bcab74b7a2f46c182c8c98eeabf0127c131d15ebea7d0ac376f5d2de45\", - \"sequenceNumber\":94, - \"runningHashVersion\":3 - }, - \"transaction_type\":\"ADD_USER\", - \"add_user\":{ - \"user\":\"2ed28a1cf5e116d83615406bc577152221c2f774a5656f66a0e7540f7576d71b\" - }, - \"result\":\"result\", - \"parts\":1, - \"memo\":\"\" - } - }, - { - \"record_type\":\"GRADIDO_TRANSACTION\", - \"transaction\":{ - \"version_number\":1, - \"signature\":{ - \"pubkey\":\"8190bda585ee5f1d9fbf7d06e81e69ec18e13376104cff54b7457eb7d3ef710d\", - \"signature\":\"3134adcd6cbccee17c2db398f91b6b6bdd098b6306fb2fa213eb9eb5a322af9078acca4d8b0383d4e906f3139eb3369e7c1ef0f3ac5fec724be0d085ba44af0b\" - }, - \"signature_count\":2, - \"hedera_transaction\":{ - \"consensusTimestamp\":{ - \"seconds\":1604392886, - \"nanos\":1528 - }, - \"runningHash\":\"e1df5526331e3def11d6b652b8f248d20c250739b6eb98f1fe7b338901753d9d573a14601ba84f61318a48940b3c237a\", - \"sequenceNumber\":95, - \"runningHashVersion\":3 - }, - \"transaction_type\":\"ADD_USER\", - \"add_user\":{ - \"user\":\"8190bda585ee5f1d9fbf7d06e81e69ec18e13376104cff54b7457eb7d3ef710d\" - }, - \"result\":\"result\", - \"parts\":2, - \"memo\":\"\" - } - }, - { - \"record_type\":\"SIGNATURES\", - \"signature\":[ - { - \"pubkey\":\"2ed28a1cf5e116d83615406bc577152221c2f774a5656f66a0e7540f7576d71b\", - \"signature\":\"401717e768617c0f3311931c34a61e66ab362599a0e2a48ae7c4955645aec6573773985dafb84a11bfaf2bc12140c30b2f8c8ee094bc35d609bc56d15b4e9f04\" - } - ] - }, - { - \"record_type\": \"GRADIDO_TRANSACTION\", - \"transaction\":{ - \"version_number\":1, - \"signature\":{ - \"pubkey\":\"2ed28a1cf5e116d83615406bc577152221c2f774a5656f66a0e7540f7576d71b\", - \"signature\":\"99665dee9f2b475e426a2f449d0dae61924f6cf025903666ff72f2c7ef1af27523ebcd5fb684d17813fe7906b2f8cfe5ef4bdbb264ebf3ef80363491d9b86807\" - }, - \"signature_count\":1, - \"hedera_transaction\":{ - \"consensusTimestamp\":{ - \"seconds\":1604392904, - \"nanos\":798541 - }, - \"runningHash\":\"f1fd03610a9788e9bac01e1efb8b99bafae450f9088cb940db954842e0799235c57d842be83d998e6c21786f77f967a7\", - \"sequenceNumber\":96, - \"runningHashVersion\":3 - }, - \"transaction_type\":\"GRADIDO_CREATION\", - \"gradido_creation\":{ - \"user\":\"8190bda585ee5f1d9fbf7d06e81e69ec18e13376104cff54b7457eb7d3ef710d\", - \"new_balance\":10000000, - \"prev_transfer_rec_num\":0, - \"amount\":10000000 - }, - \"result\":\"result\", - \"parts\":1, - \"memo\":\"\" - } - }, - { - \"record_type\": \"GRADIDO_TRANSACTION\", - \"transaction\":{ - \"version_number\":1, - \"signature\":{ - \"pubkey\":\"8190bda585ee5f1d9fbf7d06e81e69ec18e13376104cff54b7457eb7d3ef710d\", - \"signature\":\"90125e0cfce61397d50ed9ba6c5df4cd4e0cf6fee8b10c70fee2898765982570d9a1208c222981429ae3c229e3fd36c2bf2333518cd0a4f0515937822e499d0b\" - }, - \"signature_count\":1, - \"hedera_transaction\":{ - \"consensusTimestamp\":{ - \"seconds\":1604392929, - \"nanos\":52539 - }, - \"runningHash\":\"a4be8f54be4f806b61d31f6bd770d7742822f14f03ffe09c07f08bac3031a06d12de5e38fec5c307149c7faf6e9879b8\", - \"sequenceNumber\":97, - \"runningHashVersion\":3 - }, - \"transaction_type\":\"LOCAL_TRANSFER\", - \"local_transfer\":{ - \"sender\":{ - \"user\":\"8190bda585ee5f1d9fbf7d06e81e69ec18e13376104cff54b7457eb7d3ef710d\", - \"new_balance\":9825500, - \"prev_transfer_rec_num\":0 - }, - \"receiver\":{ - \"user\":\"2ed28a1cf5e116d83615406bc577152221c2f774a5656f66a0e7540f7576d71b\", - \"new_balance\":174500, - \"prev_transfer_rec_num\":0 - }, - \"amount\":174500 - }, - \"result\":\"result\", - \"parts\":1, - \"memo\":\"\" - } - } -]", true);*/ - $part_count = -1; - $temp_record = new Record; - $errors = []; - foreach($result['blocks'] as $_record) { - if(is_string($_record)) continue; - $parse_result = $temp_record->parseRecord($_record); - - if($parse_result == true) { - $sequenceNumber = $temp_record->getSequenceNumber(); - if($part_count == -1) { - $part_count = $temp_record->getPartCount(); - } - $part_count--; - - if($part_count == 0) { - if($sequenceNumber > $last_known_sequence_number) { - $finalize_result = $temp_record->finalize(); - if($finalize_result !== true) { - $errors[] = ['msg' => 'error in finalize', 'record' => $_record, 'details' => $finalize_result, 'sequenceNumber' => $sequenceNumber]; - } - } - - $temp_record = new Record; - $part_count = -1; - } - } else { - $temp_record = new Record; - $part_count = -1; - $errors[] = ['msg' => 'error in parse record', 'record' => $_record, 'details' => $parse_result]; - } - } - if(count($errors)) { - return $this->returnJson(['state' => 'error', 'msg' => 'error in parsing records', 'details' => $errors]); - } - return $this->returnJson(['state' => 'success']); - } - - /* - * payload.set("created", created); - * payload.set("id", task_model->getID()); - * payload.set("type", task_model->getTaskTypeString()); - * payload.set("public_key", user_model->getPublicKeyHex()); - * payload.set("error", error); - * payload.set("errorMessage", errorDetails); - */ - //! \param $transactionCreated creation of transaction in timestamp in seconds - //! -1 if transaction couldn't decode - //! \param $transactionBodyBase64Sha256 generic hash from transaction body serialized and converted to base64 - //! using sodium_crypto_generichash to calculate - // hash also in base64 format - //! \param $error short error name in user language - //! \param $errorDetails more detailed error message in user language - private function errorInTransaction($jsonData) { - $stateErrorTable = TableRegistry::getTableLocator()->get('StateErrors'); - $stateUsersTable = TableRegistry::getTableLocator()->get('StateUsers'); - $transactionTypesTable = TableRegistry::getTableLocator()->get('TransactionTypes'); - $stateError = $stateErrorTable->newEntity(); - // - $pubkey = hex2bin($jsonData->public_key); - $user_query = $stateUsersTable->find('all')->select(['id'])->where(['public_key' => $pubkey]); - if($user_query->count() != 1) { - return $this->returnJson(['state' => 'error', 'msg' => 'user not found', 'details' => 'user pubkey hex:' . $jsonData->public_key]); - } - $stateError->state_user_id = $user_query->first()->id; - //$stateError->transaction_type_id - // TODO: - // - show state errors in navi_notify.ctp - $transaction_type_query = $transactionTypesTable->find('all')->select(['id'])->where(['name' => $jsonData->type]); - if($transaction_type_query->count() != 1) { - return $this->returnJson(['state' => 'error', 'msg' => 'transaction type not found', 'details' => 'transaction type name: ' . $jsonData->type]); - } - $stateError->transaction_type_id = $transaction_type_query->first()->id; - $stateError->created = $jsonData->created; - $stateError->message_json = json_encode(['task_id' => $jsonData->id, 'error' => $jsonData->error, 'errorMessage' => $jsonData->errorMessage]); - if(!$stateErrorTable->save($stateError)) { - $this->returnJsonSaveError($stateError, [ - 'state' => 'error', - 'msg' => 'error saving state_error in db', - 'details' => json_encode($stateError->getErrors()) - ]); - } - return $this->returnJson(['state' => 'success']); - } - - private function sendEMailTransactionFailed($transaction, $reason_type) - { - $disable_email = Configure::read('disableEmail', false); - if($disable_email) { - return; - } - $transaction_body = $transaction->getTransactionBody(); - $senderUser = $transaction->getFirstSigningUser(); - if($transaction_body != null) { - $transaction_type_name = $transaction_body->getTransactionTypeName(); - - if($transaction_type_name === 'transfer') { - $senderUser = $transaction_body->getSpecificTransaction()->getSenderUser(); - } - } - // send notification email - $noReplyEmail = Configure::read('noReplyEmail'); - if($senderUser) { - try { - $email = new Email(); - $emailViewBuilder = $email->viewBuilder(); - $emailViewBuilder->setTemplate('notificationTransactionFailed') - ->setVars(['user' => $senderUser, 'transaction' => $transaction, 'reason' => $reason_type]); - $receiverNames = $senderUser->getNames(); - if($receiverNames == '' || $senderUser->email == '') { - $this->addError('TransactionCreation::sendNotificationEmail', 'to email is empty for user: ' . $senderUser->id); - return false; - } - $email->setFrom([$noReplyEmail => 'Gradido (nicht antworten)']) - ->setTo([$senderUser->email => $senderUser->getNames()]) - ->setSubject(__('Gradido Transaktion fehlgeschlagen!')) - ->send(); - } catch(Exception $e) { - $this->addAdminError('JsonRequestController', 'sendEMailTransactionFailed', [$e->getMessage(), $reason_type], $senderUser->id); - - } - } - } - - private function putTransaction($transactionBase64) { - $transaction = new Transaction($transactionBase64); - - if($transaction->hasErrors()) { - $this->sendEMailTransactionFailed($transaction, 'parse'); - return $this->returnJson(['state' => 'error', 'msg' => 'error parsing transaction', 'details' => $transaction->getErrors()]); - } - - if(!$transaction->validate()) { - //$transaction_details - $this->sendEMailTransactionFailed($transaction, 'validate'); - return $this->returnJsonSaveError($transaction, [ - 'state' => 'error', - 'msg' => 'error validate transaction', - 'details' => $transaction->getErrors() - ]); - } - - if ($transaction->save()) { - $result = ['state' => 'success']; - if($transaction->hasWarnings()) { - $result['warnings'] = $transaction->getWarnings(); - } - // success - return $this->returnJson($result); - } else { - - $this->sendEMailTransactionFailed($transaction, 'save'); - return $this->returnJsonSaveError($transaction, [ - 'state' => 'error', - 'msg' => 'error saving transaction in db', - 'details' => json_encode($transaction->getErrors()) - ]); - } - } - - private function moveTransaction($pubkeys, $memo, $session_id) { - //$pubkeys->sender - //$pubkeys->receiver - $stateUserTable = TableRegistry::getTableLocator()->get('StateUsers'); - $user = $stateUserTable->find('all')->where(['public_key' => hex2bin($pubkeys->sender)])->contain(['StateBalances']); - if(!$user->count()) { - return $this->returnJson(['state' => 'not found', 'msg' => 'user not found or empty balance']); - } - $amountCent = $user->first()->state_balances[0]->amount; - //var_dump($user->first()); - $builderResult = TransactionTransfer::build( - $amountCent, - $memo, - $pubkeys->receiver, - $pubkeys->sender - ); - if($builderResult['state'] === 'success') { - - $http = new Client(); - try { - $loginServer = Configure::read('LoginServer'); - $url = $loginServer['host'] . ':' . $loginServer['port']; - - $response = $http->post($url . '/checkTransaction', json_encode([ - 'session_id' => $session_id, - 'transaction_base64' => base64_encode($builderResult['transactionBody']->serializeToString()), - 'balance' => $amountCent - ]), ['type' => 'json']); - $json = $response->getJson(); - if($json['state'] != 'success') { - if($json['msg'] == 'session not found') { - return $this->returnJson(['state' => 'error', 'msg' => 'session not found']); - } else { - //$this->Flash->error(__('login server return error: ' . json_encode($json))); - return $this->returnJson(['state' => 'error', 'msg' => 'login server return error', 'details' => $json]); - } - } else { - return $this->returnJson(['state' => 'success']); - } - - } catch(\Exception $e) { - $msg = $e->getMessage(); - //$this->Flash->error(__('error http request: ') . $msg); - return $this->returnJson(['state' => 'error', 'msg' => 'error http request', 'details' => $msg]); - } - - } else { - return $this->returnJson(['state' => 'error', 'msg' => 'error building transaction']); - } - } - - private function userDelete($userPubkeyHex) { - $stateUserTable = TableRegistry::getTableLocator()->get('StateUsers'); - $user = $stateUserTable->find('all')->where(['public_key' => hex2bin($userPubkeyHex)]); - if(!$user || $user->count == 0) { - return $this->returnJson(['state' => 'error', 'msg' => 'user not found']); - } - - } - - private function checkUser($email, $last_name) { - $userTable = TableRegistry::getTableLocator()->get('Users'); - $user = $userTable->find('all') - ->where(['email' => $email]) - ->contain([]) - ->select(['first_name', 'last_name', 'email']); - if(!$user->count()) { - return $this->returnJson(['state' => 'not found', 'msg' => 'user not found']); - } - if($user->count() == 1 && $user->first()->last_name == $last_name) { - return $this->returnJson(['state' => 'success']); - } - return $this->returnJson(['state' => 'not identical', 'user' => $user->toArray()]); - } - - private function getUserBalance($email, $last_name) { - - $stateUserTable = TableRegistry::getTableLocator()->get('StateUsers'); - $stateUsers = $stateUserTable->find('all')->where(['OR' => ['email' => $email, 'last_name' => $last_name]])->contain(['StateBalances']); - $gdds = []; - foreach($stateUsers as $stateUser) { - foreach($stateUser->state_balances as $stateBalance) { - if(!isset($gdds[$stateUser->email])) { - $gdds[$stateUser->email] = []; - } - if(!isset($gdds[$stateUser->email][$stateUser->last_name])) { - $gdds[$stateUser->email][$stateUser->last_name] = 0; - } - $gdds[$stateUser->email][$stateUser->last_name] += $stateBalance->amount; - } - } - return $this->returnJson(['state' => 'success', 'gdds' => $gdds]); - } - - private function getUsers($page, $count) { - - $userTable = TableRegistry::getTableLocator()->get('Users'); - $this->paginate = [ - 'limit' => $count, - 'page' => $page - ]; - $usersQuery = $userTable->find('all') - ->select(['first_name', 'last_name', 'email']) - ->order(['id']); - try { - return $this->returnJson(['state' => 'success', 'users' => $this->paginate($usersQuery)]); - } catch (Exception $ex) { - return $this->returnJson(['state' => 'exception', 'msg' => 'error paginate users', 'details' => $ex->getMessage()]); - } - - - //return $this->returnJson(['state' => 'success', 'users' => $users->toArray()]); - - } - - private function getRunningUserTasks() { - $session = $this->getRequest()->getSession(); - $state_user_email = $session->read('StateUser.email'); - $requestResult = $this->JsonRequestClient->getRunningUserTasks($state_user_email);; - return $this->returnJson($requestResult); - } - - - private function returnJsonSaveError($transaction, $errorArray) { - $json = json_encode($errorArray); - $stateUserTable = TableRegistry::getTableLocator()->get('StateUsers'); - $pub = $transaction->getFirstPublic(); - $stateUserQuery = $stateUserTable - ->find('all') - ->where(['public_key' => $pub]) - ->contain(false); - if($stateUserQuery->count() == 1) { - $stateErrorsTable = TableRegistry::getTableLocator()->get('StateErrors'); - $stateErrorEntity = $stateErrorsTable->newEntity(); - $stateErrorEntity->state_user_id = $stateUserQuery->first()->id; - $stateErrorEntity->transaction_type_id = $transaction->getTransactionBody()->getTransactionTypeId(); - $stateErrorEntity->message_json = $json; - $stateErrorsTable->save($stateErrorEntity); - } else { - $errorArray['user_error'] = "user with $pub not found"; - $json = json_encode($errorArray); - } - - return $this->returnJsonEncoded($json); - } - - - -} diff --git a/community_server/src/Controller/OperatorTypesController.php b/community_server/src/Controller/OperatorTypesController.php deleted file mode 100644 index 41db53f53..000000000 --- a/community_server/src/Controller/OperatorTypesController.php +++ /dev/null @@ -1,106 +0,0 @@ -paginate($this->OperatorTypes); - - $this->set(compact('operatorTypes')); - } - - /** - * View method - * - * @param string|null $id Operator Type id. - * @return \Cake\Http\Response|null - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function view($id = null) - { - $operatorType = $this->OperatorTypes->get($id, [ - 'contain' => ['Operators'] - ]); - - $this->set('operatorType', $operatorType); - } - - /** - * Add method - * - * @return \Cake\Http\Response|null Redirects on successful add, renders view otherwise. - */ - public function add() - { - $operatorType = $this->OperatorTypes->newEntity(); - if ($this->request->is('post')) { - $operatorType = $this->OperatorTypes->patchEntity($operatorType, $this->request->getData()); - if ($this->OperatorTypes->save($operatorType)) { - $this->Flash->success(__('The operator type has been saved.')); - - return $this->redirect(['action' => 'index']); - } - $this->Flash->error(__('The operator type could not be saved. Please, try again.')); - } - $this->set(compact('operatorType')); - } - - /** - * Edit method - * - * @param string|null $id Operator Type id. - * @return \Cake\Http\Response|null Redirects on successful edit, renders view otherwise. - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function edit($id = null) - { - $operatorType = $this->OperatorTypes->get($id, [ - 'contain' => [] - ]); - if ($this->request->is(['patch', 'post', 'put'])) { - $operatorType = $this->OperatorTypes->patchEntity($operatorType, $this->request->getData()); - if ($this->OperatorTypes->save($operatorType)) { - $this->Flash->success(__('The operator type has been saved.')); - - return $this->redirect(['action' => 'index']); - } - $this->Flash->error(__('The operator type could not be saved. Please, try again.')); - } - $this->set(compact('operatorType')); - } - - /** - * Delete method - * - * @param string|null $id Operator Type id. - * @return \Cake\Http\Response|null Redirects to index. - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function delete($id = null) - { - $this->request->allowMethod(['post', 'delete']); - $operatorType = $this->OperatorTypes->get($id); - if ($this->OperatorTypes->delete($operatorType)) { - $this->Flash->success(__('The operator type has been deleted.')); - } else { - $this->Flash->error(__('The operator type could not be deleted. Please, try again.')); - } - - return $this->redirect(['action' => 'index']); - } -} diff --git a/community_server/src/Controller/OperatorsController.php b/community_server/src/Controller/OperatorsController.php deleted file mode 100644 index 974151a7b..000000000 --- a/community_server/src/Controller/OperatorsController.php +++ /dev/null @@ -1,236 +0,0 @@ -Auth->allow(['ajaxSave', 'ajaxLoad', 'ajaxDelete']); - } - /** - * Index method - * - * @return \Cake\Http\Response|null - */ - public function index() - { - $this->paginate = [ - 'contain' => ['OperatorTypes'] - ]; - $operators = $this->paginate($this->Operators); - - $this->set(compact('operators')); - } - - public function ajaxSave() - { - if ($this->request->is('post')) { - - $operatorTypeName = $this->request->getData('operator_type_name'); - $username = $this->request->getData('username'); - $pubkey_bin = base64_decode($this->request->getData('user_pubkey')); - $data = base64_decode($this->request->getData('data_base64')); - $sign = base64_decode($this->request->getData('sign')); - - //$publicKey_hex = bin2hex($pubkey_bin); - //$signature_hex = bin2hex($sign); - - if(!sodium_crypto_sign_verify_detached($sign, $data, $pubkey_bin)) { - return $this->returnJson([ - 'state' => 'wrong signature', - /* 'details' => [ - 'pubkey' => $publicKey_hex, - 'sign' => $signature_hex, - 'data' => bin2hex($data) - ] -*/ - ]); - } - - $operatorTypeId = $this->Operators->OperatorTypes-> - find() - ->where(['name' => $operatorTypeName]) - ->select(['id']) - ->first(); - - // load operator from db if already exist - $operator = $this->Operators - ->find() - ->where([ - 'operator_type_id' => $operatorTypeId->id, - 'username' => $username, - 'user_pubkey' => $pubkey_bin]) - ->first(); - if(!$operator) { - // create new entity - $operator = $this->Operators->newEntity(); - } else { - // check if request has valid signature - - } - - $operator = $this->Operators->patchEntity($operator, $this->request->getData()); - $operator->user_pubkey = $pubkey_bin; - $operator->operator_type_id = $operatorTypeId->id; - if ($this->Operators->save($operator)) { - return $this->returnJson(['state' => 'success']); - } - return $this->returnJson(['state' => 'error', 'details' => $operator->getErrors()]); - } - return $this->returnJson(['state' => 'error', 'msg' => 'no post request']); - } - - public function ajaxLoad() - { - if ($this->request->is('get')) { - $username = $this->request->getQuery('username'); - $operators = $this->Operators - ->find() - ->where(['username' => $username]) - ->contain(['OperatorTypes']) - ->select(['data_base64', 'OperatorTypes.name']) - ->toArray(); - ; - if($operators) { - return $this->returnJson(['state' => 'success', 'operators' => $operators]); - } else { - return $this->returnJson(['state' => 'not found']); - } - - } - return $this->returnJson(['state' => 'error', 'msg' => 'no post request']); - } - - function ajaxDelete() { - if ($this->request->is('delete')) { - $operatorTypeName = $this->request->getData('operator_type_name'); - $username = $this->request->getData('username'); - $pubkey_bin = base64_decode($this->request->getData('user_pubkey')); - $sign = base64_decode($this->request->getData('sign')); - - $operatorTypeId = $this->Operators->OperatorTypes-> - find() - ->where(['name' => $operatorTypeName]) - ->select(['id']) - ->first(); - - // load operator from db if already exist - $operator = $this->Operators - ->find() - ->where([ - 'operator_type_id' => $operatorTypeId->id, - 'username' => $username, - 'user_pubkey' => $pubkey_bin]) - ->first(); - if(!$operator) { - return $this->returnJson(['state' => 'error', 'msg' => 'not found']); - } else { - $data = base64_decode($operator->data_base64); - // check if request has valid signature - if(!sodium_crypto_sign_verify_detached($sign, $data, $pubkey_bin)) { - return $this->returnJson(['state' => 'error', 'msg' => 'wrong signature']); - } - } - if ($this->Operators->delete($operator)) { - return $this->returnJson(['state' => 'success']); - } - return $this->returnJson(['state' => 'error', 'details' => $operator->getErrors()]); - } - return $this->returnJson(['state' => 'error', 'msg' => 'no post request']); - } - - /** - * View method - * - * @param string|null $id Operator id. - * @return \Cake\Http\Response|null - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function view($id = null) - { - $operator = $this->Operators->get($id, [ - 'contain' => ['OperatorTypes'] - ]); - - $this->set('operator', $operator); - } - - /** - * Add method - * - * @return \Cake\Http\Response|null Redirects on successful add, renders view otherwise. - */ - public function add() - { - $operator = $this->Operators->newEntity(); - if ($this->request->is('post')) { - $operator = $this->Operators->patchEntity($operator, $this->request->getData()); - if ($this->Operators->save($operator)) { - $this->Flash->success(__('The operator has been saved.')); - - return $this->redirect(['action' => 'index']); - } - $this->Flash->error(__('The operator could not be saved. Please, try again.')); - } - $operatorTypes = $this->Operators->OperatorTypes->find('list', ['limit' => 200]); - $this->set(compact('operator', 'operatorTypes')); - } - - /** - * Edit method - * - * @param string|null $id Operator id. - * @return \Cake\Http\Response|null Redirects on successful edit, renders view otherwise. - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function edit($id = null) - { - $operator = $this->Operators->get($id, [ - 'contain' => [] - ]); - if ($this->request->is(['patch', 'post', 'put'])) { - $operator = $this->Operators->patchEntity($operator, $this->request->getData()); - if ($this->Operators->save($operator)) { - $this->Flash->success(__('The operator has been saved.')); - - return $this->redirect(['action' => 'index']); - } - $this->Flash->error(__('The operator could not be saved. Please, try again.')); - } - $operatorTypes = $this->Operators->OperatorTypes->find('list', ['limit' => 200]); - $this->set(compact('operator', 'operatorTypes')); - } - - /** - * Delete method - * - * @param string|null $id Operator id. - * @return \Cake\Http\Response|null Redirects to index. - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function delete($id = null) - { - $this->request->allowMethod(['post', 'delete']); - $operator = $this->Operators->get($id); - if ($this->Operators->delete($operator)) { - $this->Flash->success(__('The operator has been deleted.')); - } else { - $this->Flash->error(__('The operator could not be deleted. Please, try again.')); - } - - return $this->redirect(['action' => 'index']); - } -} diff --git a/community_server/src/Controller/PagesController.php b/community_server/src/Controller/PagesController.php deleted file mode 100644 index 69f57356b..000000000 --- a/community_server/src/Controller/PagesController.php +++ /dev/null @@ -1,86 +0,0 @@ -Auth->allow(['display']); - } - - /** - * Displays a view - * - * @param array ...$path Path segments. - * @return \Cake\Http\Response|null - * @throws \Cake\Http\Exception\ForbiddenException When a directory traversal attempt. - * @throws \Cake\Http\Exception\NotFoundException When the view file could not - * be found or \Cake\View\Exception\MissingTemplateException in debug mode. - */ - public function display(...$path) - { - - $count = count($path); - if (!$count) { - return $this->redirect('/'); - } - if (in_array('..', $path, true) || in_array('.', $path, true)) { - throw new ForbiddenException(); - } - $page = $subpage = null; - - if (!empty($path[0])) { - $page = $path[0]; - } - if (!empty($path[1])) { - $subpage = $path[1]; - } - /*$session = $this->getRequest()->getSession(); - $result = $this->requestLogin(); - if($result !== true) { - return $result; - } - $user = $session->read('StateUser'); - $login_server_session = $this->request->getCookie('GRADIDO_LOGIN', '');*/ - if($page == "vue" || $page == "vue-dev") { - $this->viewBuilder()->setLayout(false); - } - $this->set(compact('page', 'subpage')); - - try { - $this->render(implode('/', $path)); - } catch (MissingTemplateException $exception) { - if (Configure::read('debug')) { - throw $exception; - } - throw new NotFoundException(); - } - } -} diff --git a/community_server/src/Controller/ProfileController.php b/community_server/src/Controller/ProfileController.php deleted file mode 100644 index 2a378e076..000000000 --- a/community_server/src/Controller/ProfileController.php +++ /dev/null @@ -1,206 +0,0 @@ -loadComponent('JsonRequestClient'); - $this->Auth->allow(['index', 'edit']); - $this->set( - 'naviHierarchy', - (new NaviHierarchy())-> - add(new NaviHierarchyEntry(__('Startseite'), 'Dashboard', 'index', false))-> - add(new NaviHierarchyEntry(__('Mein Profil'), 'Profile', 'index', true)) - ); - } - /** - * Get binary file data from request data - * - * @return binary data - */ - protected function getFileData($requestData) - { - $binaryFileData = null; - // Get a list of UploadedFile objects - $file = $requestData['profile_img']; - // Read the file data. - $type = $file['type']; - $error = $file['error']; - if ($error === 0 && strpos($type, 'image/') === 0) { - $path = new File($file['tmp_name']); - $binaryFileData = $path->read(true, 'r'); - $this->log("binaryFileData: ".$binaryFileData, 'debug'); - } - return $binaryFileData; - } - /** - * Update Profile Data - * - * ...which is spread over two tables, plus needs to be promoted to the Login Server. - * - * @throws Exception - */ - protected function updateProfileData($requestData, $userId, $communityProfile) - { - // Update Profile with Form Data! - $usersTable = TableRegistry::getTableLocator()->get('StateUsers'); - $stateUserQuery = $usersTable - ->find('all') - ->select(['id', 'first_name', 'last_name']) - ->where(['id' => $userId]); - - if ($stateUserQuery->count() == 1) { - $stateUser = $stateUserQuery->first(); - $stateUser = $usersTable->patchEntity($stateUser, $requestData); - - $profilesTable = TableRegistry::getTableLocator()->get('CommunityProfiles'); - // Save old binary data, because the file input is always empty, in HTML! - $oldBinaryData = $communityProfile['profile_img']; - - $communityProfile = $profilesTable->patchEntity($communityProfile, $requestData); - $communityProfile['state_user_id'] = $userId; - - $binaryFileData = $this->getFileData($requestData); - if ($binaryFileData !== null) { - $this->log("CommunityProfile: Writing binary img data.", 'debug'); - $communityProfile['profile_img'] = $binaryFileData; - } else { - $this->log("CommunityProfile: Nothing uploaded!", 'debug'); - $communityProfile['profile_img'] = $oldBinaryData; - } - if ($profilesTable->save($communityProfile) && - $usersTable->save($stateUser) - ) { - $session = $this->getRequest()->getSession(); - $session_id = $session->read('session_id'); - $email = $session->read('StateUser.email'); - $this->returnJson( - $this->JsonRequestClient->sendRequest( - json_encode( - [ - 'session_id' => $session_id, - 'email' => $email, - 'update' => [ - 'User.first_name' => $requestData['first_name'], - 'User.last_name' => $requestData['last_name'] - ] - ] - ), - '/updateUserInfos' - ) - ); - $this->Flash->success(__('Dein Profil wurde aktualisiert!')); - } - } else { - $this->Flash->error(__("Non-recoverable database problem - state_user doesn't exist or not unique!")); - } - return [$stateUser, $communityProfile]; - } - /** - * Get or create CommunityProfile - * - * @return \Cake\ORM\CommunityProfile - */ - protected function getCommunityProfile($userId) - { - $profilesTable = TableRegistry::getTableLocator()->get('CommunityProfiles'); - $communityProfileQuery = $profilesTable - ->find('all') - ->select(['id', 'profile_img', 'profile_desc']) - ->where(['state_user_id' => $userId]); - if ($communityProfileQuery->count() != 1) { - $communityProfile = $profilesTable->newEntity(); - if ($profilesTable->save($communityProfile)) { - $this->log("CommunityProfile created.", 'debug'); - } - } else { - $communityProfile = $communityProfileQuery->first(); - } - return $communityProfile; - } - /** - * Index method - * - * @return \Cake\Http\Response|null - */ - public function index() - { - $startTime = microtime(true); - $this->viewBuilder()->setLayout('frontend'); - $session = $this->getRequest()->getSession(); - $result = $this->requestLogin(); - if ($result !== true) { - return $result; - } - $user = $session->read('StateUser'); - $communityProfile = $session->read('CommunityProfile'); - if (!$communityProfile) { - $this->log("CommunityProfile not found in session! Loading or creating new one.", 'debug'); - $session->write('CommunityProfile', $this->getCommunityProfile($user['id'])); - } - $this->set('user', $user); - $this->set('communityProfile', $communityProfile); - $this->set('timeUsed', microtime(true) - $startTime); - } - /** - * Edit method - * - * @return \Cake\Http\Response|null - */ - public function edit() - { - $startTime = microtime(true); - $this->viewBuilder()->setLayout('frontend'); - $session = $this->getRequest()->getSession(); - - $user = $session->read('StateUser'); - $communityProfile = $session->read('CommunityProfile'); - if (!$user) { - $result = $this->requestLogin(); - if ($result !== true) { - return $result; - } - $user = $session->read('StateUser'); - } - if (!$communityProfile) { - $this->log("CommunityProfile not found in session! Loading or creating new one.", 'debug'); - $session->write('CommunityProfile', $this->getCommunityProfile($user['id'])); - } - - $profileForm = new ProfileForm(); - if ($this->request->is('post')) { - $requestData = $this->request->getData(); - if ($profileForm->validate($requestData)) { - [$stateUser, $communityProfile] = $this->updateProfileData($requestData, $user['id'], $communityProfile); - $user['first_name'] = $stateUser['first_name']; - $user['last_name'] = $stateUser['last_name']; - $session->write('StateUser.first_name', $stateUser['first_name']); - $session->write('StateUser.last_name', $stateUser['last_name']); - $session->write('CommunityProfile', $communityProfile); - return $this->redirect(['action' => 'index']); - } else { - $this->Flash->error(__('Something was invalid, please try again!')); - } - } - $this->set('user', $user); - $this->set('communityProfile', $communityProfile); - $this->set('profileForm', $profileForm); - $this->set('timeUsed', microtime(true) - $startTime); - } -} diff --git a/community_server/src/Controller/RolesController.php b/community_server/src/Controller/RolesController.php deleted file mode 100644 index 80aa493d3..000000000 --- a/community_server/src/Controller/RolesController.php +++ /dev/null @@ -1,108 +0,0 @@ -paginate($this->Roles); - - $this->set(compact('roles')); - } - - /** - * View method - * - * @param string|null $id Role id. - * @return \Cake\Http\Response|null - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function view($id = null) - { - $role = $this->Roles->get($id, [ - 'contain' => [], - ]); - - $this->set('role', $role); - } - - /** - * Add method - * - * @return \Cake\Http\Response|null Redirects on successful add, renders view otherwise. - */ - public function add() - { - $role = $this->Roles->newEntity(); - if ($this->request->is('post')) { - $role = $this->Roles->patchEntity($role, $this->request->getData()); - if ($this->Roles->save($role)) { - $this->Flash->success(__('The role has been saved.')); - - return $this->redirect(['action' => 'index']); - } - $this->Flash->error(__('The role could not be saved. Please, try again.')); - } - $this->set(compact('role')); - } - - /** - * Edit method - * - * @param string|null $id Role id. - * @return \Cake\Http\Response|null Redirects on successful edit, renders view otherwise. - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function edit($id = null) - { - $role = $this->Roles->get($id, [ - 'contain' => [], - ]); - if ($this->request->is(['patch', 'post', 'put'])) { - $role = $this->Roles->patchEntity($role, $this->request->getData()); - if ($this->Roles->save($role)) { - $this->Flash->success(__('The role has been saved.')); - - return $this->redirect(['action' => 'index']); - } - $this->Flash->error(__('The role could not be saved. Please, try again.')); - } - $this->set(compact('role')); - } - - /** - * Delete method - * - * @param string|null $id Role id. - * @return \Cake\Http\Response|null Redirects to index. - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function delete($id = null) - { - $this->request->allowMethod(['post', 'delete']); - $role = $this->Roles->get($id); - if ($this->Roles->delete($role)) { - $this->Flash->success(__('The role has been deleted.')); - } else { - $this->Flash->error(__('The role could not be deleted. Please, try again.')); - } - - return $this->redirect(['action' => 'index']); - } -} diff --git a/community_server/src/Controller/ServerUsersController.php b/community_server/src/Controller/ServerUsersController.php deleted file mode 100644 index 7255eee0f..000000000 --- a/community_server/src/Controller/ServerUsersController.php +++ /dev/null @@ -1,132 +0,0 @@ -Auth->allow(['add', 'edit']); - $this->Auth->deny('index'); - } - - /** - * Index method - * - * @return \Cake\Http\Response|null - */ - public function index() - { - $serverUsers = $this->paginate($this->ServerUsers); - $this->set(compact('serverUsers')); - } - - public function login() - { - $startTime = microtime(true); - if ($this->request->is('post')) { - $user = $this->Auth->identify(); - if ($user) { - $this->Auth->setUser($user); - return $this->redirect($this->Auth->redirectUrl()); - } - $this->Flash->error(__('Invalid username or password, try again')); - } - $this->set('timeUsed', microtime(true) - $startTime); - } - - public function logout() - { - return $this->redirect($this->Auth->logout()); - } - - /** - * View method - * - * @param string|null $id Server User id. - * @return \Cake\Http\Response|null - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function view($id = null) - { - $serverUser = $this->ServerUsers->get($id, [ - 'contain' => [] - ]); - - $this->set('serverUser', $serverUser); - } - - /** - * Add method - * - * @return \Cake\Http\Response|null Redirects on successful add, renders view otherwise. - */ - public function add() - { - $serverUser = $this->ServerUsers->newEntity(); - if ($this->request->is('post')) { - $serverUser = $this->ServerUsers->patchEntity($serverUser, $this->request->getData()); - if ($this->ServerUsers->save($serverUser)) { - $this->Flash->success(__('The server user has been saved.')); - - return $this->redirect(['action' => 'index']); - } - $this->Flash->error(__('The server user could not be saved. Please, try again.')); - } - $this->set(compact('serverUser')); - } - - /** - * Edit method - * - * @param string|null $id Server User id. - * @return \Cake\Http\Response|null Redirects on successful edit, renders view otherwise. - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function edit($id = null) - { - $serverUser = $this->ServerUsers->get($id, [ - 'contain' => [] - ]); - if ($this->request->is(['patch', 'post', 'put'])) { - $serverUser = $this->ServerUsers->patchEntity($serverUser, $this->request->getData()); - if ($this->ServerUsers->save($serverUser)) { - $this->Flash->success(__('The server user has been saved.')); - - return $this->redirect(['action' => 'index']); - } - $this->Flash->error(__('The server user could not be saved. Please, try again.')); - } - $this->set(compact('serverUser')); - } - - /** - * Delete method - * - * @param string|null $id Server User id. - * @return \Cake\Http\Response|null Redirects to index. - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function delete($id = null) - { - $this->request->allowMethod(['post', 'delete']); - $serverUser = $this->ServerUsers->get($id); - if ($this->ServerUsers->delete($serverUser)) { - $this->Flash->success(__('The server user has been deleted.')); - } else { - $this->Flash->error(__('The server user could not be deleted. Please, try again.')); - } - - return $this->redirect(['action' => 'index']); - } -} diff --git a/community_server/src/Controller/StateBalancesController.php b/community_server/src/Controller/StateBalancesController.php deleted file mode 100644 index 249b6cb06..000000000 --- a/community_server/src/Controller/StateBalancesController.php +++ /dev/null @@ -1,399 +0,0 @@ -Auth->allow(['add', 'edit']); - $this->Auth->allow(['overview', 'overviewGdt', 'ajaxListTransactions', 'ajaxGdtOverview', 'ajaxGetBalance', 'ajaxGdtTransactions']); - $this->loadComponent('JsonRequestClient'); - } - /** - * Index method - * - * @return \Cake\Http\Response|null - */ - public function index() - { - $this->paginate = [ - 'contain' => ['StateUsers'] - ]; - $stateBalances = $this->paginate($this->StateBalances); - - $this->set(compact('stateBalances')); - } - - - - public function overview() - { - $this->set( - 'naviHierarchy', - (new NaviHierarchy())-> - add(new NaviHierarchyEntry(__('Startseite'), 'Dashboard', 'index', false))-> - add(new NaviHierarchyEntry(__('Kontoübersicht'), 'StateBalances', 'overview', true)) - ); - $startTime = microtime(true); - $this->viewBuilder()->setLayout('frontend'); - $session = $this->getRequest()->getSession(); - $result = $this->requestLogin(); - if ($result !== true) { - return $result; - } - - $user = $session->read('StateUser'); - $update_balance_result = $this->StateBalances->updateBalances($user['id']); - if($update_balance_result['success'] !== true) { - $this->addAdminError('StateBalances', 'overview', $update_balance_result, $user['id']); - } - - $stateBalancesTable = TableRegistry::getTableLocator()->get('StateBalances'); - $stateUserTransactionsTable = TableRegistry::getTableLocator()->get('StateUserTransactions'); - $transactionsTable = TableRegistry::getTableLocator()->get('Transactions'); - - $stateBalancesTable->updateBalances($user['id']); - $gdtSum = 0; - $gdtEntries = $this->JsonRequestClient->sendRequestGDT(['email' => $user['email']], 'GdtEntries' . DS . 'sumPerEmailApi'); - if('success' == $gdtEntries['state'] && 'success' == $gdtEntries['data']['state']) { - $gdtSum = intval($gdtEntries['data']['sum']); - } else { - $this->addAdminError('StateBalancesController', 'overview', $gdtEntries, $user['id'] ? $user['id'] : 0); - } - - - $stateUserTransactionsQuery = $stateUserTransactionsTable - ->find() - ->where(['state_user_id' => $user['id']]) - ->order(['balance_date' => 'ASC']) - ->contain([]) - ; - $decay = true; - $transactions = []; - if($stateUserTransactionsQuery->count() > 0) { - $transactions_with_decay = $transactionsTable->listTransactionsHumanReadable($stateUserTransactionsQuery->toArray(), $user, $decay); - foreach($transactions_with_decay as $tr) { - if(isset($tr['decay'])) { - $tr['decay']['type'] = 'decay'; - $tr['decay']['memo'] = ''; - $transactions[] = $tr['decay']; - } - $transactions[] = $tr; - } - } - - $state_balance = $stateBalancesTable->find()->where(['state_user_id' => $user['id']])->first(); - - $body = [ - 'state' => 'success', - 'transactions' => $transactions, - 'transactionExecutingCount' => $session->read('Transactions.executing'), - 'count' => count($transactions), - 'gdtSum' => $gdtSum, - 'timeUsed' => microtime(true) - $startTime - ]; - $now = new FrozenTime(); - $body['decay_date'] = $now; - - if(!$state_balance) { - $balance = 0.0; - } else { - $balance = $stateBalancesTable->calculateDecay($state_balance->amount, $state_balance->record_date, $now); - //$balance = $state_balance->partDecay($now); - } - $calculated_balance = 0; - foreach($transactions as $transaction) { - if($transaction['type'] == 'decay' || $transaction['type'] == 'send') { - $calculated_balance -= $transaction['balance']; - } else { - $calculated_balance += $transaction['balance']; - } - } - - $this->set('calculated_balance', $calculated_balance); - - $this->set('transactions', array_reverse($transactions)); - $this->set('transactionExecutingCount', $session->read('Transactions.executing')); - $this->set('balance', $balance); - $this->set('timeUsed', microtime(true) - $startTime); - $this->set('gdtSum', $gdtSum); - } - - - public function ajaxGdtOverview() - { - $gdtSum = 0; - $gdtCount = -1; - $session = $this->getRequest()->getSession(); - $user = $session->read('StateUser'); - - if(!$user) { - return $this->returnJson(['state' => 'error', 'msg' => 'user not found', 'details' => 'exist a valid session cookie?']); - } - $gdtEntries = $this->JsonRequestClient->sendRequestGDT(['email' => $user['email']], 'GdtEntries' . DS . 'sumPerEmailApi'); - - if('success' == $gdtEntries['state'] && 'success' == $gdtEntries['data']['state']) { - $gdtSum = intval($gdtEntries['data']['sum']); - if(isset($gdtEntries['data']['count'])) { - $gdtCount = intval($gdtEntries['data']['count']); - } - } else { - if($user) { - $this->addAdminError('StateBalancesController', 'ajaxGdtOverview', $gdtEntries, $user['id']); - } else { - $this->addAdminError('StateBalancesController', 'ajaxGdtOverview', $gdtEntries, 0); - } - } - - return $this->returnJson([ - 'state' => 'success', - 'transactions' => $transactions, - 'transactionExecutingCount' => $session->read('Transaction.executing'), - 'count' => $all_user_transactions_count - ]); - } - - - public function overviewGdt() - { - $this->set( - 'naviHierarchy', - (new NaviHierarchy())-> - add(new NaviHierarchyEntry(__('Startseite'), 'Dashboard', 'index', false))-> - add(new NaviHierarchyEntry(__('GDT Kontoübersicht'), 'StateBalances', 'overviewGdt', true)) - ); - $startTime = microtime(true); - $this->viewBuilder()->setLayout('frontend'); - $session = $this->getRequest()->getSession(); - $result = $this->requestLogin(); - if ($result !== true) { - return $result; - } - $user = $session->read('StateUser'); - $requestResult = $this->JsonRequestClient->sendRequestGDT([ - 'email' => $user['email'], - 'page' => 1, - 'count' => 100, - 'orderDirection' => 'DESC' - ], 'GdtEntries' . DS . 'listPerEmailApi'); - - //var_dump($requestResult); - if('success' === $requestResult['state'] && 'success' === $requestResult['data']['state']) - { - $moreEntrysAsShown = false; - if(isset($requestResult['data']['count'])) { - if($requestResult['data']['count'] > 100) { - $moreEntrysAsShown = true; - } - } else { - $moreEntrysAsShown = $requestResult['data']['moreEntrysAsShown']; - } - //var_dump(array_keys($requestResult['data'])); - if(isset($requestResult['data']['gdtEntries'])) { - $ownEntries = $requestResult['data']['gdtEntries']; - } else { - $ownEntries = $requestResult['data']['ownEntries']; - } - //$gdtEntries = $requestResult['data']['entries']; - - $gdtSum = 0; - foreach ($ownEntries as $i => $gdtEntry) { - $gdtSum += $gdtEntry['gdt']; - //echo "index: $i
    "; - //var_dump($gdtEntry); - } - if (isset($requestResult['data']['connectEntrys'])) { - $connectEntries = $requestResult['data']['connectEntrys']; - - foreach ($connectEntries as $entry) { - //if(!$count) var_dump($entry); - //$count++; - $gdtSum += $entry['connect']['gdt_entry']['gdt']; - } - $this->set('connectEntries', $connectEntries); - } - - //echo "gdtSum: $gdtSum
    "; - $this->set('gdtSum', $gdtSum); - $this->set('ownEntries', $ownEntries); - $this->set('moreEntrysAsShown', $moreEntrysAsShown); - $this->set('user', $user); - - if (isset($requestResult['data']['publishers'])) { - $publishers = $requestResult['data']['publishers']; - $this->set('publishers', $publishers); - } - } else { - $this->addAdminError('StateBalancesController', 'overviewGdt', $requestResult, $user['id']); - $this->Flash->error(__('Fehler beim GDT Server, bitte abwarten oder den Admin benachrichtigen!')); - } - } - - public function ajaxGdtTransactions() - { - $startTime = microtime(true); - $session = $this->getRequest()->getSession(); - $user = $session->read('StateUser'); - if(!$user) { - return $this->returnJson(['state' => 'error', 'msg' => 'user not found', 'details' => 'exist a valid session cookie?']); - } - - $requestResult = $this->JsonRequestClient->sendRequestGDT(['email' => $user['email']], 'GdtEntries' . DS . 'listPerEmailApi'); - $connectEntries = []; - $publishers = []; - - //var_dump($requestResult); - if('success' === $requestResult['state'] && 'success' === $requestResult['data']['state']) { - - //var_dump(array_keys($requestResult['data'])); - $ownEntries = $requestResult['data']['ownEntries']; - //$gdtEntries = $requestResult['data']['entries']; - - $gdtSum = 0; - foreach ($ownEntries as $i => $gdtEntry) { - $gdtSum += $gdtEntry['gdt']; - //echo "index: $i
    "; - //var_dump($gdtEntry); - } - if (isset($requestResult['data']['connectEntrys'])) { - $connectEntries = $requestResult['data']['connectEntrys']; - - foreach ($connectEntries as $entry) { - //if(!$count) var_dump($entry); - //$count++; - $gdtSum += $entry['connect']['gdt_entry']['gdt']; - } - } - - //echo "gdtSum: $gdtSum
    "; - - if (isset($requestResult['data']['publishers'])) { - $publishers = $requestResult['data']['publishers']; - } - } else { - $this->addAdminError('StateBalancesController', 'ajaxGdtTransactions', $requestResult, $user['id']); - //$this->Flash->error(__('Fehler beim GDT Server, bitte abwarten oder den Admin benachrichtigen!')); - return $this->returnJson(['state' => 'error', 'msg' => 'error from gdt server', 'details' => $requestResult]); - } - - - return $this->returnJson([ - 'state' => 'success', - 'gdtSum' => $gdtSum, - 'ownEntries' => $ownEntries, - 'connectEntries' => $connectEntries, - 'publishers' => $publishers, - 'gdtSumPerEmail' => $requestResult['data']['gdtSumPerEmail'], - 'moreEntrysAsShown' => $requestResult['data']['moreEntrysAsShown'], - 'timeUsed' => microtime(true) - $startTime - ]); - } - - public function sortTransactions($a, $b) - { - if ($a['date'] == $b['date']) { - return 0; - } - return ($a['date'] > $b['date']) ? -1 : 1; - } - - /** - * View method - * - * @param string|null $id State Balance id. - * @return \Cake\Http\Response|null - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function view($id = null) - { - $stateBalance = $this->StateBalances->get($id, [ - 'contain' => ['StateUsers'] - ]); - - $this->set('stateBalance', $stateBalance); - } - - /** - * Add method - * - * @return \Cake\Http\Response|null Redirects on successful add, renders view otherwise. - */ - public function add() - { - $stateBalance = $this->StateBalances->newEntity(); - if ($this->request->is('post')) { - $stateBalance = $this->StateBalances->patchEntity($stateBalance, $this->request->getData()); - if ($this->StateBalances->save($stateBalance)) { - $this->Flash->success(__('The state balance has been saved.')); - - return $this->redirect(['action' => 'index']); - } - $this->Flash->error(__('The state balance could not be saved. Please, try again.')); - } - $stateUsers = $this->StateBalances->StateUsers->find('list', ['limit' => 200]); - $this->set(compact('stateBalance', 'stateUsers')); - } - - /** - * Edit method - * - * @param string|null $id State Balance id. - * @return \Cake\Http\Response|null Redirects on successful edit, renders view otherwise. - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function edit($id = null) - { - $stateBalance = $this->StateBalances->get($id, [ - 'contain' => [] - ]); - if ($this->request->is(['patch', 'post', 'put'])) { - $stateBalance = $this->StateBalances->patchEntity($stateBalance, $this->request->getData()); - if ($this->StateBalances->save($stateBalance)) { - $this->Flash->success(__('The state balance has been saved.')); - - return $this->redirect(['action' => 'index']); - } - $this->Flash->error(__('The state balance could not be saved. Please, try again.')); - } - $stateUsers = $this->StateBalances->StateUsers->find('list', ['limit' => 200]); - $this->set(compact('stateBalance', 'stateUsers')); - } - - /** - * Delete method - * - * @param string|null $id State Balance id. - * @return \Cake\Http\Response|null Redirects to index. - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function delete($id = null) - { - $this->request->allowMethod(['post', 'delete']); - $stateBalance = $this->StateBalances->get($id); - if ($this->StateBalances->delete($stateBalance)) { - $this->Flash->success(__('The state balance has been deleted.')); - } else { - $this->Flash->error(__('The state balance could not be deleted. Please, try again.')); - } - - return $this->redirect(['action' => 'index']); - } -} diff --git a/community_server/src/Controller/StateCreatedController.php b/community_server/src/Controller/StateCreatedController.php deleted file mode 100644 index b66f1b7c1..000000000 --- a/community_server/src/Controller/StateCreatedController.php +++ /dev/null @@ -1,113 +0,0 @@ -paginate = [ - 'contain' => ['Transactions', 'StateUsers'] - ]; - $stateCreated = $this->paginate($this->StateCreated); - - $this->set(compact('stateCreated')); - } - - /** - * View method - * - * @param string|null $id State Created id. - * @return \Cake\Http\Response|null - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function view($id = null) - { - $stateCreated = $this->StateCreated->get($id, [ - 'contain' => ['Transactions', 'StateUsers'] - ]); - - $this->set('stateCreated', $stateCreated); - } - - /** - * Add method - * - * @return \Cake\Http\Response|null Redirects on successful add, renders view otherwise. - */ - public function add() - { - $stateCreated = $this->StateCreated->newEntity(); - if ($this->request->is('post')) { - $stateCreated = $this->StateCreated->patchEntity($stateCreated, $this->request->getData()); - if ($this->StateCreated->save($stateCreated)) { - $this->Flash->success(__('The state created has been saved.')); - - return $this->redirect(['action' => 'index']); - } - $this->Flash->error(__('The state created could not be saved. Please, try again.')); - } - $transactions = $this->StateCreated->Transactions->find('list', ['limit' => 200]); - $stateUsers = $this->StateCreated->StateUsers->find('list', ['limit' => 200]); - $this->set(compact('stateCreated', 'transactions', 'stateUsers')); - } - - /** - * Edit method - * - * @param string|null $id State Created id. - * @return \Cake\Http\Response|null Redirects on successful edit, renders view otherwise. - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function edit($id = null) - { - $stateCreated = $this->StateCreated->get($id, [ - 'contain' => [] - ]); - if ($this->request->is(['patch', 'post', 'put'])) { - $stateCreated = $this->StateCreated->patchEntity($stateCreated, $this->request->getData()); - if ($this->StateCreated->save($stateCreated)) { - $this->Flash->success(__('The state created has been saved.')); - - return $this->redirect(['action' => 'index']); - } - $this->Flash->error(__('The state created could not be saved. Please, try again.')); - } - $transactions = $this->StateCreated->Transactions->find('list', ['limit' => 200]); - $stateUsers = $this->StateCreated->StateUsers->find('list', ['limit' => 200]); - $this->set(compact('stateCreated', 'transactions', 'stateUsers')); - } - - /** - * Delete method - * - * @param string|null $id State Created id. - * @return \Cake\Http\Response|null Redirects to index. - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function delete($id = null) - { - $this->request->allowMethod(['post', 'delete']); - $stateCreated = $this->StateCreated->get($id); - if ($this->StateCreated->delete($stateCreated)) { - $this->Flash->success(__('The state created has been deleted.')); - } else { - $this->Flash->error(__('The state created could not be deleted. Please, try again.')); - } - - return $this->redirect(['action' => 'index']); - } -} diff --git a/community_server/src/Controller/StateErrorsController.php b/community_server/src/Controller/StateErrorsController.php deleted file mode 100644 index 0c91d93e3..000000000 --- a/community_server/src/Controller/StateErrorsController.php +++ /dev/null @@ -1,173 +0,0 @@ -Auth->allow(['showForUser', 'deleteForUser']); - $this->set( - 'naviHierarchy', - (new NaviHierarchy())-> - add(new NaviHierarchyEntry(__('Startseite'), 'Dashboard', 'index', false))-> - add(new NaviHierarchyEntry(__('Fehler'), 'StateErrors', 'ShowForUser', true)) - ); - } - - /** - * Index method - * - * @return \Cake\Http\Response|null - */ - public function index() - { - $this->paginate = [ - 'contain' => ['StateUsers', 'TransactionTypes'] - ]; - $stateErrors = $this->paginate($this->StateErrors); - - $this->set(compact('stateErrors')); - } - - public function showForUser() - { - $startTime = microtime(true); - $this->viewBuilder()->setLayout('frontend'); - $session = $this->getRequest()->getSession(); - $user = $session->read('StateUser'); - if(!$user) { - $result = $this->requestLogin(); - if($result !== true) { - return $result; - } - $user = $session->read('StateUser'); - } - - $errors = $this->StateErrors->find('all')->where(['state_user_id' => $user['id']])->contain(false); - $transactionTypes = $this->StateErrors->TransactionTypes->find('all')->select(['id', 'name', 'text'])->order(['id']); - - $this->set('errors', $errors); - $this->set('transactionTypes', $transactionTypes->toList()); - $this->set('timeUsed', microtime(true) - $startTime); - } - - public function deleteForUser($id = null) - { - $this->request->allowMethod(['post', 'delete', 'get']); - $stateError = $this->StateErrors->get($id); - $session = $this->getRequest()->getSession(); - $user = $session->read('StateUser'); - if($user['id'] != $stateError->state_user_id) { - $this->Flash->error(__('Error belongs to another User, cannot delete')); - } - else if ($this->StateErrors->delete($stateError)) { - $this->Flash->success(__('The state error has been deleted.')); - } else { - $this->Flash->error(__('The state error could not be deleted. Please, try again.')); - } - $errors = $this->StateErrors->find('all')->where(['state_user_id' => $user['id']])->contain(false); - if($errors->count() == 0) { - return $this->redirect(['controller' => 'Dashboard']); - } - return $this->redirect(['action' => 'showForUser']); - } - - - /** - * View method - * - * @param string|null $id State Error id. - * @return \Cake\Http\Response|null - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function view($id = null) - { - $stateError = $this->StateErrors->get($id, [ - 'contain' => ['StateUsers', 'TransactionTypes'] - ]); - - $this->set('stateError', $stateError); - } - - /** - * Add method - * - * @return \Cake\Http\Response|null Redirects on successful add, renders view otherwise. - */ - public function add() - { - $stateError = $this->StateErrors->newEntity(); - if ($this->request->is('post')) { - $stateError = $this->StateErrors->patchEntity($stateError, $this->request->getData()); - if ($this->StateErrors->save($stateError)) { - $this->Flash->success(__('The state error has been saved.')); - - return $this->redirect(['action' => 'index']); - } - $this->Flash->error(__('The state error could not be saved. Please, try again.')); - } - $stateUsers = $this->StateErrors->StateUsers->find('list', ['limit' => 200]); - $transactionTypes = $this->StateErrors->TransactionTypes->find('list', ['limit' => 200]); - $this->set(compact('stateError', 'stateUsers', 'transactionTypes')); - } - - /** - * Edit method - * - * @param string|null $id State Error id. - * @return \Cake\Http\Response|null Redirects on successful edit, renders view otherwise. - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function edit($id = null) - { - $stateError = $this->StateErrors->get($id, [ - 'contain' => [] - ]); - if ($this->request->is(['patch', 'post', 'put'])) { - $stateError = $this->StateErrors->patchEntity($stateError, $this->request->getData()); - if ($this->StateErrors->save($stateError)) { - $this->Flash->success(__('The state error has been saved.')); - - return $this->redirect(['action' => 'index']); - } - $this->Flash->error(__('The state error could not be saved. Please, try again.')); - } - $stateUsers = $this->StateErrors->StateUsers->find('list', ['limit' => 200]); - $transactionTypes = $this->StateErrors->TransactionTypes->find('list', ['limit' => 200]); - $this->set(compact('stateError', 'stateUsers', 'transactionTypes')); - } - - /** - * Delete method - * - * @param string|null $id State Error id. - * @return \Cake\Http\Response|null Redirects to index. - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function delete($id = null) - { - $this->request->allowMethod(['post', 'delete']); - $stateError = $this->StateErrors->get($id); - if ($this->StateErrors->delete($stateError)) { - $this->Flash->success(__('The state error has been deleted.')); - } else { - $this->Flash->error(__('The state error could not be deleted. Please, try again.')); - } - - return $this->redirect(['action' => 'index']); - } -} diff --git a/community_server/src/Controller/StateGroupAddressesController.php b/community_server/src/Controller/StateGroupAddressesController.php deleted file mode 100644 index 25afc82c7..000000000 --- a/community_server/src/Controller/StateGroupAddressesController.php +++ /dev/null @@ -1,113 +0,0 @@ -paginate = [ - 'contain' => ['AddressTypes'], - ]; - $stateGroupAddresses = $this->paginate($this->StateGroupAddresses); - - $this->set(compact('stateGroupAddresses')); - } - - /** - * View method - * - * @param string|null $id State Group Address id. - * @return \Cake\Http\Response|null - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function view($id = null) - { - $stateGroupAddress = $this->StateGroupAddresses->get($id, [ - 'contain' => ['StateGroups', 'AddressTypes'], - ]); - - $this->set('stateGroupAddress', $stateGroupAddress); - } - - /** - * Add method - * - * @return \Cake\Http\Response|null Redirects on successful add, renders view otherwise. - */ - public function add() - { - $stateGroupAddress = $this->StateGroupAddresses->newEntity(); - if ($this->request->is('post')) { - $stateGroupAddress = $this->StateGroupAddresses->patchEntity($stateGroupAddress, $this->request->getData()); - if ($this->StateGroupAddresses->save($stateGroupAddress)) { - $this->Flash->success(__('The state group address has been saved.')); - - return $this->redirect(['action' => 'index']); - } - $this->Flash->error(__('The state group address could not be saved. Please, try again.')); - } - $stateGroups = $this->StateGroupAddresses->StateGroups->find('list', ['limit' => 200]); - $addressTypes = $this->StateGroupAddresses->AddressTypes->find('list', ['limit' => 200]); - $this->set(compact('stateGroupAddress', 'stateGroups', 'addressTypes')); - } - - /** - * Edit method - * - * @param string|null $id State Group Address id. - * @return \Cake\Http\Response|null Redirects on successful edit, renders view otherwise. - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function edit($id = null) - { - $stateGroupAddress = $this->StateGroupAddresses->get($id, [ - 'contain' => [], - ]); - if ($this->request->is(['patch', 'post', 'put'])) { - $stateGroupAddress = $this->StateGroupAddresses->patchEntity($stateGroupAddress, $this->request->getData()); - if ($this->StateGroupAddresses->save($stateGroupAddress)) { - $this->Flash->success(__('The state group address has been saved.')); - - return $this->redirect(['action' => 'index']); - } - $this->Flash->error(__('The state group address could not be saved. Please, try again.')); - } - $stateGroups = $this->StateGroupAddresses->StateGroups->find('list', ['limit' => 200]); - $addressTypes = $this->StateGroupAddresses->AddressTypes->find('list', ['limit' => 200]); - $this->set(compact('stateGroupAddress', 'stateGroups', 'addressTypes')); - } - - /** - * Delete method - * - * @param string|null $id State Group Address id. - * @return \Cake\Http\Response|null Redirects to index. - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function delete($id = null) - { - $this->request->allowMethod(['post', 'delete']); - $stateGroupAddress = $this->StateGroupAddresses->get($id); - if ($this->StateGroupAddresses->delete($stateGroupAddress)) { - $this->Flash->success(__('The state group address has been deleted.')); - } else { - $this->Flash->error(__('The state group address could not be deleted. Please, try again.')); - } - - return $this->redirect(['action' => 'index']); - } -} diff --git a/community_server/src/Controller/StateGroupRelationshipsController.php b/community_server/src/Controller/StateGroupRelationshipsController.php deleted file mode 100644 index 631ca13d1..000000000 --- a/community_server/src/Controller/StateGroupRelationshipsController.php +++ /dev/null @@ -1,115 +0,0 @@ -paginate = [ - 'contain' => ['StateGroup1s', 'StateGroup2s', 'StateRelationships'] - ]; - $stateGroupRelationships = $this->paginate($this->StateGroupRelationships); - - $this->set(compact('stateGroupRelationships')); - } - - /** - * View method - * - * @param string|null $id State Group Relationship id. - * @return \Cake\Http\Response|null - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function view($id = null) - { - $stateGroupRelationship = $this->StateGroupRelationships->get($id, [ - 'contain' => ['StateGroup1s', 'StateGroup2s', 'StateRelationships'] - ]); - - $this->set('stateGroupRelationship', $stateGroupRelationship); - } - - /** - * Add method - * - * @return \Cake\Http\Response|null Redirects on successful add, renders view otherwise. - */ - public function add() - { - $stateGroupRelationship = $this->StateGroupRelationships->newEntity(); - if ($this->request->is('post')) { - $stateGroupRelationship = $this->StateGroupRelationships->patchEntity($stateGroupRelationship, $this->request->getData()); - if ($this->StateGroupRelationships->save($stateGroupRelationship)) { - $this->Flash->success(__('The state group relationship has been saved.')); - - return $this->redirect(['action' => 'index']); - } - $this->Flash->error(__('The state group relationship could not be saved. Please, try again.')); - } - $stateGroup1s = $this->StateGroupRelationships->StateGroup1s->find('list', ['limit' => 200]); - $stateGroup2s = $this->StateGroupRelationships->StateGroup2s->find('list', ['limit' => 200]); - $stateRelationships = $this->StateGroupRelationships->StateRelationships->find('list', ['limit' => 200]); - $this->set(compact('stateGroupRelationship', 'stateGroup1s', 'stateGroup2s', 'stateRelationships')); - } - - /** - * Edit method - * - * @param string|null $id State Group Relationship id. - * @return \Cake\Http\Response|null Redirects on successful edit, renders view otherwise. - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function edit($id = null) - { - $stateGroupRelationship = $this->StateGroupRelationships->get($id, [ - 'contain' => [] - ]); - if ($this->request->is(['patch', 'post', 'put'])) { - $stateGroupRelationship = $this->StateGroupRelationships->patchEntity($stateGroupRelationship, $this->request->getData()); - if ($this->StateGroupRelationships->save($stateGroupRelationship)) { - $this->Flash->success(__('The state group relationship has been saved.')); - - return $this->redirect(['action' => 'index']); - } - $this->Flash->error(__('The state group relationship could not be saved. Please, try again.')); - } - $stateGroup1s = $this->StateGroupRelationships->StateGroup1s->find('list', ['limit' => 200]); - $stateGroup2s = $this->StateGroupRelationships->StateGroup2s->find('list', ['limit' => 200]); - $stateRelationships = $this->StateGroupRelationships->StateRelationships->find('list', ['limit' => 200]); - $this->set(compact('stateGroupRelationship', 'stateGroup1s', 'stateGroup2s', 'stateRelationships')); - } - - /** - * Delete method - * - * @param string|null $id State Group Relationship id. - * @return \Cake\Http\Response|null Redirects to index. - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function delete($id = null) - { - $this->request->allowMethod(['post', 'delete']); - $stateGroupRelationship = $this->StateGroupRelationships->get($id); - if ($this->StateGroupRelationships->delete($stateGroupRelationship)) { - $this->Flash->success(__('The state group relationship has been deleted.')); - } else { - $this->Flash->error(__('The state group relationship could not be deleted. Please, try again.')); - } - - return $this->redirect(['action' => 'index']); - } -} diff --git a/community_server/src/Controller/StateGroupsController.php b/community_server/src/Controller/StateGroupsController.php deleted file mode 100644 index 36969671d..000000000 --- a/community_server/src/Controller/StateGroupsController.php +++ /dev/null @@ -1,111 +0,0 @@ -paginate = [ - 'contain' => ['Indices'] - ]; - $stateGroups = $this->paginate($this->StateGroups); - - $this->set(compact('stateGroups')); - } - - /** - * View method - * - * @param string|null $id State Group id. - * @return \Cake\Http\Response|null - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function view($id = null) - { - $stateGroup = $this->StateGroups->get($id, [ - 'contain' => ['Indices', 'StateGroupAddresses', 'StateUsers', 'TransactionGroupCreates', 'Transactions'] - ]); - - $this->set('stateGroup', $stateGroup); - } - - /** - * Add method - * - * @return \Cake\Http\Response|null Redirects on successful add, renders view otherwise. - */ - public function add() - { - $stateGroup = $this->StateGroups->newEntity(); - if ($this->request->is('post')) { - $stateGroup = $this->StateGroups->patchEntity($stateGroup, $this->request->getData()); - if ($this->StateGroups->save($stateGroup)) { - $this->Flash->success(__('The state group has been saved.')); - - return $this->redirect(['action' => 'index']); - } - $this->Flash->error(__('The state group could not be saved. Please, try again.')); - } - $indices = $this->StateGroups->Indices->find('list', ['limit' => 200]); - $this->set(compact('stateGroup', 'indices')); - } - - /** - * Edit method - * - * @param string|null $id State Group id. - * @return \Cake\Http\Response|null Redirects on successful edit, renders view otherwise. - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function edit($id = null) - { - $stateGroup = $this->StateGroups->get($id, [ - 'contain' => [] - ]); - if ($this->request->is(['patch', 'post', 'put'])) { - $stateGroup = $this->StateGroups->patchEntity($stateGroup, $this->request->getData()); - if ($this->StateGroups->save($stateGroup)) { - $this->Flash->success(__('The state group has been saved.')); - - return $this->redirect(['action' => 'index']); - } - $this->Flash->error(__('The state group could not be saved. Please, try again.')); - } - $indices = $this->StateGroups->Indices->find('list', ['limit' => 200]); - $this->set(compact('stateGroup', 'indices')); - } - - /** - * Delete method - * - * @param string|null $id State Group id. - * @return \Cake\Http\Response|null Redirects to index. - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function delete($id = null) - { - $this->request->allowMethod(['post', 'delete']); - $stateGroup = $this->StateGroups->get($id); - if ($this->StateGroups->delete($stateGroup)) { - $this->Flash->success(__('The state group has been deleted.')); - } else { - $this->Flash->error(__('The state group could not be deleted. Please, try again.')); - } - - return $this->redirect(['action' => 'index']); - } -} diff --git a/community_server/src/Controller/StateRelationshipTypesController.php b/community_server/src/Controller/StateRelationshipTypesController.php deleted file mode 100644 index 954b594e2..000000000 --- a/community_server/src/Controller/StateRelationshipTypesController.php +++ /dev/null @@ -1,106 +0,0 @@ -paginate($this->StateRelationshipTypes); - - $this->set(compact('stateRelationshipTypes')); - } - - /** - * View method - * - * @param string|null $id State Relationship Type id. - * @return \Cake\Http\Response|null - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function view($id = null) - { - $stateRelationshipType = $this->StateRelationshipTypes->get($id, [ - 'contain' => [] - ]); - - $this->set('stateRelationshipType', $stateRelationshipType); - } - - /** - * Add method - * - * @return \Cake\Http\Response|null Redirects on successful add, renders view otherwise. - */ - public function add() - { - $stateRelationshipType = $this->StateRelationshipTypes->newEntity(); - if ($this->request->is('post')) { - $stateRelationshipType = $this->StateRelationshipTypes->patchEntity($stateRelationshipType, $this->request->getData()); - if ($this->StateRelationshipTypes->save($stateRelationshipType)) { - $this->Flash->success(__('The state relationship type has been saved.')); - - return $this->redirect(['action' => 'index']); - } - $this->Flash->error(__('The state relationship type could not be saved. Please, try again.')); - } - $this->set(compact('stateRelationshipType')); - } - - /** - * Edit method - * - * @param string|null $id State Relationship Type id. - * @return \Cake\Http\Response|null Redirects on successful edit, renders view otherwise. - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function edit($id = null) - { - $stateRelationshipType = $this->StateRelationshipTypes->get($id, [ - 'contain' => [] - ]); - if ($this->request->is(['patch', 'post', 'put'])) { - $stateRelationshipType = $this->StateRelationshipTypes->patchEntity($stateRelationshipType, $this->request->getData()); - if ($this->StateRelationshipTypes->save($stateRelationshipType)) { - $this->Flash->success(__('The state relationship type has been saved.')); - - return $this->redirect(['action' => 'index']); - } - $this->Flash->error(__('The state relationship type could not be saved. Please, try again.')); - } - $this->set(compact('stateRelationshipType')); - } - - /** - * Delete method - * - * @param string|null $id State Relationship Type id. - * @return \Cake\Http\Response|null Redirects to index. - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function delete($id = null) - { - $this->request->allowMethod(['post', 'delete']); - $stateRelationshipType = $this->StateRelationshipTypes->get($id); - if ($this->StateRelationshipTypes->delete($stateRelationshipType)) { - $this->Flash->success(__('The state relationship type has been deleted.')); - } else { - $this->Flash->error(__('The state relationship type could not be deleted. Please, try again.')); - } - - return $this->redirect(['action' => 'index']); - } -} diff --git a/community_server/src/Controller/StateUserRolesController.php b/community_server/src/Controller/StateUserRolesController.php deleted file mode 100644 index 9238c7ad6..000000000 --- a/community_server/src/Controller/StateUserRolesController.php +++ /dev/null @@ -1,185 +0,0 @@ -loadComponent('JsonRequestClient'); - $this->Auth->allow([ -// 'search' - ]); - $this->set( - 'naviHierarchy', - (new NaviHierarchy())-> - add(new NaviHierarchyEntry(__('Startseite'), 'Dashboard', 'index', false))->add(new NaviHierarchyEntry(__('Benutzer suchen'), 'StateUsers', 'search', true)) - ); - } - - public function search() - { - $this->loadModel('StateUsers'); - $startTime = microtime(true); - I18n::setLocale('de_DE'); - $this->viewBuilder()->setLayout('frontend'); - - $searchForm = new UserSearchForm(); - - $timeUsed = microtime(true) - $startTime; - //$this->set('timeUsed', $timeUsed); - $this->set(compact('timeUsed', 'searchForm')); - - if ($this->request->is('post')) { - $requestData = $this->request->getData(); - - if ($searchForm->validate($requestData)) { - //var_dump($requestData); - $searchString = $requestData['search']; - - // find user on community server db - $globalSearch = '%' . $searchString . '%'; - $communityUsers = $this->StateUsers - ->find('all') - ->contain([]); - - $communityUsers->where(['OR' => [ - 'first_name LIKE' => $globalSearch, - 'last_name LIKE' => $globalSearch, - //'username LIKE' => $globalSearch, - 'email LIKE' => $globalSearch - ]]); - - //var_dump($communityUsers->toArray()); - $finalUserEntrys = []; - // detect states - $this->loadModel('Roles'); -// foreach ($pubkeySorted as $pubhex => $user) { - foreach($communityUsers as $communityUser) { - $finalUser = $communityUser; - $finalUser['pubkeyhex'] = bin2hex(stream_get_contents($communityUser->public_key)); - - $state_user_id = $communityUser->id; - $stateUserRole = $this->StateUserRoles->find('all')->where(['state_user_id' => $state_user_id])->all(); - - $role_ids = ""; - foreach ($stateUserRole as $userRole) { - if($role_ids != "") - $role_ids .= ",".$userRole->role_id; - else - $role_ids = $userRole->role_id; - } - - $roles = $this->Roles->find('all')->where(['id IN' => explode(",",$role_ids)])->all(); - - $role_names = ""; - foreach($roles as $role) - { - if($role_names != "") - $role_names .= "
    ".$role->title; - else - $role_names = $role->title; - } - - $finalUser['role_name'] = $role_names; - - array_push($finalUserEntrys, $finalUser); - } - - //var_dump($pubkeySorted); - } else { - $this->Flash->error(__('Something was invalid, please try again!')); - } - $this->set('finalUserEntrys', $finalUserEntrys); - } - $timeUsed = microtime(true) - $startTime; - $this->set('timeUsed', $timeUsed); - } - - public function assignRole() - { - $this->loadModel('Roles'); - $this->loadModel('StateUsers'); - - if ($this->request->is('post')) { - $requestData = $this->request->getData(); - - $public_hex = hex2bin($requestData['public_hex']); - - $stateUser = $this->StateUsers->find('all')->where(['public_key' => $public_hex])->first(); - - foreach($requestData['role_id'] as $role_id) - { - $newStateUserRole = $this->StateUserRoles->newEntity(); - - $post_data = []; - $post_data['state_user_id'] = $stateUser->id; - $post_data['role_id'] = $role_id; - $this->StateUserRoles->patchEntity($newStateUserRole, $post_data); - $this->StateUserRoles->save($newStateUserRole); - - } - - $this->Flash->success(__('Role has been assigned to User.')); - - return $this->redirect(['controller' => 'state-user-roles', 'action' => 'search']); - - } - - $assignRoleForm = new AssignRoleForm(); - - $public_hex = $this->request->getParam('pass')[0]; - - $publichex = hex2bin($public_hex); - - $stateUser = $this->StateUsers->find('all')->where(['public_key' => $publichex])->first(); - - $stateUserRoles = $this->StateUserRoles->find('all')->where(['state_user_id' => $stateUser->id])->all(); - - $role_ids = ""; - foreach ($stateUserRoles as $userRole) { - if($role_ids != "") - $role_ids .= ",".$userRole->role_id; - else - $role_ids = $userRole->role_id; - } - - $role_ids = explode(",", $role_ids); - - $roles = $this->Roles->find('list', array('fields' => array('id', 'title'))); - - - $this->set('roles', $roles); - $this->set('stateUser', $stateUser); - $this->set('role_ids', $role_ids); - $this->set('assignRoleForm', $assignRoleForm); - $this->set('public_hex', $public_hex); - } - -} diff --git a/community_server/src/Controller/StateUserTransactionsController.php b/community_server/src/Controller/StateUserTransactionsController.php deleted file mode 100644 index f816192f3..000000000 --- a/community_server/src/Controller/StateUserTransactionsController.php +++ /dev/null @@ -1,291 +0,0 @@ -Auth->allow(['add', 'edit']); - $this->Auth->allow(['ajaxListTransactions']); - //$this->loadComponent('JsonRequestClient'); - } - - /** - * Index method - * - * @return \Cake\Http\Response|null - */ - public function index() - { - $this->paginate = [ - 'contain' => ['StateUsers', 'Transactions', 'TransactionTypes'], - ]; - $stateUserTransactions = $this->paginate($this->StateUserTransactions); - - $this->set(compact('stateUserTransactions')); - } - - public function sortTransactions($a, $b) - { - if ($a['date'] == $b['date']) { - return 0; - } - return ($a['date'] > $b['date']) ? -1 : 1; - } - - - public function ajaxListTransactions($page = 1, $count = 20) - { - $startTime = microtime(true); - $session = $this->getRequest()->getSession(); - $user = $session->read('StateUser'); - if(!$user) { - return $this->returnJson(['state' => 'error', 'msg' => 'user not found', 'details' => 'exist a valid session cookie?']); - } - - $paged_state_user_transactions = $this->StateUserTransactions - ->find('all') - ->where(['state_user_id' => $user['id'], 'transaction_type_id IN' => [1,2]]) - ->limit($count) - ->page($page) - ->order(['transaction_id']) - ; - $all_user_transactions_count = $this->StateUserTransactions - ->find('all') - ->where(['state_user_id' => $user['id'], 'transaction_type_id IN' => [1,2]]) - ->count() - ; - $creationTransaction_ids = []; - $transferTransaction_ids = []; - $allTransaction_ids = []; - foreach($paged_state_user_transactions as $state_user_transaction) { - $allTransaction_ids[] = $state_user_transaction->transaction_id; - switch($state_user_transaction->transaction_type_id) { - case 1: $creationTransaction_ids[] = $state_user_transaction->transaction_id; break; - case 2: $transferTransaction_ids[] = $state_user_transaction->transaction_id; break; - } - } - $transactionsTable = TableRegistry::getTableLocator()->get('Transactions'); - $transactionCreationsTable = TableRegistry::getTableLocator()->get('TransactionCreations'); - $transactionSendCoinsTable = TableRegistry::getTableLocator()->get('TransactionSendCoins'); - $stateUsersTable = TableRegistry::getTableLocator()->get('StateUsers'); - if(count($allTransaction_ids) > 0) { - $transactionEntries = $transactionsTable->find('all')->where(['id IN' => $allTransaction_ids])->order(['id'])->toArray(); - } - if(count($creationTransaction_ids) > 0) { - $transactionCreations = $transactionCreationsTable->find('all')->where(['transaction_id IN' => $creationTransaction_ids]); - } - if(count($transferTransaction_ids)) { - $transactionTransfers = $transactionSendCoinsTable->find('all')->where(['transaction_id IN' => $transferTransaction_ids]); - } - //var_dump($transactions->all()); - - $transactions = []; - // creations - if(isset($transactionCreations)) { - foreach ($transactionCreations as $creation) { - //var_dump($creation); - $transaction_entries_index = array_search($creation->transaction_id, $allTransaction_ids); - if(FALSE === $transaction_entries_index) { - return $this->returnJson(['state' => 'error', 'msg' => 'code error', 'details' => 'creation, transaction_entries_index is FALSE, shouldn\'t occure']); - } - $transaction = $transactionEntries[$transaction_entries_index]; - array_push($transactions, [ - 'name' => 'Gradido Akademie', - 'type' => 'creation', - 'transaction_id' => $creation->transaction_id, - 'date' => $transaction->received, - 'balance' => $creation->amount, - 'memo' => $transaction->memo - ]); - } - } - - // involved users - if(isset($transactionTransfers)) { - $involvedUserIds = []; - - foreach ($transactionTransfers as $transfer) { - //var_dump($sendCoins); - if ($transfer->state_user_id != $user['id']) { - array_push($involvedUserIds, intval($transfer->state_user_id)); - } elseif ($transfer->receiver_user_id != $user['id']) { - array_push($involvedUserIds, intval($transfer->receiver_user_id)); - } - } - - // exchange key with values and drop duplicates - $involvedUser_temp = array_flip($involvedUserIds); - // exchange back - $involvedUserIds = array_flip($involvedUser_temp); - - $involvedUser = $stateUsersTable->find('all', [ - 'contain' => false, - 'where' => ['id IN' => $involvedUserIds], - 'fields' => ['id', 'first_name', 'last_name', 'email'] - ]); - //var_dump($involvedUser->toArray()); - $involvedUserIndices = []; - foreach ($involvedUser as $involvedUser) { - $involvedUserIndices[$involvedUser->id] = $involvedUser; - } - - // transfers - send coins - foreach($transactionTransfers as $transfer) - { - $transaction_entries_index = array_search($transfer->transaction_id, $allTransaction_ids); - if(FALSE === $transaction_entries_index) { - - return $this->returnJson([ - 'state' => 'error', - 'msg' => 'code error', - 'details' => 'transfer, transaction_entries_index is FALSE, shouldn\'t occure', - 'data' => ['haystack' => $allTransaction_ids, 'needle' => $transfer->transaction_id] - ]); - } - $transaction = $transactionEntries[$transaction_entries_index]; - $type = ''; - $otherUser = null; - $other_user_public = ''; - - if ($transfer->state_user_id == $user['id']) { - $type = 'send'; - - if(isset($involvedUserIndices[$transfer->receiver_user_id])) { - $otherUser = $involvedUserIndices[$transfer->receiver_user_id]; - } - $other_user_public = bin2hex(stream_get_contents($transfer->receiver_public_key)); - } else if ($transfer->receiver_user_id == $user['id']) { - $type = 'receive'; - if(isset($involvedUserIndices[$transfer->state_user_id])) { - $otherUser = $involvedUserIndices[$transfer->state_user_id]; - } - if($transfer->sender_public_key) { - $other_user_public = bin2hex(stream_get_contents($transfer->sender_public_key)); - } - } - if(null == $otherUser) { - $otherUser = $stateUsersTable->newEntity(); - } - array_push($transactions, [ - 'name' => $otherUser->first_name . ' ' . $otherUser->last_name, - 'email' => $otherUser->email, - 'type' => $type, - 'transaction_id' => $transfer->transaction_id, - 'date' => $transaction->received, - 'balance' => $transfer->amount, - 'memo' => $transaction->memo, - 'pubkey' => $other_user_public - ]); - //*/ - - } - } - uasort($transactions, array($this, 'sortTransactions')); - - return $this->returnJson([ - 'state' => 'success', - 'transactions' => $transactions, - 'transactionExecutingCount' => $session->read('Transactions.executing'), - 'count' => $all_user_transactions_count, - 'timeUsed' => microtime(true) - $startTime - ]); - } - - /** - * View method - * - * @param string|null $id State User Transaction id. - * @return \Cake\Http\Response|null - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function view($id = null) - { - $stateUserTransaction = $this->StateUserTransactions->get($id, [ - 'contain' => ['StateUsers', 'Transactions', 'TransactionTypes'], - ]); - - $this->set('stateUserTransaction', $stateUserTransaction); - } - - /** - * Add method - * - * @return \Cake\Http\Response|null Redirects on successful add, renders view otherwise. - */ - public function add() - { - $stateUserTransaction = $this->StateUserTransactions->newEntity(); - if ($this->request->is('post')) { - $stateUserTransaction = $this->StateUserTransactions->patchEntity($stateUserTransaction, $this->request->getData()); - if ($this->StateUserTransactions->save($stateUserTransaction)) { - $this->Flash->success(__('The state user transaction has been saved.')); - - return $this->redirect(['action' => 'index']); - } - $this->Flash->error(__('The state user transaction could not be saved. Please, try again.')); - } - $stateUsers = $this->StateUserTransactions->StateUsers->find('list', ['limit' => 200]); - $transactions = $this->StateUserTransactions->Transactions->find('list', ['limit' => 200]); - $transactionTypes = $this->StateUserTransactions->TransactionTypes->find('list', ['limit' => 200]); - $this->set(compact('stateUserTransaction', 'stateUsers', 'transactions', 'transactionTypes')); - } - - /** - * Edit method - * - * @param string|null $id State User Transaction id. - * @return \Cake\Http\Response|null Redirects on successful edit, renders view otherwise. - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function edit($id = null) - { - $stateUserTransaction = $this->StateUserTransactions->get($id, [ - 'contain' => [], - ]); - if ($this->request->is(['patch', 'post', 'put'])) { - $stateUserTransaction = $this->StateUserTransactions->patchEntity($stateUserTransaction, $this->request->getData()); - if ($this->StateUserTransactions->save($stateUserTransaction)) { - $this->Flash->success(__('The state user transaction has been saved.')); - - return $this->redirect(['action' => 'index']); - } - $this->Flash->error(__('The state user transaction could not be saved. Please, try again.')); - } - $stateUsers = $this->StateUserTransactions->StateUsers->find('list', ['limit' => 200]); - $transactions = $this->StateUserTransactions->Transactions->find('list', ['limit' => 200]); - $transactionTypes = $this->StateUserTransactions->TransactionTypes->find('list', ['limit' => 200]); - $this->set(compact('stateUserTransaction', 'stateUsers', 'transactions', 'transactionTypes')); - } - - /** - * Delete method - * - * @param string|null $id State User Transaction id. - * @return \Cake\Http\Response|null Redirects to index. - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function delete($id = null) - { - $this->request->allowMethod(['post', 'delete']); - $stateUserTransaction = $this->StateUserTransactions->get($id); - if ($this->StateUserTransactions->delete($stateUserTransaction)) { - $this->Flash->success(__('The state user transaction has been deleted.')); - } else { - $this->Flash->error(__('The state user transaction could not be deleted. Please, try again.')); - } - - return $this->redirect(['action' => 'index']); - } -} diff --git a/community_server/src/Controller/StateUsersController.php b/community_server/src/Controller/StateUsersController.php deleted file mode 100644 index fc6ec8614..000000000 --- a/community_server/src/Controller/StateUsersController.php +++ /dev/null @@ -1,616 +0,0 @@ -loadComponent('GradidoNumber'); - $this->loadComponent('JsonRequestClient'); - $this->loadComponent('Cookie'); - $this->Auth->allow([ - 'search', 'ajaxCopyLoginToCommunity', 'ajaxCopyCommunityToLogin', - 'ajaxDelete', 'ajaxCountTransactions', 'ajaxVerificationEmailResend', - 'ajaxGetUserEmailVerificationCode', 'ajaxGetCSFRToken', 'login' - ]); - $this->set( - 'naviHierarchy', - (new NaviHierarchy())-> - add(new NaviHierarchyEntry(__('Startseite'), 'Dashboard', 'index', false))->add(new NaviHierarchyEntry(__('Benutzer suchen'), 'StateUsers', 'search', true)) - ); - } - - /** - * Index method - * - * @return \Cake\Http\Response|null - */ - public function index() - { - $this->paginate = [ - 'contain' => [] - ]; - $stateUsers = $this->paginate($this->StateUsers); - - $this->set(compact('stateUsers')); - } - - /*public function listIdentHashes() - { - $stateUsers = $this->StateUsers->find('all')->toArray(); - foreach($stateUsers as $i => $user) { - $stateUsers[$i]->identHash = TransactionCreation::DRMakeStringHash($user->email); - } - $this->set('stateUsers', $stateUsers); - }*/ - - public function login($session_id) - { - if(isset($session_id) && intval($session_id) !== 0) { - $loginServer = Configure::read('LoginServer'); - $http = new Client(); - - try { - $url = $loginServer['host'] . ':' . $loginServer['port']; - - $response = $http->get($url . '/login', ['session_id' => $session_id]); - $json = $response->getJson(); - - if (isset($json) && count($json) > 0) { - if ($json['state'] === 'success') { - $this->Cookie->configKey('GRADIDO_LOGIN', 'encryption', false); - $this->Cookie->write('GRADIDO_LOGIN', $session_id); - return $this->redirect(['controller' => 'Dashboard', 'action' => 'index']); - } - } - } catch (\Exception $e) { - $msg = $e->getMessage(); - $this->Flash->error(__('error http request: ') . $msg); - return $this->redirect(['controller' => 'Dashboard', 'action' => 'errorHttpRequest']); - } - } - throw new NotFoundException(); - } - - public function search() - { - $startTime = microtime(true); - I18n::setLocale('de_DE'); - $this->viewBuilder()->setLayout('frontend'); - $session = $this->getRequest()->getSession(); - $result = $this->requestLogin(); - if($result !== true) { - return $result; - } - $user = $session->read('StateUser'); - if($user['role'] != 'admin') { - return $this->redirect(['controller' => 'dashboard', 'action' => 'index']); - } - - $searchForm = new UserSearchForm(); - - $timeUsed = microtime(true) - $startTime; - //$this->set('timeUsed', $timeUsed); - $csfr_token = $this->request->getParam('_csrfToken'); - $this->set(compact('timeUsed', 'searchForm', 'csfr_token')); - $empty_string = '... empty ...'; - if ($this->request->is('post')) { - $finalUserEntrys = []; - $requestData = $this->request->getData(); - $account_state = $requestData['account_state']; - if($requestData['search'] == '' && $account_state != 'all') { - $requestData['search'] = $empty_string; - } - - if($searchForm->validate($requestData)) { - //var_dump($requestData); - $searchString = $requestData['search']; - $searchType = 'unknown'; - if(GenericValidation::email($searchString, [])) { - $searchType = 'email'; - } - // find users on login server - $resultJson = $this->JsonRequestClient->getUsers($session->read('session_id'), $searchString, $account_state); - $loginServerUser = []; - if($resultJson['state'] == 'success') { - $dataJson = $resultJson['data']; - if($dataJson['state'] != 'success') { - if($dataJson['msg'] == 'session not found') { - $session->destroy(); - return $this->redirect(Router::url('/', true) . 'account', 303); - } - } - //var_dump($dataJson); - if(isset($dataJson['users'])) { - $loginServerUser = $dataJson['users']; - } - } - $pubkeySorted = []; - $emptyPubkeys = []; - foreach($loginServerUser as $u) { - if(!isset($u['public_hex']) || $u['public_hex'] == '') { - array_push($emptyPubkeys, $u); - } else { - if(!isset($pubkeySorted[$u['public_hex']])) { - $pubkeySorted[$u['public_hex']] = ['login' => [], 'community' => []]; - } - array_push($pubkeySorted[$u['public_hex']]['login'], $u); - } - } - // find user on community server db - - - - $communityUsers = $this->StateUsers - ->find('all') - ->contain(['StateBalances' => ['fields' => ['amount', 'state_user_id']]]); - - if($account_state == 'email not activated') { - if(count($pubkeySorted) > 0) { - $communityUsers->where(['hex(public_key) IN' => array_keys($pubkeySorted)]); - } else { - $communityUsers = null; - } - } else { - $globalSearch = '%' . $searchString . '%'; - $communityUsers->where(['OR' => [ - 'first_name LIKE' => $globalSearch, - 'last_name LIKE' => $globalSearch, - 'email LIKE' => $globalSearch - ]]); - } - - - //var_dump($communityUsers->toArray()); - if($communityUsers) { - foreach($communityUsers as $u) { - $pubkey_hex = bin2hex(stream_get_contents($u->public_key)); - $u->public_hex = $pubkey_hex; - if(!isset($pubkeySorted[$pubkey_hex])) { - $pubkeySorted[$pubkey_hex] = ['login' => [], 'community' => []]; - } - array_push($pubkeySorted[$pubkey_hex]['community'], $u); - } - } - - // detect states - foreach($pubkeySorted as $pubhex => $user) { - $finalUser = []; - $state = 'account created'; - $color = 'secondary'; - $finalUser['balance'] = 0; - $finalUser['pubkeyhex'] = $pubhex; - $finalUser['created'] = null; - - if(count($user['community']) == 1) { - if(isset($user['community'][0]->state_balances) && - isset($user['community'][0]->state_balances[0]['amount'])) { - $finalUser['balance'] = $user['community'][0]->state_balances[0]->amount; - } - } - - if(count($user['login']) == 0) { - $state = 'account not on login-server'; - $color = 'danger'; - if(count($user['community']) == 1) { - $c_user = $user['community'][0]; - $finalUser['name'] = $c_user->first_name . ' ' . $c_user->last_name; - $finalUser['first_name'] = $c_user->first_name; - $finalUser['last_name'] = $c_user->last_name; - $finalUser['email'] = $c_user->email; - } - } else if(count($user['login']) == 1) { - if($user['login'][0]['email_checked'] == true) { - $state = 'email activated'; - $color = 'primary'; - - if(count($user['community']) == 1) { - $state = 'account copied to community'; - $color = 'success'; - //var_dump($user['community'][0]->state_balances[0]['amount']); - } - - } else { - $state = 'email not activated'; - $color = 'warning'; - } - - $l_user = $user['login'][0]; - $finalUser['name'] = $l_user['first_name'] . ' ' . $l_user['last_name']; - $finalUser['first_name'] = $l_user['first_name']; - $finalUser['last_name'] = $l_user['last_name']; - $finalUser['email'] = $l_user['email']; - $finalUser['created'] = new FrozenTime($l_user['created']); - - } else { - $state = 'account multiple times on login-server'; - $color = 'danger'; - } - $finalUser['indicator'] = ['name' => $state, 'color' => $color]; - array_push($finalUserEntrys, $finalUser); - } - - foreach($emptyPubkeys as $user) { - $finalUser = []; - $state = 'account not on community server'; - $color = 'secondary'; - if($user['email_checked'] == false) { - $state = 'email not activated'; - $color = 'warning'; - } else { - $state = 'no keys'; - $color = 'warning'; - } - $finalUser['balance'] = 0; - $finalUser['pubkeyhex'] = ''; - $finalUser['name'] = $user['first_name'] . ' ' . $user['last_name']; - $finalUser['first_name'] = $user['first_name']; - $finalUser['last_name'] = $user['last_name']; - $finalUser['email'] = $user['email']; - $finalUser['created'] = new FrozenTime($user['created']); - $finalUser['indicator'] = ['name' => $state, 'color' => $color]; - array_push($finalUserEntrys, $finalUser); - } - //var_dump($pubkeySorted); - } else { - $this->Flash->error(__('Something was invalid, please try again!')); - } - - $this->set('finalUserEntrys', $finalUserEntrys); - } - $timeUsed = microtime(true) - $startTime; - $this->set('timeUsed', $timeUsed); - } - - public function ajaxCopyCommunityToLogin() - { - $session = $this->getRequest()->getSession(); - $result = $this->requestLogin(); - if($result !== true) { - return $this->returnJson(['state' => 'error', 'msg' => 'invalid session']); - } - $user = $session->read('StateUser'); - if($user['role'] != 'admin') { - return $this->returnJson(['state' => 'error', 'msg' => 'not an admin']); - } - if($this->request->is('post')) { - $jsonData = $this->request->input('json_decode', true); - } - return $this->returnJson(['state' => 'error', 'msg' => 'no post request']); - } - - public function ajaxCopyLoginToCommunity() - { - $session = $this->getRequest()->getSession(); - $result = $this->requestLogin(); - if($result !== true) { - return $this->returnJson(['state' => 'error', 'msg' => 'invalid session']); - } - $user = $session->read('StateUser'); - if($user['role'] != 'admin') { - return $this->returnJson(['state' => 'error', 'msg' => 'not an admin']); - } - - if($this->request->is('post')) { - $jsonData = $this->request->input('json_decode', true); - //$user = $jsonData['user']; - //var_dump($jsonData); - - $newStateUser = $this->StateUsers->newEntity(); - $this->StateUsers->patchEntity($newStateUser, $jsonData); - $newStateUser->public_key = hex2bin($jsonData['pubkeyhex']); - - if(!$this->StateUsers->save($newStateUser)) { - return $this->returnJson(['state' => 'error', 'msg' => 'error by saving', 'details' => json_encode($newStateUser->errors())]); - } - - return $this->returnJson(['state' => 'success']); - } - return $this->returnJson(['state' => 'error', 'msg' => 'no post request']); - } - - public function ajaxVerificationEmailResend() - { - $session = $this->getRequest()->getSession(); - $result = $this->requestLogin(); - if($result !== true) { - return $this->returnJson(['state' => 'error', 'msg' => 'invalid session']); - } - $user = $session->read('StateUser'); - if($user['role'] != 'admin') { - return $this->returnJson(['state' => 'error', 'msg' => 'not an admin']); - } - if($this->request->is('post')) { - $jsonData = $this->request->input('json_decode', true); - $email = $jsonData['email']; - $session_id = $session->read('session_id'); - - return $this->returnJson($this->JsonRequestClient->sendRequest(json_encode([ - 'session_id' => $session_id, - 'email' => $email - ]), '/adminEmailVerificationResend')); - /*return $this->sendRequest(json_encode([ - 'session_id' => $session_id, - 'search' => $searchString - ]), '/getUsers');*/ - } - return $this->returnJson(['state' => 'error', 'msg' => 'no post request']); - } - - public function ajaxGetUserEmailVerificationCode() - { - $session = $this->getRequest()->getSession(); - $result = $this->requestLogin(); - if($result !== true) { - return $this->returnJson(['state' => 'error', 'msg' => 'invalid session']); - } - $user = $session->read('StateUser'); - if($user['role'] != 'admin') { - return $this->returnJson(['state' => 'error', 'msg' => 'not an admin']); - } - if($this->request->is('post')) { - $jsonData = $this->request->input('json_decode', true); - $email = $jsonData['email']; - $session_id = $session->read('session_id'); - - return $this->returnJson($this->JsonRequestClient->sendRequest(json_encode([ - 'session_id' => $session_id, - 'email' => $email, - 'ask' => ['EmailVerificationCode.Register', 'loginServer.path'] - ]), '/getUserInfos')); - } - return $this->returnJson(['state' => 'error', 'msg' => 'no post request']); - } - - - public function ajaxDelete() - { - $session = $this->getRequest()->getSession(); - $result = $this->requestLogin(); - if($result !== true) { - return $this->returnJson(['state' => 'error', 'msg' => 'invalid session']); - } - $user = $session->read('StateUser'); - if($user['role'] != 'admin') { - return $this->returnJson(['state' => 'error', 'msg' => 'not an admin']); - } - - if($this->request->is('post')) { - $jsonData = $this->request->input('json_decode', true); - //$user = $jsonData['user']; - //var_dump($jsonData); - $pubkey = hex2bin($jsonData['pubkeyhex']); - $stateUsers = $this->StateUsers->find('all')->where(['public_key' => $pubkey]); - if($stateUsers->count() != 1) { - return $this->returnJson(['state' => 'error', 'msg' => 'invalid result count']); - } - - if ($this->StateUsers->delete($stateUsers->first())) { - return $this->returnJson(['state' => 'success']); - } else { - return $this->returnJson(['state' => 'error', 'msg' => 'error by deleting', 'details' => json_encode($stateUser->errors())]); - } - } - return $this->returnJson(['state' => 'error', 'msg' => 'no post request']); - } - - public function ajaxCountTransactions() - { - $session = $this->getRequest()->getSession(); - $result = $this->requestLogin(); - if($result !== true) { - return $this->returnJson(['state' => 'error', 'msg' => 'invalid session']); - } - $user = $session->read('StateUser'); - if($user['role'] != 'admin') { - return $this->returnJson(['state' => 'error', 'msg' => 'not an admin']); - } - - if($this->request->is('post')) { - $jsonData = $this->request->input('json_decode', true); - //$user = $jsonData['user']; - //var_dump($jsonData); - $pubkey = hex2bin($jsonData['pubkeyhex']); - $stateUsers = $this->StateUsers - ->find('all') - ->where(['public_key' => $pubkey]) - ->select(['id']); - if($stateUsers->count() != 1) { - return $this->returnJson(['state' => 'error', 'msg' => 'invalid result count']); - } - $stateUser = $stateUsers->first(); - //var_dump($stateUser); - //var_dump($stateUser->toArray()); - $creationsTable = TableRegistry::getTableLocator()->get('TransactionCreations'); - $creationTransactions = $creationsTable - ->find('all') - ->select(['id']) - ->where(['state_user_id' => $stateUser->id]); - - $transferTable = TableRegistry::getTableLocator()->get('TransactionSendCoins'); - $transferTransactions = $transferTable - ->find('all') - ->where(['OR' => ['state_user_id' => $stateUser->id, 'receiver_user_id' => $stateUser->id]]) - ->select(['state_user_id', 'receiver_user_id']); - $counts = ['creation' => $creationTransactions->count(), 'receive' => 0, 'sended' => 0]; - foreach($transferTransactions as $transfer) { - //var_dump($transfer); - if($transfer->state_user_id == $stateUser->id) { - $counts['sended']++; - } - if($transfer->receiver_user_id == $stateUser->id) { - $counts['receive']++; - } - } - return $this->returnJson(['state' => 'success', 'counts' => $counts]); - - } - return $this->returnJson(['state' => 'error', 'msg' => 'no post request']); - - } - - public function ajaxGetCSFRToken($session_id) - { - if(!isset($session_id) || $session_id == 0) { - $this->returnJson(['state' => 'error', 'msg' => 'no session id']); - } - - $client_ip = $this->request->clientIp(); - - $loginServer = Configure::read('LoginServer'); - $url = $loginServer['host'] . ':' . $loginServer['port']; - - $http = new Client(); - $response = $http->get($url . '/login', ['session_id' => $session_id]); - $json = $response->getJson(); - - if (isset($json) && count($json) > 0) { - if ($json['state'] === 'success') { - if($json['clientIP'] == $client_ip) { - return $this->returnJson(['state' => 'success', 'csfr' => $this->request->getParam('_csrfToken')]); - } else { - return $this->returnJson([ - 'state' => 'error', - 'msg' => 'client ip mismatch', - 'details' => ['login_server' => $json['clientIP'], 'caller' => $client_ip]]); - } - } else { - return $this->returnJson($json); - } - } else { - return $this->returnJson(['state' => 'error', 'invalid response form logins server']); - } - - } - /* - - getField(vnode, 'receive'), - - getField(vnode, 'sended'), - - getField(vnode, 'creation'), - */ - - /** - * View method - * - * @param string|null $id State User id. - * @return \Cake\Http\Response|null - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function view($id = null) - { - $stateUser = $this->StateUsers->get($id, [ - 'contain' => [ - 'StateBalances', - 'TransactionCreations' => ['Transactions'], - 'TransactionSendCoins' => ['Transactions', 'ReceiverUsers'], - 'TransactionReceivedCoins' => ['Transactions', 'StateUsers']] - ]); - - $this->set('stateUser', $stateUser); - } - - /** - * Add method - * - * @return \Cake\Http\Response|null Redirects on successful add, renders view otherwise. - */ - public function add() - { - $stateUser = $this->StateUsers->newEntity(); - if ($this->request->is('post')) { - $stateUser = $this->StateUsers->patchEntity($stateUser, $this->request->getData()); - if ($this->StateUsers->save($stateUser)) { - $this->Flash->success(__('The state user has been saved.')); - - return $this->redirect(['action' => 'index']); - } - $this->Flash->error(__('The state user could not be saved. Please, try again.')); - } - $indices = $this->StateUsers->Indices->find('list', ['limit' => 200]); - $stateGroups = $this->StateUsers->StateGroups->find('list', ['limit' => 200]); - $this->set(compact('stateUser', 'indices', 'stateGroups')); - } - - /** - * Edit method - * - * @param string|null $id State User id. - * @return \Cake\Http\Response|null Redirects on successful edit, renders view otherwise. - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function edit($id = null) - { - $stateUser = $this->StateUsers->get($id, [ - 'contain' => [] - ]); - if ($this->request->is(['patch', 'post', 'put'])) { - $stateUser = $this->StateUsers->patchEntity($stateUser, $this->request->getData()); - if ($this->StateUsers->save($stateUser)) { - $this->Flash->success(__('The state user has been saved.')); - - return $this->redirect(['action' => 'index']); - } - $this->Flash->error(__('The state user could not be saved. Please, try again.')); - } - $indices = $this->StateUsers->Indices->find('list', ['limit' => 200]); - $stateGroups = $this->StateUsers->StateGroups->find('list', ['limit' => 200]); - $this->set(compact('stateUser', 'indices', 'stateGroups')); - } - - /** - * Delete method - * - * @param string|null $id State User id. - * @return \Cake\Http\Response|null Redirects to index. - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function delete($id = null) - { - $this->request->allowMethod(['post', 'delete']); - $stateUser = $this->StateUsers->get($id); - if ($this->StateUsers->delete($stateUser)) { - $this->Flash->success(__('The state user has been deleted.')); - } else { - $this->Flash->error(__('The state user could not be deleted. Please, try again.')); - } - - return $this->redirect(['action' => 'index']); - } -} diff --git a/community_server/src/Controller/TransactionCreationsController.php b/community_server/src/Controller/TransactionCreationsController.php deleted file mode 100644 index d02320d25..000000000 --- a/community_server/src/Controller/TransactionCreationsController.php +++ /dev/null @@ -1,681 +0,0 @@ -loadComponent('GradidoNumber'); - $this->loadComponent('JsonRequestClient'); - //$this->Auth->allow(['add', 'edit']); - //$this->Auth->allow('create'); - $this->Auth->allow('ajaxCreate'); - $this->set( - 'naviHierarchy', - (new NaviHierarchy())-> - add(new NaviHierarchyEntry(__('Startseite'), 'Dashboard', 'index', false))->add(new NaviHierarchyEntry(__('Gradido schöpfen'), 'TransactionCreations', 'create-multi', true)) - ); - } - /** - * Index method - * - * @return \Cake\Http\Response|null - */ - public function index() - { - $this->paginate = [ - 'contain' => ['Transactions', 'StateUsers'] - ]; - $transactionCreations = $this->paginate($this->TransactionCreations); - $identHashes = []; - /*foreach ($transactionCreations as $creation) { - $identHash = TransactionCreation::DRMakeStringHash($creation->state_user->email); - $identHashes[$creation->state_user->id] = $identHash; - }*/ - - //$this->set(compact('transactionCreations', 'identHashes')); - } - - /** - * View method - * - * @param string|null $id Transaction Creation id. - * @return \Cake\Http\Response|null - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function view($id = null) - { - $transactionCreation = $this->TransactionCreations->get($id, [ - 'contain' => ['Transactions', 'StateUsers'] - ]); - - $this->set('transactionCreation', $transactionCreation); - } - - public function create() - { - $startTime = microtime(true); - $this->viewBuilder()->setLayout('frontend'); - $session = $this->getRequest()->getSession(); - $user = $session->read('StateUser'); - if (!$user) { - $result = $this->requestLogin(); - if ($result !== true) { - return $result; - } - $user = $session->read('StateUser'); - } - $creationForm = new CreationForm(); - $transactionCreation = $this->TransactionCreations->newEntity(); - $transactionCreation->state_user_id = $user['id']; - - // adding possible addresses + input field for copy - $stateUserTable = TableRegistry::getTableLocator()->get('StateUsers'); - $stateUsers = $stateUserTable->find('all')->contain(false); - $receiverProposal = []; - foreach ($stateUsers as $stateUser) { - $name = $stateUser->email; - $keyHex = bin2hex(stream_get_contents($stateUser->public_key)); - if ($name === null) { - $name = $stateUser->first_name . ' ' . $stateUser->last_name; - } - array_push($receiverProposal, ['name' => $name, 'key' => $keyHex, 'email' => $stateUser->email]); - //$stateUser->public_key - } - $timeUsed = microtime(true) - $startTime; - $this->set(compact('transactionCreation', 'timeUsed', 'receiverProposal', 'creationForm')); - - if ($this->request->is('post')) { - $requestData = $this->request->getData(); - $mode = 'next'; - if (isset($requestData['add'])) { - $mode = 'add'; - } - if ($creationForm->validate($requestData)) { - $pubKeyHex = ''; - $identHash = ''; - $amountCent = $this->GradidoNumber->parseInputNumberToCentNumber($requestData['amount']); - $receiverIndex = intval($requestData['receiver'])-1; - - if (count($receiverProposal) > $receiverIndex) { - $pubKeyHex = $receiverProposal[$receiverIndex]['key']; - //$identHash = TransactionCreation::DRMakeStringHash($receiverProposal[$receiverIndex]['email']); - } - $builderResult = TransactionCreation::build( - $amountCent, - $requestData['memo'], - $pubKeyHex - ); - if ($builderResult['state'] == 'success') { - $user_balance = 0; - if (isset($user['balance'])) { - $user_balance = $user['balance']; - } - // $session_id, $base64Message, $user_balance = 0 - $requestResult = $this->JsonRequestClient->sendTransaction( - $session->read('session_id'), - base64_encode($builderResult['transactionBody']->serializeToString()), - $user_balance - ); - if ($requestResult['state'] != 'success') { - $this->addAdminError('TransactionCreations', 'create', $requestResult, $user['id']); - if ($requestResult['type'] == 'request error') { - $this->Flash->error(__('Error by requesting LoginServer, please try again')); - } else { - $this->Flash->error(__('Error, please wait for the admin to fix it')); - } - } else { - $json = $requestResult['data']; - if ($json['state'] != 'success') { - if ($json['msg'] == 'session not found') { - $session->destroy(); - return $this->redirect($this->loginServerUrl . 'account', 303); - } else { - $this->addAdminError('TransactionCreations', 'create', $json, $user['id']); - $this->Flash->error(__('Login Server Error, please wait for the admin to fix it')); - } - } else { - $pendingTransactionCount = $session->read('Transactions.pending'); - if ($pendingTransactionCount == null) { - $pendingTransactionCount = 1; - } else { - $pendingTransactionCount++; - } - $session->write('Transactions.pending', $pendingTransactionCount); - if ($mode === 'next') { - return $this->redirect($this->loginServerUrl . 'account/checkTransactions', 303); - } else { - $this->Flash->success(__('Transaction submitted for review.')); - } - } - } - } else { - $this->Flash->error(__('Building transaction failed')); - } - // */ - } else { - $this->Flash->error(__('Something was invalid, please try again!')); - } - } - } - - public function createMulti($page = 0) - { - $startTime = microtime(true); - $this->viewBuilder()->setLayout('frontend'); - $session = $this->getRequest()->getSession(); - $result = $this->requestLogin(); - $limit = 200; - if ($result !== true) { - return $result; - } - $user = $session->read('StateUser'); - - $stateUserTable = TableRegistry::getTableLocator()->get('StateUsers'); - - $connection = ConnectionManager::get('default'); - $transactionActiveMonth = $connection->execute( - 'SELECT id, received FROM transactions ' - . 'where received >= date_sub(date_add(curdate(), interval 1 - day(curdate()) day), interval 2 month) ' - . 'AND ' - . 'received < date_add(date_add(curdate(), interval 1 - day(curdate()) day), interval 2 month) ' - . 'AND ' - . 'transaction_type_id = 1' - )->fetchAll('assoc'); - $transactionActiveMonthSortedById = []; - foreach ($transactionActiveMonth as $t) { - $transactionActiveMonthSortedById[$t['id']] = $t['received']; - } - $firstDayLastMonth = new FrozenDate(); - $firstDayLastMonth = $firstDayLastMonth->day(1)->subMonth(1); - $transactionsLastMonthTargeDate = $this->TransactionCreations - ->find('all') - //->select(['state_user_id', 'target_date', 'amount']) - ->where(['EXTRACT(YEAR_MONTH FROM target_date) LIKE' => $firstDayLastMonth->format('Ym')]) - ->group(['state_user_id']) - ->contain([]); - $transactionsLastMonthTargeDate->select([ - 'state_user_id', - 'sum_amount' => $transactionsLastMonthTargeDate->func()->sum('amount') - ]); - - $transactionsLastMonthTargetDateSortedByStateUserId = []; - foreach ($transactionsLastMonthTargeDate as $transactionCreation) { - $transactionsLastMonthTargetDateSortedByStateUserId[$transactionCreation->state_user_id] = $transactionCreation->sum_amount; - } - - $requestData = $this->request->getData(); - if ($this->request->is('post') && - isset($requestData['searchButton']) && - isset($requestData['searchText']) && - !empty($requestData['searchText']) - ) { - $mode = 'search'; - $page = 0; - $this->log("search for text: ".$requestData['searchText'], 'debug'); - $stateUsers = $stateUserTable - ->find('all') - ->select(['id', 'first_name', 'last_name', 'email']) - ->order(['first_name', 'last_name']) - ->where( - ['AND' => [ - 'disabled' => 0, - 'OR' => [ - 'LOWER(first_name) LIKE' => '%'.strtolower($requestData['searchText']).'%', - 'LOWER(last_name) LIKE' => '%'.strtolower($requestData['searchText']).'%', - 'LOWER(email) LIKE' => '%'.strtolower($requestData['searchText']).'%' - ] - ] - ] - ) - ->contain(['TransactionCreations' => [ - 'fields' => [ - 'TransactionCreations.amount', - 'TransactionCreations.transaction_id', - 'TransactionCreations.state_user_id' - ] - ]]); - $this->log("search query: ".$stateUsers, 'debug'); - } else { - $stateUsers = $stateUserTable - ->find('all') - ->select(['id', 'first_name', 'last_name', 'email']) - //->order(['id']) - ->where(['disabled' => 0]) - ->order(['first_name', 'last_name']) - ->contain(['TransactionCreations' => [ - 'fields' => [ - 'TransactionCreations.amount', - 'TransactionCreations.transaction_id', - 'TransactionCreations.state_user_id' - ] - ]]); - } - - //var_dump($stateUsers->toArray()); - $possibleReceivers = []; - $countUsers = 0; - foreach ($stateUsers as $i => $stateUser) { - $countUsers++; - if ($i < $page * $limit || $i >= ($page + 1) * $limit) { - continue; - } - $sumAmount = 0; - $sumAmount2 = 0; - if (isset($transactionsLastMonthTargetDateSortedByStateUserId[$stateUser->id])) { - $sumAmount2 = $transactionsLastMonthTargetDateSortedByStateUserId[$stateUser->id]; - } - foreach ($stateUser->transaction_creations as $transactionCreation) { - //var_dump($transactionCreation); - if (isset($transactionActiveMonthSortedById[$transactionCreation->transaction_id])) { - $sumAmount += $transactionCreation->amount; - } - } - - //if($sumAmount < 20000000) { - array_push($possibleReceivers, [ - 'name' => $stateUser->first_name . ' ' . $stateUser->last_name, - 'id' => $stateUser->id, - 'email' => $stateUser->email, - 'amount' => $sumAmount, - 'amount2' => $sumAmount2 - ]); - /*} else { - $this->Flash->error(__('Creation above 2.000 GDD for 2 last two month')); - }*/ - } - // usort($possibleReceivers, function ($a, $b) { - // return (strtolower($a['name']) <=> strtolower($b['name'])); - // }); - // -> replaced by SQL "order by" above - $creationForm = new CreationForm(); - - $timeUsed = microtime(true) - $startTime; - $this->set(compact('timeUsed', 'stateUsers', 'creationForm', 'possibleReceivers')); - - $this->set('firstDayLastMonth', $firstDayLastMonth); - $this->set('activeUser', $user); - $this->set('creationForm', $creationForm); - $this->set('transactionExecutingCount', $session->read('Transactions.executing')); - $this->set('timeUsed', microtime(true) - $startTime); - $this->set('countUsers', $countUsers); - $this->set('limit', $limit); - $this->set('page', $page); - - if ($this->request->is('post') && (!isset($mode) || !($mode === 'search'))) { - $this->log("real POST", 'debug'); - $mode = 'next'; - if (isset($requestData['add'])) { - $mode = 'add'; - } - //echo "mode: $mode
    "; - $memo = $requestData['memo']; - $amountCent = $this->GradidoNumber->parseInputNumberToCentNumber($requestData['amount']); - //$targetDate = $requestData['target_date']; - if (!isset($requestData['user']) || count($requestData['user']) == 0) { - $this->Flash->error(__('No user selected')); - } else { - $users = $requestData['user']; - $pendingTransactionCount = $session->read('Transactions.pending'); - if ($pendingTransactionCount == null) { - $pendingTransactionCount = 0; - } - if (isset($requestData['user_pending'])) { - $pendings = $requestData['user_pending']; - } else { - $pendings = []; - } - $receiverUsers = $stateUserTable->find('all') - ->where(['id IN' => array_keys($users)]) - ->select(['public_key', 'email', 'id']) - ->contain(false); - - foreach ($receiverUsers as $receiverUser) { - $localAmountCent = $amountCent; - //$localTargetDate = $targetDate; - $id = $receiverUser->id; - if ($requestData['user_amount'][$id] != '') { - $localAmountCent = $this->GradidoNumber->parseInputNumberToCentNumber($requestData['user_amount'][$id]); - } - if (isset($requestData['user_target_date']) && isset($requestData['user_target_date'][$id])) { - $localTargetDate = $requestData['user_target_date'][$id]; - } - if (isset($pendings[$id])) { - $pendings[$id] += $localAmountCent; - } else { - $pendings[$id] = $localAmountCent; - } - $pubKeyHex = bin2hex(stream_get_contents($receiverUser->public_key)); - $requestAnswear = $this->JsonRequestClient->sendRequest(json_encode([ - 'session_id' => $session->read('session_id'), - 'email' => $receiverUser->email, - 'ask' => ['user.identHash'] - ]), '/getUserInfos'); - - $identHash = 0; - if('success' == $requestAnswear['state'] && 'success' == $requestAnswear['data']['state']) { - $identHash = $requestAnswear['data']['userData']['identHash']; - } else { - $this->Flash->error(__('Error by requesting LoginServer, please try again')); - } - - //$identHash = TransactionCreation::DRMakeStringHash($receiverUser->email); - $localTargetDateFrozen = FrozenDate::now(); - $localTargetDateFrozen = $localTargetDateFrozen - ->year($localTargetDate['year']) - ->month($localTargetDate['month']) - ->day($localTargetDate['day']); - - $requestAnswear = $this->JsonRequestClient->sendRequest(json_encode([ - 'session_id' => $session->read('session_id'), - 'transaction_type' => 'creation', - 'memo' => $memo, - 'amount' => $localAmountCent, - 'target_pubkey' => $pubKeyHex, - 'target_date' => $localTargetDateFrozen, - 'blockchain_type' => $this->blockchainType - ]), '/createTransaction'); - - if('success' != $requestAnswear['state']) { - $this->addAdminError('TransactionCreations', 'createMulti', $requestAnswear, $user['id']); - if ($requestResult['type'] == 'request error') { - $this->Flash->error(__('Error by requesting LoginServer, please try again')); - } else { - $this->Flash->error(__('Error, please wait for the admin to fix it')); - } - } - if('success' == $requestAnswear['state'] && 'success' == $requestAnswear['data']['state']) { - $pendingTransactionCount++; - //echo "pending transaction count: $pendingTransactionCount
    "; - } else { - /* - * if request contain unknown parameter format, shouldn't happen't at all - * {"state": "error", "msg": "parameter format unknown"} - * if json parsing failed - * {"state": "error", "msg": "json exception", "details":"exception text"} - * if session_id is zero or not set - * {"state": "error", "msg": "session_id invalid"} - * if session id wasn't found on login server, if server was restartet or user logged out (also per timeout, default: 15 minutes) - * {"state": "error", "msg": "session not found"} - * if session hasn't active user, shouldn't happen't at all, login-server should be checked if happen - * {"state": "code error", "msg":"user is zero"} - * if transaction type not known - * {"state": "error", "msg":"transaction_type unknown"} - * if receiver wasn't known to Login-Server - * {"state": "not found", "msg":"receiver not found"} - * if receiver account disabled, and therefor cannto receive any coins - * {"state": "disabled", "msg":"receiver is disabled"} - * if amount is invalid in creation - * {"state": "invalid parameter", "msg":"invalid amount", "details":"GDD amount in GDD cent ]0,10000000]"} - * if transaction was okay and will be further proccessed - * {"state":"success"} - */ - $answear_data = $requestAnswear['data']; - if($answear_data['state'] === 'error') { - if($answear_data['msg'] === 'session_id invalid' || $answear_data['msg'] === 'session not found') { - $this->Flash->error(__('Fehler mit der Session, bitte logge dich erneut ein!')); - $this->set('timeUsed', microtime(true) - $startTime); - return; - } - if($answear_data['msg'] === 'user not in group') { - $this->Flash->error(__('Fehler, Benutzer gehört zu einer anderen Gruppe!')); - $this->set('timeUsed', microtime(true) - $startTime); - return; - } - } else if($answear_data['state'] === 'not found' && $answear_data['msg'] === 'receiver not found') { - $this->Flash->error(__('Der Empfänger wurde nicht auf dem Login-Server gefunden, hat er sein Konto schon angelegt?')); - $this->set('timeUsed', microtime(true) - $startTime); - return; - } else if($answear_data['state'] === 'disabled') { - $this->Flash->error(__('Der Empfänger ist deaktiviert, daher können ihm zurzeit keine Gradidos gesendet werden.')); - $this->set('timeUsed', microtime(true) - $startTime); - return; - } else if($answear_data['msg'] === 'invalid amount') { - $this->Flash->error(__('Der Betrag ist ungültig, er muss größer als 0 und <= 1000 sein.')); - $this->set('timeUsed', microtime(true) - $startTime); - return; - } else { - $this->Flash->error(__('Unbehandelter Fehler: ') . json_encode($answear_data)); - $this->set('timeUsed', microtime(true) - $startTime); - return; - } - } - - } - /*echo "pendings: "; - var_dump($pendings); - echo "
    ";*/ - foreach ($possibleReceivers as $i => $possibleReceiver) { - $id = $possibleReceiver['id']; - if (isset($pendings[$id])) { - $possibleReceivers[$i]['pending'] = $pendings[$id]; - } - } - $this->set('possibleReceivers', $possibleReceivers); - if ($pendingTransactionCount > 0) { - $user_balance = 0; - if (isset($user['balance'])) { - $user_balance = $user['balance']; - } - $session->write('Transactions.pending', $pendingTransactionCount); - - if ($mode === 'next') { - return $this->redirect($this->loginServerUrl . 'account/checkTransactions', 303); - } else { - $this->Flash->success(__('Transaction submitted for review.')); - } - } - } - } - } - - public function ajaxCreate() - { - if ($this->request->is('post')) { - $startTime = microtime(true); - $jsonData = $this->request->input('json_decode', true); - $session_id = $jsonData['session_id']; - if(!isset($jsonData['session_id']) || intval($jsonData['session_id']) == 0) { - return $this->returnJson(['state' => 'parameter missing', 'msg' => 'invalid session id']); - } - - $login_result = $this->requestLogin($session_id, false); - if($login_result !== true) { - return $this->returnJson($login_result); - } - $session = $this->getRequest()->getSession(); - $user = $session->read('StateUser'); - - $memo = ''; - if(isset($jsonData['memo'])) { - $memo = $jsonData['memo']; - } - $auto_sign = true; - if(isset($jsonData['auto_sign'])) { - $auto_sign = $jsonData['auto_sign']; - } - if(!isset($jsonData['amount']) || intval($jsonData['amount']) <= 0) { - return $this->returnJson(['state' => 'parameter missing', 'msg' => 'amount not set or <= 0']); - } - if(!isset($jsonData['email'])) { - return $this->returnJson(['state' => 'parameter missing', 'msg' => 'no receiver email set']); - } - $amount = intval($jsonData['amount']); - if($amount > 10000000) { - return $this->returnJson(['state' => 'error', 'msg' => 'amount is to big']); - } - if($amount <= 0) { - return $this->returnJson(['state' => 'error', 'msg' => 'amount must be > 0']); - } - if(!isset($jsonData['target_date'])) { - return $this->returnJson(['state' => 'parameter missing', 'msg' => 'target_date not found']); - } - //$targetDate = $requestData['target_date']; - $stateUserTable = TableRegistry::getTableLocator()->get('StateUsers'); - $requestAnswear = $this->JsonRequestClient->sendRequest(json_encode([ - 'session_id' => $session_id, - 'email' => $jsonData['email'], - 'ask' => ['user.pubkeyhex', 'user.disabled', 'user.identHash'] - ]), '/getUserInfos'); - $receiverPubKeyHex = ''; - if('success' == $requestAnswear['state'] && 'success' == $requestAnswear['data']['state']) { - // will be allways 64 byte long, even if it is empty - $receiverPubKeyHex = $requestAnswear['data']['userData']['pubkeyhex']; - } else { - return $this->returnJson([ - 'state' => 'error', - 'msg' => 'receiver email not found on login-server', - 'details' => $requestAnswear, - 'timeUsed' => microtime(true) - $startTime - ]); - } - if($requestAnswear['data']['userData']['disabled']) { - return $this->returnJson([ - 'state' => 'error', - 'msg' => 'receiver is currently disabled, he cannot receive creations', - 'timeUsed' => microtime(true) - $startTime - ]); - } - - $builderResult = TransactionCreation::build( - $amount, - $memo, - $receiverPubKeyHex, - new FrozenDate($jsonData['target_date']) - ); - $transaction_base64 = ''; - if ($builderResult['state'] == 'success') { - // todo: maybe use sodium base 64 encoder to make sure it can be readed from login-server - $transaction_base64 = base64_encode($builderResult['transactionBody']->serializeToString()); - } - - $requestResult = $this->JsonRequestClient->sendTransaction( - $session_id, - $transaction_base64, - $user['balance'], - $auto_sign, - $this->blockchainType - ); - if ($requestResult['state'] != 'success') { - $msg = 'error returned from login server'; - if ($requestResult['type'] === 'request error') { - $msg = 'login server couldn\'t reached'; - } - //$this->Flash->error(__('Error, please wait for the admin to fix it')); - return $this->returnJson([ - 'state' => 'request error', - 'msg' => $msg, - 'details' => $requestResult, - 'timeUsed' => microtime(true) - $startTime - ]); - } else { - $json = $requestResult['data']; - if ($json['state'] != 'success') { - if ($json['msg'] == 'session not found') { - $session->destroy(); - return $this->returnJson(['state' => 'error', 'msg' => 'session not found', 'timeUsed' => microtime(true) - $startTime]); - } else { - return $this->returnJson(['state' => 'error', 'msg' => 'login server error', 'details' => $json, 'timeUsed' => microtime(true) - $startTime]); - } - } else { - return $this->returnJson(['state' => 'success', 'timeUsed' => microtime(true) - $startTime]); - } - } - } - } - - /** - * Add method - * - * @return \Cake\Http\Response|null Redirects on successful add, renders view otherwise. - */ - public function add() - { - - $transactionCreation = $this->TransactionCreations->newEntity(); - if ($this->request->is('post')) { - $transactionCreation = $this->TransactionCreations->patchEntity($transactionCreation, $this->request->getData()); - if ($this->TransactionCreations->save($transactionCreation)) { - $this->Flash->success(__('The transaction creation has been saved.')); - - return $this->redirect(['action' => 'index']); - } - $this->Flash->error(__('The transaction creation could not be saved. Please, try again.')); - } - $transactions = $this->TransactionCreations->Transactions->find('list', ['limit' => 200]); - $stateUsers = $this->TransactionCreations->StateUsers->find('list', ['limit' => 200]); - $this->set(compact('transactionCreation', 'transactions', 'stateUsers')); - } - - /** - * Edit method - * - * @param string|null $id Transaction Creation id. - * @return \Cake\Http\Response|null Redirects on successful edit, renders view otherwise. - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function edit($id = null) - { - $transactionCreation = $this->TransactionCreations->get($id, [ - 'contain' => [] - ]); - if ($this->request->is(['patch', 'post', 'put'])) { - $transactionCreation = $this->TransactionCreations->patchEntity($transactionCreation, $this->request->getData()); - if ($this->TransactionCreations->save($transactionCreation)) { - $this->Flash->success(__('The transaction creation has been saved.')); - - return $this->redirect(['action' => 'index']); - } - $this->Flash->error(__('The transaction creation could not be saved. Please, try again.')); - } - $transactions = $this->TransactionCreations->Transactions->find('list', ['limit' => 200]); - $stateUsers = $this->TransactionCreations->StateUsers->find('list', ['limit' => 200]); - $this->set(compact('transactionCreation', 'transactions', 'stateUsers')); - } - - /** - * Delete method - * - * @param string|null $id Transaction Creation id. - * @return \Cake\Http\Response|null Redirects to index. - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function delete($id = null) - { - $this->request->allowMethod(['post', 'delete']); - $transactionCreation = $this->TransactionCreations->get($id); - if ($this->TransactionCreations->delete($transactionCreation)) { - $this->Flash->success(__('The transaction creation has been deleted.')); - } else { - $this->Flash->error(__('The transaction creation could not be deleted. Please, try again.')); - } - - return $this->redirect(['action' => 'index']); - } -} diff --git a/community_server/src/Controller/TransactionGroupAddaddressController.php b/community_server/src/Controller/TransactionGroupAddaddressController.php deleted file mode 100644 index fc23c111b..000000000 --- a/community_server/src/Controller/TransactionGroupAddaddressController.php +++ /dev/null @@ -1,113 +0,0 @@ -paginate = [ - 'contain' => ['Transactions', 'AddressTypes'] - ]; - $transactionGroupAddaddress = $this->paginate($this->TransactionGroupAddaddress); - - $this->set(compact('transactionGroupAddaddress')); - } - - /** - * View method - * - * @param string|null $id Transaction Group Addaddres id. - * @return \Cake\Http\Response|null - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function view($id = null) - { - $transactionGroupAddaddres = $this->TransactionGroupAddaddress->get($id, [ - 'contain' => ['Transactions', 'AddressTypes'] - ]); - - $this->set('transactionGroupAddaddres', $transactionGroupAddaddres); - } - - /** - * Add method - * - * @return \Cake\Http\Response|null Redirects on successful add, renders view otherwise. - */ - public function add() - { - $transactionGroupAddaddres = $this->TransactionGroupAddaddress->newEntity(); - if ($this->request->is('post')) { - $transactionGroupAddaddres = $this->TransactionGroupAddaddress->patchEntity($transactionGroupAddaddres, $this->request->getData()); - if ($this->TransactionGroupAddaddress->save($transactionGroupAddaddres)) { - $this->Flash->success(__('The transaction group addaddres has been saved.')); - - return $this->redirect(['action' => 'index']); - } - $this->Flash->error(__('The transaction group addaddres could not be saved. Please, try again.')); - } - $transactions = $this->TransactionGroupAddaddress->Transactions->find('list', ['limit' => 200]); - $addressTypes = $this->TransactionGroupAddaddress->AddressTypes->find('list', ['limit' => 200]); - $this->set(compact('transactionGroupAddaddres', 'transactions', 'addressTypes')); - } - - /** - * Edit method - * - * @param string|null $id Transaction Group Addaddres id. - * @return \Cake\Http\Response|null Redirects on successful edit, renders view otherwise. - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function edit($id = null) - { - $transactionGroupAddaddres = $this->TransactionGroupAddaddress->get($id, [ - 'contain' => [] - ]); - if ($this->request->is(['patch', 'post', 'put'])) { - $transactionGroupAddaddres = $this->TransactionGroupAddaddress->patchEntity($transactionGroupAddaddres, $this->request->getData()); - if ($this->TransactionGroupAddaddress->save($transactionGroupAddaddres)) { - $this->Flash->success(__('The transaction group addaddres has been saved.')); - - return $this->redirect(['action' => 'index']); - } - $this->Flash->error(__('The transaction group addaddres could not be saved. Please, try again.')); - } - $transactions = $this->TransactionGroupAddaddress->Transactions->find('list', ['limit' => 200]); - $addressTypes = $this->TransactionGroupAddaddress->AddressTypes->find('list', ['limit' => 200]); - $this->set(compact('transactionGroupAddaddres', 'transactions', 'addressTypes')); - } - - /** - * Delete method - * - * @param string|null $id Transaction Group Addaddres id. - * @return \Cake\Http\Response|null Redirects to index. - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function delete($id = null) - { - $this->request->allowMethod(['post', 'delete']); - $transactionGroupAddaddres = $this->TransactionGroupAddaddress->get($id); - if ($this->TransactionGroupAddaddress->delete($transactionGroupAddaddres)) { - $this->Flash->success(__('The transaction group addaddres has been deleted.')); - } else { - $this->Flash->error(__('The transaction group addaddres could not be deleted. Please, try again.')); - } - - return $this->redirect(['action' => 'index']); - } -} diff --git a/community_server/src/Controller/TransactionGroupAllowtradesController.php b/community_server/src/Controller/TransactionGroupAllowtradesController.php deleted file mode 100644 index 0b83332c6..000000000 --- a/community_server/src/Controller/TransactionGroupAllowtradesController.php +++ /dev/null @@ -1,113 +0,0 @@ -paginate = [ - 'contain' => ['Transactions', 'Groups'] - ]; - $transactionGroupAllowtrades = $this->paginate($this->TransactionGroupAllowtrades); - - $this->set(compact('transactionGroupAllowtrades')); - } - - /** - * View method - * - * @param string|null $id Transaction Group Allowtrade id. - * @return \Cake\Http\Response|null - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function view($id = null) - { - $transactionGroupAllowtrade = $this->TransactionGroupAllowtrades->get($id, [ - 'contain' => ['Transactions', 'Groups'] - ]); - - $this->set('transactionGroupAllowtrade', $transactionGroupAllowtrade); - } - - /** - * Add method - * - * @return \Cake\Http\Response|null Redirects on successful add, renders view otherwise. - */ - public function add() - { - $transactionGroupAllowtrade = $this->TransactionGroupAllowtrades->newEntity(); - if ($this->request->is('post')) { - $transactionGroupAllowtrade = $this->TransactionGroupAllowtrades->patchEntity($transactionGroupAllowtrade, $this->request->getData()); - if ($this->TransactionGroupAllowtrades->save($transactionGroupAllowtrade)) { - $this->Flash->success(__('The transaction group allowtrade has been saved.')); - - return $this->redirect(['action' => 'index']); - } - $this->Flash->error(__('The transaction group allowtrade could not be saved. Please, try again.')); - } - $transactions = $this->TransactionGroupAllowtrades->Transactions->find('list', ['limit' => 200]); - $groups = $this->TransactionGroupAllowtrades->Groups->find('list', ['limit' => 200]); - $this->set(compact('transactionGroupAllowtrade', 'transactions', 'groups')); - } - - /** - * Edit method - * - * @param string|null $id Transaction Group Allowtrade id. - * @return \Cake\Http\Response|null Redirects on successful edit, renders view otherwise. - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function edit($id = null) - { - $transactionGroupAllowtrade = $this->TransactionGroupAllowtrades->get($id, [ - 'contain' => [] - ]); - if ($this->request->is(['patch', 'post', 'put'])) { - $transactionGroupAllowtrade = $this->TransactionGroupAllowtrades->patchEntity($transactionGroupAllowtrade, $this->request->getData()); - if ($this->TransactionGroupAllowtrades->save($transactionGroupAllowtrade)) { - $this->Flash->success(__('The transaction group allowtrade has been saved.')); - - return $this->redirect(['action' => 'index']); - } - $this->Flash->error(__('The transaction group allowtrade could not be saved. Please, try again.')); - } - $transactions = $this->TransactionGroupAllowtrades->Transactions->find('list', ['limit' => 200]); - $groups = $this->TransactionGroupAllowtrades->Groups->find('list', ['limit' => 200]); - $this->set(compact('transactionGroupAllowtrade', 'transactions', 'groups')); - } - - /** - * Delete method - * - * @param string|null $id Transaction Group Allowtrade id. - * @return \Cake\Http\Response|null Redirects to index. - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function delete($id = null) - { - $this->request->allowMethod(['post', 'delete']); - $transactionGroupAllowtrade = $this->TransactionGroupAllowtrades->get($id); - if ($this->TransactionGroupAllowtrades->delete($transactionGroupAllowtrade)) { - $this->Flash->success(__('The transaction group allowtrade has been deleted.')); - } else { - $this->Flash->error(__('The transaction group allowtrade could not be deleted. Please, try again.')); - } - - return $this->redirect(['action' => 'index']); - } -} diff --git a/community_server/src/Controller/TransactionGroupCreatesController.php b/community_server/src/Controller/TransactionGroupCreatesController.php deleted file mode 100644 index 57e5c7d8f..000000000 --- a/community_server/src/Controller/TransactionGroupCreatesController.php +++ /dev/null @@ -1,113 +0,0 @@ -paginate = [ - 'contain' => ['Transactions', 'StateGroups'] - ]; - $transactionGroupCreates = $this->paginate($this->TransactionGroupCreates); - - $this->set(compact('transactionGroupCreates')); - } - - /** - * View method - * - * @param string|null $id Transaction Group Create id. - * @return \Cake\Http\Response|null - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function view($id = null) - { - $transactionGroupCreate = $this->TransactionGroupCreates->get($id, [ - 'contain' => ['Transactions', 'StateGroups'] - ]); - - $this->set('transactionGroupCreate', $transactionGroupCreate); - } - - /** - * Add method - * - * @return \Cake\Http\Response|null Redirects on successful add, renders view otherwise. - */ - public function add() - { - $transactionGroupCreate = $this->TransactionGroupCreates->newEntity(); - if ($this->request->is('post')) { - $transactionGroupCreate = $this->TransactionGroupCreates->patchEntity($transactionGroupCreate, $this->request->getData()); - if ($this->TransactionGroupCreates->save($transactionGroupCreate)) { - $this->Flash->success(__('The transaction group create has been saved.')); - - return $this->redirect(['action' => 'index']); - } - $this->Flash->error(__('The transaction group create could not be saved. Please, try again.')); - } - $transactions = $this->TransactionGroupCreates->Transactions->find('list', ['limit' => 200]); - $stateGroups = $this->TransactionGroupCreates->StateGroups->find('list', ['limit' => 200]); - $this->set(compact('transactionGroupCreate', 'transactions', 'stateGroups')); - } - - /** - * Edit method - * - * @param string|null $id Transaction Group Create id. - * @return \Cake\Http\Response|null Redirects on successful edit, renders view otherwise. - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function edit($id = null) - { - $transactionGroupCreate = $this->TransactionGroupCreates->get($id, [ - 'contain' => [] - ]); - if ($this->request->is(['patch', 'post', 'put'])) { - $transactionGroupCreate = $this->TransactionGroupCreates->patchEntity($transactionGroupCreate, $this->request->getData()); - if ($this->TransactionGroupCreates->save($transactionGroupCreate)) { - $this->Flash->success(__('The transaction group create has been saved.')); - - return $this->redirect(['action' => 'index']); - } - $this->Flash->error(__('The transaction group create could not be saved. Please, try again.')); - } - $transactions = $this->TransactionGroupCreates->Transactions->find('list', ['limit' => 200]); - $stateGroups = $this->TransactionGroupCreates->StateGroups->find('list', ['limit' => 200]); - $this->set(compact('transactionGroupCreate', 'transactions', 'stateGroups')); - } - - /** - * Delete method - * - * @param string|null $id Transaction Group Create id. - * @return \Cake\Http\Response|null Redirects to index. - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function delete($id = null) - { - $this->request->allowMethod(['post', 'delete']); - $transactionGroupCreate = $this->TransactionGroupCreates->get($id); - if ($this->TransactionGroupCreates->delete($transactionGroupCreate)) { - $this->Flash->success(__('The transaction group create has been deleted.')); - } else { - $this->Flash->error(__('The transaction group create could not be deleted. Please, try again.')); - } - - return $this->redirect(['action' => 'index']); - } -} diff --git a/community_server/src/Controller/TransactionSendCoinsController.php b/community_server/src/Controller/TransactionSendCoinsController.php deleted file mode 100644 index bffc88290..000000000 --- a/community_server/src/Controller/TransactionSendCoinsController.php +++ /dev/null @@ -1,469 +0,0 @@ -loadComponent('GradidoNumber'); - $this->loadComponent('JsonRequestClient'); - //$this->Auth->allow(['add', 'edit']); - $this->Auth->allow('create'); - $this->Auth->allow('createRaw'); - $this->Auth->allow('ajaxCreate'); - $this->set( - 'naviHierarchy', - (new NaviHierarchy())-> - add(new NaviHierarchyEntry(__('Startseite'), 'Dashboard', 'index', false))-> - add(new NaviHierarchyEntry(__('Überweisung'), 'TransactionSendCoins', 'create', true)) - ); - } - - /** - * Index method - * - * @return \Cake\Http\Response|null - */ - public function index() - { - $this->paginate = [ - 'contain' => ['Transactions', 'StateUsers', 'ReceiverUsers'] - ]; - $transactionSendCoins = $this->paginate($this->TransactionSendCoins); - $simple = $this->TransactionSendCoins->find('all'); - - $this->set(compact('transactionSendCoins', 'simple')); - } - - /** - * View method - * - * @param string|null $id Transaction Send Coin id. - * @return \Cake\Http\Response|null - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function view($id = null) - { - $transactionSendCoin = $this->TransactionSendCoins->get($id, [ - 'contain' => ['Transactions', 'StateUsers', 'ReceiverUsers'] - ]); - - $this->set('transactionSendCoin', $transactionSendCoin); - } - - /** - * Add method - * - * @return \Cake\Http\Response|null Redirects on successful add, renders view otherwise. - */ - public function add() - { - $transactionSendCoin = $this->TransactionSendCoins->newEntity(); - if ($this->request->is('post')) { - $transactionSendCoin = $this->TransactionSendCoins->patchEntity($transactionSendCoin, $this->request->getData()); - if ($this->TransactionSendCoins->save($transactionSendCoin)) { - $this->Flash->success(__('The transaction send coin has been saved.')); - - return $this->redirect(['action' => 'index']); - } - $this->Flash->error(__('The transaction send coin could not be saved. Please, try again.')); - } - $transactions = $this->TransactionSendCoins->Transactions->find('list', ['limit' => 200]); - $stateUsers = $this->TransactionSendCoins->StateUsers->find('list', ['limit' => 200]); - $receiverUsers = $this->TransactionSendCoins->ReceiverUsers->find('list', ['limit' => 200]); - $this->set(compact('transactionSendCoin', 'transactions', 'stateUsers', 'receiverUsers')); - } - - /** - * Edit method - * - * @param string|null $id Transaction Send Coin id. - * @return \Cake\Http\Response|null Redirects on successful edit, renders view otherwise. - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function edit($id = null) - { - $transactionSendCoin = $this->TransactionSendCoins->get($id, [ - 'contain' => [] - ]); - if ($this->request->is(['patch', 'post', 'put'])) { - $transactionSendCoin = $this->TransactionSendCoins->patchEntity($transactionSendCoin, $this->request->getData()); - if ($this->TransactionSendCoins->save($transactionSendCoin)) { - $this->Flash->success(__('The transaction send coin has been saved.')); - - return $this->redirect(['action' => 'index']); - } - $this->Flash->error(__('The transaction send coin could not be saved. Please, try again.')); - } - $transactions = $this->TransactionSendCoins->Transactions->find('list', ['limit' => 200]); - $stateUsers = $this->TransactionSendCoins->StateUsers->find('list', ['limit' => 200]); - $receiverUsers = $this->TransactionSendCoins->ReceiverUsers->find('list', ['limit' => 200]); - $this->set(compact('transactionSendCoin', 'transactions', 'stateUsers', 'receiverUsers')); - } - - public function create() - { - /*$locale = I18n::getLocale(); - $defaultLocale = I18n::getDefaultLocale(); - echo "locale: $locale, default locale: $defaultLocale
    "; - * */ - $startTime = microtime(true); - $this->viewBuilder()->setLayout('frontend'); - $session = $this->getRequest()->getSession(); - $user = $session->read('StateUser'); -// var_dump($user); - if(!$user) { - //return $this->redirect(Router::url('/', true) . 'account/', 303); - $result = $this->requestLogin(); - if($result !== true) { - return $result; - } - $user = $session->read('StateUser'); - } - - $known_groups = $this->JsonRequestClient->sendRequest(json_encode([ - 'ask' => ['groups'] - ]), '/networkInfos'); - - - $transferForm = new TransferForm(); - $this->set('transferForm', $transferForm); - $this->set('timeUsed', microtime(true) - $startTime); - $this->set('groups', $known_groups['data']['data']['groups']); - $this->set('user', $user); - - if ($this->request->is('post')) { - //$this->Flash->error(__('Wird zurzeit noch entwickelt!')); - - $requestData = $this->request->getData(); - $mode = 'next'; - if(isset($requestData['add'])) {$mode = 'add'; } - if($transferForm->validate($requestData)) { - - $amountCent = $this->GradidoNumber->parseInputNumberToCentNumber($requestData['amount']); - - if(!isset($user['balance']) || $amountCent > $user['balance']) { - $this->Flash->error(__('Du hast nicht genug Gradidos!')); - return; - } - - $receiverEmail = $requestData['email']; - if($receiverEmail === $user['email']) { - $this->Flash->error(__('Du kannst dir selbst keine Gradidos senden!')); - return; - } - $requestAnswear = $this->JsonRequestClient->sendRequest(json_encode([ - 'session_id' => $session->read('session_id'), - 'transaction_type' => 'transfer', - 'memo' => $requestData['memo'], - 'amount' => $amountCent, - 'target_group' => $known_groups['data']['data']['groups'][$requestData['group']], - 'target_email' => $receiverEmail, - 'blockchain_type' => $this->blockchainType - ]), '/createTransaction'); - - if('success' == $requestAnswear['state'] && 'success' == $requestAnswear['data']['state']) { - $pendingTransactionCount = $session->read('Transactions.pending'); - if($pendingTransactionCount == null) { - $pendingTransactionCount = 1; - } else { - $pendingTransactionCount++; - } - $session->write('Transactions.pending', $pendingTransactionCount); - //echo "pending: " . $pendingTransactionCount; - if($mode === 'next') { - return $this->redirect($this->loginServerUrl . 'account/checkTransactions', 303); - } else { - $this->Flash->success(__('Transaction submitted for review.')); - } - } else { - - /* - * if request contain unknown parameter format, shouldn't happen't at all - * {"state": "error", "msg": "parameter format unknown"} - * if json parsing failed - * {"state": "error", "msg": "json exception", "details":"exception text"} - * if session_id is zero or not set - * {"state": "error", "msg": "session_id invalid"} - * if session id wasn't found on login server, if server was restartet or user logged out (also per timeout, default: 15 minutes) - * {"state": "error", "msg": "session not found"} - * if session hasn't active user, shouldn't happen't at all, login-server should be checked if happen - * {"state": "code error", "msg":"user is zero"} - * if transaction type not known - * {"state": "error", "msg":"transaction_type unknown"} - * if receiver wasn't known to Login-Server - * {"state": "not found", "msg":"receiver not found"} - * if receiver account disabled, and therefor cannto receive any coins - * {"state": "disabled", "msg":"receiver is disabled"} - * if transaction was okay and will be further proccessed - * {"state":"success"} - */ - $answear_data = $requestAnswear['data']; - if($answear_data['state'] === 'error') { - if($answear_data['msg'] === 'session_id invalid' || $answear_data['msg'] === 'session not found') { - $this->Flash->error(__('Fehler mit der Session, bitte logge dich erneut ein!')); - $this->set('timeUsed', microtime(true) - $startTime); - return; - } - if($answear_data['msg'] === 'user not in group') { - $this->Flash->error(__('Empfänger befindet sich nicht in Zielgruppe!')); - $this->set('timeUsed', microtime(true) - $startTime); - return; - } - if($answear_data['msg'] === 'memo is not set or not in expected range [5;150]') { - $this->Flash->error(__('Ein Verwendungszweck zwischen 5 und 150 Zeichen wird benötig!')); - $this->set('timeUsed', microtime(true) - $startTime); - return; - } - } else if($answear_data['state'] === 'not found' && $answear_data['msg'] === 'receiver not found') { - $this->Flash->error(__('Der Empfänger wurde nicht auf dem Login-Server gefunden, hat er sein Konto schon angelegt?')); - $this->set('timeUsed', microtime(true) - $startTime); - return; - } else if($answear_data['state'] === 'disabled') { - $this->Flash->error(__('Der Empfänger ist deaktiviert, daher können ihm zurzeit keine Gradidos gesendet werden.')); - $this->set('timeUsed', microtime(true) - $startTime); - return; - } else { - $this->Flash->error(__('Unbehandelter Fehler: ') . json_encode($answear_data)); - $this->set('timeUsed', microtime(true) - $startTime); - return; - } - - } - } - } - - $this->set('timeUsed', microtime(true) - $startTime); - } - - public function ajaxCreate() - { - if ($this->request->is('post')) { - $startTime = microtime(true); - $jsonData = $this->request->input('json_decode', true); - $session_id = $jsonData['session_id']; - if(!$session_id) { - return $this->returnJson(['state' => 'error', 'msg' => 'invalid session id']); - } - - $login_result = $this->requestLogin($session_id, false); - if($login_result !== true) { - return $this->returnJson($login_result); - } - $session = $this->getRequest()->getSession(); - $user = $session->read('StateUser'); - - $receiverPubKeyHex = ''; - $senderPubKeyHex = $user['public_hex']; - - if(!isset($jsonData['amount']) || !isset($jsonData['email'])) { - return $this->returnJson(['state' => 'parameter missing', 'msg' => 'amount and/or email not set']); - } - $amount = intval($jsonData['amount']); - if($amount < 0) { - return $this->returnJson(['state' => 'error', 'msg' => 'amout must be > 0 and int']); - } - - if(!isset($user['balance']) || $jsonData['amount'] > $user['balance']) { - return $this->returnJson(['state' => 'error', 'msg' => 'not enough GDD']); - } - $memo = ''; - if(isset($jsonData['memo'])) { - $memo = $jsonData['memo']; - } - - $receiverEmail = $jsonData['email']; - if($receiverEmail === $user['email']) { - return $this->returnJson(['state' => 'error', 'msg' => 'sender and receiver email are the same']); - } - - $requestAnswear = $this->JsonRequestClient->sendRequest(json_encode([ - 'session_id' => $session_id, - 'email' => $receiverEmail, - 'ask' => ['user.pubkeyhex', 'user.disabled'] - ]), '/getUserInfos'); - if('success' == $requestAnswear['state'] && 'success' == $requestAnswear['data']['state']) { - // will be allways 64 byte long, even if it is empty - $receiverPubKeyHex = $requestAnswear['data']['userData']['pubkeyhex']; - } else { - return $this->returnJson([ - 'state' => 'error', - 'msg' => 'receiver email not found on login-server', - 'details' => $requestAnswear, - 'timeUsed' => microtime(true) - $startTime - ]); - } - if($requestAnswear['data']['userData']['disabled']) { - return $this->returnJson([ - 'state' => 'error', - 'msg' => 'receiver is currently disabled, he cannot receive payments', - 'timeUsed' => microtime(true) - $startTime - ]); - } - - - //var_dump($sessionStateUser); - - $builderResult = TransactionTransfer::build( - $amount, - $memo, - $receiverPubKeyHex, - $senderPubKeyHex - ); - $auto_sign = true; - if(isset($jsonData['auto_sign'])) { - $auto_sign = $jsonData['auto_sign']; - } - if($builderResult['state'] === 'success') { - - $http = new Client(); - try { - $loginServer = Configure::read('LoginServer'); - $url = $loginServer['host'] . ':' . $loginServer['port']; - - $response = $http->post($url . '/checkTransaction', json_encode([ - 'session_id' => $session_id, - 'transaction_base64' => base64_encode($builderResult['transactionBody']->serializeToString()), - 'auto_sign' => $auto_sign, - 'balance' => $user['balance'] - ]), ['type' => 'json']); - $json = $response->getJson(); - if($json['state'] != 'success') { - if($json['msg'] == 'session not found') { - $session->destroy(); - return $this->returnJson([ - 'state' => 'error', - 'msg' => 'session not found', - 'details' => $session_id, - 'timeUsed' => microtime(true) - $startTime - ]); - //$this->Flash->error(__('session not found, please login again')); - } else { - return $this->returnJson([ - 'state' => 'error', - 'msg' => 'login server return error', - 'details' => $json, - 'timeUsed' => microtime(true) - $startTime - ]); - } - } else { - return $this->returnJson(['state' => 'success', 'timeUsed' => microtime(true) - $startTime]); - } - - } catch(\Exception $e) { - $msg = $e->getMessage(); - //$this->Flash->error(__('error http request: ') . $msg); - return $this->returnJson([ - 'state' => 'error', - 'msg' => 'error http request', - 'details' => $msg, - 'timeUsed' => microtime(true) - $startTime - ]); - } - - } else { - return $this->returnJson([ - 'state' => 'error', - 'msg' => 'no valid receiver public key given', - 'details' => $receiverPubKeyHex, - 'timeUsed' => microtime(true) - $startTime - ]); - } - } - return $this->returnJson(['state' => 'error', 'msg' => 'no post request']); - } - - public function createRaw() - { - $startTime = microtime(true); - $this->viewBuilder()->setLayout('frontend'); - - $transferRawForm = new TransferRawForm(); - $this->set('transferRawForm', $transferRawForm); - - if ($this->request->is('post')) { - $requestData = $this->request->getData(); - if($transferRawForm->validate($requestData)) { - $amountCent = $this->GradidoNumber->parseInputNumberToCentNumber($requestData['amount']); - $sender = ['priv' => $requestData['sender_privkey_hex'], 'pub' => $requestData['sender_pubkey_hex']]; - $reciver = ['pub' => $requestData['receiver_pubkey_hex']]; - - $builderResult = TransactionTransfer::build( - $amountCent, - $requestData['memo'], - $reciver['pub'], - $sender['pub'] - ); - if($builderResult['state'] === 'success') { - $protoTransaction = Transaction::build($builderResult['transactionBody'], $sender); - $transaction = new Transaction($protoTransaction); - if(!$transaction->validate()) { - $this->Flash->error(__('Error validating transaction')); - } else { - if(!$transaction->save()) { - $this->Flash->error(__('Error saving transaction')); - } else { - $this->Flash->success(__('Gradidos erfolgreich überwiesen!')); - } - } - } else { - $this->Flash->error(__('Error building transaction')); - } - - } - //var_dump($requestData); - // - //var_dump($data); - - } - - $this->set('timeUsed', microtime(true) - $startTime); - } - - /** - * Delete method - * - * @param string|null $id Transaction Send Coin id. - * @return \Cake\Http\Response|null Redirects to index. - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function delete($id = null) - { - $this->request->allowMethod(['post', 'delete']); - $transactionSendCoin = $this->TransactionSendCoins->get($id); - if ($this->TransactionSendCoins->delete($transactionSendCoin)) { - $this->Flash->success(__('The transaction send coin has been deleted.')); - } else { - $this->Flash->error(__('The transaction send coin could not be deleted. Please, try again.')); - } - - return $this->redirect(['action' => 'index']); - } -} diff --git a/community_server/src/Controller/TransactionSignaturesController.php b/community_server/src/Controller/TransactionSignaturesController.php deleted file mode 100644 index 91aea9558..000000000 --- a/community_server/src/Controller/TransactionSignaturesController.php +++ /dev/null @@ -1,111 +0,0 @@ -paginate = [ - 'contain' => ['Transactions'] - ]; - $transactionSignatures = $this->paginate($this->TransactionSignatures); - - $this->set(compact('transactionSignatures')); - } - - /** - * View method - * - * @param string|null $id Transaction Signature id. - * @return \Cake\Http\Response|null - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function view($id = null) - { - $transactionSignature = $this->TransactionSignatures->get($id, [ - 'contain' => ['Transactions'] - ]); - - $this->set('transactionSignature', $transactionSignature); - } - - /** - * Add method - * - * @return \Cake\Http\Response|null Redirects on successful add, renders view otherwise. - */ - public function add() - { - $transactionSignature = $this->TransactionSignatures->newEntity(); - if ($this->request->is('post')) { - $transactionSignature = $this->TransactionSignatures->patchEntity($transactionSignature, $this->request->getData()); - if ($this->TransactionSignatures->save($transactionSignature)) { - $this->Flash->success(__('The transaction signature has been saved.')); - - return $this->redirect(['action' => 'index']); - } - $this->Flash->error(__('The transaction signature could not be saved. Please, try again.')); - } - $transactions = $this->TransactionSignatures->Transactions->find('list', ['limit' => 200]); - $this->set(compact('transactionSignature', 'transactions')); - } - - /** - * Edit method - * - * @param string|null $id Transaction Signature id. - * @return \Cake\Http\Response|null Redirects on successful edit, renders view otherwise. - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function edit($id = null) - { - $transactionSignature = $this->TransactionSignatures->get($id, [ - 'contain' => [] - ]); - if ($this->request->is(['patch', 'post', 'put'])) { - $transactionSignature = $this->TransactionSignatures->patchEntity($transactionSignature, $this->request->getData()); - if ($this->TransactionSignatures->save($transactionSignature)) { - $this->Flash->success(__('The transaction signature has been saved.')); - - return $this->redirect(['action' => 'index']); - } - $this->Flash->error(__('The transaction signature could not be saved. Please, try again.')); - } - $transactions = $this->TransactionSignatures->Transactions->find('list', ['limit' => 200]); - $this->set(compact('transactionSignature', 'transactions')); - } - - /** - * Delete method - * - * @param string|null $id Transaction Signature id. - * @return \Cake\Http\Response|null Redirects to index. - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function delete($id = null) - { - $this->request->allowMethod(['post', 'delete']); - $transactionSignature = $this->TransactionSignatures->get($id); - if ($this->TransactionSignatures->delete($transactionSignature)) { - $this->Flash->success(__('The transaction signature has been deleted.')); - } else { - $this->Flash->error(__('The transaction signature could not be deleted. Please, try again.')); - } - - return $this->redirect(['action' => 'index']); - } -} diff --git a/community_server/src/Controller/TransactionTypesController.php b/community_server/src/Controller/TransactionTypesController.php deleted file mode 100644 index 8256b22eb..000000000 --- a/community_server/src/Controller/TransactionTypesController.php +++ /dev/null @@ -1,106 +0,0 @@ -paginate($this->TransactionTypes); - - $this->set(compact('transactionTypes')); - } - - /** - * View method - * - * @param string|null $id Transaction Type id. - * @return \Cake\Http\Response|null - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function view($id = null) - { - $transactionType = $this->TransactionTypes->get($id, [ - 'contain' => ['Transactions'] - ]); - - $this->set('transactionType', $transactionType); - } - - /** - * Add method - * - * @return \Cake\Http\Response|null Redirects on successful add, renders view otherwise. - */ - public function add() - { - $transactionType = $this->TransactionTypes->newEntity(); - if ($this->request->is('post')) { - $transactionType = $this->TransactionTypes->patchEntity($transactionType, $this->request->getData()); - if ($this->TransactionTypes->save($transactionType)) { - $this->Flash->success(__('The transaction type has been saved.')); - - return $this->redirect(['action' => 'index']); - } - $this->Flash->error(__('The transaction type could not be saved. Please, try again.')); - } - $this->set(compact('transactionType')); - } - - /** - * Edit method - * - * @param string|null $id Transaction Type id. - * @return \Cake\Http\Response|null Redirects on successful edit, renders view otherwise. - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function edit($id = null) - { - $transactionType = $this->TransactionTypes->get($id, [ - 'contain' => [] - ]); - if ($this->request->is(['patch', 'post', 'put'])) { - $transactionType = $this->TransactionTypes->patchEntity($transactionType, $this->request->getData()); - if ($this->TransactionTypes->save($transactionType)) { - $this->Flash->success(__('The transaction type has been saved.')); - - return $this->redirect(['action' => 'index']); - } - $this->Flash->error(__('The transaction type could not be saved. Please, try again.')); - } - $this->set(compact('transactionType')); - } - - /** - * Delete method - * - * @param string|null $id Transaction Type id. - * @return \Cake\Http\Response|null Redirects to index. - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function delete($id = null) - { - $this->request->allowMethod(['post', 'delete']); - $transactionType = $this->TransactionTypes->get($id); - if ($this->TransactionTypes->delete($transactionType)) { - $this->Flash->success(__('The transaction type has been deleted.')); - } else { - $this->Flash->error(__('The transaction type could not be deleted. Please, try again.')); - } - - return $this->redirect(['action' => 'index']); - } -} diff --git a/community_server/src/Controller/TransactionsController.php b/community_server/src/Controller/TransactionsController.php deleted file mode 100644 index 67526dfcc..000000000 --- a/community_server/src/Controller/TransactionsController.php +++ /dev/null @@ -1,450 +0,0 @@ -loadComponent('GradidoNumber'); - $this->loadComponent('JsonRpcRequestClient'); - $this->Auth->allow(['decode', 'manualTransaction']); - - } - /** - * Index method - * - * @return \Cake\Http\Response|null - */ - public function index() - { - $this->paginate = [ - 'contain' => ['TransactionTypes'] - ]; - $transactions = $this->paginate($this->Transactions); - - $this->set(compact('transactions')); - } - - public function synchronizeWithStateUserTransactions() - { - $startTime = microtime(true); - $missing_transaction_ids = []; - $transaction_ids = $this->Transactions - ->find('all') - ->select(['id', 'transaction_type_id']) - ->order(['id']) - ->all() - ; - $state_user_transaction_ids = $this->Transactions->StateUserTransactions - ->find('all') - ->select(['transaction_id']) - ->group(['transaction_id']) - ->order(['transaction_id']) - ->toArray() - ; - $i2 = 0; - $count1 = count($transaction_ids); - $count2 = count($state_user_transaction_ids); - foreach($transaction_ids as $i1 => $tr_id) { - //echo "$i1: "; - if($i2 >= $count2) { - $missing_transaction_ids[] = $tr_id; - //echo "adding to missing: $tr_id, continue
    "; - continue; - } - $stu_id = $state_user_transaction_ids[$i2]; - if($tr_id->id == $stu_id->transaction_id) { - $i2++; - //echo "after i2++: $i2
    "; - } else if($tr_id->id < $stu_id->transaction_id) { - $missing_transaction_ids[] = $tr_id; - //echo "adding to missing: $tr_id
    "; - } - } - - if($this->request->is('POST')) { - $tablesForType = [ - 1 => $this->Transactions->TransactionCreations, - 2 => $this->Transactions->TransactionSendCoins, - 3 => $this->Transactions->TransactionGroupCreates, - 4 => $this->Transactions->TransactionGroupAddaddress, - 5 => $this->Transactions->TransactionGroupAddaddress - ]; - $idsForType = []; - foreach($missing_transaction_ids as $i => $transaction) { - if(!isset($idsForType[$transaction->transaction_type_id])) { - $idsForType[$transaction->transaction_type_id] = []; - } - $idsForType[$transaction->transaction_type_id][] = $transaction->id; - if($i > 200) break; - } - $entities = []; - $state_user_ids = []; - foreach($idsForType as $type_id => $transaction_ids) { - $specific_transactions = $tablesForType[$type_id]->find('all')->where(['transaction_id IN' => $transaction_ids])->toArray(); - $keys = $tablesForType[$type_id]->getSchema()->columns(); - //var_dump($keys); - foreach($specific_transactions as $specific) { - - foreach($keys as $key) { - if(preg_match('/_user_id/', $key)) { - $entity = $this->Transactions->StateUserTransactions->newEntity(); - $entity->transaction_id = $specific['transaction_id']; - $entity->transaction_type_id = $type_id; - $entity->state_user_id = $specific[$key]; - if(!in_array($entity->state_user_id, $state_user_ids)) { - array_push($state_user_ids, $entity->state_user_id); - } - $entities[] = $entity; - } - } - } - } - //var_dump($entities); - $stateUsersTable = TableRegistry::getTableLocator()->get('StateUsers'); - $existingStateUsers = $stateUsersTable->find('all')->select(['id'])->where(['id IN' => $state_user_ids])->order(['id'])->all(); - $existing_state_user_ids = []; - $finalEntities = []; - foreach($existingStateUsers as $stateUser) { - $existing_state_user_ids[] = $stateUser->id; - } - foreach($entities as $entity) { - if(in_array($entity->state_user_id, $existing_state_user_ids)) { - array_push($finalEntities, $entity); - } - } - - - $results = $this->Transactions->StateUserTransactions->saveMany($finalEntities); - foreach($entities as $i => $entity) { - $errors = $entity->getErrors(); - /* if(count($errors)) { - echo "$i: "; - echo json_encode($errors); - echo "
    "; - echo "state_user_id: " . $entity->state_user_id; - echo "
    "; - }*/ - } - $this->set('results', $results); - $this->set('entities', $entities); - } - - $this->set('missing_transactions', $missing_transaction_ids); - $this->set('count1', $count1); - $this->set('count2', $count2); - $timeUsed = microtime(true) - $startTime; - $this->set('timeUsed', $timeUsed); - } - - /** - * View method - * - * @param string|null $id Transaction id. - * @return \Cake\Http\Response|null - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function view($id = null) - { - $transaction = $this->Transactions->get($id, [ - 'contain' => ['TransactionTypes', 'TransactionCreations', 'TransactionGroupAddaddress', 'TransactionGroupAllowtrades', 'TransactionGroupCreates', 'TransactionSendCoins', 'TransactionSignatures'] - ]); - - $this->set('transaction', $transaction); - } - - public function manualTransaction() - { - if ($this->request->is('post')) { - $data = $this->request->getData(); - $type = $data['type']; - - $transaction = new \Proto\Gradido\GradidoTransaction(); - $transactionBody = new \Proto\Gradido\TransactionBody(); - $transactionBody->setMemo($data['memo']); - $created = new \Proto\Gradido\TimestampSeconds(); - $now = new Time(); - $created->setSeconds($now->getTimestamp()); - $transactionBody->setCreated($created); - if($type == "creation") { - $creation = new \Proto\Gradido\GradidoCreation(); - $target_date = new \Proto\Gradido\TimestampSeconds(); - $target_time = new Time($data['target_date']); - $target_date->setSeconds($target_time->getTimestamp()); - $creation->setTargetDate($target_date); - $receiver = new \Proto\Gradido\TransferAmount(); - $receiver->setAmount(intval($data['amount'])); - $receiver->setPubkey(hex2bin($data['target_public_key'])); - $creation->setReceiver($receiver); - $transactionBody->setCreation($creation); - } else if($type == "transfer") { - $transfer = new \Proto\Gradido\GradidoTransfer(); - $local_transfer = new \Proto\Gradido\LocalTransfer(); - $sender = new \Proto\Gradido\TransferAmount(); - $sender->setAmount(intval($data['amount'])); - $sender->setPubkey(hex2bin($data['sender_public_key'])); - $local_transfer->setSender($sender); - $local_transfer->setReceiver(hex2bin($data['receiver_public_key'])); - $transfer->setLocal($local_transfer); - $transactionBody->setTransfer($transfer); - } - $body_bytes = $transactionBody->serializeToString(); - $transaction->setBodyBytes($body_bytes); - - $protoSigMap = new \Proto\Gradido\SignatureMap(); - $sigPairs = $protoSigMap->getSigPair(); - //echo "sigPairs: "; var_dump($sigPairs); echo "
    "; - //return null; - - // sign with keys - //foreach($keys as $key) { - $sigPair = new \Proto\Gradido\SignaturePair(); - $sigPair->setPubKey(hex2bin($data['signer_public_key'])); - - $signature = sodium_crypto_sign_detached($body_bytes, hex2bin($data['signer_private_key'])); - echo "signature: " . bin2hex($signature). "
    "; - $sigPair->setEd25519($signature); - - $sigPairs[] = $sigPair; - // SODIUM_BASE64_VARIANT_URLSAFE_NO_PADDING - // SODIUM_BASE64_VARIANT_ORIGINAL - $transaction->setSigMap($protoSigMap); - //var_dump($protoSigMap); - $transaction_bin = $transaction->serializeToString(); -// $url_safe = sodium_bin2base64($transaction_bin, sodium_base64_VARIANT_ORIGINAL); - $base64 = [ - //'original' => sodium_bin2base64($transaction_bin, sodium_base64_VARIANT_ORIGINAL), - //'original_nopadding' => sodium_bin2base64($transaction_bin, sodium_base64_VARIANT_ORIGINAL_NO_PADDING), - //'urlsafe' => sodium_bin2base64($transaction_bin, sodium_base64_VARIANT_URLSAFE), - 'urlsafe_nopadding' => sodium_bin2base64($transaction_bin, SODIUM_BASE64_VARIANT_URLSAFE_NO_PADDING), - 'php' => base64_encode($transaction_bin) - - ]; - - $this->set('base64', $base64); - } - } - - public function decode() - { - $this->viewBuilder()->setLayout('frontend'); - if ($this->request->is('post')) { - $base64 = $this->request->getData('base64'); - if(!$base64 || $base64 == '') { - $this->Flash->error(__('No valid data given, please try again.')); - } else { - try { - $transactionBin = sodium_base642bin($base64, SODIUM_BASE64_VARIANT_URLSAFE_NO_PADDING); - } catch(Exception $ex) { - var_dump($ex); - } - $transaction = new TransactionBody($transactionBin); - if($transaction->hasErrors()) { - $this->set('errors', $transaction->getErrors()); - } else { - //$transaction->validate(); - if($transaction->hasErrors()) { - $this->set('errors', $transaction->getErrors()); - } - //var_dump($transaction); - echo "
    bin:
    "; - var_dump($transactionBin); - echo "
    "; - $this->set('transaction', $transaction); - } - - } - } - - } - - public function sendToNode() { - $this->viewBuilder()->setLayout('frontend'); - $startTime = microtime(true); - - //$loginServer = Configure::read('LoginServer'); - - $jsonRpcResult = $this->JsonRpcRequestClient->request('getlasttransaction', []); - $result = $jsonRpcResult['result']; - //var_dump($result); - if($result['state'] != 'success') { - $this->Flash->error(__('error retriving last saved transaction from gradido node.')); - $timeUsed = microtime(true) - $startTime; - $this->set('timeUsed', $timeUsed); - return; - } - - $firstId = 1; - if($result['transaction'] != '') { - $lastKnowTransaction = new Transaction($result['transaction']); - $firstId = $lastKnowTransaction->getId()+1; - } - - $transactionIDEntities = $this->Transactions - ->find('all') - ->select(['id']) - ->where(['id >=' => $firstId]) - ; - $transactionIDs = []; - foreach($transactionIDEntities as $entity) { - array_push($transactionIDs, $entity->id); - } - - $csfr_token = $this->request->getParam('_csrfToken'); - $this->set('csfr_token', $csfr_token); - $this->set('transactionIds', $transactionIDs); - - $timeUsed = microtime(true) - $startTime; - $this->set('timeUsed', $timeUsed); - - if ($this->request->is('post')) { - $host = $this->request->getData('host'); - $port = $this->request->getData('port'); - //$gradidod = new JsonRpcClient($host . ':' . $port); - - - //var_dump($transactionIDs); - - //$result = $this->JsonRpcRequestClient->request('puttransaction', ['group' => 'Hallo', 'transaction' => 'Hallo2' ]); - - //$result = $gradidod->putTransaction(['group' => 'Hallo', 'transaction' => 'Hallo2' ]); - //var_dump($result); - - $timeUsed = microtime(true) - $startTime; - $this->set('timeUsed', $timeUsed); - } - } - - public function ajaxPutTransactionToGradidoNode() - { - $startTime = microtime(true); - if($this->request->is('post')) { - //$jsonData = $this->request->input('json_decode', true); - $data = $this->request->getData(); - //$user = $jsonData['user']; - //var_dump($data); - $transactionId = $data['transaction_id']; - if($transactionId == null || $transactionId < 1) { - $timeUsed = microtime(true) - $startTime; - return $this->returnJson(['state' => 'error', 'msg' => 'invalid transaction id', 'timeUsed' => $timeUsed]); - } - try { - $transaction = Transaction::fromTable($transactionId); - } catch(Exception $e) { - echo "exception: "; - var_dump($e); - } - if(is_array($transaction)) { - $timeUsed = microtime(true) - $startTime; - $transaction['timeUsed'] = $timeUsed; - return $this->returnJson($transaction); - } else { - $transactionBase64 = base64_encode($transaction->serializeToString()); - //echo "base64:
    $transactionBase64
    "; - - $result = $this->JsonRpcRequestClient->request('puttransaction', [ - 'group' => 'd502c4254defe1842d71c484dc35f56983ce938e3c22058795c7520b62ab9123', - 'transaction' => $transactionBase64 - ]); - - $timeUsed = microtime(true) - $startTime; - $result['timeUsed'] = $timeUsed; - return $this->returnJson($result); - } - //return $this->returnJson(['state' => 'success', 'timeUsed' => $timeUsed]); - } - $timeUsed = microtime(true) - $startTime; - return $this->returnJson(['state' => 'error', 'msg' => 'no post request', 'timeUsed' => $timeUsed]); - } - - /** - * Add method - * - * @return \Cake\Http\Response|null Redirects on successful add, renders view otherwise. - */ - public function add() - { - $transaction = $this->Transactions->newEntity(); - if ($this->request->is('post')) { - $transaction = $this->Transactions->patchEntity($transaction, $this->request->getData()); - if ($this->Transactions->save($transaction)) { - $result = $this->Transactions->updateTxHash($transaction, 'start decay'); - if($result === true) { - $this->Flash->success(__('The transaction has been saved.')); - return $this->redirect(['action' => 'index']); - } else { - $this->Flash->error(__('Error by saving: ' . json_encode($result))); - } - } - $this->Flash->error(__('The transaction could not be saved. Please, try again.')); - } - $stateGroups = $this->Transactions->StateGroups->find('list', ['limit' => 200]); - $transactionTypes = $this->Transactions->TransactionTypes->find('list', ['limit' => 200]); - $blockchainTypes = $this->Transactions->BlockchainTypes->find('list'); - $this->set(compact('transaction', 'stateGroups', 'transactionTypes', 'blockchainTypes')); - } - - /** - * Edit method - * - * @param string|null $id Transaction id. - * @return \Cake\Http\Response|null Redirects on successful edit, renders view otherwise. - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function edit($id = null) - { - $transaction = $this->Transactions->get($id, [ - 'contain' => [] - ]); - if ($this->request->is(['patch', 'post', 'put'])) { - $transaction = $this->Transactions->patchEntity($transaction, $this->request->getData()); - if ($this->Transactions->save($transaction)) { - $this->Flash->success(__('The transaction has been saved.')); - - return $this->redirect(['action' => 'index']); - } - $this->Flash->error(__('The transaction could not be saved. Please, try again.')); - } - $stateGroups = $this->Transactions->StateGroups->find('list', ['limit' => 200]); - $transactionTypes = $this->Transactions->TransactionTypes->find('list', ['limit' => 200]); - $this->set(compact('transaction', 'stateGroups', 'transactionTypes')); - } - - /** - * Delete method - * - * @param string|null $id Transaction id. - * @return \Cake\Http\Response|null Redirects to index. - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function delete($id = null) - { - $this->request->allowMethod(['post', 'delete']); - $transaction = $this->Transactions->get($id); - if ($this->Transactions->delete($transaction)) { - $this->Flash->success(__('The transaction has been deleted.')); - } else { - $this->Flash->error(__('The transaction could not be deleted. Please, try again.')); - } - - return $this->redirect(['action' => 'index']); - } -} diff --git a/community_server/src/Controller/UsersController.php b/community_server/src/Controller/UsersController.php deleted file mode 100644 index f6b0472d3..000000000 --- a/community_server/src/Controller/UsersController.php +++ /dev/null @@ -1,167 +0,0 @@ -set( - 'naviHierarchy', - (new NaviHierarchy())-> - add(new NaviHierarchyEntry(__('Startseite'), 'Dashboard', 'index', false))->add(new NaviHierarchyEntry(__('Benutzerstatistiken'), 'Users', 'statistics', true)) - ); - } - - /** - * Index method - * - * @return \Cake\Http\Response|null - */ - public function index() - { - $users = $this->paginate($this->Users); - - $this->set(compact('users')); - } - - public function statistics() - { - $startTime = microtime(true); - $this->viewBuilder()->setLayout('frontend'); - $users = $this->Users->find('all')->select(['id']); - - //$newUsersThisMonth - $now = new Time(); - $sortDate = $this->getStartEndForMonth($now->month, $now->year); - $newUsersThisMonth = $this->Users->find('all') - ->select(['id']) - ->where(['created >=' => $sortDate[0], 'created <' => $sortDate[1]]); - $lastMonth = new Time(); - $lastMonth = $lastMonth->subMonth(1); - $prevSortDate = $this->getStartEndForMonth($lastMonth->month, $lastMonth->year); - $newUsersLastMonth = $this->Users->find('all') - ->select(['id']) - ->where(['created >=' => $prevSortDate[0], 'created <' => $prevSortDate[1]]); - - // new user sorted after date - $connection = ConnectionManager::get('loginServer'); - $newAccountsPerDay = $connection->execute('SELECT count(id) as count, created FROM users GROUP BY CAST(created as DATE) ORDER BY created DESC ')->fetchAll('assoc'); - - $newAccountsTree = []; - foreach($newAccountsPerDay as $entry) { - $created = new Time($entry['created']); - if(!isset($newAccountsTree[$created->year])) { - $newAccountsTree[$created->year] = []; - } - if(!isset($newAccountsTree[$created->year][$created->month])) { - $newAccountsTree[$created->year][$created->month] = ['count' => 0, 'days' => []]; - } - array_push($newAccountsTree[$created->year][$created->month]['days'], $entry); - $newAccountsTree[$created->year][$created->month]['count'] += intval($entry['count']); - } - - // last 5 new users - $lastUsers = $this->Users->find('all')->order(['created DESC'])->limit(5); - - $timeUsed = microtime(true) - $startTime; - - $this->set(compact( - 'users', 'newUsersThisMonth', 'newUsersLastMonth', - 'timeUsed', 'newAccountsTree', 'lastUsers')); - } - - /** - * View method - * - * @param string|null $id User id. - * @return \Cake\Http\Response|null - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function view($id = null) - { - $user = $this->Users->get($id, [ - 'contain' => ['EmailOptIn', 'UserBackups', 'UserRoles'], - ]); - - $this->set('user', $user); - } - - /** - * Add method - * - * @return \Cake\Http\Response|null Redirects on successful add, renders view otherwise. - */ - public function add() - { - $user = $this->Users->newEntity(); - if ($this->request->is('post')) { - $user = $this->Users->patchEntity($user, $this->request->getData()); - if ($this->Users->save($user)) { - $this->Flash->success(__('The user has been saved.')); - - return $this->redirect(['action' => 'index']); - } - $this->Flash->error(__('The user could not be saved. Please, try again.')); - } - $this->set(compact('user')); - } - - /** - * Edit method - * - * @param string|null $id User id. - * @return \Cake\Http\Response|null Redirects on successful edit, renders view otherwise. - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function edit($id = null) - { - $user = $this->Users->get($id, [ - 'contain' => [], - ]); - if ($this->request->is(['patch', 'post', 'put'])) { - $user = $this->Users->patchEntity($user, $this->request->getData()); - if ($this->Users->save($user)) { - $this->Flash->success(__('The user has been saved.')); - - return $this->redirect(['action' => 'index']); - } - $this->Flash->error(__('The user could not be saved. Please, try again.')); - } - $this->set(compact('user')); - } - - /** - * Delete method - * - * @param string|null $id User id. - * @return \Cake\Http\Response|null Redirects to index. - * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. - */ - public function delete($id = null) - { - $this->request->allowMethod(['post', 'delete']); - $user = $this->Users->get($id); - if ($this->Users->delete($user)) { - $this->Flash->success(__('The user has been deleted.')); - } else { - $this->Flash->error(__('The user could not be deleted. Please, try again.')); - } - - return $this->redirect(['action' => 'index']); - } -} diff --git a/community_server/src/Form/AssignRoleForm.php b/community_server/src/Form/AssignRoleForm.php deleted file mode 100644 index 158fa2296..000000000 --- a/community_server/src/Form/AssignRoleForm.php +++ /dev/null @@ -1,30 +0,0 @@ -addField('role_id', ['type' => 'string']); - } - - function validationDefault(Validator $validator) - { - $validator->setProvider('custom', 'App\Model\Validation\GenericValidation'); - - return $validator; - } - - - protected function _execute(array $data) - { - // Send an email. - return true; - } -} \ No newline at end of file diff --git a/community_server/src/Form/CreationForm.php b/community_server/src/Form/CreationForm.php deleted file mode 100644 index 70b4fce40..000000000 --- a/community_server/src/Form/CreationForm.php +++ /dev/null @@ -1,73 +0,0 @@ -addField('receiver_pubkey_hex', ['type' => 'string']) - ->addField('receiver', ['type' => 'select']) - ->addField('amount', ['type' => 'decimal', 'precision' => 2]) - ->addField('target_date', ['type' => 'date']) - ->addField('memo', ['type' =>'text', 'default' => '', 'rows' => 3, 'maxlength' => 150]); - } - - function validationDefault(Validator $validator) - { - $validator->setProvider('custom', 'App\Model\Validation\TransactionValidation'); - /* - $validator->add('receiver_pubkey_hex', 'length', [ - 'rule' => ['length', 64], - 'message' => 'a valid pubkey in hex format is required (64 character)' - ])->add('receiver_pubkey_hex_select', 'length', [ - 'rule' => ['length', 64], - 'message' => 'a valid pubkey in hex format is required (64 character)', - ]); -*/ - // TODO: add validation for used character to prevent hacking attempts - $validator->add('memo', 'length', [ - 'rule' => ['maxLength', 150], - 'message' => 'max 150 character' - ]) - //->alphaNumeric('memo', __('Only Alpha Numeric Character allowed')) - ->add('memo', 'custom', [ - 'rule' => 'alphaNumeric', - 'provider' => 'custom', - //'message' => __('Only Alpha Numeric Character allowed') - 'message' => __('No HTML Tags like > or < please.') - ]) - ->allowEmptyString('memo', null, 'create') - /*->add('receiver_pubkey_hex', 'custom', [ - 'rule' => 'hexKey64', - 'provider' => 'custom', - 'message' => 'a valid pubkey in hex format is required (64 character)' - ]) - ->allowEmptyString('receiver_pubkey_hex', null, 'create')*/ - ->add('amount', 'custom', [ - 'rule' => 'amount', - 'provider' => 'custom', - 'message' => __('Please give a valid number with maximal 2 decimal places') - ]); - return $validator; - } - /* - * $validator->add('title', 'custom', [ - 'rule' => 'customRule', - 'provider' => 'custom', - 'message' => 'The title is not unique enough' -]); - */ - - protected function _execute(array $data) - { - // Send an email. - return true; - } -} \ No newline at end of file diff --git a/community_server/src/Form/DecodeTransaction.php b/community_server/src/Form/DecodeTransaction.php deleted file mode 100644 index 3ac00faa6..000000000 --- a/community_server/src/Form/DecodeTransaction.php +++ /dev/null @@ -1,8 +0,0 @@ -addField('first_name', ['type' => 'string']) - ->addField('last_name', ['type' => 'string']) - ->addField('profile_img', ['type' => 'string']) - ->addField('profile_desc', ['type' =>'text', 'default' => '', 'rows' => 10, 'maxlength' => 2000]); - } - - function validationDefault(Validator $validator) - { - $validator->setProvider('generic', 'App\Model\Validation\GenericValidation'); - $validator->add('first_name', 'length', [ - 'rule' => ['maxLength', 255], - 'message' => __('The first name should contain max 255 characters') - ]) - ->add('last_name', 'length', [ - 'rule' => ['maxLength', 255], - 'message' => __('The last name should contain max 255 characters') - ]) - ->add('profile_desc', 'length', [ - 'rule' => ['maxLength', 2000], - 'message' => __('The description should contain max 2000 characters') - ]) - ->add('profile_desc', 'generic', [ - 'rule' => 'alphaNumeric', - 'provider' => 'generic', - 'message' => __('No HTML Tags like > or < please.') - ]) - ->allowEmptyString('profile_img', null, 'create') - ->allowEmptyString('profile_desc', null, 'create') - ; - return $validator; - } - - protected function _execute(array $data) - { - // Send an email. (??? xxx) - return true; - } -} diff --git a/community_server/src/Form/TransferForm.php b/community_server/src/Form/TransferForm.php deleted file mode 100644 index cb135ab9e..000000000 --- a/community_server/src/Form/TransferForm.php +++ /dev/null @@ -1,82 +0,0 @@ -addField('email', ['type' => 'string']) - ->addField('group', ['type' => 'string']) - ->addField('amount', ['type' => 'decimal', 'precision' => 2]) - ->addField('memo', ['type' =>'text', 'default' => '', 'rows' => 3, 'maxlength' => 150]); - } - - function validationDefault(Validator $validator) - { - $validator->setProvider('custom', 'App\Model\Validation\TransactionValidation'); - /* - $validator->add('receiver_pubkey_hex', 'length', [ - 'rule' => ['length', 64], - 'message' => 'a valid pubkey in hex format is required (64 character)' - ])->add('receiver_pubkey_hex_select', 'length', [ - 'rule' => ['length', 64], - 'message' => 'a valid pubkey in hex format is required (64 character)', - ]); -*/ - // TODO: add validation for used character to prevent hacking attempts - $validator->add('email', 'format', [ - 'rule' => 'email', - 'message' => __('A valid email address is required') - ]) - ->add('group', 'custom', [ - 'rule' => 'alphaNumeric', - 'provider' => 'custom', - //'message' => __('Only Alpha Numeric Character allowed') - 'message' => __('No HTML Tags like > or < please.') - ]) - ->add('memo', 'length', [ - 'rule' => ['maxLength', 150], - 'message' => __('The memo should contain max 150 character') - ]) - //->alphaNumeric('memo', __('Only Alpha Numeric Character allowed')) - ->add('memo', 'custom', [ - 'rule' => 'alphaNumeric', - 'provider' => 'custom', - //'message' => __('Only Alpha Numeric Character allowed') - 'message' => __('No HTML Tags like > or < please.') - ]) - ->allowEmptyString('memo', null, 'create') - /*->add('receiver_pubkey_hex', 'custom', [ - 'rule' => 'hexKey64', - 'provider' => 'custom', - 'message' => 'a valid pubkey in hex format is required (64 character)' - ]) - ->allowEmptyString('receiver_pubkey_hex', null, 'create')*/ - ->add('amount', 'custom', [ - 'rule' => 'amount', - 'provider' => 'custom', - 'message' => __('Please give a valid positive number with maximal 2 decimal places') - ]); - return $validator; - } - /* - * $validator->add('title', 'custom', [ - 'rule' => 'customRule', - 'provider' => 'custom', - 'message' => 'The title is not unique enough' -]); - */ - - protected function _execute(array $data) - { - // Send an email. - return true; - } -} \ No newline at end of file diff --git a/community_server/src/Form/TransferRawForm.php b/community_server/src/Form/TransferRawForm.php deleted file mode 100644 index 50c548ec5..000000000 --- a/community_server/src/Form/TransferRawForm.php +++ /dev/null @@ -1,73 +0,0 @@ -addField('sender_privkey_hex', ['type' => 'string']) - ->addField('sender_pubkey_hex', ['type' => 'string']) - ->addField('receiver_pubkey_hex', ['type' => 'string']) - ->addField('amount', ['type' => 'decimal', 'precision' => 2]) - ->addField('memo', ['type' =>'text', 'default' => '', 'rows' => 3, 'maxlength' => 150]); - } - - function validationDefault(Validator $validator) - { - $validator->setProvider('custom', 'App\Model\Validation\TransactionValidation'); - - $validator - ->add('memo', 'length', [ - 'rule' => ['maxLength', 150], - 'message' => __('The memo should contain max 150 character') - ]) - ->add('memo', 'custom', [ - 'rule' => 'alphaNumeric', - 'provider' => 'custom', - //'message' => __('Only Alpha Numeric Character allowed') - 'message' => __('No HTML Tags like > or < please.') - ]) - ->allowEmptyString('memo', null, 'create') - ->add('receiver_pubkey_hex', 'custom', [ - 'rule' => 'hexKey64', - 'provider' => 'custom', - 'message' => 'a valid pubkey in hex format is required (64 character)' - ]) - ->add('sender_privkey_hex', 'custom', [ - 'rule' => 'hexKey128', - 'provider' => 'custom', - 'message' => 'a valid privkey in hex format is required (128 character)' - ]) - ->add('sender_pubkey_hex', 'custom', [ - 'rule' => 'hexKey64', - 'provider' => 'custom', - 'message' => 'a valid pubkey in hex format is required (64 character)' - ]) - ->add('amount', 'custom', [ - 'rule' => 'amount', - 'provider' => 'custom', - 'message' => __('Please give a valid positive number with maximal 2 decimal places') - ]); - return $validator; - } - /* - * $validator->add('title', 'custom', [ - 'rule' => 'customRule', - 'provider' => 'custom', - 'message' => 'The title is not unique enough' -]); - */ - - protected function _execute(array $data) - { - // Send an email. - return true; - } -} \ No newline at end of file diff --git a/community_server/src/Form/UserSearchForm.php b/community_server/src/Form/UserSearchForm.php deleted file mode 100644 index c68269920..000000000 --- a/community_server/src/Form/UserSearchForm.php +++ /dev/null @@ -1,58 +0,0 @@ -addField('search', ['type' => 'string']) - ->addField('account_state', ['type' => 'select']); - } - - function validationDefault(Validator $validator) - { - $validator->setProvider('custom', 'App\Model\Validation\GenericValidation'); - /* - $validator->add('receiver_pubkey_hex', 'length', [ - 'rule' => ['length', 64], - 'message' => 'a valid pubkey in hex format is required (64 character)' - ])->add('receiver_pubkey_hex_select', 'length', [ - 'rule' => ['length', 64], - 'message' => 'a valid pubkey in hex format is required (64 character)', - ]); -*/ - // TODO: add validation for used character to prevent hacking attempts - $validator->add('search', 'length', [ - 'rule' => ['maxLength', 50], - 'message' => __('The search text should contain max 50 character') - ]) - //->alphaNumeric('memo', __('Only Alpha Numeric Character allowed')) - ->add('search', 'custom', [ - 'rule' => 'alphaNumeric', - 'provider' => 'custom', - //'message' => __('Only Alpha Numeric Character allowed') - 'message' => __('No HTML Tags like < or > please.') - ]); - return $validator; - } - /* - * $validator->add('title', 'custom', [ - 'rule' => 'customRule', - 'provider' => 'custom', - 'message' => 'The title is not unique enough' -]); - */ - - protected function _execute(array $data) - { - // Send an email. - return true; - } -} \ No newline at end of file diff --git a/community_server/src/Locale/cake.pot b/community_server/src/Locale/cake.pot deleted file mode 100644 index 7d317194e..000000000 --- a/community_server/src/Locale/cake.pot +++ /dev/null @@ -1,29 +0,0 @@ -# LANGUAGE translation of CakePHP Application -# Copyright YEAR NAME -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PROJECT VERSION\n" -"POT-Creation-Date: 2019-11-12 14:40+0000\n" -"PO-Revision-Date: YYYY-mm-DD HH:MM+ZZZZ\n" -"Last-Translator: NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" - -#: Template/Error/error400.ctp:36 -#: Template/Error/error500.ctp:41 -msgid "Error" -msgstr "" - -#: Template/Error/error400.ctp:37 -msgid "The requested address {0} was not found on this server." -msgstr "" - -#: Template/Error/error500.ctp:39 -msgid "An Internal Error Has Occurred" -msgstr "" - diff --git a/community_server/src/Locale/de_DE/default.mo b/community_server/src/Locale/de_DE/default.mo deleted file mode 100644 index c739334c8..000000000 Binary files a/community_server/src/Locale/de_DE/default.mo and /dev/null differ diff --git a/community_server/src/Locale/de_DE/default.po b/community_server/src/Locale/de_DE/default.po deleted file mode 100644 index 90fa91803..000000000 --- a/community_server/src/Locale/de_DE/default.po +++ /dev/null @@ -1,3097 +0,0 @@ -# LANGUAGE translation of CakePHP Application -# Copyright YEAR NAME -# -msgid "" -msgstr "" -"Project-Id-Version: PROJECT VERSION\n" -"POT-Creation-Date: 2021-08-11 11:38+0000\n" -"PO-Revision-Date: 2021-08-11 13:39+0200\n" -"Last-Translator: \n" -"Language-Team: LANGUAGE \n" -"Language: de_DE\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 2.3\n" - -#: Controller/AddressTypesController.php:54 -#: Controller/AddressTypesController.php:78 -msgid "The address type has been saved." -msgstr "" - -#: Controller/AddressTypesController.php:58 -#: Controller/AddressTypesController.php:82 -msgid "The address type could not be saved. Please, try again." -msgstr "" - -#: Controller/AddressTypesController.php:99 -msgid "The address type has been deleted." -msgstr "" - -#: Controller/AddressTypesController.php:101 -msgid "The address type could not be deleted. Please, try again." -msgstr "" - -#: Controller/AdminErrorsController.php:57 -#: Controller/AdminErrorsController.php:82 -msgid "The admin error has been saved." -msgstr "" - -#: Controller/AdminErrorsController.php:61 -#: Controller/AdminErrorsController.php:86 -msgid "The admin error could not be saved. Please, try again." -msgstr "" - -#: Controller/AdminErrorsController.php:104 -msgid "The admin error has been deleted." -msgstr "" - -#: Controller/AdminErrorsController.php:106 -msgid "The admin error could not be deleted. Please, try again." -msgstr "" - -#: Controller/AppController.php:262 -msgid "error updating state user " -msgstr "" - -#: Controller/AppController.php:276 -msgid "error saving state user " -msgstr "" - -#: Controller/AppController.php:286 -msgid "no pubkey" -msgstr "" - -#: Controller/AppController.php:295 -msgid "invalid session" -msgstr "" - -#: Controller/AppController.php:297 -msgid "Konto ist nicht aktiviert!" -msgstr "" - -#: Controller/AppController.php:311 Controller/StateUsersController.php:103 -msgid "error http request: " -msgstr "" - -#: Controller/AppController.php:358 -msgid "(Leere Message)" -msgstr "" - -#: Controller/AppController.php:363 -msgid "(Leere Details)" -msgstr "" - -#: Controller/AppController.php:367 -msgid "Serious error, couldn't save to db, please write the admin: " -msgstr "" - -#: Controller/BlockchainTypesController.php:54 -#: Controller/BlockchainTypesController.php:78 -msgid "The blockchain type has been saved." -msgstr "" - -#: Controller/BlockchainTypesController.php:58 -#: Controller/BlockchainTypesController.php:82 -msgid "The blockchain type could not be saved. Please, try again." -msgstr "" - -#: Controller/BlockchainTypesController.php:99 -msgid "The blockchain type has been deleted." -msgstr "" - -#: Controller/BlockchainTypesController.php:101 -msgid "The blockchain type could not be deleted. Please, try again." -msgstr "" - -#: Controller/CommunityProfilesController.php:54 -#: Controller/CommunityProfilesController.php:78 -msgid "The community profile has been saved." -msgstr "" - -#: Controller/CommunityProfilesController.php:58 -#: Controller/CommunityProfilesController.php:82 -msgid "The community profile could not be saved. Please, try again." -msgstr "" - -#: Controller/CommunityProfilesController.php:99 -msgid "The community profile has been deleted." -msgstr "" - -#: Controller/CommunityProfilesController.php:101 -msgid "The community profile could not be deleted. Please, try again." -msgstr "" - -#: Controller/DashboardController.php:29 Controller/ProfileController.php:28 -#: Controller/StateBalancesController.php:52 -#: Controller/StateBalancesController.php:202 -#: Controller/StateErrorsController.php:26 -#: Controller/StateUserRolesController.php:42 -#: Controller/StateUsersController.php:54 -#: Controller/TransactionCreationsController.php:42 -#: Controller/TransactionSendCoinsController.php:44 -#: Controller/UsersController.php:26 Template/Element/navi.ctp:33 -msgid "Startseite" -msgstr "" - -#: Controller/ElopageBuysController.php:112 -#: Controller/ElopageBuysController.php:137 -msgid "The elopage buy has been saved." -msgstr "" - -#: Controller/ElopageBuysController.php:116 -#: Controller/ElopageBuysController.php:141 -msgid "The elopage buy could not be saved. Please, try again." -msgstr "" - -#: Controller/ElopageBuysController.php:158 -msgid "The elopage buy has been deleted." -msgstr "" - -#: Controller/ElopageBuysController.php:160 -msgid "The elopage buy could not be deleted. Please, try again." -msgstr "" - -#: Controller/JsonRequestHandlerController.php:366 -msgid "Gradido Transaktion fehlgeschlagen!" -msgstr "" - -#: Controller/OperatorTypesController.php:54 -#: Controller/OperatorTypesController.php:78 -msgid "The operator type has been saved." -msgstr "" - -#: Controller/OperatorTypesController.php:58 -#: Controller/OperatorTypesController.php:82 -msgid "The operator type could not be saved. Please, try again." -msgstr "" - -#: Controller/OperatorTypesController.php:99 -msgid "The operator type has been deleted." -msgstr "" - -#: Controller/OperatorTypesController.php:101 -msgid "The operator type could not be deleted. Please, try again." -msgstr "" - -#: Controller/OperatorsController.php:182 -#: Controller/OperatorsController.php:207 -msgid "The operator has been saved." -msgstr "" - -#: Controller/OperatorsController.php:186 -#: Controller/OperatorsController.php:211 -msgid "The operator could not be saved. Please, try again." -msgstr "" - -#: Controller/OperatorsController.php:229 -msgid "The operator has been deleted." -msgstr "" - -#: Controller/OperatorsController.php:231 -msgid "The operator could not be deleted. Please, try again." -msgstr "" - -#: Controller/ProfileController.php:29 Template/Element/user_menu.ctp:15 -#: Template/Profile/index.ctp:19 -msgid "Mein Profil" -msgstr "" - -#: Controller/ProfileController.php:108 -msgid "Dein Profil wurde aktualisiert!" -msgstr "" - -#: Controller/ProfileController.php:111 -msgid "" -"Non-recoverable database problem - state_user doesn't exist or not unique!" -msgstr "" - -#: Controller/ProfileController.php:198 -#: Controller/StateUserRolesController.php:117 -#: Controller/StateUsersController.php:291 -#: Controller/TransactionCreationsController.php:183 -msgid "Something was invalid, please try again!" -msgstr "" - -#: Controller/RolesController.php:56 Controller/RolesController.php:80 -msgid "The role has been saved." -msgstr "" - -#: Controller/RolesController.php:60 Controller/RolesController.php:84 -msgid "The role could not be saved. Please, try again." -msgstr "" - -#: Controller/RolesController.php:101 -msgid "The role has been deleted." -msgstr "" - -#: Controller/RolesController.php:103 -msgid "The role could not be deleted. Please, try again." -msgstr "" - -#: Controller/ServerUsersController.php:42 -msgid "Invalid username or password, try again" -msgstr "" - -#: Controller/ServerUsersController.php:79 -#: Controller/ServerUsersController.php:103 -msgid "The server user has been saved." -msgstr "" - -#: Controller/ServerUsersController.php:83 -#: Controller/ServerUsersController.php:107 -msgid "The server user could not be saved. Please, try again." -msgstr "" - -#: Controller/ServerUsersController.php:124 -msgid "The server user has been deleted." -msgstr "" - -#: Controller/ServerUsersController.php:126 -msgid "The server user could not be deleted. Please, try again." -msgstr "" - -#: Controller/StateBalancesController.php:53 Template/Dashboard/index.ctp:30 -#: Template/Element/navi.ctp:22 Template/StateBalances/overview.ctp:8 -msgid "Kontoübersicht" -msgstr "" - -#: Controller/StateBalancesController.php:203 -#: Template/StateBalances/overview_gdt.ctp:20 -msgid "GDT Kontoübersicht" -msgstr "" - -#: Controller/StateBalancesController.php:252 -msgid "Fehler beim GDT Server, bitte abwarten oder den Admin benachrichtigen!" -msgstr "" - -#: Controller/StateBalancesController.php:351 -#: Controller/StateBalancesController.php:376 -msgid "The state balance has been saved." -msgstr "" - -#: Controller/StateBalancesController.php:355 -#: Controller/StateBalancesController.php:380 -msgid "The state balance could not be saved. Please, try again." -msgstr "" - -#: Controller/StateBalancesController.php:398 -msgid "The state balance has been deleted." -msgstr "" - -#: Controller/StateBalancesController.php:400 -msgid "The state balance could not be deleted. Please, try again." -msgstr "" - -#: Controller/StateCreatedController.php:57 -#: Controller/StateCreatedController.php:83 -msgid "The state created has been saved." -msgstr "" - -#: Controller/StateCreatedController.php:61 -#: Controller/StateCreatedController.php:87 -msgid "The state created could not be saved. Please, try again." -msgstr "" - -#: Controller/StateCreatedController.php:106 -msgid "The state created has been deleted." -msgstr "" - -#: Controller/StateCreatedController.php:108 -msgid "The state created could not be deleted. Please, try again." -msgstr "" - -#: Controller/StateErrorsController.php:27 Template/Dashboard/index.ctp:79 -#: Template/Dashboard/server_index.ctp:31 Template/Element/navi_header.ctp:33 -#: Template/Element/navi_notify.ctp:32 -msgid "Fehler" -msgstr "" - -#: Controller/StateErrorsController.php:75 -msgid "Error belongs to another User, cannot delete" -msgstr "" - -#: Controller/StateErrorsController.php:78 -#: Controller/StateErrorsController.php:166 -msgid "The state error has been deleted." -msgstr "" - -#: Controller/StateErrorsController.php:80 -#: Controller/StateErrorsController.php:168 -msgid "The state error could not be deleted. Please, try again." -msgstr "" - -#: Controller/StateErrorsController.php:117 -#: Controller/StateErrorsController.php:143 -msgid "The state error has been saved." -msgstr "" - -#: Controller/StateErrorsController.php:121 -#: Controller/StateErrorsController.php:147 -msgid "The state error could not be saved. Please, try again." -msgstr "" - -#: Controller/StateGroupAddressesController.php:57 -#: Controller/StateGroupAddressesController.php:83 -msgid "The state group address has been saved." -msgstr "" - -#: Controller/StateGroupAddressesController.php:61 -#: Controller/StateGroupAddressesController.php:87 -msgid "The state group address could not be saved. Please, try again." -msgstr "" - -#: Controller/StateGroupAddressesController.php:106 -msgid "The state group address has been deleted." -msgstr "" - -#: Controller/StateGroupAddressesController.php:108 -msgid "The state group address could not be deleted. Please, try again." -msgstr "" - -#: Controller/StateGroupRelationshipsController.php:57 -#: Controller/StateGroupRelationshipsController.php:84 -msgid "The state group relationship has been saved." -msgstr "" - -#: Controller/StateGroupRelationshipsController.php:61 -#: Controller/StateGroupRelationshipsController.php:88 -msgid "The state group relationship could not be saved. Please, try again." -msgstr "" - -#: Controller/StateGroupRelationshipsController.php:108 -msgid "The state group relationship has been deleted." -msgstr "" - -#: Controller/StateGroupRelationshipsController.php:110 -msgid "The state group relationship could not be deleted. Please, try again." -msgstr "" - -#: Controller/StateGroupsController.php:57 -#: Controller/StateGroupsController.php:82 -msgid "The state group has been saved." -msgstr "" - -#: Controller/StateGroupsController.php:61 -#: Controller/StateGroupsController.php:86 -msgid "The state group could not be saved. Please, try again." -msgstr "" - -#: Controller/StateGroupsController.php:104 -msgid "The state group has been deleted." -msgstr "" - -#: Controller/StateGroupsController.php:106 -msgid "The state group could not be deleted. Please, try again." -msgstr "" - -#: Controller/StateRelationshipTypesController.php:54 -#: Controller/StateRelationshipTypesController.php:78 -msgid "The state relationship type has been saved." -msgstr "" - -#: Controller/StateRelationshipTypesController.php:58 -#: Controller/StateRelationshipTypesController.php:82 -msgid "The state relationship type could not be saved. Please, try again." -msgstr "" - -#: Controller/StateRelationshipTypesController.php:99 -msgid "The state relationship type has been deleted." -msgstr "" - -#: Controller/StateRelationshipTypesController.php:101 -msgid "The state relationship type could not be deleted. Please, try again." -msgstr "" - -#: Controller/StateUserRolesController.php:42 -#: Controller/StateUsersController.php:54 Template/StateUserRoles/search.ctp:9 -#: Template/StateUsers/search.ctp:9 -msgid "Benutzer suchen" -msgstr "" - -#: Controller/StateUserRolesController.php:149 -msgid "Role has been assigned to User." -msgstr "" - -#: Controller/StateUserTransactionsController.php:233 -#: Controller/StateUserTransactionsController.php:260 -msgid "The state user transaction has been saved." -msgstr "" - -#: Controller/StateUserTransactionsController.php:237 -#: Controller/StateUserTransactionsController.php:264 -msgid "The state user transaction could not be saved. Please, try again." -msgstr "" - -#: Controller/StateUserTransactionsController.php:284 -msgid "The state user transaction has been deleted." -msgstr "" - -#: Controller/StateUserTransactionsController.php:286 -msgid "The state user transaction could not be deleted. Please, try again." -msgstr "" - -#: Controller/StateUsersController.php:21 -msgid "account created" -msgstr "Konto angelegt" - -#: Controller/StateUsersController.php:22 -msgid "account not on login-server" -msgstr "Konto nicht auf Login-Server" - -#: Controller/StateUsersController.php:23 -msgid "email activated" -msgstr "Konto aktiviert" - -#: Controller/StateUsersController.php:24 -msgid "account copied to community" -msgstr "Konto kopiert nach Community-Server" - -#: Controller/StateUsersController.php:25 -msgid "email not activated" -msgstr "Konto nicht aktiviert" - -#: Controller/StateUsersController.php:26 -msgid "account multiple times on login-server" -msgstr "Konto mehrfach vorhanden" - -#: Controller/StateUsersController.php:27 -msgid "account not on community server" -msgstr "Konto nicht auf Community-Server" - -#: Controller/StateUsersController.php:28 -msgid "no keys" -msgstr "Keine Schlüssel generiert" - -#: Controller/StateUsersController.php:560 -#: Controller/StateUsersController.php:586 -msgid "The state user has been saved." -msgstr "" - -#: Controller/StateUsersController.php:564 -#: Controller/StateUsersController.php:590 -msgid "The state user could not be saved. Please, try again." -msgstr "" - -#: Controller/StateUsersController.php:609 -msgid "The state user has been deleted." -msgstr "" - -#: Controller/StateUsersController.php:611 -msgid "The state user could not be deleted. Please, try again." -msgstr "" - -#: Controller/TransactionCreationsController.php:42 -msgid "Gradido schöpfen" -msgstr "" - -#: Controller/TransactionCreationsController.php:149 -#: Controller/TransactionCreationsController.php:385 -#: Controller/TransactionCreationsController.php:408 -msgid "Error by requesting LoginServer, please try again" -msgstr "" - -#: Controller/TransactionCreationsController.php:151 -#: Controller/TransactionCreationsController.php:410 -msgid "Error, please wait for the admin to fix it" -msgstr "" - -#: Controller/TransactionCreationsController.php:161 -msgid "Login Server Error, please wait for the admin to fix it" -msgstr "" - -#: Controller/TransactionCreationsController.php:174 -#: Controller/TransactionCreationsController.php:491 -#: Controller/TransactionSendCoinsController.php:204 -msgid "Transaction submitted for review." -msgstr "" - -#: Controller/TransactionCreationsController.php:179 -msgid "Building transaction failed" -msgstr "" - -#: Controller/TransactionCreationsController.php:342 -msgid "No user selected" -msgstr "" - -#: Controller/TransactionCreationsController.php:442 -#: Controller/TransactionSendCoinsController.php:231 -msgid "Fehler mit der Session, bitte logge dich erneut ein!" -msgstr "" - -#: Controller/TransactionCreationsController.php:447 -msgid "Fehler, Benutzer gehört zu einer anderen Gruppe!" -msgstr "" - -#: Controller/TransactionCreationsController.php:452 -#: Controller/TransactionSendCoinsController.php:246 -msgid "" -"Der Empfänger wurde nicht auf dem Login-Server gefunden, hat er sein Konto " -"schon angelegt?" -msgstr "" - -#: Controller/TransactionCreationsController.php:456 -#: Controller/TransactionSendCoinsController.php:250 -msgid "" -"Der Empfänger ist deaktiviert, daher können ihm zurzeit keine Gradidos " -"gesendet werden." -msgstr "" - -#: Controller/TransactionCreationsController.php:460 -msgid "Der Betrag ist ungültig, er muss größer als 0 und <= 1000 sein." -msgstr "" - -#: Controller/TransactionCreationsController.php:464 -#: Controller/TransactionSendCoinsController.php:254 -msgid "Unbehandelter Fehler: " -msgstr "" - -#: Controller/TransactionCreationsController.php:625 -#: Controller/TransactionCreationsController.php:651 -msgid "The transaction creation has been saved." -msgstr "" - -#: Controller/TransactionCreationsController.php:629 -#: Controller/TransactionCreationsController.php:655 -msgid "The transaction creation could not be saved. Please, try again." -msgstr "" - -#: Controller/TransactionCreationsController.php:674 -msgid "The transaction creation has been deleted." -msgstr "" - -#: Controller/TransactionCreationsController.php:676 -msgid "The transaction creation could not be deleted. Please, try again." -msgstr "" - -#: Controller/TransactionGroupAddaddressController.php:57 -#: Controller/TransactionGroupAddaddressController.php:83 -msgid "The transaction group addaddres has been saved." -msgstr "" - -#: Controller/TransactionGroupAddaddressController.php:61 -#: Controller/TransactionGroupAddaddressController.php:87 -msgid "The transaction group addaddres could not be saved. Please, try again." -msgstr "" - -#: Controller/TransactionGroupAddaddressController.php:106 -msgid "The transaction group addaddres has been deleted." -msgstr "" - -#: Controller/TransactionGroupAddaddressController.php:108 -msgid "" -"The transaction group addaddres could not be deleted. Please, try again." -msgstr "" - -#: Controller/TransactionGroupAllowtradesController.php:57 -#: Controller/TransactionGroupAllowtradesController.php:83 -msgid "The transaction group allowtrade has been saved." -msgstr "" - -#: Controller/TransactionGroupAllowtradesController.php:61 -#: Controller/TransactionGroupAllowtradesController.php:87 -msgid "The transaction group allowtrade could not be saved. Please, try again." -msgstr "" - -#: Controller/TransactionGroupAllowtradesController.php:106 -msgid "The transaction group allowtrade has been deleted." -msgstr "" - -#: Controller/TransactionGroupAllowtradesController.php:108 -msgid "" -"The transaction group allowtrade could not be deleted. Please, try again." -msgstr "" - -#: Controller/TransactionGroupCreatesController.php:57 -#: Controller/TransactionGroupCreatesController.php:83 -msgid "The transaction group create has been saved." -msgstr "" - -#: Controller/TransactionGroupCreatesController.php:61 -#: Controller/TransactionGroupCreatesController.php:87 -msgid "The transaction group create could not be saved. Please, try again." -msgstr "" - -#: Controller/TransactionGroupCreatesController.php:106 -msgid "The transaction group create has been deleted." -msgstr "" - -#: Controller/TransactionGroupCreatesController.php:108 -msgid "The transaction group create could not be deleted. Please, try again." -msgstr "" - -#: Controller/TransactionSendCoinsController.php:45 -#: Template/Dashboard/index.ctp:38 Template/Element/navi.ctp:34 -#: Template/StateUsers/view.ctp:83 Template/StateUsers/view.ctp:117 -#: Template/TransactionSendCoins/create.ctp:9 -#: Template/TransactionSendCoins/create_raw.ctp:9 -msgid "Überweisung" -msgstr "" - -#: Controller/TransactionSendCoinsController.php:92 -#: Controller/TransactionSendCoinsController.php:119 -msgid "The transaction send coin has been saved." -msgstr "" - -#: Controller/TransactionSendCoinsController.php:96 -#: Controller/TransactionSendCoinsController.php:123 -msgid "The transaction send coin could not be saved. Please, try again." -msgstr "" - -#: Controller/TransactionSendCoinsController.php:173 -msgid "Du hast nicht genug Gradidos!" -msgstr "" - -#: Controller/TransactionSendCoinsController.php:179 -msgid "Du kannst dir selbst keine Gradidos senden!" -msgstr "" - -#: Controller/TransactionSendCoinsController.php:236 -msgid "Empfänger befindet sich nicht in Zielgruppe!" -msgstr "" - -#: Controller/TransactionSendCoinsController.php:241 -msgid "Ein Verwendungszweck zwischen 5 und 150 Zeichen wird benötig!" -msgstr "" - -#: Controller/TransactionSendCoinsController.php:428 -msgid "Error validating transaction" -msgstr "" - -#: Controller/TransactionSendCoinsController.php:431 -msgid "Error saving transaction" -msgstr "" - -#: Controller/TransactionSendCoinsController.php:433 -msgid "Gradidos erfolgreich überwiesen!" -msgstr "" - -#: Controller/TransactionSendCoinsController.php:437 -msgid "Error building transaction" -msgstr "" - -#: Controller/TransactionSendCoinsController.php:462 -msgid "The transaction send coin has been deleted." -msgstr "" - -#: Controller/TransactionSendCoinsController.php:464 -msgid "The transaction send coin could not be deleted. Please, try again." -msgstr "" - -#: Controller/TransactionSignaturesController.php:57 -#: Controller/TransactionSignaturesController.php:82 -msgid "The transaction signature has been saved." -msgstr "" - -#: Controller/TransactionSignaturesController.php:61 -#: Controller/TransactionSignaturesController.php:86 -msgid "The transaction signature could not be saved. Please, try again." -msgstr "" - -#: Controller/TransactionSignaturesController.php:104 -msgid "The transaction signature has been deleted." -msgstr "" - -#: Controller/TransactionSignaturesController.php:106 -msgid "The transaction signature could not be deleted. Please, try again." -msgstr "" - -#: Controller/TransactionTypesController.php:54 -#: Controller/TransactionTypesController.php:78 -msgid "The transaction type has been saved." -msgstr "" - -#: Controller/TransactionTypesController.php:58 -#: Controller/TransactionTypesController.php:82 -msgid "The transaction type could not be saved. Please, try again." -msgstr "" - -#: Controller/TransactionTypesController.php:99 -msgid "The transaction type has been deleted." -msgstr "" - -#: Controller/TransactionTypesController.php:101 -msgid "The transaction type could not be deleted. Please, try again." -msgstr "" - -#: Controller/TransactionsController.php:252 -msgid "No valid data given, please try again." -msgstr "" - -#: Controller/TransactionsController.php:289 -msgid "error retriving last saved transaction from gradido node." -msgstr "" - -#: Controller/TransactionsController.php:391 -#: Controller/TransactionsController.php:420 -msgid "The transaction has been saved." -msgstr "" - -#: Controller/TransactionsController.php:394 -msgid "Error by saving: " -msgstr "" - -#: Controller/TransactionsController.php:397 -#: Controller/TransactionsController.php:424 -msgid "The transaction could not be saved. Please, try again." -msgstr "" - -#: Controller/TransactionsController.php:443 -msgid "The transaction has been deleted." -msgstr "" - -#: Controller/TransactionsController.php:445 -msgid "The transaction could not be deleted. Please, try again." -msgstr "" - -#: Controller/UsersController.php:26 -msgid "Benutzerstatistiken" -msgstr "" - -#: Controller/UsersController.php:115 Controller/UsersController.php:139 -msgid "The user has been saved." -msgstr "" - -#: Controller/UsersController.php:119 Controller/UsersController.php:143 -msgid "The user could not be saved. Please, try again." -msgstr "" - -#: Controller/UsersController.php:160 -msgid "The user has been deleted." -msgstr "" - -#: Controller/UsersController.php:162 -msgid "The user could not be deleted. Please, try again." -msgstr "" - -#: Form/CreationForm.php:44 Form/ProfileForm.php:39 Form/TransferForm.php:42 -#: Form/TransferForm.php:53 Form/TransferRawForm.php:35 -msgid "No HTML Tags like > or < please." -msgstr "" - -#: Form/CreationForm.php:56 -msgid "Please give a valid number with maximal 2 decimal places" -msgstr "" - -#: Form/ProfileForm.php:26 -msgid "The first name should contain max 255 characters" -msgstr "" - -#: Form/ProfileForm.php:30 -msgid "The last name should contain max 255 characters" -msgstr "" - -#: Form/ProfileForm.php:34 -msgid "The description should contain max 2000 characters" -msgstr "" - -#: Form/TransferForm.php:36 -msgid "A valid email address is required" -msgstr "" - -#: Form/TransferForm.php:46 Form/TransferRawForm.php:29 -msgid "The memo should contain max 150 character" -msgstr "" - -#: Form/TransferForm.php:65 Form/TransferRawForm.php:56 -msgid "Please give a valid positive number with maximal 2 decimal places" -msgstr "" - -#: Form/UserSearchForm.php:34 -msgid "The search text should contain max 50 character" -msgstr "" - -#: Form/UserSearchForm.php:41 -msgid "No HTML Tags like < or > please." -msgstr "" - -#: Model/Table/ServerUsersTable.php:58 -msgid "Please give a username" -msgstr "" - -#: Model/Table/ServerUsersTable.php:64 -msgid "Please give a password" -msgstr "" - -#: Model/Table/ServerUsersTable.php:69 -msgid "Please give a email" -msgstr "" - -#: Model/Transactions/TransactionCreation.php:209 -msgid "Gradido Schöpfung erhalten" -msgstr "" - -#: Model/Transactions/TransactionTransfer.php:210 -msgid "Gradidos erhalten" -msgstr "" - -#: Template/AddressTypes/add.ctp:9 Template/AddressTypes/edit.ctp:9 -#: Template/AddressTypes/index.ctp:9 Template/AddressTypes/index.ctp:25 -#: Template/AddressTypes/view.ctp:9 Template/AddressTypes/view.ctp:45 -#: Template/AddressTypes/view.ctp:73 Template/AdminErrors/add.ctp:9 -#: Template/AdminErrors/edit.ctp:9 Template/AdminErrors/index.ctp:9 -#: Template/AdminErrors/index.ctp:26 Template/AdminErrors/view.ctp:9 -#: Template/BlockchainTypes/add.ctp:9 Template/BlockchainTypes/edit.ctp:9 -#: Template/BlockchainTypes/index.ctp:9 Template/BlockchainTypes/index.ctp:22 -#: Template/BlockchainTypes/view.ctp:9 Template/CommunityProfiles/add.ctp:9 -#: Template/CommunityProfiles/edit.ctp:9 Template/CommunityProfiles/index.ctp:9 -#: Template/CommunityProfiles/index.ctp:21 -#: Template/CommunityProfiles/view.ctp:9 Template/ElopageBuys/add.ctp:9 -#: Template/ElopageBuys/edit.ctp:9 Template/ElopageBuys/index.ctp:9 -#: Template/ElopageBuys/index.ctp:30 Template/ElopageBuys/view.ctp:9 -#: Template/OperatorTypes/edit.ctp:9 Template/OperatorTypes/index.ctp:9 -#: Template/OperatorTypes/index.ctp:23 Template/OperatorTypes/view.ctp:9 -#: Template/OperatorTypes/view.ctp:43 Template/Operators/add.ctp:9 -#: Template/Operators/edit.ctp:9 Template/Operators/index.ctp:9 -#: Template/Operators/index.ctp:24 Template/Operators/view.ctp:9 -#: Template/Roles/add.ctp:9 Template/Roles/edit.ctp:9 -#: Template/Roles/index.ctp:9 Template/Roles/index.ctp:20 -#: Template/Roles/view.ctp:9 Template/ServerUsers/add.ctp:9 -#: Template/ServerUsers/edit.ctp:9 Template/ServerUsers/index.ctp:9 -#: Template/ServerUsers/index.ctp:26 Template/ServerUsers/view.ctp:9 -#: Template/StateBalances/add.ctp:9 Template/StateBalances/edit.ctp:9 -#: Template/StateBalances/index.ctp:9 Template/StateBalances/index.ctp:25 -#: Template/StateBalances/view.ctp:9 Template/StateCreated/add.ctp:9 -#: Template/StateCreated/edit.ctp:9 Template/StateCreated/index.ctp:9 -#: Template/StateCreated/index.ctp:29 Template/StateCreated/view.ctp:9 -#: Template/StateErrors/add.ctp:9 Template/StateErrors/edit.ctp:9 -#: Template/StateErrors/index.ctp:9 Template/StateErrors/index.ctp:26 -#: Template/StateErrors/view.ctp:9 Template/StateGroupAddresses/add.ctp:9 -#: Template/StateGroupAddresses/edit.ctp:9 -#: Template/StateGroupAddresses/index.ctp:9 -#: Template/StateGroupAddresses/index.ctp:26 -#: Template/StateGroupAddresses/view.ctp:9 -#: Template/StateGroupRelationships/add.ctp:9 -#: Template/StateGroupRelationships/edit.ctp:9 -#: Template/StateGroupRelationships/index.ctp:9 -#: Template/StateGroupRelationships/index.ctp:22 -#: Template/StateGroupRelationships/view.ctp:9 Template/StateGroups/add.ctp:9 -#: Template/StateGroups/edit.ctp:9 Template/StateGroups/index.ctp:9 -#: Template/StateGroups/index.ctp:29 Template/StateGroups/view.ctp:9 -#: Template/StateGroups/view.ctp:49 Template/StateGroups/view.ctp:76 -#: Template/StateGroups/view.ctp:104 Template/StateGroups/view.ctp:133 -#: Template/StateRelationshipTypes/add.ctp:9 -#: Template/StateRelationshipTypes/edit.ctp:9 -#: Template/StateRelationshipTypes/index.ctp:9 -#: Template/StateRelationshipTypes/index.ctp:21 -#: Template/StateRelationshipTypes/view.ctp:9 -#: Template/StateUserRoles/index.ctp:9 Template/StateUserRoles/index.ctp:36 -#: Template/StateUserRoles/search.ctp:33 -#: Template/StateUserTransactions/add.ctp:9 -#: Template/StateUserTransactions/edit.ctp:9 -#: Template/StateUserTransactions/index.ctp:9 -#: Template/StateUserTransactions/index.ctp:28 -#: Template/StateUserTransactions/view.ctp:9 Template/StateUsers/add.ctp:9 -#: Template/StateUsers/edit.ctp:9 Template/StateUsers/index.ctp:9 -#: Template/StateUsers/index.ctp:36 Template/StateUsers/view.ctp:9 -#: Template/StateUsers/view.ctp:34 Template/StateUsers/view.ctp:58 -#: Template/StateUsers/view.ctp:89 Template/StateUsers/view.ctp:122 -#: Template/TransactionCreations/add.ctp:9 -#: Template/TransactionCreations/edit.ctp:9 -#: Template/TransactionCreations/index.ctp:9 -#: Template/TransactionCreations/index.ctp:28 -#: Template/TransactionCreations/view.ctp:9 -#: Template/TransactionGroupAddaddress/add.ctp:9 -#: Template/TransactionGroupAddaddress/edit.ctp:9 -#: Template/TransactionGroupAddaddress/index.ctp:9 -#: Template/TransactionGroupAddaddress/index.ctp:26 -#: Template/TransactionGroupAddaddress/view.ctp:9 -#: Template/TransactionGroupAllowtrades/add.ctp:9 -#: Template/TransactionGroupAllowtrades/edit.ctp:9 -#: Template/TransactionGroupAllowtrades/index.ctp:9 -#: Template/TransactionGroupAllowtrades/index.ctp:24 -#: Template/TransactionGroupAllowtrades/view.ctp:9 -#: Template/TransactionGroupCreates/add.ctp:9 -#: Template/TransactionGroupCreates/edit.ctp:9 -#: Template/TransactionGroupCreates/index.ctp:9 -#: Template/TransactionGroupCreates/index.ctp:26 -#: Template/TransactionGroupCreates/view.ctp:9 -#: Template/TransactionSendCoins/add.ctp:9 -#: Template/TransactionSendCoins/edit.ctp:9 -#: Template/TransactionSendCoins/index.ctp:9 -#: Template/TransactionSendCoins/index.ctp:28 -#: Template/TransactionSendCoins/view.ctp:9 -#: Template/TransactionSignatures/add.ctp:9 -#: Template/TransactionSignatures/edit.ctp:9 -#: Template/TransactionSignatures/index.ctp:9 -#: Template/TransactionSignatures/index.ctp:22 -#: Template/TransactionSignatures/view.ctp:9 -#: Template/TransactionTypes/add.ctp:9 Template/TransactionTypes/edit.ctp:9 -#: Template/TransactionTypes/index.ctp:9 Template/TransactionTypes/index.ctp:23 -#: Template/TransactionTypes/view.ctp:9 Template/TransactionTypes/view.ctp:44 -#: Template/Transactions/add.ctp:9 Template/Transactions/edit.ctp:9 -#: Template/Transactions/index.ctp:9 Template/Transactions/view.ctp:9 -#: Template/Transactions/view.ctp:66 Template/Transactions/view.ctp:97 -#: Template/Transactions/view.ctp:125 Template/Transactions/view.ctp:152 -#: Template/Transactions/view.ctp:180 Template/Transactions/view.ctp:211 -#: Template/Transactions/view.ctp:241 Template/Users/add.ctp:9 -#: Template/Users/edit.ctp:9 Template/Users/index.ctp:9 -#: Template/Users/index.ctp:26 Template/Users/view.ctp:9 -msgid "Actions" -msgstr "" - -#: Template/AddressTypes/add.ctp:10 Template/AddressTypes/edit.ctp:16 -#: Template/AddressTypes/view.ctp:12 Template/StateGroupAddresses/add.ctp:13 -#: Template/StateGroupAddresses/edit.ctp:19 -#: Template/StateGroupAddresses/index.ctp:13 -#: Template/StateGroupAddresses/view.ctp:16 -#: Template/TransactionGroupAddaddress/add.ctp:13 -#: Template/TransactionGroupAddaddress/edit.ctp:19 -#: Template/TransactionGroupAddaddress/index.ctp:13 -#: Template/TransactionGroupAddaddress/view.ctp:16 -msgid "List Address Types" -msgstr "" - -#: Template/AddressTypes/add.ctp:11 Template/AddressTypes/edit.ctp:17 -#: Template/AddressTypes/index.ctp:11 Template/AddressTypes/view.ctp:14 -#: Template/StateGroupAddresses/add.ctp:10 -#: Template/StateGroupAddresses/edit.ctp:16 -#: Template/StateGroupAddresses/view.ctp:12 Template/StateGroups/add.ctp:11 -#: Template/StateGroups/edit.ctp:17 Template/StateGroups/index.ctp:11 -#: Template/StateGroups/view.ctp:14 -msgid "List State Group Addresses" -msgstr "" - -#: Template/AddressTypes/add.ctp:12 Template/AddressTypes/edit.ctp:18 -#: Template/AddressTypes/index.ctp:12 Template/AddressTypes/view.ctp:15 -#: Template/StateGroupAddresses/index.ctp:10 -#: Template/StateGroupAddresses/view.ctp:13 Template/StateGroups/add.ctp:12 -#: Template/StateGroups/edit.ctp:18 Template/StateGroups/index.ctp:12 -#: Template/StateGroups/view.ctp:15 -msgid "New State Group Address" -msgstr "" - -#: Template/AddressTypes/add.ctp:13 Template/AddressTypes/edit.ctp:19 -#: Template/AddressTypes/index.ctp:13 Template/AddressTypes/view.ctp:16 -#: Template/TransactionGroupAddaddress/add.ctp:10 -#: Template/TransactionGroupAddaddress/edit.ctp:16 -#: Template/TransactionGroupAddaddress/view.ctp:12 -#: Template/Transactions/add.ctp:19 Template/Transactions/edit.ctp:25 -#: Template/Transactions/index.ctp:19 Template/Transactions/view.ctp:22 -msgid "List Transaction Group Addaddress" -msgstr "" - -#: Template/AddressTypes/add.ctp:14 Template/AddressTypes/edit.ctp:20 -#: Template/AddressTypes/index.ctp:14 Template/AddressTypes/view.ctp:17 -#: Template/TransactionGroupAddaddress/index.ctp:10 -#: Template/TransactionGroupAddaddress/view.ctp:13 -#: Template/Transactions/add.ctp:20 Template/Transactions/edit.ctp:26 -#: Template/Transactions/index.ctp:20 Template/Transactions/view.ctp:23 -msgid "New Transaction Group Addaddres" -msgstr "" - -#: Template/AddressTypes/add.ctp:20 -msgid "Add Address Type" -msgstr "" - -#: Template/AddressTypes/add.ctp:26 Template/AddressTypes/edit.ctp:32 -#: Template/AdminErrors/add.ctp:28 Template/AdminErrors/edit.ctp:34 -#: Template/BlockchainTypes/add.ctp:23 Template/BlockchainTypes/edit.ctp:29 -#: Template/CommunityProfiles/add.ctp:22 Template/CommunityProfiles/edit.ctp:28 -#: Template/ElopageBuys/add.ctp:31 Template/ElopageBuys/edit.ctp:37 -#: Template/OperatorTypes/add.ctp:24 Template/OperatorTypes/edit.ctp:30 -#: Template/Operators/add.ctp:24 Template/Operators/edit.ctp:30 -#: Template/Roles/add.ctp:21 Template/Roles/edit.ctp:27 -#: Template/ServerUsers/add.ctp:24 Template/ServerUsers/edit.ctp:32 -#: Template/StateBalances/add.ctp:25 Template/StateBalances/edit.ctp:31 -#: Template/StateCreated/add.ctp:29 Template/StateCreated/edit.ctp:35 -#: Template/StateErrors/add.ctp:27 Template/StateErrors/edit.ctp:33 -#: Template/StateGroupAddresses/add.ctp:26 -#: Template/StateGroupAddresses/edit.ctp:32 -#: Template/StateGroupRelationships/add.ctp:23 -#: Template/StateGroupRelationships/edit.ctp:29 Template/StateGroups/add.ctp:30 -#: Template/StateGroups/edit.ctp:36 Template/StateRelationshipTypes/add.ctp:22 -#: Template/StateRelationshipTypes/edit.ctp:28 -#: Template/StateUserTransactions/add.ctp:29 -#: Template/StateUserTransactions/edit.ctp:35 Template/StateUsers/add.ctp:32 -#: Template/StateUsers/edit.ctp:37 Template/TransactionCreations/add.ctp:27 -#: Template/TransactionCreations/edit.ctp:33 -#: Template/TransactionGroupAddaddress/add.ctp:26 -#: Template/TransactionGroupAddaddress/edit.ctp:32 -#: Template/TransactionGroupAllowtrades/add.ctp:25 -#: Template/TransactionGroupAllowtrades/edit.ctp:31 -#: Template/TransactionGroupCreates/add.ctp:27 -#: Template/TransactionGroupCreates/edit.ctp:33 -#: Template/TransactionSendCoins/add.ctp:28 -#: Template/TransactionSendCoins/edit.ctp:34 -#: Template/TransactionSignatures/add.ctp:23 -#: Template/TransactionSignatures/edit.ctp:29 -#: Template/TransactionTypes/add.ctp:24 Template/TransactionTypes/edit.ctp:30 -#: Template/Transactions/add.ctp:42 Template/Transactions/edit.ctp:47 -#: Template/Users/add.ctp:26 Template/Users/edit.ctp:32 -msgid "Submit" -msgstr "" - -#: Template/AddressTypes/edit.ctp:11 Template/AddressTypes/index.ctp:37 -#: Template/AddressTypes/view.ctp:56 Template/AddressTypes/view.ctp:85 -#: Template/AdminErrors/edit.ctp:11 Template/AdminErrors/index.ctp:43 -#: Template/BlockchainTypes/edit.ctp:11 Template/BlockchainTypes/index.ctp:35 -#: Template/CommunityProfiles/edit.ctp:11 -#: Template/CommunityProfiles/index.ctp:33 Template/ElopageBuys/edit.ctp:11 -#: Template/OperatorTypes/index.ctp:35 Template/OperatorTypes/view.ctp:54 -#: Template/Operators/edit.ctp:11 Template/Operators/index.ctp:40 -#: Template/Roles/edit.ctp:11 Template/Roles/index.ctp:31 -#: Template/ServerUsers/edit.ctp:11 Template/ServerUsers/index.ctp:43 -#: Template/StateBalances/edit.ctp:11 Template/StateBalances/index.ctp:38 -#: Template/StateCreated/edit.ctp:11 Template/StateCreated/index.ctp:45 -#: Template/StateErrors/edit.ctp:11 Template/StateErrors/index.ctp:39 -#: Template/StateErrors/show_for_user.ctp:44 -#: Template/StateGroupAddresses/edit.ctp:11 -#: Template/StateGroupAddresses/index.ctp:39 -#: Template/StateGroupRelationships/edit.ctp:11 -#: Template/StateGroupRelationships/index.ctp:35 -#: Template/StateGroups/edit.ctp:11 Template/StateGroups/index.ctp:41 -#: Template/StateGroups/view.ctp:60 Template/StateGroups/view.ctp:87 -#: Template/StateGroups/view.ctp:116 Template/StateGroups/view.ctp:145 -#: Template/StateRelationshipTypes/edit.ctp:11 -#: Template/StateRelationshipTypes/index.ctp:33 -#: Template/StateUserRoles/index.ctp:53 -#: Template/StateUserTransactions/edit.ctp:11 -#: Template/StateUserTransactions/index.ctp:41 Template/StateUsers/edit.ctp:11 -#: Template/StateUsers/index.ctp:53 Template/TransactionCreations/edit.ctp:11 -#: Template/TransactionGroupAddaddress/edit.ctp:11 -#: Template/TransactionGroupAddaddress/index.ctp:39 -#: Template/TransactionGroupAllowtrades/edit.ctp:11 -#: Template/TransactionGroupAllowtrades/index.ctp:37 -#: Template/TransactionGroupCreates/edit.ctp:11 -#: Template/TransactionGroupCreates/index.ctp:39 -#: Template/TransactionSendCoins/edit.ctp:11 -#: Template/TransactionSignatures/edit.ctp:11 -#: Template/TransactionSignatures/index.ctp:33 -#: Template/TransactionTypes/edit.ctp:11 Template/TransactionTypes/index.ctp:35 -#: Template/TransactionTypes/view.ctp:56 Template/Transactions/edit.ctp:11 -#: Template/Transactions/view.ctp:80 Template/Transactions/view.ctp:109 -#: Template/Transactions/view.ctp:136 Template/Transactions/view.ctp:163 -#: Template/Transactions/view.ctp:192 Template/Transactions/view.ctp:225 -#: Template/Transactions/view.ctp:252 Template/Users/edit.ctp:11 -#: Template/Users/index.ctp:43 -msgid "Delete" -msgstr "" - -#: Template/AddressTypes/edit.ctp:13 Template/AddressTypes/index.ctp:37 -#: Template/AddressTypes/view.ctp:11 Template/AddressTypes/view.ctp:56 -#: Template/AddressTypes/view.ctp:85 Template/AdminErrors/edit.ctp:13 -#: Template/AdminErrors/index.ctp:43 Template/AdminErrors/view.ctp:11 -#: Template/BlockchainTypes/edit.ctp:13 Template/BlockchainTypes/index.ctp:35 -#: Template/BlockchainTypes/view.ctp:11 Template/CommunityProfiles/edit.ctp:13 -#: Template/CommunityProfiles/index.ctp:33 -#: Template/CommunityProfiles/view.ctp:11 Template/ElopageBuys/edit.ctp:13 -#: Template/ElopageBuys/index.ctp:51 Template/ElopageBuys/view.ctp:11 -#: Template/OperatorTypes/index.ctp:35 Template/OperatorTypes/view.ctp:11 -#: Template/OperatorTypes/view.ctp:54 Template/Operators/edit.ctp:13 -#: Template/Operators/index.ctp:40 Template/Operators/view.ctp:11 -#: Template/Roles/edit.ctp:13 Template/Roles/index.ctp:31 -#: Template/Roles/view.ctp:11 Template/ServerUsers/edit.ctp:13 -#: Template/ServerUsers/index.ctp:43 Template/ServerUsers/view.ctp:11 -#: Template/StateBalances/edit.ctp:13 Template/StateBalances/index.ctp:38 -#: Template/StateBalances/view.ctp:11 Template/StateCreated/edit.ctp:13 -#: Template/StateCreated/index.ctp:45 Template/StateCreated/view.ctp:11 -#: Template/StateErrors/edit.ctp:13 Template/StateErrors/index.ctp:39 -#: Template/StateErrors/view.ctp:11 Template/StateGroupAddresses/edit.ctp:13 -#: Template/StateGroupAddresses/index.ctp:39 -#: Template/StateGroupAddresses/view.ctp:11 -#: Template/StateGroupRelationships/edit.ctp:13 -#: Template/StateGroupRelationships/index.ctp:35 -#: Template/StateGroupRelationships/view.ctp:11 -#: Template/StateGroups/edit.ctp:13 Template/StateGroups/index.ctp:41 -#: Template/StateGroups/view.ctp:11 Template/StateGroups/view.ctp:60 -#: Template/StateGroups/view.ctp:87 Template/StateGroups/view.ctp:116 -#: Template/StateGroups/view.ctp:145 -#: Template/StateRelationshipTypes/edit.ctp:13 -#: Template/StateRelationshipTypes/index.ctp:33 -#: Template/StateRelationshipTypes/view.ctp:11 -#: Template/StateUserRoles/index.ctp:53 -#: Template/StateUserTransactions/edit.ctp:13 -#: Template/StateUserTransactions/index.ctp:41 -#: Template/StateUserTransactions/view.ctp:11 Template/StateUsers/edit.ctp:13 -#: Template/StateUsers/index.ctp:53 Template/StateUsers/view.ctp:11 -#: Template/TransactionCreations/edit.ctp:13 -#: Template/TransactionCreations/view.ctp:11 -#: Template/TransactionGroupAddaddress/edit.ctp:13 -#: Template/TransactionGroupAddaddress/index.ctp:39 -#: Template/TransactionGroupAddaddress/view.ctp:11 -#: Template/TransactionGroupAllowtrades/edit.ctp:13 -#: Template/TransactionGroupAllowtrades/index.ctp:37 -#: Template/TransactionGroupAllowtrades/view.ctp:11 -#: Template/TransactionGroupCreates/edit.ctp:13 -#: Template/TransactionGroupCreates/index.ctp:39 -#: Template/TransactionGroupCreates/view.ctp:11 -#: Template/TransactionSendCoins/edit.ctp:13 -#: Template/TransactionSendCoins/view.ctp:11 -#: Template/TransactionSignatures/edit.ctp:13 -#: Template/TransactionSignatures/index.ctp:33 -#: Template/TransactionSignatures/view.ctp:11 -#: Template/TransactionTypes/edit.ctp:13 Template/TransactionTypes/index.ctp:35 -#: Template/TransactionTypes/view.ctp:11 Template/TransactionTypes/view.ctp:56 -#: Template/Transactions/edit.ctp:13 Template/Transactions/view.ctp:11 -#: Template/Transactions/view.ctp:80 Template/Transactions/view.ctp:109 -#: Template/Transactions/view.ctp:136 Template/Transactions/view.ctp:163 -#: Template/Transactions/view.ctp:192 Template/Transactions/view.ctp:225 -#: Template/Transactions/view.ctp:252 Template/Users/edit.ctp:13 -#: Template/Users/index.ctp:43 Template/Users/view.ctp:11 -msgid "Are you sure you want to delete # {0}?" -msgstr "" - -#: Template/AddressTypes/edit.ctp:26 Template/AddressTypes/view.ctp:10 -msgid "Edit Address Type" -msgstr "" - -#: Template/AddressTypes/index.ctp:10 Template/AddressTypes/view.ctp:13 -#: Template/StateGroupAddresses/add.ctp:14 -#: Template/StateGroupAddresses/edit.ctp:20 -#: Template/StateGroupAddresses/index.ctp:14 -#: Template/StateGroupAddresses/view.ctp:17 -#: Template/TransactionGroupAddaddress/add.ctp:14 -#: Template/TransactionGroupAddaddress/edit.ctp:20 -#: Template/TransactionGroupAddaddress/index.ctp:14 -#: Template/TransactionGroupAddaddress/view.ctp:17 -msgid "New Address Type" -msgstr "" - -#: Template/AddressTypes/index.ctp:18 -msgid "Address Types" -msgstr "" - -#: Template/AddressTypes/index.ctp:35 Template/AddressTypes/view.ctp:54 -#: Template/AddressTypes/view.ctp:83 Template/AdminErrors/index.ctp:39 -#: Template/BlockchainTypes/index.ctp:33 -#: Template/CommunityProfiles/index.ctp:31 Template/ElopageBuys/index.ctp:49 -#: Template/OperatorTypes/view.ctp:52 Template/Operators/index.ctp:38 -#: Template/Roles/index.ctp:29 Template/ServerUsers/index.ctp:41 -#: Template/StateBalances/index.ctp:36 Template/StateCreated/index.ctp:43 -#: Template/StateErrors/index.ctp:37 Template/StateGroupAddresses/index.ctp:37 -#: Template/StateGroupRelationships/index.ctp:33 -#: Template/StateGroups/index.ctp:39 Template/StateGroups/view.ctp:58 -#: Template/StateGroups/view.ctp:85 Template/StateGroups/view.ctp:114 -#: Template/StateGroups/view.ctp:143 -#: Template/StateRelationshipTypes/index.ctp:31 -#: Template/StateUserRoles/index.ctp:51 -#: Template/StateUserTransactions/index.ctp:39 Template/StateUsers/index.ctp:51 -#: Template/StateUsers/view.ctp:41 Template/StateUsers/view.ctp:71 -#: Template/StateUsers/view.ctp:104 Template/StateUsers/view.ctp:136 -#: Template/TransactionCreations/index.ctp:42 -#: Template/TransactionGroupAddaddress/index.ctp:37 -#: Template/TransactionGroupAllowtrades/index.ctp:35 -#: Template/TransactionGroupCreates/index.ctp:37 -#: Template/TransactionSendCoins/index.ctp:41 -#: Template/TransactionSignatures/index.ctp:31 -#: Template/TransactionTypes/index.ctp:33 Template/TransactionTypes/view.ctp:54 -#: Template/Transactions/view.ctp:78 Template/Transactions/view.ctp:107 -#: Template/Transactions/view.ctp:134 Template/Transactions/view.ctp:161 -#: Template/Transactions/view.ctp:190 Template/Transactions/view.ctp:223 -#: Template/Transactions/view.ctp:250 Template/Users/index.ctp:41 -msgid "View" -msgstr "" - -#: Template/AddressTypes/index.ctp:36 Template/AddressTypes/view.ctp:55 -#: Template/AddressTypes/view.ctp:84 Template/AdminErrors/index.ctp:41 -#: Template/BlockchainTypes/index.ctp:34 -#: Template/CommunityProfiles/index.ctp:32 Template/ElopageBuys/index.ctp:50 -#: Template/OperatorTypes/view.ctp:53 Template/Operators/index.ctp:39 -#: Template/Roles/index.ctp:30 Template/ServerUsers/index.ctp:42 -#: Template/StateBalances/index.ctp:37 Template/StateCreated/index.ctp:44 -#: Template/StateErrors/index.ctp:38 Template/StateGroupAddresses/index.ctp:38 -#: Template/StateGroupRelationships/index.ctp:34 -#: Template/StateGroups/index.ctp:40 Template/StateGroups/view.ctp:59 -#: Template/StateGroups/view.ctp:86 Template/StateGroups/view.ctp:115 -#: Template/StateGroups/view.ctp:144 -#: Template/StateRelationshipTypes/index.ctp:32 -#: Template/StateUserRoles/index.ctp:52 -#: Template/StateUserTransactions/index.ctp:40 Template/StateUsers/index.ctp:52 -#: Template/TransactionGroupAddaddress/index.ctp:38 -#: Template/TransactionGroupAllowtrades/index.ctp:36 -#: Template/TransactionGroupCreates/index.ctp:38 -#: Template/TransactionSignatures/index.ctp:32 -#: Template/TransactionTypes/index.ctp:34 Template/TransactionTypes/view.ctp:55 -#: Template/Transactions/view.ctp:79 Template/Transactions/view.ctp:108 -#: Template/Transactions/view.ctp:135 Template/Transactions/view.ctp:162 -#: Template/Transactions/view.ctp:191 Template/Transactions/view.ctp:224 -#: Template/Transactions/view.ctp:251 Template/Users/index.ctp:42 -msgid "Edit" -msgstr "" - -#: Template/AddressTypes/index.ctp:45 Template/AdminErrors/index.ctp:50 -#: Template/BlockchainTypes/index.ctp:43 -#: Template/CommunityProfiles/index.ctp:41 Template/ElopageBuys/index.ctp:59 -#: Template/Operators/index.ctp:48 Template/Roles/index.ctp:39 -#: Template/ServerUsers/index.ctp:51 Template/StateBalances/index.ctp:46 -#: Template/StateCreated/index.ctp:53 Template/StateErrors/index.ctp:47 -#: Template/StateGroupAddresses/index.ctp:47 -#: Template/StateGroupRelationships/index.ctp:43 -#: Template/StateGroups/index.ctp:49 -#: Template/StateRelationshipTypes/index.ctp:41 -#: Template/StateUserRoles/index.ctp:61 -#: Template/StateUserTransactions/index.ctp:49 Template/StateUsers/index.ctp:61 -#: Template/TransactionCreations/index.ctp:50 -#: Template/TransactionGroupAddaddress/index.ctp:47 -#: Template/TransactionGroupAllowtrades/index.ctp:45 -#: Template/TransactionGroupCreates/index.ctp:47 -#: Template/TransactionSendCoins/index.ctp:49 -#: Template/TransactionSignatures/index.ctp:41 -#: Template/TransactionTypes/index.ctp:43 Template/Transactions/index.ctp:50 -#: Template/Users/index.ctp:51 -msgid "first" -msgstr "" - -#: Template/AddressTypes/index.ctp:46 Template/AdminErrors/index.ctp:51 -#: Template/BlockchainTypes/index.ctp:44 -#: Template/CommunityProfiles/index.ctp:42 Template/ElopageBuys/index.ctp:60 -#: Template/Operators/index.ctp:49 Template/Roles/index.ctp:40 -#: Template/ServerUsers/index.ctp:52 Template/StateBalances/index.ctp:47 -#: Template/StateCreated/index.ctp:54 Template/StateErrors/index.ctp:48 -#: Template/StateGroupAddresses/index.ctp:48 -#: Template/StateGroupRelationships/index.ctp:44 -#: Template/StateGroups/index.ctp:50 -#: Template/StateRelationshipTypes/index.ctp:42 -#: Template/StateUserRoles/index.ctp:62 -#: Template/StateUserTransactions/index.ctp:50 Template/StateUsers/index.ctp:62 -#: Template/TransactionCreations/index.ctp:51 -#: Template/TransactionGroupAddaddress/index.ctp:48 -#: Template/TransactionGroupAllowtrades/index.ctp:46 -#: Template/TransactionGroupCreates/index.ctp:48 -#: Template/TransactionSendCoins/index.ctp:50 -#: Template/TransactionSignatures/index.ctp:42 -#: Template/TransactionTypes/index.ctp:44 Template/Transactions/index.ctp:51 -#: Template/Users/index.ctp:52 -msgid "previous" -msgstr "" - -#: Template/AddressTypes/index.ctp:48 Template/AdminErrors/index.ctp:53 -#: Template/BlockchainTypes/index.ctp:46 -#: Template/CommunityProfiles/index.ctp:44 Template/ElopageBuys/index.ctp:62 -#: Template/Operators/index.ctp:51 Template/Roles/index.ctp:42 -#: Template/ServerUsers/index.ctp:54 Template/StateBalances/index.ctp:49 -#: Template/StateCreated/index.ctp:56 Template/StateErrors/index.ctp:50 -#: Template/StateGroupAddresses/index.ctp:50 -#: Template/StateGroupRelationships/index.ctp:46 -#: Template/StateGroups/index.ctp:52 -#: Template/StateRelationshipTypes/index.ctp:44 -#: Template/StateUserRoles/index.ctp:64 -#: Template/StateUserTransactions/index.ctp:52 Template/StateUsers/index.ctp:64 -#: Template/TransactionCreations/index.ctp:53 -#: Template/TransactionGroupAddaddress/index.ctp:50 -#: Template/TransactionGroupAllowtrades/index.ctp:48 -#: Template/TransactionGroupCreates/index.ctp:50 -#: Template/TransactionSendCoins/index.ctp:52 -#: Template/TransactionSignatures/index.ctp:44 -#: Template/TransactionTypes/index.ctp:46 Template/Transactions/index.ctp:53 -#: Template/Users/index.ctp:54 -msgid "next" -msgstr "" - -#: Template/AddressTypes/index.ctp:49 Template/AdminErrors/index.ctp:54 -#: Template/BlockchainTypes/index.ctp:47 -#: Template/CommunityProfiles/index.ctp:45 Template/ElopageBuys/index.ctp:63 -#: Template/Operators/index.ctp:52 Template/Roles/index.ctp:43 -#: Template/ServerUsers/index.ctp:55 Template/StateBalances/index.ctp:50 -#: Template/StateCreated/index.ctp:57 Template/StateErrors/index.ctp:51 -#: Template/StateGroupAddresses/index.ctp:51 -#: Template/StateGroupRelationships/index.ctp:47 -#: Template/StateGroups/index.ctp:53 -#: Template/StateRelationshipTypes/index.ctp:45 -#: Template/StateUserRoles/index.ctp:65 -#: Template/StateUserTransactions/index.ctp:53 Template/StateUsers/index.ctp:65 -#: Template/TransactionCreations/index.ctp:54 -#: Template/TransactionGroupAddaddress/index.ctp:51 -#: Template/TransactionGroupAllowtrades/index.ctp:49 -#: Template/TransactionGroupCreates/index.ctp:51 -#: Template/TransactionSendCoins/index.ctp:53 -#: Template/TransactionSignatures/index.ctp:45 -#: Template/TransactionTypes/index.ctp:47 Template/Transactions/index.ctp:54 -#: Template/Users/index.ctp:55 -msgid "last" -msgstr "" - -#: Template/AddressTypes/index.ctp:51 Template/AdminErrors/index.ctp:56 -#: Template/BlockchainTypes/index.ctp:49 -#: Template/CommunityProfiles/index.ctp:47 Template/ElopageBuys/index.ctp:65 -#: Template/Operators/index.ctp:54 Template/Roles/index.ctp:45 -#: Template/ServerUsers/index.ctp:57 Template/StateBalances/index.ctp:52 -#: Template/StateCreated/index.ctp:59 Template/StateErrors/index.ctp:53 -#: Template/StateGroupAddresses/index.ctp:53 -#: Template/StateGroupRelationships/index.ctp:49 -#: Template/StateGroups/index.ctp:55 -#: Template/StateRelationshipTypes/index.ctp:47 -#: Template/StateUserRoles/index.ctp:67 -#: Template/StateUserTransactions/index.ctp:55 Template/StateUsers/index.ctp:67 -#: Template/TransactionCreations/index.ctp:56 -#: Template/TransactionGroupAddaddress/index.ctp:53 -#: Template/TransactionGroupAllowtrades/index.ctp:51 -#: Template/TransactionGroupCreates/index.ctp:53 -#: Template/TransactionSendCoins/index.ctp:55 -#: Template/TransactionSignatures/index.ctp:47 -#: Template/TransactionTypes/index.ctp:49 Template/Transactions/index.ctp:56 -#: Template/Users/index.ctp:57 -msgid "" -"Page {{page}} of {{pages}}, showing {{current}} record(s) out of {{count}} " -"total" -msgstr "" - -#: Template/AddressTypes/view.ctp:11 -msgid "Delete Address Type" -msgstr "" - -#: Template/AddressTypes/view.ctp:24 Template/BlockchainTypes/view.ctp:20 -#: Template/OperatorTypes/view.ctp:22 Template/StateGroups/view.ctp:28 -#: Template/StateGroups/view.ctp:103 -#: Template/StateRelationshipTypes/view.ctp:20 -#: Template/TransactionGroupCreates/view.ctp:32 -#: Template/TransactionTypes/view.ctp:22 Template/Transactions/view.ctp:179 -#: Template/Users/statistics.ctp:64 -msgid "Name" -msgstr "" - -#: Template/AddressTypes/view.ctp:28 Template/BlockchainTypes/view.ctp:24 -#: Template/OperatorTypes/view.ctp:26 -#: Template/StateRelationshipTypes/view.ctp:24 -#: Template/TransactionTypes/view.ctp:26 -msgid "Text" -msgstr "" - -#: Template/AddressTypes/view.ctp:32 Template/AddressTypes/view.ctp:41 -#: Template/AddressTypes/view.ctp:68 Template/AdminErrors/view.ctp:46 -#: Template/BlockchainTypes/view.ctp:32 Template/CommunityProfiles/view.ctp:24 -#: Template/OperatorTypes/view.ctp:30 Template/OperatorTypes/view.ctp:39 -#: Template/Operators/view.ctp:32 Template/Roles/view.ctp:24 -#: Template/ServerUsers/view.ctp:36 Template/StateBalances/view.ctp:27 -#: Template/StateCreated/view.ctp:32 Template/StateErrors/view.ctp:32 -#: Template/StateGroupAddresses/view.ctp:28 -#: Template/StateGroupRelationships/view.ctp:20 -#: Template/StateGroups/view.ctp:32 Template/StateGroups/view.ctp:45 -#: Template/StateGroups/view.ctp:72 Template/StateGroups/view.ctp:99 -#: Template/StateGroups/view.ctp:128 -#: Template/StateRelationshipTypes/view.ctp:28 -#: Template/StateUserTransactions/view.ctp:38 -#: Template/TransactionCreations/view.ctp:32 -#: Template/TransactionGroupAddaddress/view.ctp:32 -#: Template/TransactionGroupAllowtrades/view.ctp:26 -#: Template/TransactionGroupCreates/view.ctp:36 -#: Template/TransactionSendCoins/view.ctp:32 -#: Template/TransactionSignatures/view.ctp:26 -#: Template/TransactionTypes/view.ctp:30 Template/TransactionTypes/view.ctp:39 -#: Template/Transactions/view.ctp:46 Template/Transactions/view.ctp:59 -#: Template/Transactions/view.ctp:92 Template/Transactions/view.ctp:121 -#: Template/Transactions/view.ctp:148 Template/Transactions/view.ctp:175 -#: Template/Transactions/view.ctp:204 Template/Transactions/view.ctp:237 -#: Template/Users/view.ctp:36 -msgid "Id" -msgstr "" - -#: Template/AddressTypes/view.ctp:37 Template/StateGroups/view.ctp:41 -msgid "Related State Group Addresses" -msgstr "" - -#: Template/AddressTypes/view.ctp:42 Template/StateGroupAddresses/view.ctp:32 -#: Template/TransactionGroupAllowtrades/view.ctp:30 -#: Template/Transactions/view.ctp:150 -msgid "Group Id" -msgstr "" - -#: Template/AddressTypes/view.ctp:43 Template/AddressTypes/view.ctp:72 -#: Template/StateGroups/view.ctp:47 Template/StateGroups/view.ctp:75 -#: Template/Transactions/view.ctp:124 -msgid "Public Key" -msgstr "" - -#: Template/AddressTypes/view.ctp:44 Template/AddressTypes/view.ctp:70 -#: Template/StateGroups/view.ctp:48 Template/Transactions/view.ctp:123 -msgid "Address Type Id" -msgstr "" - -#: Template/AddressTypes/view.ctp:64 Template/Transactions/view.ctp:117 -msgid "Related Transaction Group Addaddress" -msgstr "" - -#: Template/AddressTypes/view.ctp:69 Template/StateGroups/view.ctp:100 -#: Template/Transactions/view.ctp:60 Template/Transactions/view.ctp:93 -#: Template/Transactions/view.ctp:122 Template/Transactions/view.ctp:149 -#: Template/Transactions/view.ctp:176 Template/Transactions/view.ctp:205 -#: Template/Transactions/view.ctp:238 -msgid "Transaction Id" -msgstr "" - -#: Template/AddressTypes/view.ctp:71 -msgid "Remove From Group" -msgstr "" - -#: Template/AdminErrors/add.ctp:10 Template/AdminErrors/edit.ctp:16 -#: Template/AdminErrors/view.ctp:12 -msgid "List Admin Errors" -msgstr "" - -#: Template/AdminErrors/add.ctp:11 Template/AdminErrors/edit.ctp:17 -#: Template/AdminErrors/index.ctp:11 Template/AdminErrors/view.ctp:14 -#: Template/StateBalances/add.ctp:11 Template/StateBalances/edit.ctp:17 -#: Template/StateBalances/index.ctp:11 Template/StateBalances/view.ctp:14 -#: Template/StateCreated/add.ctp:13 Template/StateCreated/edit.ctp:19 -#: Template/StateCreated/index.ctp:13 Template/StateCreated/view.ctp:16 -#: Template/StateErrors/add.ctp:11 Template/StateErrors/edit.ctp:17 -#: Template/StateErrors/index.ctp:11 Template/StateErrors/view.ctp:14 -#: Template/StateGroups/add.ctp:13 Template/StateGroups/edit.ctp:19 -#: Template/StateGroups/index.ctp:13 Template/StateGroups/view.ctp:16 -#: Template/StateUserTransactions/add.ctp:11 -#: Template/StateUserTransactions/edit.ctp:17 -#: Template/StateUserTransactions/index.ctp:11 -#: Template/StateUserTransactions/view.ctp:14 Template/StateUsers/add.ctp:10 -#: Template/StateUsers/edit.ctp:16 Template/StateUsers/view.ctp:12 -#: Template/TransactionCreations/add.ctp:13 -#: Template/TransactionCreations/edit.ctp:19 -#: Template/TransactionCreations/index.ctp:13 -#: Template/TransactionCreations/view.ctp:16 -#: Template/TransactionSendCoins/add.ctp:13 -#: Template/TransactionSendCoins/edit.ctp:19 -#: Template/TransactionSendCoins/index.ctp:13 -#: Template/TransactionSendCoins/view.ctp:16 -msgid "List State Users" -msgstr "" - -#: Template/AdminErrors/add.ctp:12 Template/AdminErrors/edit.ctp:18 -#: Template/AdminErrors/index.ctp:12 Template/AdminErrors/view.ctp:15 -#: Template/StateBalances/add.ctp:12 Template/StateBalances/edit.ctp:18 -#: Template/StateBalances/index.ctp:12 Template/StateBalances/view.ctp:15 -#: Template/StateCreated/add.ctp:14 Template/StateCreated/edit.ctp:20 -#: Template/StateCreated/index.ctp:14 Template/StateCreated/view.ctp:17 -#: Template/StateErrors/add.ctp:12 Template/StateErrors/edit.ctp:18 -#: Template/StateErrors/index.ctp:12 Template/StateErrors/view.ctp:15 -#: Template/StateGroups/add.ctp:14 Template/StateGroups/edit.ctp:20 -#: Template/StateGroups/index.ctp:14 Template/StateGroups/view.ctp:17 -#: Template/StateUserRoles/index.ctp:10 -#: Template/StateUserTransactions/add.ctp:12 -#: Template/StateUserTransactions/edit.ctp:18 -#: Template/StateUserTransactions/index.ctp:12 -#: Template/StateUserTransactions/view.ctp:15 Template/StateUsers/index.ctp:10 -#: Template/StateUsers/view.ctp:13 Template/TransactionCreations/add.ctp:14 -#: Template/TransactionCreations/edit.ctp:20 -#: Template/TransactionCreations/index.ctp:14 -#: Template/TransactionCreations/view.ctp:17 -#: Template/TransactionSendCoins/add.ctp:14 -#: Template/TransactionSendCoins/edit.ctp:20 -#: Template/TransactionSendCoins/index.ctp:14 -#: Template/TransactionSendCoins/view.ctp:17 -msgid "New State User" -msgstr "" - -#: Template/AdminErrors/add.ctp:18 -msgid "Add Admin Error" -msgstr "" - -#: Template/AdminErrors/edit.ctp:24 Template/AdminErrors/view.ctp:10 -msgid "Edit Admin Error" -msgstr "" - -#: Template/AdminErrors/index.ctp:10 Template/AdminErrors/view.ctp:13 -msgid "New Admin Error" -msgstr "" - -#: Template/AdminErrors/view.ctp:11 -msgid "Delete Admin Error" -msgstr "" - -#: Template/AdminErrors/view.ctp:22 Template/StateBalances/view.ctp:23 -#: Template/StateCreated/view.ctp:28 Template/StateErrors/view.ctp:24 -#: Template/StateUserTransactions/view.ctp:26 -#: Template/TransactionCreations/view.ctp:28 -#: Template/TransactionSendCoins/view.ctp:28 -msgid "State User" -msgstr "" - -#: Template/AdminErrors/view.ctp:26 -msgid "Controller" -msgstr "" - -#: Template/AdminErrors/view.ctp:30 -msgid "Action" -msgstr "" - -#: Template/AdminErrors/view.ctp:34 -msgid "State" -msgstr "" - -#: Template/AdminErrors/view.ctp:38 -msgid "Msg" -msgstr "" - -#: Template/AdminErrors/view.ctp:42 -msgid "Details" -msgstr "" - -#: Template/AdminErrors/view.ctp:50 Template/ServerUsers/view.ctp:44 -#: Template/StateCreated/view.ctp:48 Template/StateErrors/view.ctp:36 -#: Template/Transactions/view.ctp:64 Template/Users/view.ctp:44 -msgid "Created" -msgstr "" - -#: Template/BlockchainTypes/add.ctp:10 Template/BlockchainTypes/edit.ctp:16 -#: Template/BlockchainTypes/view.ctp:12 -msgid "List Blockchain Types" -msgstr "" - -#: Template/BlockchainTypes/add.ctp:16 -msgid "Add Blockchain Type" -msgstr "" - -#: Template/BlockchainTypes/edit.ctp:22 Template/BlockchainTypes/view.ctp:10 -msgid "Edit Blockchain Type" -msgstr "" - -#: Template/BlockchainTypes/index.ctp:10 Template/BlockchainTypes/view.ctp:13 -msgid "New Blockchain Type" -msgstr "" - -#: Template/BlockchainTypes/index.ctp:14 -msgid "Blockchain Types" -msgstr "" - -#: Template/BlockchainTypes/view.ctp:11 -msgid "Delete Blockchain Type" -msgstr "" - -#: Template/BlockchainTypes/view.ctp:28 -msgid "Symbol" -msgstr "" - -#: Template/CommunityProfiles/add.ctp:10 Template/CommunityProfiles/edit.ctp:16 -#: Template/CommunityProfiles/view.ctp:12 -msgid "List Community Profiles" -msgstr "" - -#: Template/CommunityProfiles/add.ctp:16 -msgid "Add Community Profile" -msgstr "" - -#: Template/CommunityProfiles/edit.ctp:22 -#: Template/CommunityProfiles/view.ctp:10 -msgid "Edit Community Profile" -msgstr "" - -#: Template/CommunityProfiles/index.ctp:10 -#: Template/CommunityProfiles/view.ctp:13 -msgid "New Community Profile" -msgstr "" - -#: Template/CommunityProfiles/index.ctp:14 -msgid "Community Profiles" -msgstr "" - -#: Template/CommunityProfiles/view.ctp:11 -msgid "Delete Community Profile" -msgstr "" - -#: Template/CommunityProfiles/view.ctp:20 -msgid "Profile Desc" -msgstr "" - -#: Template/CommunityProfiles/view.ctp:28 Template/Transactions/view.ctp:63 -#: Template/Transactions/view.ctp:94 Template/Transactions/view.ctp:206 -msgid "State User Id" -msgstr "" - -#: Template/Dashboard/error_http_request.ctp:9 -msgid "Error, Please try again" -msgstr "" - -#: Template/Dashboard/error_http_request.ctp:13 Template/Layout/error.ctp:43 -msgid "Back" -msgstr "" - -#: Template/Dashboard/index.ctp:14 Template/Dashboard/index.ctp:18 -#: Template/Dashboard/server_index.ctp:9 -msgid "Willkommen" -msgstr "" - -#: Template/Dashboard/index.ctp:47 -msgid "löschen" -msgstr "" - -#: Template/Dashboard/index.ctp:51 -msgid "Adminbereich" -msgstr "" - -#: Template/Dashboard/index.ctp:57 Template/Dashboard/server_index.ctp:21 -msgid "viele schöpfen" -msgstr "" - -#: Template/Dashboard/index.ctp:70 -msgid "Anmeldungen" -msgstr "" - -#: Template/Dashboard/index.ctp:94 -msgid "suchen" -msgstr "" - -#: Template/Dashboard/index.ctp:102 -msgid "hinzufügen" -msgstr "" - -#: Template/Dashboard/index.ctp:108 -msgid "hat sein Passwort und Passphrase vergessen" -msgstr "" - -#: Template/Dashboard/index.ctp:119 -msgid "Gruppen" -msgstr "" - -#: Template/Dashboard/index.ctp:125 -msgid "Server" -msgstr "" - -#: Template/Dashboard/index.ctp:131 -msgid "Topics" -msgstr "" - -#: Template/Dashboard/index.ctp:139 -msgid "Hedera Accounts" -msgstr "" - -#: Template/Element/navi.ctp:35 -msgid "Mitgliederbereich" -msgstr "" - -#: Template/Element/navi_header.ctp:38 Template/Element/navi_notify.ctp:35 -msgid "Transaktionen sind noch zu unterzeichnen" -msgstr "" - -#: Template/Element/user_menu.ctp:22 -msgid "Abmelden" -msgstr "" - -#: Template/Element/Flash/success.ctp:9 -msgid "Info:" -msgstr "" - -#: Template/ElopageBuys/add.ctp:10 Template/ElopageBuys/edit.ctp:16 -#: Template/ElopageBuys/view.ctp:12 -msgid "List Elopage Buys" -msgstr "" - -#: Template/ElopageBuys/add.ctp:16 -msgid "Add Elopage Buy" -msgstr "" - -#: Template/ElopageBuys/edit.ctp:22 Template/ElopageBuys/view.ctp:10 -msgid "Edit Elopage Buy" -msgstr "" - -#: Template/ElopageBuys/index.ctp:10 Template/ElopageBuys/view.ctp:13 -msgid "New Elopage Buy" -msgstr "" - -#: Template/ElopageBuys/index.ctp:14 -msgid "Elopage Buys" -msgstr "" - -#: Template/ElopageBuys/statistics.ctp:28 Template/Users/statistics.ctp:49 -msgid "Anmeldungen diesen Monat" -msgstr "" - -#: Template/ElopageBuys/view.ctp:11 -msgid "Delete Elopage Buy" -msgstr "" - -#: Template/ElopageBuys/view.ctp:20 -msgid "Payer Email" -msgstr "" - -#: Template/ElopageBuys/view.ctp:24 -msgid "Publisher Email" -msgstr "" - -#: Template/ElopageBuys/view.ctp:28 -msgid "Event" -msgstr "" - -#: Template/ElopageBuys/view.ctp:36 -msgid "Elopage User Id" -msgstr "" - -#: Template/ElopageBuys/view.ctp:40 -msgid "Affiliate Program Id" -msgstr "" - -#: Template/ElopageBuys/view.ctp:44 -msgid "Publisher Id" -msgstr "" - -#: Template/ElopageBuys/view.ctp:48 -msgid "Order Id" -msgstr "" - -#: Template/ElopageBuys/view.ctp:52 -msgid "Product Id" -msgstr "" - -#: Template/ElopageBuys/view.ctp:56 -msgid "Product Price" -msgstr "" - -#: Template/ElopageBuys/view.ctp:60 -msgid "Success Date" -msgstr "" - -#: Template/ElopageBuys/view.ctp:64 -msgid "Payed" -msgstr "" - -#: Template/ElopageBuys/view.ctp:65 Template/ServerUsers/view.ctp:53 -#: Template/TransactionGroupAllowtrades/view.ctp:35 Template/Users/view.ctp:49 -msgid "Yes" -msgstr "" - -#: Template/ElopageBuys/view.ctp:65 Template/ServerUsers/view.ctp:53 -#: Template/TransactionGroupAllowtrades/view.ctp:35 Template/Users/view.ctp:49 -msgid "No" -msgstr "" - -#: Template/Email/text/notification_creation.ctp:8 -msgid "Gradido Schöpfung" -msgstr "" - -#: Template/Email/text/notification_creation.ctp:9 -#: Template/Email/text/notification_transaction_failed.ctp:14 -#: Template/Email/text/notification_transfer.ctp:12 -msgid "Hallo" -msgstr "" - -#: Template/Email/text/notification_creation.ctp:11 -msgid "für dich wurden soeben {0} geschöpft." -msgstr "" - -#: Template/Email/text/notification_creation.ctp:16 -#: Template/Email/text/notification_transaction_failed.ctp:46 -#: Template/Email/text/notification_transfer.ctp:19 -msgid "Bitte antworte nicht auf diese E-Mail!" -msgstr "" - -#: Template/Email/text/notification_creation.ctp:18 -#: Template/Email/text/notification_transaction_failed.ctp:49 -#: Template/Email/text/notification_transfer.ctp:25 -msgid "Mit freundlichen Grüßen" -msgstr "" - -#: Template/Email/text/notification_transaction_failed.ctp:8 -msgid "Gradido Transaktion fehlgeschlagen" -msgstr "" - -#: Template/Email/text/notification_transaction_failed.ctp:16 -msgid "Deine letzte Transaktion ist leider fehlgeschlagen." -msgstr "" - -#: Template/Email/text/notification_transaction_failed.ctp:20 -msgid "Du wolltest {0} für {1} schöpfen." -msgstr "" - -#: Template/Email/text/notification_transaction_failed.ctp:24 -msgid "Das Zieldatum war: " -msgstr "" - -#: Template/Email/text/notification_transaction_failed.ctp:26 -msgid "Du wolltest {0} an {1} senden." -msgstr "" - -#: Template/Email/text/notification_transaction_failed.ctp:32 -msgid "Das ist schief gelaufen: " -msgstr "" - -#: Template/Email/text/notification_transaction_failed.ctp:35 -msgid "Fehler beim speichern in der Datenbank. Bitte versuche es später erneut" -msgstr "" - -#: Template/Email/text/notification_transaction_failed.ctp:36 -msgid "Fehler beim parsen der Transaktion. Bitte versuche es später erneut" -msgstr "" - -#: Template/Email/text/notification_transfer.ctp:8 -msgid "Gradido Überweisung" -msgstr "" - -#: Template/Email/text/notification_transfer.ctp:14 -msgid "Du hast soeben {0} von {1} erhalten." -msgstr "" - -#: Template/Email/text/notification_transfer.ctp:15 -msgid "{0} schreibt:" -msgstr "" - -#: Template/Email/text/notification_transfer.ctp:20 -msgid "Wenn Du " -msgstr "" - -#: Template/Email/text/notification_transfer.ctp:20 -msgid " per E-Mail antworten willst, schreibe stattdessen an die Adresse: " -msgstr "" - -#: Template/Layout/default.ctp:38 -msgid "Logout" -msgstr "" - -#: Template/Layout/error.ctp:35 -msgid "Error" -msgstr "" - -#: Template/Layout/frontend.ctp:95 -msgid "Datenschutzerklärung" -msgstr "" - -#: Template/Layout/frontend.ctp:96 -msgid "Impressum" -msgstr "" - -#: Template/Layout/frontend.ctp:108 -msgid "Community Server in Entwicklung" -msgstr "" - -#: Template/OperatorTypes/add.ctp:10 Template/OperatorTypes/edit.ctp:16 -#: Template/OperatorTypes/view.ctp:12 -msgid "List Operator Types" -msgstr "" - -#: Template/OperatorTypes/add.ctp:11 Template/OperatorTypes/edit.ctp:17 -#: Template/OperatorTypes/index.ctp:11 Template/OperatorTypes/view.ctp:14 -#: Template/Operators/add.ctp:10 Template/Operators/edit.ctp:16 -#: Template/Operators/view.ctp:12 -msgid "List Operators" -msgstr "" - -#: Template/OperatorTypes/add.ctp:12 Template/OperatorTypes/edit.ctp:18 -#: Template/OperatorTypes/index.ctp:12 Template/OperatorTypes/view.ctp:15 -#: Template/Operators/index.ctp:10 Template/Operators/view.ctp:13 -msgid "New Operator" -msgstr "" - -#: Template/OperatorTypes/add.ctp:18 -msgid "Add Operator Type" -msgstr "" - -#: Template/OperatorTypes/edit.ctp:24 Template/OperatorTypes/view.ctp:10 -msgid "Edit Operator Type" -msgstr "" - -#: Template/OperatorTypes/index.ctp:10 Template/OperatorTypes/view.ctp:13 -msgid "New Operator Type" -msgstr "" - -#: Template/OperatorTypes/index.ctp:16 -msgid "Operator Types" -msgstr "" - -#: Template/OperatorTypes/view.ctp:11 -msgid "Delete Operator Type" -msgstr "" - -#: Template/OperatorTypes/view.ctp:35 -msgid "Related Operators" -msgstr "" - -#: Template/OperatorTypes/view.ctp:40 Template/Operators/view.ctp:20 -#: Template/ServerUsers/view.ctp:20 -msgid "Username" -msgstr "" - -#: Template/OperatorTypes/view.ctp:41 Template/Operators/view.ctp:36 -msgid "Operator Type Id" -msgstr "" - -#: Template/OperatorTypes/view.ctp:42 Template/Operators/view.ctp:28 -msgid "Data Base64" -msgstr "" - -#: Template/Operators/add.ctp:16 -msgid "Add Operator" -msgstr "" - -#: Template/Operators/edit.ctp:22 Template/Operators/view.ctp:10 -msgid "Edit Operator" -msgstr "" - -#: Template/Operators/index.ctp:14 -msgid "Operators" -msgstr "" - -#: Template/Operators/view.ctp:11 -msgid "Delete Operator" -msgstr "" - -#: Template/Operators/view.ctp:24 -msgid "User Pubkey" -msgstr "" - -#: Template/Profile/edit.ctp:9 -msgid "Profil ändern" -msgstr "" - -#: Template/Profile/edit.ctp:18 -msgid "Vorname" -msgstr "" - -#: Template/Profile/edit.ctp:19 -msgid "Nachname" -msgstr "" - -#: Template/Profile/edit.ctp:20 -msgid "Profilbild" -msgstr "" - -#: Template/Profile/edit.ctp:25 -msgid "Beschreibung" -msgstr "" - -#: Template/Profile/edit.ctp:26 -msgid "Daten speichern" -msgstr "" - -#: Template/Roles/add.ctp:10 Template/Roles/edit.ctp:16 -#: Template/Roles/view.ctp:12 -msgid "List Roles" -msgstr "" - -#: Template/Roles/add.ctp:16 -msgid "Add Role" -msgstr "" - -#: Template/Roles/edit.ctp:22 Template/Roles/view.ctp:10 -msgid "Edit Role" -msgstr "" - -#: Template/Roles/index.ctp:10 Template/Roles/view.ctp:13 -msgid "New Role" -msgstr "" - -#: Template/Roles/index.ctp:14 -msgid "Roles" -msgstr "" - -#: Template/Roles/view.ctp:11 -msgid "Delete Role" -msgstr "" - -#: Template/Roles/view.ctp:20 -msgid "Title" -msgstr "" - -#: Template/ServerUsers/add.ctp:10 Template/ServerUsers/edit.ctp:16 -#: Template/ServerUsers/view.ctp:12 -msgid "List Server Users" -msgstr "" - -#: Template/ServerUsers/add.ctp:16 -msgid "Add Server User" -msgstr "" - -#: Template/ServerUsers/edit.ctp:22 Template/ServerUsers/view.ctp:10 -msgid "Edit Server User" -msgstr "" - -#: Template/ServerUsers/index.ctp:10 Template/ServerUsers/view.ctp:13 -msgid "New Server User" -msgstr "" - -#: Template/ServerUsers/index.ctp:14 -msgid "Server Users" -msgstr "" - -#: Template/ServerUsers/login.ctp:16 -msgid "Please enter your username and password" -msgstr "" - -#: Template/ServerUsers/login.ctp:20 -msgid "Login" -msgstr "" - -#: Template/ServerUsers/view.ctp:11 -msgid "Delete Server User" -msgstr "" - -#: Template/ServerUsers/view.ctp:24 Template/Users/view.ctp:40 -msgid "Password" -msgstr "" - -#: Template/ServerUsers/view.ctp:28 Template/Users/view.ctp:20 -msgid "Email" -msgstr "" - -#: Template/ServerUsers/view.ctp:32 Template/StateUserRoles/assign_role.ctp:45 -#: Template/StateUserRoles/search.ctp:32 -msgid "Role" -msgstr "" - -#: Template/ServerUsers/view.ctp:40 -msgid "Last Login" -msgstr "" - -#: Template/ServerUsers/view.ctp:48 Template/StateBalances/view.ctp:35 -msgid "Modified" -msgstr "" - -#: Template/ServerUsers/view.ctp:52 -msgid "Activated" -msgstr "" - -#: Template/StateBalances/add.ctp:10 Template/StateBalances/edit.ctp:16 -#: Template/StateBalances/view.ctp:12 Template/StateUserRoles/index.ctp:13 -#: Template/StateUsers/add.ctp:13 Template/StateUsers/edit.ctp:19 -#: Template/StateUsers/index.ctp:13 Template/StateUsers/view.ctp:16 -msgid "List State Balances" -msgstr "" - -#: Template/StateBalances/add.ctp:19 -msgid "Add State Balance" -msgstr "" - -#: Template/StateBalances/edit.ctp:25 Template/StateBalances/view.ctp:10 -msgid "Edit State Balance" -msgstr "" - -#: Template/StateBalances/index.ctp:10 Template/StateBalances/view.ctp:13 -#: Template/StateUserRoles/index.ctp:14 Template/StateUsers/add.ctp:14 -#: Template/StateUsers/edit.ctp:20 Template/StateUsers/index.ctp:14 -#: Template/StateUsers/view.ctp:17 -msgid "New State Balance" -msgstr "" - -#: Template/StateBalances/index.ctp:16 -msgid "State Balances" -msgstr "" - -#: Template/StateBalances/overview.ctp:10 -msgid "Aktueller Kontostand: " -msgstr "" - -#: Template/StateBalances/overview.ctp:34 -msgid "Absender" -msgstr "" - -#: Template/StateBalances/overview.ctp:35 Template/StateUsers/view.ctp:57 -#: Template/StateUsers/view.ctp:87 Template/StateUsers/view.ctp:121 -#: Template/TransactionSendCoins/create.ctp:21 -#: Template/TransactionSendCoins/create_raw.ctp:32 -msgid "Verwendungszweck" -msgstr "" - -#: Template/StateBalances/overview.ctp:36 -#: Template/StateBalances/overview_gdt.ctp:42 -#: Template/StateBalances/overview_gdt.ctp:75 -msgid "Datum" -msgstr "" - -#: Template/StateBalances/overview.ctp:37 Template/StateUsers/view.ctp:56 -#: Template/StateUsers/view.ctp:86 Template/StateUsers/view.ctp:120 -msgid "Betrag" -msgstr "" - -#: Template/StateBalances/overview.ctp:38 -msgid "Transaktions Nr." -msgstr "" - -#: Template/StateBalances/overview.ctp:38 -msgid "Nr" -msgstr "" - -#: Template/StateBalances/overview.ctp:75 -msgid "Geschöpft" -msgstr "" - -#: Template/StateBalances/overview.ctp:78 -msgid "Gesendet" -msgstr "" - -#: Template/StateBalances/overview.ctp:81 -msgid "Empfangen" -msgstr "" - -#: Template/StateBalances/overview.ctp:84 -msgid "Vergänglichkeit" -msgstr "" - -#: Template/StateBalances/overview.ctp:124 -#: Template/TransactionCreations/create_multi.ctp:184 -msgid "Laufende Transaktion" -msgstr "" - -#: Template/StateBalances/overview.ctp:126 -#: Template/TransactionCreations/create_multi.ctp:186 -msgid "Laufende Transaktionen" -msgstr "" - -#: Template/StateBalances/overview_gdt.ctp:21 -msgid "Zur Verfügung: " -msgstr "" - -#: Template/StateBalances/overview_gdt.ctp:31 -msgid "Nur die letzten 100 Einträge werden angezeigt!" -msgstr "" - -#: Template/StateBalances/overview_gdt.ctp:38 -msgid "Eigene Einzahlungen" -msgstr "" - -#: Template/StateBalances/overview_gdt.ctp:41 Template/Users/statistics.ctp:65 -msgid "E-Mail" -msgstr "" - -#: Template/StateBalances/overview_gdt.ctp:43 -msgid "Kommentar" -msgstr "" - -#: Template/StateBalances/overview_gdt.ctp:44 -#: Template/StateBalances/overview_gdt.ctp:76 -msgid "Euro" -msgstr "" - -#: Template/StateBalances/overview_gdt.ctp:45 -#: Template/StateBalances/overview_gdt.ctp:77 -msgid "Factor" -msgstr "" - -#: Template/StateBalances/overview_gdt.ctp:46 -#: Template/StateBalances/overview_gdt.ctp:78 -msgid "GDT" -msgstr "" - -#: Template/StateBalances/overview_gdt.ctp:71 -msgid "Einzahlungen anderer (Publisherprogramm)" -msgstr "" - -#: Template/StateBalances/overview_gdt.ctp:74 -msgid "Einzahlender" -msgstr "" - -#: Template/StateBalances/view.ctp:11 -msgid "Delete State Balance" -msgstr "" - -#: Template/StateBalances/view.ctp:31 Template/StateUsers/view.ctp:33 -#: Template/TransactionCreations/view.ctp:36 -#: Template/TransactionSendCoins/view.ctp:36 Template/Transactions/view.ctp:95 -#: Template/Transactions/view.ctp:209 -msgid "Amount" -msgstr "" - -#: Template/StateCreated/add.ctp:10 Template/StateCreated/edit.ctp:16 -#: Template/StateCreated/view.ctp:12 Template/StateUserRoles/index.ctp:15 -#: Template/StateUsers/add.ctp:15 Template/StateUsers/edit.ctp:21 -#: Template/StateUsers/index.ctp:15 Template/Transactions/add.ctp:15 -#: Template/Transactions/edit.ctp:21 Template/Transactions/index.ctp:15 -#: Template/Transactions/view.ctp:18 -msgid "List State Created" -msgstr "" - -#: Template/StateCreated/add.ctp:11 Template/StateCreated/edit.ctp:17 -#: Template/StateCreated/index.ctp:11 Template/StateCreated/view.ctp:14 -#: Template/StateGroups/add.ctp:17 Template/StateGroups/edit.ctp:23 -#: Template/StateGroups/index.ctp:17 Template/StateGroups/view.ctp:20 -#: Template/StateUserTransactions/add.ctp:13 -#: Template/StateUserTransactions/edit.ctp:19 -#: Template/StateUserTransactions/index.ctp:13 -#: Template/StateUserTransactions/view.ctp:16 -#: Template/TransactionCreations/add.ctp:11 -#: Template/TransactionCreations/edit.ctp:17 -#: Template/TransactionCreations/index.ctp:11 -#: Template/TransactionCreations/view.ctp:14 -#: Template/TransactionGroupAddaddress/add.ctp:11 -#: Template/TransactionGroupAddaddress/edit.ctp:17 -#: Template/TransactionGroupAddaddress/index.ctp:11 -#: Template/TransactionGroupAddaddress/view.ctp:14 -#: Template/TransactionGroupAllowtrades/add.ctp:11 -#: Template/TransactionGroupAllowtrades/edit.ctp:17 -#: Template/TransactionGroupAllowtrades/index.ctp:11 -#: Template/TransactionGroupAllowtrades/view.ctp:14 -#: Template/TransactionGroupCreates/add.ctp:11 -#: Template/TransactionGroupCreates/edit.ctp:17 -#: Template/TransactionGroupCreates/index.ctp:11 -#: Template/TransactionGroupCreates/view.ctp:14 -#: Template/TransactionSendCoins/add.ctp:11 -#: Template/TransactionSendCoins/edit.ctp:17 -#: Template/TransactionSendCoins/index.ctp:11 -#: Template/TransactionSendCoins/view.ctp:14 -#: Template/TransactionSignatures/add.ctp:11 -#: Template/TransactionSignatures/edit.ctp:17 -#: Template/TransactionSignatures/index.ctp:11 -#: Template/TransactionSignatures/view.ctp:14 -#: Template/TransactionTypes/add.ctp:11 Template/TransactionTypes/edit.ctp:17 -#: Template/TransactionTypes/index.ctp:11 Template/TransactionTypes/view.ctp:14 -#: Template/Transactions/add.ctp:10 Template/Transactions/edit.ctp:16 -#: Template/Transactions/view.ctp:12 -msgid "List Transactions" -msgstr "" - -#: Template/StateCreated/add.ctp:12 Template/StateCreated/edit.ctp:18 -#: Template/StateCreated/index.ctp:12 Template/StateCreated/view.ctp:15 -#: Template/StateGroups/add.ctp:18 Template/StateGroups/edit.ctp:24 -#: Template/StateGroups/index.ctp:18 Template/StateGroups/view.ctp:21 -#: Template/StateUserTransactions/add.ctp:14 -#: Template/StateUserTransactions/edit.ctp:20 -#: Template/StateUserTransactions/index.ctp:14 -#: Template/StateUserTransactions/view.ctp:17 -#: Template/TransactionCreations/add.ctp:12 -#: Template/TransactionCreations/edit.ctp:18 -#: Template/TransactionCreations/index.ctp:12 -#: Template/TransactionCreations/view.ctp:15 -#: Template/TransactionGroupAddaddress/add.ctp:12 -#: Template/TransactionGroupAddaddress/edit.ctp:18 -#: Template/TransactionGroupAddaddress/index.ctp:12 -#: Template/TransactionGroupAddaddress/view.ctp:15 -#: Template/TransactionGroupAllowtrades/add.ctp:12 -#: Template/TransactionGroupAllowtrades/edit.ctp:18 -#: Template/TransactionGroupAllowtrades/index.ctp:12 -#: Template/TransactionGroupAllowtrades/view.ctp:15 -#: Template/TransactionGroupCreates/add.ctp:12 -#: Template/TransactionGroupCreates/edit.ctp:18 -#: Template/TransactionGroupCreates/index.ctp:12 -#: Template/TransactionGroupCreates/view.ctp:15 -#: Template/TransactionSendCoins/add.ctp:12 -#: Template/TransactionSendCoins/edit.ctp:18 -#: Template/TransactionSendCoins/index.ctp:12 -#: Template/TransactionSendCoins/view.ctp:15 -#: Template/TransactionSignatures/add.ctp:12 -#: Template/TransactionSignatures/edit.ctp:18 -#: Template/TransactionSignatures/index.ctp:12 -#: Template/TransactionSignatures/view.ctp:15 -#: Template/TransactionTypes/add.ctp:12 Template/TransactionTypes/edit.ctp:18 -#: Template/TransactionTypes/index.ctp:12 Template/TransactionTypes/view.ctp:15 -#: Template/Transactions/index.ctp:10 Template/Transactions/view.ctp:13 -msgid "New Transaction" -msgstr "" - -#: Template/StateCreated/add.ctp:20 -msgid "Add State Created" -msgstr "" - -#: Template/StateCreated/edit.ctp:26 Template/StateCreated/view.ctp:10 -msgid "Edit State Created" -msgstr "" - -#: Template/StateCreated/index.ctp:10 Template/StateCreated/view.ctp:13 -#: Template/StateUserRoles/index.ctp:16 Template/StateUsers/add.ctp:16 -#: Template/StateUsers/edit.ctp:22 Template/StateUsers/index.ctp:16 -#: Template/Transactions/add.ctp:16 Template/Transactions/edit.ctp:22 -#: Template/Transactions/index.ctp:16 Template/Transactions/view.ctp:19 -msgid "New State Created" -msgstr "" - -#: Template/StateCreated/index.ctp:18 -msgid "State Created" -msgstr "" - -#: Template/StateCreated/view.ctp:11 -msgid "Delete State Created" -msgstr "" - -#: Template/StateCreated/view.ctp:24 Template/StateUserTransactions/view.ctp:30 -#: Template/StateUsers/view.ctp:53 Template/TransactionCreations/view.ctp:24 -#: Template/TransactionGroupAddaddress/view.ctp:24 -#: Template/TransactionGroupAllowtrades/view.ctp:22 -#: Template/TransactionGroupCreates/view.ctp:24 -#: Template/TransactionSendCoins/view.ctp:24 -#: Template/TransactionSignatures/view.ctp:22 -msgid "Transaction" -msgstr "" - -#: Template/StateCreated/view.ctp:36 Template/Transactions/view.ctp:61 -msgid "Month" -msgstr "" - -#: Template/StateCreated/view.ctp:40 Template/Transactions/view.ctp:62 -msgid "Year" -msgstr "" - -#: Template/StateCreated/view.ctp:44 Template/Transactions/view.ctp:65 -msgid "Short Ident Hash" -msgstr "" - -#: Template/StateErrors/add.ctp:10 Template/StateErrors/edit.ctp:16 -#: Template/StateErrors/view.ctp:12 -msgid "List State Errors" -msgstr "" - -#: Template/StateErrors/add.ctp:13 Template/StateErrors/edit.ctp:19 -#: Template/StateErrors/index.ctp:13 Template/StateErrors/view.ctp:16 -#: Template/StateUserTransactions/add.ctp:15 -#: Template/StateUserTransactions/edit.ctp:21 -#: Template/StateUserTransactions/index.ctp:15 -#: Template/StateUserTransactions/view.ctp:18 -#: Template/TransactionTypes/add.ctp:10 Template/TransactionTypes/edit.ctp:16 -#: Template/TransactionTypes/view.ctp:12 Template/Transactions/add.ctp:13 -#: Template/Transactions/edit.ctp:19 Template/Transactions/index.ctp:13 -#: Template/Transactions/view.ctp:16 -msgid "List Transaction Types" -msgstr "" - -#: Template/StateErrors/add.ctp:14 Template/StateErrors/edit.ctp:20 -#: Template/StateErrors/index.ctp:14 Template/StateErrors/view.ctp:17 -#: Template/StateUserTransactions/add.ctp:16 -#: Template/StateUserTransactions/edit.ctp:22 -#: Template/StateUserTransactions/index.ctp:16 -#: Template/StateUserTransactions/view.ctp:19 -#: Template/TransactionTypes/index.ctp:10 Template/TransactionTypes/view.ctp:13 -#: Template/Transactions/add.ctp:14 Template/Transactions/edit.ctp:20 -#: Template/Transactions/index.ctp:14 Template/Transactions/view.ctp:17 -msgid "New Transaction Type" -msgstr "" - -#: Template/StateErrors/add.ctp:20 -msgid "Add State Error" -msgstr "" - -#: Template/StateErrors/edit.ctp:26 Template/StateErrors/view.ctp:10 -msgid "Edit State Error" -msgstr "" - -#: Template/StateErrors/index.ctp:10 Template/StateErrors/view.ctp:13 -msgid "New State Error" -msgstr "" - -#: Template/StateErrors/index.ctp:18 -msgid "State Errors" -msgstr "" - -#: Template/StateErrors/show_for_user.ctp:9 -msgid "Fehlermeldungen" -msgstr "" - -#: Template/StateErrors/view.ctp:11 -msgid "Delete State Error" -msgstr "" - -#: Template/StateErrors/view.ctp:28 Template/StateUserTransactions/view.ctp:34 -#: Template/Transactions/view.ctp:42 -msgid "Transaction Type" -msgstr "" - -#: Template/StateErrors/view.ctp:41 -msgid "Message Json" -msgstr "" - -#: Template/StateGroupAddresses/add.ctp:11 -#: Template/StateGroupAddresses/edit.ctp:17 -#: Template/StateGroupAddresses/index.ctp:11 -#: Template/StateGroupAddresses/view.ctp:14 Template/StateGroups/add.ctp:10 -#: Template/StateGroups/edit.ctp:16 Template/StateGroups/view.ctp:12 -#: Template/StateUserRoles/index.ctp:11 Template/StateUsers/add.ctp:11 -#: Template/StateUsers/edit.ctp:17 Template/StateUsers/index.ctp:11 -#: Template/StateUsers/view.ctp:14 Template/TransactionGroupCreates/add.ctp:13 -#: Template/TransactionGroupCreates/edit.ctp:19 -#: Template/TransactionGroupCreates/index.ctp:13 -#: Template/TransactionGroupCreates/view.ctp:16 -#: Template/Transactions/add.ctp:11 Template/Transactions/edit.ctp:17 -#: Template/Transactions/index.ctp:11 Template/Transactions/view.ctp:14 -msgid "List State Groups" -msgstr "" - -#: Template/StateGroupAddresses/add.ctp:12 -#: Template/StateGroupAddresses/edit.ctp:18 -#: Template/StateGroupAddresses/index.ctp:12 -#: Template/StateGroupAddresses/view.ctp:15 Template/StateGroups/index.ctp:10 -#: Template/StateGroups/view.ctp:13 Template/StateUserRoles/index.ctp:12 -#: Template/StateUsers/add.ctp:12 Template/StateUsers/edit.ctp:18 -#: Template/StateUsers/index.ctp:12 Template/StateUsers/view.ctp:15 -#: Template/TransactionGroupCreates/add.ctp:14 -#: Template/TransactionGroupCreates/edit.ctp:20 -#: Template/TransactionGroupCreates/index.ctp:14 -#: Template/TransactionGroupCreates/view.ctp:17 -#: Template/Transactions/add.ctp:12 Template/Transactions/edit.ctp:18 -#: Template/Transactions/index.ctp:12 Template/Transactions/view.ctp:15 -msgid "New State Group" -msgstr "" - -#: Template/StateGroupAddresses/add.ctp:20 -msgid "Add State Group Address" -msgstr "" - -#: Template/StateGroupAddresses/edit.ctp:26 -#: Template/StateGroupAddresses/view.ctp:10 -msgid "Edit State Group Address" -msgstr "" - -#: Template/StateGroupAddresses/index.ctp:18 -msgid "State Group Addresses" -msgstr "" - -#: Template/StateGroupAddresses/index.ctp:25 -#: Template/TransactionGroupAddaddress/index.ctp:25 -msgid "user public key" -msgstr "" - -#: Template/StateGroupAddresses/view.ctp:11 -msgid "Delete State Group Address" -msgstr "" - -#: Template/StateGroupAddresses/view.ctp:24 -#: Template/TransactionGroupAddaddress/view.ctp:28 -msgid "Address Type" -msgstr "" - -#: Template/StateGroupRelationships/add.ctp:10 -#: Template/StateGroupRelationships/edit.ctp:16 -#: Template/StateGroupRelationships/view.ctp:12 -msgid "List State Group Relationships" -msgstr "" - -#: Template/StateGroupRelationships/add.ctp:16 -msgid "Add State Group Relationship" -msgstr "" - -#: Template/StateGroupRelationships/edit.ctp:22 -#: Template/StateGroupRelationships/view.ctp:10 -msgid "Edit State Group Relationship" -msgstr "" - -#: Template/StateGroupRelationships/index.ctp:10 -#: Template/StateGroupRelationships/view.ctp:13 -msgid "New State Group Relationship" -msgstr "" - -#: Template/StateGroupRelationships/index.ctp:14 -msgid "State Group Relationships" -msgstr "" - -#: Template/StateGroupRelationships/view.ctp:11 -msgid "Delete State Group Relationship" -msgstr "" - -#: Template/StateGroupRelationships/view.ctp:24 -msgid "State Group1 Id" -msgstr "" - -#: Template/StateGroupRelationships/view.ctp:28 -msgid "State Group2 Id" -msgstr "" - -#: Template/StateGroupRelationships/view.ctp:32 -msgid "State Relationship Id" -msgstr "" - -#: Template/StateGroups/add.ctp:15 Template/StateGroups/edit.ctp:21 -#: Template/StateGroups/index.ctp:15 Template/StateGroups/view.ctp:18 -#: Template/TransactionGroupCreates/add.ctp:10 -#: Template/TransactionGroupCreates/edit.ctp:16 -#: Template/TransactionGroupCreates/view.ctp:12 -#: Template/Transactions/add.ctp:23 Template/Transactions/edit.ctp:29 -#: Template/Transactions/index.ctp:23 Template/Transactions/view.ctp:26 -msgid "List Transaction Group Creates" -msgstr "" - -#: Template/StateGroups/add.ctp:16 Template/StateGroups/edit.ctp:22 -#: Template/StateGroups/index.ctp:16 Template/StateGroups/view.ctp:19 -#: Template/TransactionGroupCreates/index.ctp:10 -#: Template/TransactionGroupCreates/view.ctp:13 -#: Template/Transactions/add.ctp:24 Template/Transactions/edit.ctp:30 -#: Template/Transactions/index.ctp:24 Template/Transactions/view.ctp:27 -msgid "New Transaction Group Create" -msgstr "" - -#: Template/StateGroups/add.ctp:24 -msgid "Add State Group" -msgstr "" - -#: Template/StateGroups/edit.ctp:30 Template/StateGroups/view.ctp:10 -msgid "Edit State Group" -msgstr "" - -#: Template/StateGroups/index.ctp:22 -msgid "State Groups" -msgstr "" - -#: Template/StateGroups/view.ctp:11 -msgid "Delete State Group" -msgstr "" - -#: Template/StateGroups/view.ctp:36 -msgid "User Count" -msgstr "" - -#: Template/StateGroups/view.ctp:46 Template/StateGroups/view.ctp:74 -#: Template/StateGroups/view.ctp:102 Template/StateGroups/view.ctp:129 -#: Template/TransactionTypes/view.ctp:40 Template/Transactions/view.ctp:178 -msgid "State Group Id" -msgstr "" - -#: Template/StateGroups/view.ctp:68 -msgid "Related State Users" -msgstr "" - -#: Template/StateGroups/view.ctp:73 -msgid "Index Id" -msgstr "" - -#: Template/StateGroups/view.ctp:95 Template/Transactions/view.ctp:171 -msgid "Related Transaction Group Creates" -msgstr "" - -#: Template/StateGroups/view.ctp:101 Template/Transactions/view.ctp:177 -msgid "Group Public Key" -msgstr "" - -#: Template/StateGroups/view.ctp:124 Template/TransactionTypes/view.ctp:35 -msgid "Related Transactions" -msgstr "" - -#: Template/StateGroups/view.ctp:130 Template/TransactionTypes/view.ctp:41 -msgid "Transaction Type Id" -msgstr "" - -#: Template/StateGroups/view.ctp:131 Template/TransactionTypes/view.ctp:42 -msgid "Tx Hash" -msgstr "" - -#: Template/StateGroups/view.ctp:132 Template/TransactionTypes/view.ctp:43 -#: Template/Transactions/view.ctp:50 -msgid "Received" -msgstr "" - -#: Template/StateRelationshipTypes/add.ctp:10 -#: Template/StateRelationshipTypes/edit.ctp:16 -#: Template/StateRelationshipTypes/view.ctp:12 -msgid "List State Relationship Types" -msgstr "" - -#: Template/StateRelationshipTypes/add.ctp:16 -msgid "Add State Relationship Type" -msgstr "" - -#: Template/StateRelationshipTypes/edit.ctp:22 -#: Template/StateRelationshipTypes/view.ctp:10 -msgid "Edit State Relationship Type" -msgstr "" - -#: Template/StateRelationshipTypes/index.ctp:10 -#: Template/StateRelationshipTypes/view.ctp:13 -msgid "New State Relationship Type" -msgstr "" - -#: Template/StateRelationshipTypes/index.ctp:14 -msgid "State Relationship Types" -msgstr "" - -#: Template/StateRelationshipTypes/view.ctp:11 -msgid "Delete State Relationship Type" -msgstr "" - -#: Template/StateUserRoles/assign_role.ctp:9 -#: Template/StateUserRoles/assign_role.ctp:46 -#: Template/StateUserRoles/search.ctp:47 -msgid "Assign Role" -msgstr "" - -#: Template/StateUserRoles/index.ctp:17 Template/StateUsers/add.ctp:17 -#: Template/StateUsers/edit.ctp:23 Template/StateUsers/index.ctp:17 -#: Template/StateUsers/view.ctp:18 Template/TransactionCreations/add.ctp:10 -#: Template/TransactionCreations/edit.ctp:16 -#: Template/TransactionCreations/view.ctp:12 Template/Transactions/add.ctp:17 -#: Template/Transactions/edit.ctp:23 Template/Transactions/index.ctp:17 -#: Template/Transactions/view.ctp:20 -msgid "List Transaction Creations" -msgstr "" - -#: Template/StateUserRoles/index.ctp:18 Template/StateUsers/add.ctp:18 -#: Template/StateUsers/edit.ctp:24 Template/StateUsers/index.ctp:18 -#: Template/StateUsers/view.ctp:19 Template/TransactionCreations/index.ctp:10 -#: Template/TransactionCreations/view.ctp:13 Template/Transactions/add.ctp:18 -#: Template/Transactions/edit.ctp:24 Template/Transactions/index.ctp:18 -#: Template/Transactions/view.ctp:21 -msgid "New Transaction Creation" -msgstr "" - -#: Template/StateUserRoles/index.ctp:19 Template/StateUsers/add.ctp:19 -#: Template/StateUsers/edit.ctp:25 Template/StateUsers/index.ctp:19 -#: Template/StateUsers/view.ctp:20 Template/TransactionSendCoins/add.ctp:10 -#: Template/TransactionSendCoins/edit.ctp:16 -#: Template/TransactionSendCoins/view.ctp:12 Template/Transactions/add.ctp:25 -#: Template/Transactions/edit.ctp:31 Template/Transactions/index.ctp:25 -#: Template/Transactions/view.ctp:28 -msgid "List Transaction Send Coins" -msgstr "" - -#: Template/StateUserRoles/index.ctp:20 Template/StateUsers/add.ctp:20 -#: Template/StateUsers/edit.ctp:26 Template/StateUsers/index.ctp:20 -#: Template/StateUsers/view.ctp:21 Template/TransactionSendCoins/index.ctp:10 -#: Template/TransactionSendCoins/view.ctp:13 Template/Transactions/add.ctp:26 -#: Template/Transactions/edit.ctp:32 Template/Transactions/index.ctp:26 -#: Template/Transactions/view.ctp:29 -msgid "New Transaction Send Coin" -msgstr "" - -#: Template/StateUserRoles/index.ctp:24 Template/StateUserRoles/search.ctp:25 -#: Template/StateUsers/index.ctp:24 -msgid "State Users" -msgstr "" - -#: Template/StateUserRoles/search.ctp:19 Template/StateUsers/search.ctp:57 -msgid "Suchbegriff" -msgstr "" - -#: Template/StateUserRoles/search.ctp:19 Template/StateUsers/search.ctp:57 -msgid "Vorname/Nachname/E-Mail" -msgstr "" - -#: Template/StateUserRoles/search.ctp:20 Template/StateUsers/search.ctp:59 -#: Template/TransactionCreations/create_multi.ctp:35 -msgid "Suchen" -msgstr "" - -#: Template/StateUserTransactions/add.ctp:10 -#: Template/StateUserTransactions/edit.ctp:16 -#: Template/StateUserTransactions/view.ctp:12 -msgid "List State User Transactions" -msgstr "" - -#: Template/StateUserTransactions/add.ctp:22 -msgid "Add State User Transaction" -msgstr "" - -#: Template/StateUserTransactions/edit.ctp:28 -#: Template/StateUserTransactions/view.ctp:10 -msgid "Edit State User Transaction" -msgstr "" - -#: Template/StateUserTransactions/index.ctp:10 -#: Template/StateUserTransactions/view.ctp:13 -msgid "New State User Transaction" -msgstr "" - -#: Template/StateUserTransactions/index.ctp:20 -msgid "State User Transactions" -msgstr "" - -#: Template/StateUserTransactions/view.ctp:11 -msgid "Delete State User Transaction" -msgstr "" - -#: Template/StateUsers/add.ctp:26 -msgid "Add State User" -msgstr "" - -#: Template/StateUsers/edit.ctp:32 Template/StateUsers/view.ctp:10 -msgid "Edit State User" -msgstr "" - -#: Template/StateUsers/search.ctp:16 -msgid "Alle" -msgstr "" - -#: Template/StateUsers/search.ctp:21 -msgid "Konto nicht aktiviert" -msgstr "" - -#: Template/StateUsers/search.ctp:58 -msgid "Konto Status" -msgstr "" - -#: Template/StateUsers/view.ctp:11 -msgid "Delete State User" -msgstr "" - -#: Template/StateUsers/view.ctp:28 -msgid "State Balance" -msgstr "" - -#: Template/StateUsers/view.ctp:32 -msgid "Letztes Update" -msgstr "" - -#: Template/StateUsers/view.ctp:49 -msgid "Schöpfungen" -msgstr "" - -#: Template/StateUsers/view.ctp:54 Template/StateUsers/view.ctp:84 -#: Template/StateUsers/view.ctp:118 -msgid "Erhalten" -msgstr "" - -#: Template/StateUsers/view.ctp:55 -msgid "Verrechnungs-Datum" -msgstr "" - -#: Template/StateUsers/view.ctp:79 -msgid "Versendete Überweisungen" -msgstr "" - -#: Template/StateUsers/view.ctp:85 -msgid "Empfänger " -msgstr "" - -#: Template/StateUsers/view.ctp:88 -msgid "Betrag nach Senden" -msgstr "" - -#: Template/StateUsers/view.ctp:113 -msgid "Empfangende Überweisungen" -msgstr "" - -#: Template/StateUsers/view.ctp:119 -msgid "Sender" -msgstr "" - -#: Template/TransactionCreations/add.ctp:20 -msgid "Add Transaction Creation" -msgstr "" - -#: Template/TransactionCreations/create.ctp:17 -#: Template/TransactionCreations/create_multi.ctp:17 -msgid "Schöpfungstransaktion" -msgstr "" - -#: Template/TransactionCreations/create.ctp:28 -#: Template/TransactionCreations/create_multi.ctp:125 -msgid "Transaktion(en) abschließen" -msgstr "" - -#: Template/TransactionCreations/create.ctp:29 -#: Template/TransactionCreations/create_multi.ctp:126 -#: Template/TransactionSendCoins/create.ctp:24 -msgid "Weitere Transaktion erstellen" -msgstr "" - -#: Template/TransactionCreations/create_multi.ctp:34 -msgid "Suche" -msgstr "" - -#: Template/TransactionCreations/create_multi.ctp:38 -msgid "Memo" -msgstr "" - -#: Template/TransactionCreations/create_multi.ctp:39 -#: Template/TransactionSendCoins/create.ctp:22 -#: Template/TransactionSendCoins/create_raw.ctp:33 -msgid "Betrag in GDD" -msgstr "" - -#: Template/TransactionCreations/create_multi.ctp:46 -msgid "Zieldatum" -msgstr "" - -#: Template/TransactionCreations/create_multi.ctp:81 -msgid "Für benutzerdefinierten Betrag" -msgstr "" - -#: Template/TransactionCreations/create_multi.ctp:189 -msgid "Alle Transaktionen abgeschlossen!" -msgstr "" - -#: Template/TransactionCreations/edit.ctp:26 -#: Template/TransactionCreations/view.ctp:10 -msgid "Edit Transaction Creation" -msgstr "" - -#: Template/TransactionCreations/index.ctp:18 -msgid "Transaction Creations" -msgstr "" - -#: Template/TransactionCreations/view.ctp:11 -msgid "Delete Transaction Creation" -msgstr "" - -#: Template/TransactionGroupAddaddress/add.ctp:20 -msgid "Add Transaction Group Addaddres" -msgstr "" - -#: Template/TransactionGroupAddaddress/edit.ctp:26 -#: Template/TransactionGroupAddaddress/view.ctp:10 -msgid "Edit Transaction Group Addaddres" -msgstr "" - -#: Template/TransactionGroupAddaddress/index.ctp:18 -msgid "Transaction Group Addaddress" -msgstr "" - -#: Template/TransactionGroupAddaddress/view.ctp:11 -msgid "Delete Transaction Group Addaddres" -msgstr "" - -#: Template/TransactionGroupAllowtrades/add.ctp:10 -#: Template/TransactionGroupAllowtrades/edit.ctp:16 -#: Template/TransactionGroupAllowtrades/view.ctp:12 -#: Template/Transactions/add.ctp:21 Template/Transactions/edit.ctp:27 -#: Template/Transactions/index.ctp:21 Template/Transactions/view.ctp:24 -msgid "List Transaction Group Allowtrades" -msgstr "" - -#: Template/TransactionGroupAllowtrades/add.ctp:18 -msgid "Add Transaction Group Allowtrade" -msgstr "" - -#: Template/TransactionGroupAllowtrades/edit.ctp:24 -#: Template/TransactionGroupAllowtrades/view.ctp:10 -msgid "Edit Transaction Group Allowtrade" -msgstr "" - -#: Template/TransactionGroupAllowtrades/index.ctp:10 -#: Template/TransactionGroupAllowtrades/view.ctp:13 -#: Template/Transactions/add.ctp:22 Template/Transactions/edit.ctp:28 -#: Template/Transactions/index.ctp:22 Template/Transactions/view.ctp:25 -msgid "New Transaction Group Allowtrade" -msgstr "" - -#: Template/TransactionGroupAllowtrades/index.ctp:16 -msgid "Transaction Group Allowtrades" -msgstr "" - -#: Template/TransactionGroupAllowtrades/view.ctp:11 -msgid "Delete Transaction Group Allowtrade" -msgstr "" - -#: Template/TransactionGroupAllowtrades/view.ctp:34 -#: Template/Transactions/view.ctp:151 -msgid "Allow" -msgstr "" - -#: Template/TransactionGroupCreates/add.ctp:20 -msgid "Add Transaction Group Create" -msgstr "" - -#: Template/TransactionGroupCreates/edit.ctp:26 -#: Template/TransactionGroupCreates/view.ctp:10 -msgid "Edit Transaction Group Create" -msgstr "" - -#: Template/TransactionGroupCreates/index.ctp:18 -msgid "Transaction Group Creates" -msgstr "" - -#: Template/TransactionGroupCreates/view.ctp:11 -msgid "Delete Transaction Group Create" -msgstr "" - -#: Template/TransactionGroupCreates/view.ctp:28 -#: Template/Transactions/view.ctp:38 -msgid "State Group" -msgstr "" - -#: Template/TransactionSendCoins/add.ctp:20 -msgid "Add Transaction Send Coin" -msgstr "" - -#: Template/TransactionSendCoins/create.ctp:19 -msgid "Empfänger" -msgstr "" - -#: Template/TransactionSendCoins/create.ctp:20 -msgid "Community Alias" -msgstr "" - -#: Template/TransactionSendCoins/create.ctp:23 -#: Template/TransactionSendCoins/create_raw.ctp:34 -msgid "Transaktion abschließen" -msgstr "" - -#: Template/TransactionSendCoins/create_raw.ctp:29 -msgid "Sender Private Key" -msgstr "" - -#: Template/TransactionSendCoins/create_raw.ctp:30 -msgid "Sender Public Key" -msgstr "" - -#: Template/TransactionSendCoins/create_raw.ctp:31 -msgid "Empfänger Public Key" -msgstr "" - -#: Template/TransactionSendCoins/edit.ctp:26 -#: Template/TransactionSendCoins/view.ctp:10 -msgid "Edit Transaction Send Coin" -msgstr "" - -#: Template/TransactionSendCoins/index.ctp:18 -msgid "Transaction Send Coins" -msgstr "" - -#: Template/TransactionSendCoins/view.ctp:11 -msgid "Delete Transaction Send Coin" -msgstr "" - -#: Template/TransactionSendCoins/view.ctp:40 Template/Transactions/view.ctp:210 -msgid "Sender Final Balance" -msgstr "" - -#: Template/TransactionSignatures/add.ctp:10 -#: Template/TransactionSignatures/edit.ctp:16 -#: Template/TransactionSignatures/view.ctp:12 Template/Transactions/add.ctp:27 -#: Template/Transactions/edit.ctp:33 Template/Transactions/index.ctp:27 -#: Template/Transactions/view.ctp:30 -msgid "List Transaction Signatures" -msgstr "" - -#: Template/TransactionSignatures/add.ctp:18 -msgid "Add Transaction Signature" -msgstr "" - -#: Template/TransactionSignatures/edit.ctp:24 -#: Template/TransactionSignatures/view.ctp:10 -msgid "Edit Transaction Signature" -msgstr "" - -#: Template/TransactionSignatures/index.ctp:10 -#: Template/TransactionSignatures/view.ctp:13 Template/Transactions/add.ctp:28 -#: Template/Transactions/edit.ctp:34 Template/Transactions/index.ctp:28 -#: Template/Transactions/view.ctp:31 -msgid "New Transaction Signature" -msgstr "" - -#: Template/TransactionSignatures/index.ctp:16 -msgid "Transaction Signatures" -msgstr "" - -#: Template/TransactionSignatures/view.ctp:11 -msgid "Delete Transaction Signature" -msgstr "" - -#: Template/TransactionTypes/add.ctp:18 -msgid "Add Transaction Type" -msgstr "" - -#: Template/TransactionTypes/edit.ctp:24 Template/TransactionTypes/view.ctp:10 -msgid "Edit Transaction Type" -msgstr "" - -#: Template/TransactionTypes/index.ctp:16 -msgid "Transaction Types" -msgstr "" - -#: Template/TransactionTypes/view.ctp:11 -msgid "Delete Transaction Type" -msgstr "" - -#: Template/Transactions/add.ctp:34 -msgid "Add Transaction" -msgstr "" - -#: Template/Transactions/edit.ctp:40 Template/Transactions/view.ctp:10 -msgid "Edit Transaction" -msgstr "" - -#: Template/Transactions/manual_transaction.ctp:26 -msgid "Creation Transaction" -msgstr "" - -#: Template/Transactions/manual_transaction.ctp:41 -msgid "Transfer Transaction" -msgstr "" - -#: Template/Transactions/send_to_node.ctp:8 -msgid "Transaktionen an Gradido-Node senden" -msgstr "" - -#: Template/Transactions/synchronize_with_state_user_transactions.ctp:44 -msgid "Synchronize" -msgstr "" - -#: Template/Transactions/view.ctp:11 -msgid "Delete Transaction" -msgstr "" - -#: Template/Transactions/view.ctp:55 -msgid "Related State Created" -msgstr "" - -#: Template/Transactions/view.ctp:88 -msgid "Related Transaction Creations" -msgstr "" - -#: Template/Transactions/view.ctp:96 -msgid "Ident Hash" -msgstr "" - -#: Template/Transactions/view.ctp:144 -msgid "Related Transaction Group Allowtrades" -msgstr "" - -#: Template/Transactions/view.ctp:200 -msgid "Related Transaction Send Coins" -msgstr "" - -#: Template/Transactions/view.ctp:207 -msgid "Receiver Public Key" -msgstr "" - -#: Template/Transactions/view.ctp:208 -msgid "Receiver User Id" -msgstr "" - -#: Template/Transactions/view.ctp:233 -msgid "Related Transaction Signatures" -msgstr "" - -#: Template/Transactions/view.ctp:239 -msgid "Signature" -msgstr "" - -#: Template/Transactions/view.ctp:240 -msgid "Pubkey" -msgstr "" - -#: Template/Users/add.ctp:10 Template/Users/edit.ctp:16 -#: Template/Users/view.ctp:12 -msgid "List Users" -msgstr "" - -#: Template/Users/add.ctp:16 -msgid "Add User" -msgstr "" - -#: Template/Users/edit.ctp:22 Template/Users/view.ctp:10 -msgid "Edit User" -msgstr "" - -#: Template/Users/index.ctp:10 Template/Users/view.ctp:13 -msgid "New User" -msgstr "" - -#: Template/Users/index.ctp:14 -msgid "Users" -msgstr "" - -#: Template/Users/statistics.ctp:9 -msgid "Benutzer Statistiken" -msgstr "" - -#: Template/Users/statistics.ctp:39 -msgid "Alle Anmeldungen" -msgstr "" - -#: Template/Users/statistics.ctp:56 -msgid "Anmeldungen im Vergleich zum letzten Monat, 0% = gleiche Anzahl" -msgstr "" - -#: Template/Users/statistics.ctp:61 -msgid "Letzte Anmeldungen" -msgstr "" - -#: Template/Users/statistics.ctp:66 -msgid "Erstellt" -msgstr "" - -#: Template/Users/statistics.ctp:79 -msgid "Anmeldungen detailliert" -msgstr "" - -#: Template/Users/statistics.ctp:82 -msgid "Jahr" -msgstr "" - -#: Template/Users/statistics.ctp:83 -msgid "Monat" -msgstr "" - -#: Template/Users/statistics.ctp:84 -msgid "Anzahl Anmeldungen" -msgstr "" - -#: Template/Users/view.ctp:11 -msgid "Delete User" -msgstr "" - -#: Template/Users/view.ctp:24 -msgid "First Name" -msgstr "" - -#: Template/Users/view.ctp:28 -msgid "Last Name" -msgstr "" - -#: Template/Users/view.ctp:32 -msgid "Language" -msgstr "" - -#: Template/Users/view.ctp:48 -msgid "Email Checked" -msgstr "" diff --git a/community_server/src/Locale/default.pot b/community_server/src/Locale/default.pot deleted file mode 100644 index 0c9ada315..000000000 --- a/community_server/src/Locale/default.pot +++ /dev/null @@ -1,3566 +0,0 @@ -# LANGUAGE translation of CakePHP Application -# Copyright YEAR NAME -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PROJECT VERSION\n" -"POT-Creation-Date: 2021-08-11 11:38+0000\n" -"PO-Revision-Date: YYYY-mm-DD HH:MM+ZZZZ\n" -"Last-Translator: NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" - -#: Controller/AddressTypesController.php:54 -#: Controller/AddressTypesController.php:78 -msgid "The address type has been saved." -msgstr "" - -#: Controller/AddressTypesController.php:58 -#: Controller/AddressTypesController.php:82 -msgid "The address type could not be saved. Please, try again." -msgstr "" - -#: Controller/AddressTypesController.php:99 -msgid "The address type has been deleted." -msgstr "" - -#: Controller/AddressTypesController.php:101 -msgid "The address type could not be deleted. Please, try again." -msgstr "" - -#: Controller/AdminErrorsController.php:57 -#: Controller/AdminErrorsController.php:82 -msgid "The admin error has been saved." -msgstr "" - -#: Controller/AdminErrorsController.php:61 -#: Controller/AdminErrorsController.php:86 -msgid "The admin error could not be saved. Please, try again." -msgstr "" - -#: Controller/AdminErrorsController.php:104 -msgid "The admin error has been deleted." -msgstr "" - -#: Controller/AdminErrorsController.php:106 -msgid "The admin error could not be deleted. Please, try again." -msgstr "" - -#: Controller/AppController.php:262 -msgid "error updating state user " -msgstr "" - -#: Controller/AppController.php:276 -msgid "error saving state user " -msgstr "" - -#: Controller/AppController.php:286 -msgid "no pubkey" -msgstr "" - -#: Controller/AppController.php:295 -msgid "invalid session" -msgstr "" - -#: Controller/AppController.php:297 -msgid "Konto ist nicht aktiviert!" -msgstr "" - -#: Controller/AppController.php:311 -#: Controller/StateUsersController.php:103 -msgid "error http request: " -msgstr "" - -#: Controller/AppController.php:358 -msgid "(Leere Message)" -msgstr "" - -#: Controller/AppController.php:363 -msgid "(Leere Details)" -msgstr "" - -#: Controller/AppController.php:367 -msgid "Serious error, couldn't save to db, please write the admin: " -msgstr "" - -#: Controller/BlockchainTypesController.php:54 -#: Controller/BlockchainTypesController.php:78 -msgid "The blockchain type has been saved." -msgstr "" - -#: Controller/BlockchainTypesController.php:58 -#: Controller/BlockchainTypesController.php:82 -msgid "The blockchain type could not be saved. Please, try again." -msgstr "" - -#: Controller/BlockchainTypesController.php:99 -msgid "The blockchain type has been deleted." -msgstr "" - -#: Controller/BlockchainTypesController.php:101 -msgid "The blockchain type could not be deleted. Please, try again." -msgstr "" - -#: Controller/CommunityProfilesController.php:54 -#: Controller/CommunityProfilesController.php:78 -msgid "The community profile has been saved." -msgstr "" - -#: Controller/CommunityProfilesController.php:58 -#: Controller/CommunityProfilesController.php:82 -msgid "The community profile could not be saved. Please, try again." -msgstr "" - -#: Controller/CommunityProfilesController.php:99 -msgid "The community profile has been deleted." -msgstr "" - -#: Controller/CommunityProfilesController.php:101 -msgid "The community profile could not be deleted. Please, try again." -msgstr "" - -#: Controller/DashboardController.php:29 -#: Controller/ProfileController.php:28 -#: Controller/StateBalancesController.php:52 -#: Controller/StateBalancesController.php:202 -#: Controller/StateErrorsController.php:26 -#: Controller/StateUserRolesController.php:42 -#: Controller/StateUsersController.php:54 -#: Controller/TransactionCreationsController.php:42 -#: Controller/TransactionSendCoinsController.php:44 -#: Controller/UsersController.php:26 -#: Template/Element/navi.ctp:33 -msgid "Startseite" -msgstr "" - -#: Controller/ElopageBuysController.php:112 -#: Controller/ElopageBuysController.php:137 -msgid "The elopage buy has been saved." -msgstr "" - -#: Controller/ElopageBuysController.php:116 -#: Controller/ElopageBuysController.php:141 -msgid "The elopage buy could not be saved. Please, try again." -msgstr "" - -#: Controller/ElopageBuysController.php:158 -msgid "The elopage buy has been deleted." -msgstr "" - -#: Controller/ElopageBuysController.php:160 -msgid "The elopage buy could not be deleted. Please, try again." -msgstr "" - -#: Controller/JsonRequestHandlerController.php:366 -msgid "Gradido Transaktion fehlgeschlagen!" -msgstr "" - -#: Controller/OperatorTypesController.php:54 -#: Controller/OperatorTypesController.php:78 -msgid "The operator type has been saved." -msgstr "" - -#: Controller/OperatorTypesController.php:58 -#: Controller/OperatorTypesController.php:82 -msgid "The operator type could not be saved. Please, try again." -msgstr "" - -#: Controller/OperatorTypesController.php:99 -msgid "The operator type has been deleted." -msgstr "" - -#: Controller/OperatorTypesController.php:101 -msgid "The operator type could not be deleted. Please, try again." -msgstr "" - -#: Controller/OperatorsController.php:182 -#: Controller/OperatorsController.php:207 -msgid "The operator has been saved." -msgstr "" - -#: Controller/OperatorsController.php:186 -#: Controller/OperatorsController.php:211 -msgid "The operator could not be saved. Please, try again." -msgstr "" - -#: Controller/OperatorsController.php:229 -msgid "The operator has been deleted." -msgstr "" - -#: Controller/OperatorsController.php:231 -msgid "The operator could not be deleted. Please, try again." -msgstr "" - -#: Controller/ProfileController.php:29 -#: Template/Element/user_menu.ctp:15 -#: Template/Profile/index.ctp:19 -msgid "Mein Profil" -msgstr "" - -#: Controller/ProfileController.php:108 -msgid "Dein Profil wurde aktualisiert!" -msgstr "" - -#: Controller/ProfileController.php:111 -msgid "Non-recoverable database problem - state_user doesn't exist or not unique!" -msgstr "" - -#: Controller/ProfileController.php:198 -#: Controller/StateUserRolesController.php:117 -#: Controller/StateUsersController.php:291 -#: Controller/TransactionCreationsController.php:183 -msgid "Something was invalid, please try again!" -msgstr "" - -#: Controller/RolesController.php:56 -#: Controller/RolesController.php:80 -msgid "The role has been saved." -msgstr "" - -#: Controller/RolesController.php:60 -#: Controller/RolesController.php:84 -msgid "The role could not be saved. Please, try again." -msgstr "" - -#: Controller/RolesController.php:101 -msgid "The role has been deleted." -msgstr "" - -#: Controller/RolesController.php:103 -msgid "The role could not be deleted. Please, try again." -msgstr "" - -#: Controller/ServerUsersController.php:42 -msgid "Invalid username or password, try again" -msgstr "" - -#: Controller/ServerUsersController.php:79 -#: Controller/ServerUsersController.php:103 -msgid "The server user has been saved." -msgstr "" - -#: Controller/ServerUsersController.php:83 -#: Controller/ServerUsersController.php:107 -msgid "The server user could not be saved. Please, try again." -msgstr "" - -#: Controller/ServerUsersController.php:124 -msgid "The server user has been deleted." -msgstr "" - -#: Controller/ServerUsersController.php:126 -msgid "The server user could not be deleted. Please, try again." -msgstr "" - -#: Controller/StateBalancesController.php:53 -#: Template/Dashboard/index.ctp:30 -#: Template/Element/navi.ctp:22 -#: Template/StateBalances/overview.ctp:8 -msgid "Kontoübersicht" -msgstr "" - -#: Controller/StateBalancesController.php:203 -#: Template/StateBalances/overview_gdt.ctp:20 -msgid "GDT Kontoübersicht" -msgstr "" - -#: Controller/StateBalancesController.php:252 -msgid "Fehler beim GDT Server, bitte abwarten oder den Admin benachrichtigen!" -msgstr "" - -#: Controller/StateBalancesController.php:351 -#: Controller/StateBalancesController.php:376 -msgid "The state balance has been saved." -msgstr "" - -#: Controller/StateBalancesController.php:355 -#: Controller/StateBalancesController.php:380 -msgid "The state balance could not be saved. Please, try again." -msgstr "" - -#: Controller/StateBalancesController.php:398 -msgid "The state balance has been deleted." -msgstr "" - -#: Controller/StateBalancesController.php:400 -msgid "The state balance could not be deleted. Please, try again." -msgstr "" - -#: Controller/StateCreatedController.php:57 -#: Controller/StateCreatedController.php:83 -msgid "The state created has been saved." -msgstr "" - -#: Controller/StateCreatedController.php:61 -#: Controller/StateCreatedController.php:87 -msgid "The state created could not be saved. Please, try again." -msgstr "" - -#: Controller/StateCreatedController.php:106 -msgid "The state created has been deleted." -msgstr "" - -#: Controller/StateCreatedController.php:108 -msgid "The state created could not be deleted. Please, try again." -msgstr "" - -#: Controller/StateErrorsController.php:27 -#: Template/Dashboard/index.ctp:79 -#: Template/Dashboard/server_index.ctp:31 -#: Template/Element/navi_header.ctp:33 -#: Template/Element/navi_notify.ctp:32 -msgid "Fehler" -msgstr "" - -#: Controller/StateErrorsController.php:75 -msgid "Error belongs to another User, cannot delete" -msgstr "" - -#: Controller/StateErrorsController.php:78 -#: Controller/StateErrorsController.php:166 -msgid "The state error has been deleted." -msgstr "" - -#: Controller/StateErrorsController.php:80 -#: Controller/StateErrorsController.php:168 -msgid "The state error could not be deleted. Please, try again." -msgstr "" - -#: Controller/StateErrorsController.php:117 -#: Controller/StateErrorsController.php:143 -msgid "The state error has been saved." -msgstr "" - -#: Controller/StateErrorsController.php:121 -#: Controller/StateErrorsController.php:147 -msgid "The state error could not be saved. Please, try again." -msgstr "" - -#: Controller/StateGroupAddressesController.php:57 -#: Controller/StateGroupAddressesController.php:83 -msgid "The state group address has been saved." -msgstr "" - -#: Controller/StateGroupAddressesController.php:61 -#: Controller/StateGroupAddressesController.php:87 -msgid "The state group address could not be saved. Please, try again." -msgstr "" - -#: Controller/StateGroupAddressesController.php:106 -msgid "The state group address has been deleted." -msgstr "" - -#: Controller/StateGroupAddressesController.php:108 -msgid "The state group address could not be deleted. Please, try again." -msgstr "" - -#: Controller/StateGroupRelationshipsController.php:57 -#: Controller/StateGroupRelationshipsController.php:84 -msgid "The state group relationship has been saved." -msgstr "" - -#: Controller/StateGroupRelationshipsController.php:61 -#: Controller/StateGroupRelationshipsController.php:88 -msgid "The state group relationship could not be saved. Please, try again." -msgstr "" - -#: Controller/StateGroupRelationshipsController.php:108 -msgid "The state group relationship has been deleted." -msgstr "" - -#: Controller/StateGroupRelationshipsController.php:110 -msgid "The state group relationship could not be deleted. Please, try again." -msgstr "" - -#: Controller/StateGroupsController.php:57 -#: Controller/StateGroupsController.php:82 -msgid "The state group has been saved." -msgstr "" - -#: Controller/StateGroupsController.php:61 -#: Controller/StateGroupsController.php:86 -msgid "The state group could not be saved. Please, try again." -msgstr "" - -#: Controller/StateGroupsController.php:104 -msgid "The state group has been deleted." -msgstr "" - -#: Controller/StateGroupsController.php:106 -msgid "The state group could not be deleted. Please, try again." -msgstr "" - -#: Controller/StateRelationshipTypesController.php:54 -#: Controller/StateRelationshipTypesController.php:78 -msgid "The state relationship type has been saved." -msgstr "" - -#: Controller/StateRelationshipTypesController.php:58 -#: Controller/StateRelationshipTypesController.php:82 -msgid "The state relationship type could not be saved. Please, try again." -msgstr "" - -#: Controller/StateRelationshipTypesController.php:99 -msgid "The state relationship type has been deleted." -msgstr "" - -#: Controller/StateRelationshipTypesController.php:101 -msgid "The state relationship type could not be deleted. Please, try again." -msgstr "" - -#: Controller/StateUserRolesController.php:42 -#: Controller/StateUsersController.php:54 -#: Template/StateUserRoles/search.ctp:9 -#: Template/StateUsers/search.ctp:9 -msgid "Benutzer suchen" -msgstr "" - -#: Controller/StateUserRolesController.php:149 -msgid "Role has been assigned to User." -msgstr "" - -#: Controller/StateUserTransactionsController.php:233 -#: Controller/StateUserTransactionsController.php:260 -msgid "The state user transaction has been saved." -msgstr "" - -#: Controller/StateUserTransactionsController.php:237 -#: Controller/StateUserTransactionsController.php:264 -msgid "The state user transaction could not be saved. Please, try again." -msgstr "" - -#: Controller/StateUserTransactionsController.php:284 -msgid "The state user transaction has been deleted." -msgstr "" - -#: Controller/StateUserTransactionsController.php:286 -msgid "The state user transaction could not be deleted. Please, try again." -msgstr "" - -#: Controller/StateUsersController.php:21 -msgid "account created" -msgstr "" - -#: Controller/StateUsersController.php:22 -msgid "account not on login-server" -msgstr "" - -#: Controller/StateUsersController.php:23 -msgid "email activated" -msgstr "" - -#: Controller/StateUsersController.php:24 -msgid "account copied to community" -msgstr "" - -#: Controller/StateUsersController.php:25 -msgid "email not activated" -msgstr "" - -#: Controller/StateUsersController.php:26 -msgid "account multiple times on login-server" -msgstr "" - -#: Controller/StateUsersController.php:27 -msgid "account not on community server" -msgstr "" - -#: Controller/StateUsersController.php:28 -msgid "no keys" -msgstr "" - -#: Controller/StateUsersController.php:560 -#: Controller/StateUsersController.php:586 -msgid "The state user has been saved." -msgstr "" - -#: Controller/StateUsersController.php:564 -#: Controller/StateUsersController.php:590 -msgid "The state user could not be saved. Please, try again." -msgstr "" - -#: Controller/StateUsersController.php:609 -msgid "The state user has been deleted." -msgstr "" - -#: Controller/StateUsersController.php:611 -msgid "The state user could not be deleted. Please, try again." -msgstr "" - -#: Controller/TransactionCreationsController.php:42 -msgid "Gradido schöpfen" -msgstr "" - -#: Controller/TransactionCreationsController.php:149 -#: Controller/TransactionCreationsController.php:385 -#: Controller/TransactionCreationsController.php:408 -msgid "Error by requesting LoginServer, please try again" -msgstr "" - -#: Controller/TransactionCreationsController.php:151 -#: Controller/TransactionCreationsController.php:410 -msgid "Error, please wait for the admin to fix it" -msgstr "" - -#: Controller/TransactionCreationsController.php:161 -msgid "Login Server Error, please wait for the admin to fix it" -msgstr "" - -#: Controller/TransactionCreationsController.php:174 -#: Controller/TransactionCreationsController.php:491 -#: Controller/TransactionSendCoinsController.php:204 -msgid "Transaction submitted for review." -msgstr "" - -#: Controller/TransactionCreationsController.php:179 -msgid "Building transaction failed" -msgstr "" - -#: Controller/TransactionCreationsController.php:342 -msgid "No user selected" -msgstr "" - -#: Controller/TransactionCreationsController.php:442 -#: Controller/TransactionSendCoinsController.php:231 -msgid "Fehler mit der Session, bitte logge dich erneut ein!" -msgstr "" - -#: Controller/TransactionCreationsController.php:447 -msgid "Fehler, Benutzer gehört zu einer anderen Gruppe!" -msgstr "" - -#: Controller/TransactionCreationsController.php:452 -#: Controller/TransactionSendCoinsController.php:246 -msgid "Der Empfänger wurde nicht auf dem Login-Server gefunden, hat er sein Konto schon angelegt?" -msgstr "" - -#: Controller/TransactionCreationsController.php:456 -#: Controller/TransactionSendCoinsController.php:250 -msgid "Der Empfänger ist deaktiviert, daher können ihm zurzeit keine Gradidos gesendet werden." -msgstr "" - -#: Controller/TransactionCreationsController.php:460 -msgid "Der Betrag ist ungültig, er muss größer als 0 und <= 1000 sein." -msgstr "" - -#: Controller/TransactionCreationsController.php:464 -#: Controller/TransactionSendCoinsController.php:254 -msgid "Unbehandelter Fehler: " -msgstr "" - -#: Controller/TransactionCreationsController.php:625 -#: Controller/TransactionCreationsController.php:651 -msgid "The transaction creation has been saved." -msgstr "" - -#: Controller/TransactionCreationsController.php:629 -#: Controller/TransactionCreationsController.php:655 -msgid "The transaction creation could not be saved. Please, try again." -msgstr "" - -#: Controller/TransactionCreationsController.php:674 -msgid "The transaction creation has been deleted." -msgstr "" - -#: Controller/TransactionCreationsController.php:676 -msgid "The transaction creation could not be deleted. Please, try again." -msgstr "" - -#: Controller/TransactionGroupAddaddressController.php:57 -#: Controller/TransactionGroupAddaddressController.php:83 -msgid "The transaction group addaddres has been saved." -msgstr "" - -#: Controller/TransactionGroupAddaddressController.php:61 -#: Controller/TransactionGroupAddaddressController.php:87 -msgid "The transaction group addaddres could not be saved. Please, try again." -msgstr "" - -#: Controller/TransactionGroupAddaddressController.php:106 -msgid "The transaction group addaddres has been deleted." -msgstr "" - -#: Controller/TransactionGroupAddaddressController.php:108 -msgid "The transaction group addaddres could not be deleted. Please, try again." -msgstr "" - -#: Controller/TransactionGroupAllowtradesController.php:57 -#: Controller/TransactionGroupAllowtradesController.php:83 -msgid "The transaction group allowtrade has been saved." -msgstr "" - -#: Controller/TransactionGroupAllowtradesController.php:61 -#: Controller/TransactionGroupAllowtradesController.php:87 -msgid "The transaction group allowtrade could not be saved. Please, try again." -msgstr "" - -#: Controller/TransactionGroupAllowtradesController.php:106 -msgid "The transaction group allowtrade has been deleted." -msgstr "" - -#: Controller/TransactionGroupAllowtradesController.php:108 -msgid "The transaction group allowtrade could not be deleted. Please, try again." -msgstr "" - -#: Controller/TransactionGroupCreatesController.php:57 -#: Controller/TransactionGroupCreatesController.php:83 -msgid "The transaction group create has been saved." -msgstr "" - -#: Controller/TransactionGroupCreatesController.php:61 -#: Controller/TransactionGroupCreatesController.php:87 -msgid "The transaction group create could not be saved. Please, try again." -msgstr "" - -#: Controller/TransactionGroupCreatesController.php:106 -msgid "The transaction group create has been deleted." -msgstr "" - -#: Controller/TransactionGroupCreatesController.php:108 -msgid "The transaction group create could not be deleted. Please, try again." -msgstr "" - -#: Controller/TransactionSendCoinsController.php:45 -#: Template/Dashboard/index.ctp:38 -#: Template/Element/navi.ctp:34 -#: Template/StateUsers/view.ctp:83 -#: Template/StateUsers/view.ctp:117 -#: Template/TransactionSendCoins/create.ctp:9 -#: Template/TransactionSendCoins/create_raw.ctp:9 -msgid "Überweisung" -msgstr "" - -#: Controller/TransactionSendCoinsController.php:92 -#: Controller/TransactionSendCoinsController.php:119 -msgid "The transaction send coin has been saved." -msgstr "" - -#: Controller/TransactionSendCoinsController.php:96 -#: Controller/TransactionSendCoinsController.php:123 -msgid "The transaction send coin could not be saved. Please, try again." -msgstr "" - -#: Controller/TransactionSendCoinsController.php:173 -msgid "Du hast nicht genug Gradidos!" -msgstr "" - -#: Controller/TransactionSendCoinsController.php:179 -msgid "Du kannst dir selbst keine Gradidos senden!" -msgstr "" - -#: Controller/TransactionSendCoinsController.php:236 -msgid "Empfänger befindet sich nicht in Zielgruppe!" -msgstr "" - -#: Controller/TransactionSendCoinsController.php:241 -msgid "Ein Verwendungszweck zwischen 5 und 150 Zeichen wird benötig!" -msgstr "" - -#: Controller/TransactionSendCoinsController.php:428 -msgid "Error validating transaction" -msgstr "" - -#: Controller/TransactionSendCoinsController.php:431 -msgid "Error saving transaction" -msgstr "" - -#: Controller/TransactionSendCoinsController.php:433 -msgid "Gradidos erfolgreich überwiesen!" -msgstr "" - -#: Controller/TransactionSendCoinsController.php:437 -msgid "Error building transaction" -msgstr "" - -#: Controller/TransactionSendCoinsController.php:462 -msgid "The transaction send coin has been deleted." -msgstr "" - -#: Controller/TransactionSendCoinsController.php:464 -msgid "The transaction send coin could not be deleted. Please, try again." -msgstr "" - -#: Controller/TransactionSignaturesController.php:57 -#: Controller/TransactionSignaturesController.php:82 -msgid "The transaction signature has been saved." -msgstr "" - -#: Controller/TransactionSignaturesController.php:61 -#: Controller/TransactionSignaturesController.php:86 -msgid "The transaction signature could not be saved. Please, try again." -msgstr "" - -#: Controller/TransactionSignaturesController.php:104 -msgid "The transaction signature has been deleted." -msgstr "" - -#: Controller/TransactionSignaturesController.php:106 -msgid "The transaction signature could not be deleted. Please, try again." -msgstr "" - -#: Controller/TransactionTypesController.php:54 -#: Controller/TransactionTypesController.php:78 -msgid "The transaction type has been saved." -msgstr "" - -#: Controller/TransactionTypesController.php:58 -#: Controller/TransactionTypesController.php:82 -msgid "The transaction type could not be saved. Please, try again." -msgstr "" - -#: Controller/TransactionTypesController.php:99 -msgid "The transaction type has been deleted." -msgstr "" - -#: Controller/TransactionTypesController.php:101 -msgid "The transaction type could not be deleted. Please, try again." -msgstr "" - -#: Controller/TransactionsController.php:252 -msgid "No valid data given, please try again." -msgstr "" - -#: Controller/TransactionsController.php:289 -msgid "error retriving last saved transaction from gradido node." -msgstr "" - -#: Controller/TransactionsController.php:391 -#: Controller/TransactionsController.php:420 -msgid "The transaction has been saved." -msgstr "" - -#: Controller/TransactionsController.php:394 -msgid "Error by saving: " -msgstr "" - -#: Controller/TransactionsController.php:397 -#: Controller/TransactionsController.php:424 -msgid "The transaction could not be saved. Please, try again." -msgstr "" - -#: Controller/TransactionsController.php:443 -msgid "The transaction has been deleted." -msgstr "" - -#: Controller/TransactionsController.php:445 -msgid "The transaction could not be deleted. Please, try again." -msgstr "" - -#: Controller/UsersController.php:26 -msgid "Benutzerstatistiken" -msgstr "" - -#: Controller/UsersController.php:115 -#: Controller/UsersController.php:139 -msgid "The user has been saved." -msgstr "" - -#: Controller/UsersController.php:119 -#: Controller/UsersController.php:143 -msgid "The user could not be saved. Please, try again." -msgstr "" - -#: Controller/UsersController.php:160 -msgid "The user has been deleted." -msgstr "" - -#: Controller/UsersController.php:162 -msgid "The user could not be deleted. Please, try again." -msgstr "" - -#: Form/CreationForm.php:44 -#: Form/ProfileForm.php:39 -#: Form/TransferForm.php:42 -#: Form/TransferForm.php:53 -#: Form/TransferRawForm.php:35 -msgid "No HTML Tags like > or < please." -msgstr "" - -#: Form/CreationForm.php:56 -msgid "Please give a valid number with maximal 2 decimal places" -msgstr "" - -#: Form/ProfileForm.php:26 -msgid "The first name should contain max 255 characters" -msgstr "" - -#: Form/ProfileForm.php:30 -msgid "The last name should contain max 255 characters" -msgstr "" - -#: Form/ProfileForm.php:34 -msgid "The description should contain max 2000 characters" -msgstr "" - -#: Form/TransferForm.php:36 -msgid "A valid email address is required" -msgstr "" - -#: Form/TransferForm.php:46 -#: Form/TransferRawForm.php:29 -msgid "The memo should contain max 150 character" -msgstr "" - -#: Form/TransferForm.php:65 -#: Form/TransferRawForm.php:56 -msgid "Please give a valid positive number with maximal 2 decimal places" -msgstr "" - -#: Form/UserSearchForm.php:34 -msgid "The search text should contain max 50 character" -msgstr "" - -#: Form/UserSearchForm.php:41 -msgid "No HTML Tags like < or > please." -msgstr "" - -#: Model/Table/ServerUsersTable.php:58 -msgid "Please give a username" -msgstr "" - -#: Model/Table/ServerUsersTable.php:64 -msgid "Please give a password" -msgstr "" - -#: Model/Table/ServerUsersTable.php:69 -msgid "Please give a email" -msgstr "" - -#: Model/Transactions/TransactionCreation.php:209 -msgid "Gradido Schöpfung erhalten" -msgstr "" - -#: Model/Transactions/TransactionTransfer.php:210 -msgid "Gradidos erhalten" -msgstr "" - -#: Template/AddressTypes/add.ctp:9 -#: Template/AddressTypes/edit.ctp:9 -#: Template/AddressTypes/index.ctp:9 -#: Template/AddressTypes/index.ctp:25 -#: Template/AddressTypes/view.ctp:9 -#: Template/AddressTypes/view.ctp:45 -#: Template/AddressTypes/view.ctp:73 -#: Template/AdminErrors/add.ctp:9 -#: Template/AdminErrors/edit.ctp:9 -#: Template/AdminErrors/index.ctp:9 -#: Template/AdminErrors/index.ctp:26 -#: Template/AdminErrors/view.ctp:9 -#: Template/BlockchainTypes/add.ctp:9 -#: Template/BlockchainTypes/edit.ctp:9 -#: Template/BlockchainTypes/index.ctp:9 -#: Template/BlockchainTypes/index.ctp:22 -#: Template/BlockchainTypes/view.ctp:9 -#: Template/CommunityProfiles/add.ctp:9 -#: Template/CommunityProfiles/edit.ctp:9 -#: Template/CommunityProfiles/index.ctp:9 -#: Template/CommunityProfiles/index.ctp:21 -#: Template/CommunityProfiles/view.ctp:9 -#: Template/ElopageBuys/add.ctp:9 -#: Template/ElopageBuys/edit.ctp:9 -#: Template/ElopageBuys/index.ctp:9 -#: Template/ElopageBuys/index.ctp:30 -#: Template/ElopageBuys/view.ctp:9 -#: Template/OperatorTypes/add.ctp:9 -#: Template/OperatorTypes/edit.ctp:9 -#: Template/OperatorTypes/index.ctp:9 -#: Template/OperatorTypes/index.ctp:23 -#: Template/OperatorTypes/view.ctp:9 -#: Template/OperatorTypes/view.ctp:43 -#: Template/Operators/add.ctp:9 -#: Template/Operators/edit.ctp:9 -#: Template/Operators/index.ctp:9 -#: Template/Operators/index.ctp:24 -#: Template/Operators/view.ctp:9 -#: Template/Roles/add.ctp:9 -#: Template/Roles/edit.ctp:9 -#: Template/Roles/index.ctp:9 -#: Template/Roles/index.ctp:20 -#: Template/Roles/view.ctp:9 -#: Template/ServerUsers/add.ctp:9 -#: Template/ServerUsers/edit.ctp:9 -#: Template/ServerUsers/index.ctp:9 -#: Template/ServerUsers/index.ctp:26 -#: Template/ServerUsers/view.ctp:9 -#: Template/StateBalances/add.ctp:9 -#: Template/StateBalances/edit.ctp:9 -#: Template/StateBalances/index.ctp:9 -#: Template/StateBalances/index.ctp:25 -#: Template/StateBalances/view.ctp:9 -#: Template/StateCreated/add.ctp:9 -#: Template/StateCreated/edit.ctp:9 -#: Template/StateCreated/index.ctp:9 -#: Template/StateCreated/index.ctp:29 -#: Template/StateCreated/view.ctp:9 -#: Template/StateErrors/add.ctp:9 -#: Template/StateErrors/edit.ctp:9 -#: Template/StateErrors/index.ctp:9 -#: Template/StateErrors/index.ctp:26 -#: Template/StateErrors/view.ctp:9 -#: Template/StateGroupAddresses/add.ctp:9 -#: Template/StateGroupAddresses/edit.ctp:9 -#: Template/StateGroupAddresses/index.ctp:9 -#: Template/StateGroupAddresses/index.ctp:26 -#: Template/StateGroupAddresses/view.ctp:9 -#: Template/StateGroupRelationships/add.ctp:9 -#: Template/StateGroupRelationships/edit.ctp:9 -#: Template/StateGroupRelationships/index.ctp:9 -#: Template/StateGroupRelationships/index.ctp:22 -#: Template/StateGroupRelationships/view.ctp:9 -#: Template/StateGroups/add.ctp:9 -#: Template/StateGroups/edit.ctp:9 -#: Template/StateGroups/index.ctp:9 -#: Template/StateGroups/index.ctp:29 -#: Template/StateGroups/view.ctp:9 -#: Template/StateGroups/view.ctp:49 -#: Template/StateGroups/view.ctp:76 -#: Template/StateGroups/view.ctp:104 -#: Template/StateGroups/view.ctp:133 -#: Template/StateRelationshipTypes/add.ctp:9 -#: Template/StateRelationshipTypes/edit.ctp:9 -#: Template/StateRelationshipTypes/index.ctp:9 -#: Template/StateRelationshipTypes/index.ctp:21 -#: Template/StateRelationshipTypes/view.ctp:9 -#: Template/StateUserRoles/index.ctp:9 -#: Template/StateUserRoles/index.ctp:36 -#: Template/StateUserRoles/search.ctp:33 -#: Template/StateUserTransactions/add.ctp:9 -#: Template/StateUserTransactions/edit.ctp:9 -#: Template/StateUserTransactions/index.ctp:9 -#: Template/StateUserTransactions/index.ctp:28 -#: Template/StateUserTransactions/view.ctp:9 -#: Template/StateUsers/add.ctp:9 -#: Template/StateUsers/edit.ctp:9 -#: Template/StateUsers/index.ctp:9 -#: Template/StateUsers/index.ctp:36 -#: Template/StateUsers/view.ctp:9 -#: Template/StateUsers/view.ctp:34 -#: Template/StateUsers/view.ctp:58 -#: Template/StateUsers/view.ctp:89 -#: Template/StateUsers/view.ctp:122 -#: Template/TransactionCreations/add.ctp:9 -#: Template/TransactionCreations/edit.ctp:9 -#: Template/TransactionCreations/index.ctp:9 -#: Template/TransactionCreations/index.ctp:28 -#: Template/TransactionCreations/view.ctp:9 -#: Template/TransactionGroupAddaddress/add.ctp:9 -#: Template/TransactionGroupAddaddress/edit.ctp:9 -#: Template/TransactionGroupAddaddress/index.ctp:9 -#: Template/TransactionGroupAddaddress/index.ctp:26 -#: Template/TransactionGroupAddaddress/view.ctp:9 -#: Template/TransactionGroupAllowtrades/add.ctp:9 -#: Template/TransactionGroupAllowtrades/edit.ctp:9 -#: Template/TransactionGroupAllowtrades/index.ctp:9 -#: Template/TransactionGroupAllowtrades/index.ctp:24 -#: Template/TransactionGroupAllowtrades/view.ctp:9 -#: Template/TransactionGroupCreates/add.ctp:9 -#: Template/TransactionGroupCreates/edit.ctp:9 -#: Template/TransactionGroupCreates/index.ctp:9 -#: Template/TransactionGroupCreates/index.ctp:26 -#: Template/TransactionGroupCreates/view.ctp:9 -#: Template/TransactionSendCoins/add.ctp:9 -#: Template/TransactionSendCoins/edit.ctp:9 -#: Template/TransactionSendCoins/index.ctp:9 -#: Template/TransactionSendCoins/index.ctp:28 -#: Template/TransactionSendCoins/view.ctp:9 -#: Template/TransactionSignatures/add.ctp:9 -#: Template/TransactionSignatures/edit.ctp:9 -#: Template/TransactionSignatures/index.ctp:9 -#: Template/TransactionSignatures/index.ctp:22 -#: Template/TransactionSignatures/view.ctp:9 -#: Template/TransactionTypes/add.ctp:9 -#: Template/TransactionTypes/edit.ctp:9 -#: Template/TransactionTypes/index.ctp:9 -#: Template/TransactionTypes/index.ctp:23 -#: Template/TransactionTypes/view.ctp:9 -#: Template/TransactionTypes/view.ctp:44 -#: Template/Transactions/add.ctp:9 -#: Template/Transactions/edit.ctp:9 -#: Template/Transactions/index.ctp:9 -#: Template/Transactions/view.ctp:9 -#: Template/Transactions/view.ctp:66 -#: Template/Transactions/view.ctp:97 -#: Template/Transactions/view.ctp:125 -#: Template/Transactions/view.ctp:152 -#: Template/Transactions/view.ctp:180 -#: Template/Transactions/view.ctp:211 -#: Template/Transactions/view.ctp:241 -#: Template/Users/add.ctp:9 -#: Template/Users/edit.ctp:9 -#: Template/Users/index.ctp:9 -#: Template/Users/index.ctp:26 -#: Template/Users/view.ctp:9 -msgid "Actions" -msgstr "" - -#: Template/AddressTypes/add.ctp:10 -#: Template/AddressTypes/edit.ctp:16 -#: Template/AddressTypes/view.ctp:12 -#: Template/StateGroupAddresses/add.ctp:13 -#: Template/StateGroupAddresses/edit.ctp:19 -#: Template/StateGroupAddresses/index.ctp:13 -#: Template/StateGroupAddresses/view.ctp:16 -#: Template/TransactionGroupAddaddress/add.ctp:13 -#: Template/TransactionGroupAddaddress/edit.ctp:19 -#: Template/TransactionGroupAddaddress/index.ctp:13 -#: Template/TransactionGroupAddaddress/view.ctp:16 -msgid "List Address Types" -msgstr "" - -#: Template/AddressTypes/add.ctp:11 -#: Template/AddressTypes/edit.ctp:17 -#: Template/AddressTypes/index.ctp:11 -#: Template/AddressTypes/view.ctp:14 -#: Template/StateGroupAddresses/add.ctp:10 -#: Template/StateGroupAddresses/edit.ctp:16 -#: Template/StateGroupAddresses/view.ctp:12 -#: Template/StateGroups/add.ctp:11 -#: Template/StateGroups/edit.ctp:17 -#: Template/StateGroups/index.ctp:11 -#: Template/StateGroups/view.ctp:14 -msgid "List State Group Addresses" -msgstr "" - -#: Template/AddressTypes/add.ctp:12 -#: Template/AddressTypes/edit.ctp:18 -#: Template/AddressTypes/index.ctp:12 -#: Template/AddressTypes/view.ctp:15 -#: Template/StateGroupAddresses/index.ctp:10 -#: Template/StateGroupAddresses/view.ctp:13 -#: Template/StateGroups/add.ctp:12 -#: Template/StateGroups/edit.ctp:18 -#: Template/StateGroups/index.ctp:12 -#: Template/StateGroups/view.ctp:15 -msgid "New State Group Address" -msgstr "" - -#: Template/AddressTypes/add.ctp:13 -#: Template/AddressTypes/edit.ctp:19 -#: Template/AddressTypes/index.ctp:13 -#: Template/AddressTypes/view.ctp:16 -#: Template/TransactionGroupAddaddress/add.ctp:10 -#: Template/TransactionGroupAddaddress/edit.ctp:16 -#: Template/TransactionGroupAddaddress/view.ctp:12 -#: Template/Transactions/add.ctp:19 -#: Template/Transactions/edit.ctp:25 -#: Template/Transactions/index.ctp:19 -#: Template/Transactions/view.ctp:22 -msgid "List Transaction Group Addaddress" -msgstr "" - -#: Template/AddressTypes/add.ctp:14 -#: Template/AddressTypes/edit.ctp:20 -#: Template/AddressTypes/index.ctp:14 -#: Template/AddressTypes/view.ctp:17 -#: Template/TransactionGroupAddaddress/index.ctp:10 -#: Template/TransactionGroupAddaddress/view.ctp:13 -#: Template/Transactions/add.ctp:20 -#: Template/Transactions/edit.ctp:26 -#: Template/Transactions/index.ctp:20 -#: Template/Transactions/view.ctp:23 -msgid "New Transaction Group Addaddres" -msgstr "" - -#: Template/AddressTypes/add.ctp:20 -msgid "Add Address Type" -msgstr "" - -#: Template/AddressTypes/add.ctp:26 -#: Template/AddressTypes/edit.ctp:32 -#: Template/AdminErrors/add.ctp:28 -#: Template/AdminErrors/edit.ctp:34 -#: Template/BlockchainTypes/add.ctp:23 -#: Template/BlockchainTypes/edit.ctp:29 -#: Template/CommunityProfiles/add.ctp:22 -#: Template/CommunityProfiles/edit.ctp:28 -#: Template/ElopageBuys/add.ctp:31 -#: Template/ElopageBuys/edit.ctp:37 -#: Template/OperatorTypes/add.ctp:24 -#: Template/OperatorTypes/edit.ctp:30 -#: Template/Operators/add.ctp:24 -#: Template/Operators/edit.ctp:30 -#: Template/Roles/add.ctp:21 -#: Template/Roles/edit.ctp:27 -#: Template/ServerUsers/add.ctp:24 -#: Template/ServerUsers/edit.ctp:32 -#: Template/StateBalances/add.ctp:25 -#: Template/StateBalances/edit.ctp:31 -#: Template/StateCreated/add.ctp:29 -#: Template/StateCreated/edit.ctp:35 -#: Template/StateErrors/add.ctp:27 -#: Template/StateErrors/edit.ctp:33 -#: Template/StateGroupAddresses/add.ctp:26 -#: Template/StateGroupAddresses/edit.ctp:32 -#: Template/StateGroupRelationships/add.ctp:23 -#: Template/StateGroupRelationships/edit.ctp:29 -#: Template/StateGroups/add.ctp:30 -#: Template/StateGroups/edit.ctp:36 -#: Template/StateRelationshipTypes/add.ctp:22 -#: Template/StateRelationshipTypes/edit.ctp:28 -#: Template/StateUserTransactions/add.ctp:29 -#: Template/StateUserTransactions/edit.ctp:35 -#: Template/StateUsers/add.ctp:32 -#: Template/StateUsers/edit.ctp:37 -#: Template/TransactionCreations/add.ctp:27 -#: Template/TransactionCreations/edit.ctp:33 -#: Template/TransactionGroupAddaddress/add.ctp:26 -#: Template/TransactionGroupAddaddress/edit.ctp:32 -#: Template/TransactionGroupAllowtrades/add.ctp:25 -#: Template/TransactionGroupAllowtrades/edit.ctp:31 -#: Template/TransactionGroupCreates/add.ctp:27 -#: Template/TransactionGroupCreates/edit.ctp:33 -#: Template/TransactionSendCoins/add.ctp:28 -#: Template/TransactionSendCoins/edit.ctp:34 -#: Template/TransactionSignatures/add.ctp:23 -#: Template/TransactionSignatures/edit.ctp:29 -#: Template/TransactionTypes/add.ctp:24 -#: Template/TransactionTypes/edit.ctp:30 -#: Template/Transactions/add.ctp:42 -#: Template/Transactions/edit.ctp:47 -#: Template/Users/add.ctp:26 -#: Template/Users/edit.ctp:32 -msgid "Submit" -msgstr "" - -#: Template/AddressTypes/edit.ctp:11 -#: Template/AddressTypes/index.ctp:37 -#: Template/AddressTypes/view.ctp:56 -#: Template/AddressTypes/view.ctp:85 -#: Template/AdminErrors/edit.ctp:11 -#: Template/AdminErrors/index.ctp:43 -#: Template/BlockchainTypes/edit.ctp:11 -#: Template/BlockchainTypes/index.ctp:35 -#: Template/CommunityProfiles/edit.ctp:11 -#: Template/CommunityProfiles/index.ctp:33 -#: Template/ElopageBuys/edit.ctp:11 -#: Template/ElopageBuys/index.ctp:51 -#: Template/OperatorTypes/edit.ctp:11 -#: Template/OperatorTypes/index.ctp:35 -#: Template/OperatorTypes/view.ctp:54 -#: Template/Operators/edit.ctp:11 -#: Template/Operators/index.ctp:40 -#: Template/Roles/edit.ctp:11 -#: Template/Roles/index.ctp:31 -#: Template/ServerUsers/edit.ctp:11 -#: Template/ServerUsers/index.ctp:43 -#: Template/StateBalances/edit.ctp:11 -#: Template/StateBalances/index.ctp:38 -#: Template/StateCreated/edit.ctp:11 -#: Template/StateCreated/index.ctp:45 -#: Template/StateErrors/edit.ctp:11 -#: Template/StateErrors/index.ctp:39 -#: Template/StateErrors/show_for_user.ctp:44 -#: Template/StateGroupAddresses/edit.ctp:11 -#: Template/StateGroupAddresses/index.ctp:39 -#: Template/StateGroupRelationships/edit.ctp:11 -#: Template/StateGroupRelationships/index.ctp:35 -#: Template/StateGroups/edit.ctp:11 -#: Template/StateGroups/index.ctp:41 -#: Template/StateGroups/view.ctp:60 -#: Template/StateGroups/view.ctp:87 -#: Template/StateGroups/view.ctp:116 -#: Template/StateGroups/view.ctp:145 -#: Template/StateRelationshipTypes/edit.ctp:11 -#: Template/StateRelationshipTypes/index.ctp:33 -#: Template/StateUserRoles/index.ctp:53 -#: Template/StateUserTransactions/edit.ctp:11 -#: Template/StateUserTransactions/index.ctp:41 -#: Template/StateUsers/edit.ctp:11 -#: Template/StateUsers/index.ctp:53 -#: Template/TransactionCreations/edit.ctp:11 -#: Template/TransactionGroupAddaddress/edit.ctp:11 -#: Template/TransactionGroupAddaddress/index.ctp:39 -#: Template/TransactionGroupAllowtrades/edit.ctp:11 -#: Template/TransactionGroupAllowtrades/index.ctp:37 -#: Template/TransactionGroupCreates/edit.ctp:11 -#: Template/TransactionGroupCreates/index.ctp:39 -#: Template/TransactionSendCoins/edit.ctp:11 -#: Template/TransactionSignatures/edit.ctp:11 -#: Template/TransactionSignatures/index.ctp:33 -#: Template/TransactionTypes/edit.ctp:11 -#: Template/TransactionTypes/index.ctp:35 -#: Template/TransactionTypes/view.ctp:56 -#: Template/Transactions/edit.ctp:11 -#: Template/Transactions/view.ctp:80 -#: Template/Transactions/view.ctp:109 -#: Template/Transactions/view.ctp:136 -#: Template/Transactions/view.ctp:163 -#: Template/Transactions/view.ctp:192 -#: Template/Transactions/view.ctp:225 -#: Template/Transactions/view.ctp:252 -#: Template/Users/edit.ctp:11 -#: Template/Users/index.ctp:43 -msgid "Delete" -msgstr "" - -#: Template/AddressTypes/edit.ctp:13 -#: Template/AddressTypes/index.ctp:37 -#: Template/AddressTypes/view.ctp:11 -#: Template/AddressTypes/view.ctp:56 -#: Template/AddressTypes/view.ctp:85 -#: Template/AdminErrors/edit.ctp:13 -#: Template/AdminErrors/index.ctp:43 -#: Template/AdminErrors/view.ctp:11 -#: Template/BlockchainTypes/edit.ctp:13 -#: Template/BlockchainTypes/index.ctp:35 -#: Template/BlockchainTypes/view.ctp:11 -#: Template/CommunityProfiles/edit.ctp:13 -#: Template/CommunityProfiles/index.ctp:33 -#: Template/CommunityProfiles/view.ctp:11 -#: Template/ElopageBuys/edit.ctp:13 -#: Template/ElopageBuys/index.ctp:51 -#: Template/ElopageBuys/view.ctp:11 -#: Template/OperatorTypes/edit.ctp:13 -#: Template/OperatorTypes/index.ctp:35 -#: Template/OperatorTypes/view.ctp:11 -#: Template/OperatorTypes/view.ctp:54 -#: Template/Operators/edit.ctp:13 -#: Template/Operators/index.ctp:40 -#: Template/Operators/view.ctp:11 -#: Template/Roles/edit.ctp:13 -#: Template/Roles/index.ctp:31 -#: Template/Roles/view.ctp:11 -#: Template/ServerUsers/edit.ctp:13 -#: Template/ServerUsers/index.ctp:43 -#: Template/ServerUsers/view.ctp:11 -#: Template/StateBalances/edit.ctp:13 -#: Template/StateBalances/index.ctp:38 -#: Template/StateBalances/view.ctp:11 -#: Template/StateCreated/edit.ctp:13 -#: Template/StateCreated/index.ctp:45 -#: Template/StateCreated/view.ctp:11 -#: Template/StateErrors/edit.ctp:13 -#: Template/StateErrors/index.ctp:39 -#: Template/StateErrors/view.ctp:11 -#: Template/StateGroupAddresses/edit.ctp:13 -#: Template/StateGroupAddresses/index.ctp:39 -#: Template/StateGroupAddresses/view.ctp:11 -#: Template/StateGroupRelationships/edit.ctp:13 -#: Template/StateGroupRelationships/index.ctp:35 -#: Template/StateGroupRelationships/view.ctp:11 -#: Template/StateGroups/edit.ctp:13 -#: Template/StateGroups/index.ctp:41 -#: Template/StateGroups/view.ctp:11 -#: Template/StateGroups/view.ctp:60 -#: Template/StateGroups/view.ctp:87 -#: Template/StateGroups/view.ctp:116 -#: Template/StateGroups/view.ctp:145 -#: Template/StateRelationshipTypes/edit.ctp:13 -#: Template/StateRelationshipTypes/index.ctp:33 -#: Template/StateRelationshipTypes/view.ctp:11 -#: Template/StateUserRoles/index.ctp:53 -#: Template/StateUserTransactions/edit.ctp:13 -#: Template/StateUserTransactions/index.ctp:41 -#: Template/StateUserTransactions/view.ctp:11 -#: Template/StateUsers/edit.ctp:13 -#: Template/StateUsers/index.ctp:53 -#: Template/StateUsers/view.ctp:11 -#: Template/TransactionCreations/edit.ctp:13 -#: Template/TransactionCreations/view.ctp:11 -#: Template/TransactionGroupAddaddress/edit.ctp:13 -#: Template/TransactionGroupAddaddress/index.ctp:39 -#: Template/TransactionGroupAddaddress/view.ctp:11 -#: Template/TransactionGroupAllowtrades/edit.ctp:13 -#: Template/TransactionGroupAllowtrades/index.ctp:37 -#: Template/TransactionGroupAllowtrades/view.ctp:11 -#: Template/TransactionGroupCreates/edit.ctp:13 -#: Template/TransactionGroupCreates/index.ctp:39 -#: Template/TransactionGroupCreates/view.ctp:11 -#: Template/TransactionSendCoins/edit.ctp:13 -#: Template/TransactionSendCoins/view.ctp:11 -#: Template/TransactionSignatures/edit.ctp:13 -#: Template/TransactionSignatures/index.ctp:33 -#: Template/TransactionSignatures/view.ctp:11 -#: Template/TransactionTypes/edit.ctp:13 -#: Template/TransactionTypes/index.ctp:35 -#: Template/TransactionTypes/view.ctp:11 -#: Template/TransactionTypes/view.ctp:56 -#: Template/Transactions/edit.ctp:13 -#: Template/Transactions/view.ctp:11 -#: Template/Transactions/view.ctp:80 -#: Template/Transactions/view.ctp:109 -#: Template/Transactions/view.ctp:136 -#: Template/Transactions/view.ctp:163 -#: Template/Transactions/view.ctp:192 -#: Template/Transactions/view.ctp:225 -#: Template/Transactions/view.ctp:252 -#: Template/Users/edit.ctp:13 -#: Template/Users/index.ctp:43 -#: Template/Users/view.ctp:11 -msgid "Are you sure you want to delete # {0}?" -msgstr "" - -#: Template/AddressTypes/edit.ctp:26 -#: Template/AddressTypes/view.ctp:10 -msgid "Edit Address Type" -msgstr "" - -#: Template/AddressTypes/index.ctp:10 -#: Template/AddressTypes/view.ctp:13 -#: Template/StateGroupAddresses/add.ctp:14 -#: Template/StateGroupAddresses/edit.ctp:20 -#: Template/StateGroupAddresses/index.ctp:14 -#: Template/StateGroupAddresses/view.ctp:17 -#: Template/TransactionGroupAddaddress/add.ctp:14 -#: Template/TransactionGroupAddaddress/edit.ctp:20 -#: Template/TransactionGroupAddaddress/index.ctp:14 -#: Template/TransactionGroupAddaddress/view.ctp:17 -msgid "New Address Type" -msgstr "" - -#: Template/AddressTypes/index.ctp:18 -msgid "Address Types" -msgstr "" - -#: Template/AddressTypes/index.ctp:35 -#: Template/AddressTypes/view.ctp:54 -#: Template/AddressTypes/view.ctp:83 -#: Template/AdminErrors/index.ctp:39 -#: Template/BlockchainTypes/index.ctp:33 -#: Template/CommunityProfiles/index.ctp:31 -#: Template/ElopageBuys/index.ctp:49 -#: Template/OperatorTypes/index.ctp:33 -#: Template/OperatorTypes/view.ctp:52 -#: Template/Operators/index.ctp:38 -#: Template/Roles/index.ctp:29 -#: Template/ServerUsers/index.ctp:41 -#: Template/StateBalances/index.ctp:36 -#: Template/StateCreated/index.ctp:43 -#: Template/StateErrors/index.ctp:37 -#: Template/StateGroupAddresses/index.ctp:37 -#: Template/StateGroupRelationships/index.ctp:33 -#: Template/StateGroups/index.ctp:39 -#: Template/StateGroups/view.ctp:58 -#: Template/StateGroups/view.ctp:85 -#: Template/StateGroups/view.ctp:114 -#: Template/StateGroups/view.ctp:143 -#: Template/StateRelationshipTypes/index.ctp:31 -#: Template/StateUserRoles/index.ctp:51 -#: Template/StateUserTransactions/index.ctp:39 -#: Template/StateUsers/index.ctp:51 -#: Template/StateUsers/view.ctp:41 -#: Template/StateUsers/view.ctp:71 -#: Template/StateUsers/view.ctp:104 -#: Template/StateUsers/view.ctp:136 -#: Template/TransactionCreations/index.ctp:42 -#: Template/TransactionGroupAddaddress/index.ctp:37 -#: Template/TransactionGroupAllowtrades/index.ctp:35 -#: Template/TransactionGroupCreates/index.ctp:37 -#: Template/TransactionSendCoins/index.ctp:41 -#: Template/TransactionSignatures/index.ctp:31 -#: Template/TransactionTypes/index.ctp:33 -#: Template/TransactionTypes/view.ctp:54 -#: Template/Transactions/view.ctp:78 -#: Template/Transactions/view.ctp:107 -#: Template/Transactions/view.ctp:134 -#: Template/Transactions/view.ctp:161 -#: Template/Transactions/view.ctp:190 -#: Template/Transactions/view.ctp:223 -#: Template/Transactions/view.ctp:250 -#: Template/Users/index.ctp:41 -msgid "View" -msgstr "" - -#: Template/AddressTypes/index.ctp:36 -#: Template/AddressTypes/view.ctp:55 -#: Template/AddressTypes/view.ctp:84 -#: Template/AdminErrors/index.ctp:41 -#: Template/BlockchainTypes/index.ctp:34 -#: Template/CommunityProfiles/index.ctp:32 -#: Template/ElopageBuys/index.ctp:50 -#: Template/OperatorTypes/index.ctp:34 -#: Template/OperatorTypes/view.ctp:53 -#: Template/Operators/index.ctp:39 -#: Template/Roles/index.ctp:30 -#: Template/ServerUsers/index.ctp:42 -#: Template/StateBalances/index.ctp:37 -#: Template/StateCreated/index.ctp:44 -#: Template/StateErrors/index.ctp:38 -#: Template/StateGroupAddresses/index.ctp:38 -#: Template/StateGroupRelationships/index.ctp:34 -#: Template/StateGroups/index.ctp:40 -#: Template/StateGroups/view.ctp:59 -#: Template/StateGroups/view.ctp:86 -#: Template/StateGroups/view.ctp:115 -#: Template/StateGroups/view.ctp:144 -#: Template/StateRelationshipTypes/index.ctp:32 -#: Template/StateUserRoles/index.ctp:52 -#: Template/StateUserTransactions/index.ctp:40 -#: Template/StateUsers/index.ctp:52 -#: Template/TransactionGroupAddaddress/index.ctp:38 -#: Template/TransactionGroupAllowtrades/index.ctp:36 -#: Template/TransactionGroupCreates/index.ctp:38 -#: Template/TransactionSignatures/index.ctp:32 -#: Template/TransactionTypes/index.ctp:34 -#: Template/TransactionTypes/view.ctp:55 -#: Template/Transactions/view.ctp:79 -#: Template/Transactions/view.ctp:108 -#: Template/Transactions/view.ctp:135 -#: Template/Transactions/view.ctp:162 -#: Template/Transactions/view.ctp:191 -#: Template/Transactions/view.ctp:224 -#: Template/Transactions/view.ctp:251 -#: Template/Users/index.ctp:42 -msgid "Edit" -msgstr "" - -#: Template/AddressTypes/index.ctp:45 -#: Template/AdminErrors/index.ctp:50 -#: Template/BlockchainTypes/index.ctp:43 -#: Template/CommunityProfiles/index.ctp:41 -#: Template/ElopageBuys/index.ctp:59 -#: Template/OperatorTypes/index.ctp:43 -#: Template/Operators/index.ctp:48 -#: Template/Roles/index.ctp:39 -#: Template/ServerUsers/index.ctp:51 -#: Template/StateBalances/index.ctp:46 -#: Template/StateCreated/index.ctp:53 -#: Template/StateErrors/index.ctp:47 -#: Template/StateGroupAddresses/index.ctp:47 -#: Template/StateGroupRelationships/index.ctp:43 -#: Template/StateGroups/index.ctp:49 -#: Template/StateRelationshipTypes/index.ctp:41 -#: Template/StateUserRoles/index.ctp:61 -#: Template/StateUserTransactions/index.ctp:49 -#: Template/StateUsers/index.ctp:61 -#: Template/TransactionCreations/index.ctp:50 -#: Template/TransactionGroupAddaddress/index.ctp:47 -#: Template/TransactionGroupAllowtrades/index.ctp:45 -#: Template/TransactionGroupCreates/index.ctp:47 -#: Template/TransactionSendCoins/index.ctp:49 -#: Template/TransactionSignatures/index.ctp:41 -#: Template/TransactionTypes/index.ctp:43 -#: Template/Transactions/index.ctp:50 -#: Template/Users/index.ctp:51 -msgid "first" -msgstr "" - -#: Template/AddressTypes/index.ctp:46 -#: Template/AdminErrors/index.ctp:51 -#: Template/BlockchainTypes/index.ctp:44 -#: Template/CommunityProfiles/index.ctp:42 -#: Template/ElopageBuys/index.ctp:60 -#: Template/OperatorTypes/index.ctp:44 -#: Template/Operators/index.ctp:49 -#: Template/Roles/index.ctp:40 -#: Template/ServerUsers/index.ctp:52 -#: Template/StateBalances/index.ctp:47 -#: Template/StateCreated/index.ctp:54 -#: Template/StateErrors/index.ctp:48 -#: Template/StateGroupAddresses/index.ctp:48 -#: Template/StateGroupRelationships/index.ctp:44 -#: Template/StateGroups/index.ctp:50 -#: Template/StateRelationshipTypes/index.ctp:42 -#: Template/StateUserRoles/index.ctp:62 -#: Template/StateUserTransactions/index.ctp:50 -#: Template/StateUsers/index.ctp:62 -#: Template/TransactionCreations/index.ctp:51 -#: Template/TransactionGroupAddaddress/index.ctp:48 -#: Template/TransactionGroupAllowtrades/index.ctp:46 -#: Template/TransactionGroupCreates/index.ctp:48 -#: Template/TransactionSendCoins/index.ctp:50 -#: Template/TransactionSignatures/index.ctp:42 -#: Template/TransactionTypes/index.ctp:44 -#: Template/Transactions/index.ctp:51 -#: Template/Users/index.ctp:52 -msgid "previous" -msgstr "" - -#: Template/AddressTypes/index.ctp:48 -#: Template/AdminErrors/index.ctp:53 -#: Template/BlockchainTypes/index.ctp:46 -#: Template/CommunityProfiles/index.ctp:44 -#: Template/ElopageBuys/index.ctp:62 -#: Template/OperatorTypes/index.ctp:46 -#: Template/Operators/index.ctp:51 -#: Template/Roles/index.ctp:42 -#: Template/ServerUsers/index.ctp:54 -#: Template/StateBalances/index.ctp:49 -#: Template/StateCreated/index.ctp:56 -#: Template/StateErrors/index.ctp:50 -#: Template/StateGroupAddresses/index.ctp:50 -#: Template/StateGroupRelationships/index.ctp:46 -#: Template/StateGroups/index.ctp:52 -#: Template/StateRelationshipTypes/index.ctp:44 -#: Template/StateUserRoles/index.ctp:64 -#: Template/StateUserTransactions/index.ctp:52 -#: Template/StateUsers/index.ctp:64 -#: Template/TransactionCreations/index.ctp:53 -#: Template/TransactionGroupAddaddress/index.ctp:50 -#: Template/TransactionGroupAllowtrades/index.ctp:48 -#: Template/TransactionGroupCreates/index.ctp:50 -#: Template/TransactionSendCoins/index.ctp:52 -#: Template/TransactionSignatures/index.ctp:44 -#: Template/TransactionTypes/index.ctp:46 -#: Template/Transactions/index.ctp:53 -#: Template/Users/index.ctp:54 -msgid "next" -msgstr "" - -#: Template/AddressTypes/index.ctp:49 -#: Template/AdminErrors/index.ctp:54 -#: Template/BlockchainTypes/index.ctp:47 -#: Template/CommunityProfiles/index.ctp:45 -#: Template/ElopageBuys/index.ctp:63 -#: Template/OperatorTypes/index.ctp:47 -#: Template/Operators/index.ctp:52 -#: Template/Roles/index.ctp:43 -#: Template/ServerUsers/index.ctp:55 -#: Template/StateBalances/index.ctp:50 -#: Template/StateCreated/index.ctp:57 -#: Template/StateErrors/index.ctp:51 -#: Template/StateGroupAddresses/index.ctp:51 -#: Template/StateGroupRelationships/index.ctp:47 -#: Template/StateGroups/index.ctp:53 -#: Template/StateRelationshipTypes/index.ctp:45 -#: Template/StateUserRoles/index.ctp:65 -#: Template/StateUserTransactions/index.ctp:53 -#: Template/StateUsers/index.ctp:65 -#: Template/TransactionCreations/index.ctp:54 -#: Template/TransactionGroupAddaddress/index.ctp:51 -#: Template/TransactionGroupAllowtrades/index.ctp:49 -#: Template/TransactionGroupCreates/index.ctp:51 -#: Template/TransactionSendCoins/index.ctp:53 -#: Template/TransactionSignatures/index.ctp:45 -#: Template/TransactionTypes/index.ctp:47 -#: Template/Transactions/index.ctp:54 -#: Template/Users/index.ctp:55 -msgid "last" -msgstr "" - -#: Template/AddressTypes/index.ctp:51 -#: Template/AdminErrors/index.ctp:56 -#: Template/BlockchainTypes/index.ctp:49 -#: Template/CommunityProfiles/index.ctp:47 -#: Template/ElopageBuys/index.ctp:65 -#: Template/OperatorTypes/index.ctp:49 -#: Template/Operators/index.ctp:54 -#: Template/Roles/index.ctp:45 -#: Template/ServerUsers/index.ctp:57 -#: Template/StateBalances/index.ctp:52 -#: Template/StateCreated/index.ctp:59 -#: Template/StateErrors/index.ctp:53 -#: Template/StateGroupAddresses/index.ctp:53 -#: Template/StateGroupRelationships/index.ctp:49 -#: Template/StateGroups/index.ctp:55 -#: Template/StateRelationshipTypes/index.ctp:47 -#: Template/StateUserRoles/index.ctp:67 -#: Template/StateUserTransactions/index.ctp:55 -#: Template/StateUsers/index.ctp:67 -#: Template/TransactionCreations/index.ctp:56 -#: Template/TransactionGroupAddaddress/index.ctp:53 -#: Template/TransactionGroupAllowtrades/index.ctp:51 -#: Template/TransactionGroupCreates/index.ctp:53 -#: Template/TransactionSendCoins/index.ctp:55 -#: Template/TransactionSignatures/index.ctp:47 -#: Template/TransactionTypes/index.ctp:49 -#: Template/Transactions/index.ctp:56 -#: Template/Users/index.ctp:57 -msgid "Page {{page}} of {{pages}}, showing {{current}} record(s) out of {{count}} total" -msgstr "" - -#: Template/AddressTypes/view.ctp:11 -msgid "Delete Address Type" -msgstr "" - -#: Template/AddressTypes/view.ctp:24 -#: Template/BlockchainTypes/view.ctp:20 -#: Template/OperatorTypes/view.ctp:22 -#: Template/StateGroups/view.ctp:28 -#: Template/StateGroups/view.ctp:103 -#: Template/StateRelationshipTypes/view.ctp:20 -#: Template/TransactionGroupCreates/view.ctp:32 -#: Template/TransactionTypes/view.ctp:22 -#: Template/Transactions/view.ctp:179 -#: Template/Users/statistics.ctp:64 -msgid "Name" -msgstr "" - -#: Template/AddressTypes/view.ctp:28 -#: Template/BlockchainTypes/view.ctp:24 -#: Template/OperatorTypes/view.ctp:26 -#: Template/StateRelationshipTypes/view.ctp:24 -#: Template/TransactionTypes/view.ctp:26 -msgid "Text" -msgstr "" - -#: Template/AddressTypes/view.ctp:32 -#: Template/AddressTypes/view.ctp:41 -#: Template/AddressTypes/view.ctp:68 -#: Template/AdminErrors/view.ctp:46 -#: Template/BlockchainTypes/view.ctp:32 -#: Template/CommunityProfiles/view.ctp:24 -#: Template/ElopageBuys/view.ctp:32 -#: Template/OperatorTypes/view.ctp:30 -#: Template/OperatorTypes/view.ctp:39 -#: Template/Operators/view.ctp:32 -#: Template/Roles/view.ctp:24 -#: Template/ServerUsers/view.ctp:36 -#: Template/StateBalances/view.ctp:27 -#: Template/StateCreated/view.ctp:32 -#: Template/StateErrors/view.ctp:32 -#: Template/StateGroupAddresses/view.ctp:28 -#: Template/StateGroupRelationships/view.ctp:20 -#: Template/StateGroups/view.ctp:32 -#: Template/StateGroups/view.ctp:45 -#: Template/StateGroups/view.ctp:72 -#: Template/StateGroups/view.ctp:99 -#: Template/StateGroups/view.ctp:128 -#: Template/StateRelationshipTypes/view.ctp:28 -#: Template/StateUserTransactions/view.ctp:38 -#: Template/TransactionCreations/view.ctp:32 -#: Template/TransactionGroupAddaddress/view.ctp:32 -#: Template/TransactionGroupAllowtrades/view.ctp:26 -#: Template/TransactionGroupCreates/view.ctp:36 -#: Template/TransactionSendCoins/view.ctp:32 -#: Template/TransactionSignatures/view.ctp:26 -#: Template/TransactionTypes/view.ctp:30 -#: Template/TransactionTypes/view.ctp:39 -#: Template/Transactions/view.ctp:46 -#: Template/Transactions/view.ctp:59 -#: Template/Transactions/view.ctp:92 -#: Template/Transactions/view.ctp:121 -#: Template/Transactions/view.ctp:148 -#: Template/Transactions/view.ctp:175 -#: Template/Transactions/view.ctp:204 -#: Template/Transactions/view.ctp:237 -#: Template/Users/view.ctp:36 -msgid "Id" -msgstr "" - -#: Template/AddressTypes/view.ctp:37 -#: Template/StateGroups/view.ctp:41 -msgid "Related State Group Addresses" -msgstr "" - -#: Template/AddressTypes/view.ctp:42 -#: Template/StateGroupAddresses/view.ctp:32 -#: Template/TransactionGroupAllowtrades/view.ctp:30 -#: Template/Transactions/view.ctp:150 -msgid "Group Id" -msgstr "" - -#: Template/AddressTypes/view.ctp:43 -#: Template/AddressTypes/view.ctp:72 -#: Template/StateGroups/view.ctp:47 -#: Template/StateGroups/view.ctp:75 -#: Template/Transactions/view.ctp:124 -msgid "Public Key" -msgstr "" - -#: Template/AddressTypes/view.ctp:44 -#: Template/AddressTypes/view.ctp:70 -#: Template/StateGroups/view.ctp:48 -#: Template/Transactions/view.ctp:123 -msgid "Address Type Id" -msgstr "" - -#: Template/AddressTypes/view.ctp:64 -#: Template/Transactions/view.ctp:117 -msgid "Related Transaction Group Addaddress" -msgstr "" - -#: Template/AddressTypes/view.ctp:69 -#: Template/StateGroups/view.ctp:100 -#: Template/Transactions/view.ctp:60 -#: Template/Transactions/view.ctp:93 -#: Template/Transactions/view.ctp:122 -#: Template/Transactions/view.ctp:149 -#: Template/Transactions/view.ctp:176 -#: Template/Transactions/view.ctp:205 -#: Template/Transactions/view.ctp:238 -msgid "Transaction Id" -msgstr "" - -#: Template/AddressTypes/view.ctp:71 -msgid "Remove From Group" -msgstr "" - -#: Template/AdminErrors/add.ctp:10 -#: Template/AdminErrors/edit.ctp:16 -#: Template/AdminErrors/view.ctp:12 -msgid "List Admin Errors" -msgstr "" - -#: Template/AdminErrors/add.ctp:11 -#: Template/AdminErrors/edit.ctp:17 -#: Template/AdminErrors/index.ctp:11 -#: Template/AdminErrors/view.ctp:14 -#: Template/StateBalances/add.ctp:11 -#: Template/StateBalances/edit.ctp:17 -#: Template/StateBalances/index.ctp:11 -#: Template/StateBalances/view.ctp:14 -#: Template/StateCreated/add.ctp:13 -#: Template/StateCreated/edit.ctp:19 -#: Template/StateCreated/index.ctp:13 -#: Template/StateCreated/view.ctp:16 -#: Template/StateErrors/add.ctp:11 -#: Template/StateErrors/edit.ctp:17 -#: Template/StateErrors/index.ctp:11 -#: Template/StateErrors/view.ctp:14 -#: Template/StateGroups/add.ctp:13 -#: Template/StateGroups/edit.ctp:19 -#: Template/StateGroups/index.ctp:13 -#: Template/StateGroups/view.ctp:16 -#: Template/StateUserTransactions/add.ctp:11 -#: Template/StateUserTransactions/edit.ctp:17 -#: Template/StateUserTransactions/index.ctp:11 -#: Template/StateUserTransactions/view.ctp:14 -#: Template/StateUsers/add.ctp:10 -#: Template/StateUsers/edit.ctp:16 -#: Template/StateUsers/view.ctp:12 -#: Template/TransactionCreations/add.ctp:13 -#: Template/TransactionCreations/edit.ctp:19 -#: Template/TransactionCreations/index.ctp:13 -#: Template/TransactionCreations/view.ctp:16 -#: Template/TransactionSendCoins/add.ctp:13 -#: Template/TransactionSendCoins/edit.ctp:19 -#: Template/TransactionSendCoins/index.ctp:13 -#: Template/TransactionSendCoins/view.ctp:16 -msgid "List State Users" -msgstr "" - -#: Template/AdminErrors/add.ctp:12 -#: Template/AdminErrors/edit.ctp:18 -#: Template/AdminErrors/index.ctp:12 -#: Template/AdminErrors/view.ctp:15 -#: Template/StateBalances/add.ctp:12 -#: Template/StateBalances/edit.ctp:18 -#: Template/StateBalances/index.ctp:12 -#: Template/StateBalances/view.ctp:15 -#: Template/StateCreated/add.ctp:14 -#: Template/StateCreated/edit.ctp:20 -#: Template/StateCreated/index.ctp:14 -#: Template/StateCreated/view.ctp:17 -#: Template/StateErrors/add.ctp:12 -#: Template/StateErrors/edit.ctp:18 -#: Template/StateErrors/index.ctp:12 -#: Template/StateErrors/view.ctp:15 -#: Template/StateGroups/add.ctp:14 -#: Template/StateGroups/edit.ctp:20 -#: Template/StateGroups/index.ctp:14 -#: Template/StateGroups/view.ctp:17 -#: Template/StateUserRoles/index.ctp:10 -#: Template/StateUserTransactions/add.ctp:12 -#: Template/StateUserTransactions/edit.ctp:18 -#: Template/StateUserTransactions/index.ctp:12 -#: Template/StateUserTransactions/view.ctp:15 -#: Template/StateUsers/index.ctp:10 -#: Template/StateUsers/view.ctp:13 -#: Template/TransactionCreations/add.ctp:14 -#: Template/TransactionCreations/edit.ctp:20 -#: Template/TransactionCreations/index.ctp:14 -#: Template/TransactionCreations/view.ctp:17 -#: Template/TransactionSendCoins/add.ctp:14 -#: Template/TransactionSendCoins/edit.ctp:20 -#: Template/TransactionSendCoins/index.ctp:14 -#: Template/TransactionSendCoins/view.ctp:17 -msgid "New State User" -msgstr "" - -#: Template/AdminErrors/add.ctp:18 -msgid "Add Admin Error" -msgstr "" - -#: Template/AdminErrors/edit.ctp:24 -#: Template/AdminErrors/view.ctp:10 -msgid "Edit Admin Error" -msgstr "" - -#: Template/AdminErrors/index.ctp:10 -#: Template/AdminErrors/view.ctp:13 -msgid "New Admin Error" -msgstr "" - -#: Template/AdminErrors/view.ctp:11 -msgid "Delete Admin Error" -msgstr "" - -#: Template/AdminErrors/view.ctp:22 -#: Template/StateBalances/view.ctp:23 -#: Template/StateCreated/view.ctp:28 -#: Template/StateErrors/view.ctp:24 -#: Template/StateUserTransactions/view.ctp:26 -#: Template/TransactionCreations/view.ctp:28 -#: Template/TransactionSendCoins/view.ctp:28 -msgid "State User" -msgstr "" - -#: Template/AdminErrors/view.ctp:26 -msgid "Controller" -msgstr "" - -#: Template/AdminErrors/view.ctp:30 -msgid "Action" -msgstr "" - -#: Template/AdminErrors/view.ctp:34 -msgid "State" -msgstr "" - -#: Template/AdminErrors/view.ctp:38 -msgid "Msg" -msgstr "" - -#: Template/AdminErrors/view.ctp:42 -msgid "Details" -msgstr "" - -#: Template/AdminErrors/view.ctp:50 -#: Template/ServerUsers/view.ctp:44 -#: Template/StateCreated/view.ctp:48 -#: Template/StateErrors/view.ctp:36 -#: Template/Transactions/view.ctp:64 -#: Template/Users/view.ctp:44 -msgid "Created" -msgstr "" - -#: Template/BlockchainTypes/add.ctp:10 -#: Template/BlockchainTypes/edit.ctp:16 -#: Template/BlockchainTypes/view.ctp:12 -msgid "List Blockchain Types" -msgstr "" - -#: Template/BlockchainTypes/add.ctp:16 -msgid "Add Blockchain Type" -msgstr "" - -#: Template/BlockchainTypes/edit.ctp:22 -#: Template/BlockchainTypes/view.ctp:10 -msgid "Edit Blockchain Type" -msgstr "" - -#: Template/BlockchainTypes/index.ctp:10 -#: Template/BlockchainTypes/view.ctp:13 -msgid "New Blockchain Type" -msgstr "" - -#: Template/BlockchainTypes/index.ctp:14 -msgid "Blockchain Types" -msgstr "" - -#: Template/BlockchainTypes/view.ctp:11 -msgid "Delete Blockchain Type" -msgstr "" - -#: Template/BlockchainTypes/view.ctp:28 -msgid "Symbol" -msgstr "" - -#: Template/CommunityProfiles/add.ctp:10 -#: Template/CommunityProfiles/edit.ctp:16 -#: Template/CommunityProfiles/view.ctp:12 -msgid "List Community Profiles" -msgstr "" - -#: Template/CommunityProfiles/add.ctp:16 -msgid "Add Community Profile" -msgstr "" - -#: Template/CommunityProfiles/edit.ctp:22 -#: Template/CommunityProfiles/view.ctp:10 -msgid "Edit Community Profile" -msgstr "" - -#: Template/CommunityProfiles/index.ctp:10 -#: Template/CommunityProfiles/view.ctp:13 -msgid "New Community Profile" -msgstr "" - -#: Template/CommunityProfiles/index.ctp:14 -msgid "Community Profiles" -msgstr "" - -#: Template/CommunityProfiles/view.ctp:11 -msgid "Delete Community Profile" -msgstr "" - -#: Template/CommunityProfiles/view.ctp:20 -msgid "Profile Desc" -msgstr "" - -#: Template/CommunityProfiles/view.ctp:28 -#: Template/Transactions/view.ctp:63 -#: Template/Transactions/view.ctp:94 -#: Template/Transactions/view.ctp:206 -msgid "State User Id" -msgstr "" - -#: Template/Dashboard/error_http_request.ctp:9 -msgid "Error, Please try again" -msgstr "" - -#: Template/Dashboard/error_http_request.ctp:13 -#: Template/Layout/error.ctp:43 -msgid "Back" -msgstr "" - -#: Template/Dashboard/index.ctp:14 -#: Template/Dashboard/index.ctp:18 -#: Template/Dashboard/server_index.ctp:9 -msgid "Willkommen" -msgstr "" - -#: Template/Dashboard/index.ctp:47 -msgid "löschen" -msgstr "" - -#: Template/Dashboard/index.ctp:51 -msgid "Adminbereich" -msgstr "" - -#: Template/Dashboard/index.ctp:57 -#: Template/Dashboard/server_index.ctp:21 -msgid "viele schöpfen" -msgstr "" - -#: Template/Dashboard/index.ctp:70 -msgid "Anmeldungen" -msgstr "" - -#: Template/Dashboard/index.ctp:94 -msgid "suchen" -msgstr "" - -#: Template/Dashboard/index.ctp:102 -msgid "hinzufügen" -msgstr "" - -#: Template/Dashboard/index.ctp:108 -msgid "hat sein Passwort und Passphrase vergessen" -msgstr "" - -#: Template/Dashboard/index.ctp:119 -msgid "Gruppen" -msgstr "" - -#: Template/Dashboard/index.ctp:125 -msgid "Server" -msgstr "" - -#: Template/Dashboard/index.ctp:131 -msgid "Topics" -msgstr "" - -#: Template/Dashboard/index.ctp:139 -msgid "Hedera Accounts" -msgstr "" - -#: Template/Element/navi.ctp:35 -msgid "Mitgliederbereich" -msgstr "" - -#: Template/Element/navi_header.ctp:38 -#: Template/Element/navi_notify.ctp:35 -msgid "Transaktionen sind noch zu unterzeichnen" -msgstr "" - -#: Template/Element/user_menu.ctp:22 -msgid "Abmelden" -msgstr "" - -#: Template/Element/Flash/success.ctp:9 -msgid "Info:" -msgstr "" - -#: Template/ElopageBuys/add.ctp:10 -#: Template/ElopageBuys/edit.ctp:16 -#: Template/ElopageBuys/view.ctp:12 -msgid "List Elopage Buys" -msgstr "" - -#: Template/ElopageBuys/add.ctp:16 -msgid "Add Elopage Buy" -msgstr "" - -#: Template/ElopageBuys/edit.ctp:22 -#: Template/ElopageBuys/view.ctp:10 -msgid "Edit Elopage Buy" -msgstr "" - -#: Template/ElopageBuys/index.ctp:10 -#: Template/ElopageBuys/view.ctp:13 -msgid "New Elopage Buy" -msgstr "" - -#: Template/ElopageBuys/index.ctp:14 -msgid "Elopage Buys" -msgstr "" - -#: Template/ElopageBuys/statistics.ctp:28 -#: Template/Users/statistics.ctp:49 -msgid "Anmeldungen diesen Monat" -msgstr "" - -#: Template/ElopageBuys/view.ctp:11 -msgid "Delete Elopage Buy" -msgstr "" - -#: Template/ElopageBuys/view.ctp:20 -msgid "Payer Email" -msgstr "" - -#: Template/ElopageBuys/view.ctp:24 -msgid "Publisher Email" -msgstr "" - -#: Template/ElopageBuys/view.ctp:28 -msgid "Event" -msgstr "" - -#: Template/ElopageBuys/view.ctp:36 -msgid "Elopage User Id" -msgstr "" - -#: Template/ElopageBuys/view.ctp:40 -msgid "Affiliate Program Id" -msgstr "" - -#: Template/ElopageBuys/view.ctp:44 -msgid "Publisher Id" -msgstr "" - -#: Template/ElopageBuys/view.ctp:48 -msgid "Order Id" -msgstr "" - -#: Template/ElopageBuys/view.ctp:52 -msgid "Product Id" -msgstr "" - -#: Template/ElopageBuys/view.ctp:56 -msgid "Product Price" -msgstr "" - -#: Template/ElopageBuys/view.ctp:60 -msgid "Success Date" -msgstr "" - -#: Template/ElopageBuys/view.ctp:64 -msgid "Payed" -msgstr "" - -#: Template/ElopageBuys/view.ctp:65 -#: Template/ServerUsers/view.ctp:53 -#: Template/TransactionGroupAllowtrades/view.ctp:35 -#: Template/Users/view.ctp:49 -msgid "Yes" -msgstr "" - -#: Template/ElopageBuys/view.ctp:65 -#: Template/ServerUsers/view.ctp:53 -#: Template/TransactionGroupAllowtrades/view.ctp:35 -#: Template/Users/view.ctp:49 -msgid "No" -msgstr "" - -#: Template/Email/text/notification_creation.ctp:8 -msgid "Gradido Schöpfung" -msgstr "" - -#: Template/Email/text/notification_creation.ctp:9 -#: Template/Email/text/notification_transaction_failed.ctp:14 -#: Template/Email/text/notification_transfer.ctp:12 -msgid "Hallo" -msgstr "" - -#: Template/Email/text/notification_creation.ctp:11 -msgid "für dich wurden soeben {0} geschöpft." -msgstr "" - -#: Template/Email/text/notification_creation.ctp:16 -#: Template/Email/text/notification_transaction_failed.ctp:46 -#: Template/Email/text/notification_transfer.ctp:19 -msgid "Bitte antworte nicht auf diese E-Mail!" -msgstr "" - -#: Template/Email/text/notification_creation.ctp:18 -#: Template/Email/text/notification_transaction_failed.ctp:49 -#: Template/Email/text/notification_transfer.ctp:25 -msgid "Mit freundlichen Grüßen" -msgstr "" - -#: Template/Email/text/notification_transaction_failed.ctp:8 -msgid "Gradido Transaktion fehlgeschlagen" -msgstr "" - -#: Template/Email/text/notification_transaction_failed.ctp:16 -msgid "Deine letzte Transaktion ist leider fehlgeschlagen." -msgstr "" - -#: Template/Email/text/notification_transaction_failed.ctp:20 -msgid "Du wolltest {0} für {1} schöpfen." -msgstr "" - -#: Template/Email/text/notification_transaction_failed.ctp:24 -msgid "Das Zieldatum war: " -msgstr "" - -#: Template/Email/text/notification_transaction_failed.ctp:26 -msgid "Du wolltest {0} an {1} senden." -msgstr "" - -#: Template/Email/text/notification_transaction_failed.ctp:32 -msgid "Das ist schief gelaufen: " -msgstr "" - -#: Template/Email/text/notification_transaction_failed.ctp:35 -msgid "Fehler beim speichern in der Datenbank. Bitte versuche es später erneut" -msgstr "" - -#: Template/Email/text/notification_transaction_failed.ctp:36 -msgid "Fehler beim parsen der Transaktion. Bitte versuche es später erneut" -msgstr "" - -#: Template/Email/text/notification_transfer.ctp:8 -msgid "Gradido Überweisung" -msgstr "" - -#: Template/Email/text/notification_transfer.ctp:14 -msgid "Du hast soeben {0} von {1} erhalten." -msgstr "" - -#: Template/Email/text/notification_transfer.ctp:15 -msgid "{0} schreibt:" -msgstr "" - -#: Template/Email/text/notification_transfer.ctp:20 -msgid "Wenn Du " -msgstr "" - -#: Template/Email/text/notification_transfer.ctp:20 -msgid " per E-Mail antworten willst, schreibe stattdessen an die Adresse: " -msgstr "" - -#: Template/Layout/default.ctp:38 -msgid "Logout" -msgstr "" - -#: Template/Layout/error.ctp:35 -msgid "Error" -msgstr "" - -#: Template/Layout/frontend.ctp:95 -msgid "Datenschutzerklärung" -msgstr "" - -#: Template/Layout/frontend.ctp:96 -msgid "Impressum" -msgstr "" - -#: Template/Layout/frontend.ctp:108 -msgid "Community Server in Entwicklung" -msgstr "" - -#: Template/OperatorTypes/add.ctp:10 -#: Template/OperatorTypes/edit.ctp:16 -#: Template/OperatorTypes/view.ctp:12 -msgid "List Operator Types" -msgstr "" - -#: Template/OperatorTypes/add.ctp:11 -#: Template/OperatorTypes/edit.ctp:17 -#: Template/OperatorTypes/index.ctp:11 -#: Template/OperatorTypes/view.ctp:14 -#: Template/Operators/add.ctp:10 -#: Template/Operators/edit.ctp:16 -#: Template/Operators/view.ctp:12 -msgid "List Operators" -msgstr "" - -#: Template/OperatorTypes/add.ctp:12 -#: Template/OperatorTypes/edit.ctp:18 -#: Template/OperatorTypes/index.ctp:12 -#: Template/OperatorTypes/view.ctp:15 -#: Template/Operators/index.ctp:10 -#: Template/Operators/view.ctp:13 -msgid "New Operator" -msgstr "" - -#: Template/OperatorTypes/add.ctp:18 -msgid "Add Operator Type" -msgstr "" - -#: Template/OperatorTypes/edit.ctp:24 -#: Template/OperatorTypes/view.ctp:10 -msgid "Edit Operator Type" -msgstr "" - -#: Template/OperatorTypes/index.ctp:10 -#: Template/OperatorTypes/view.ctp:13 -msgid "New Operator Type" -msgstr "" - -#: Template/OperatorTypes/index.ctp:16 -msgid "Operator Types" -msgstr "" - -#: Template/OperatorTypes/view.ctp:11 -msgid "Delete Operator Type" -msgstr "" - -#: Template/OperatorTypes/view.ctp:35 -msgid "Related Operators" -msgstr "" - -#: Template/OperatorTypes/view.ctp:40 -#: Template/Operators/view.ctp:20 -#: Template/ServerUsers/view.ctp:20 -msgid "Username" -msgstr "" - -#: Template/OperatorTypes/view.ctp:41 -#: Template/Operators/view.ctp:36 -msgid "Operator Type Id" -msgstr "" - -#: Template/OperatorTypes/view.ctp:42 -#: Template/Operators/view.ctp:28 -msgid "Data Base64" -msgstr "" - -#: Template/Operators/add.ctp:16 -msgid "Add Operator" -msgstr "" - -#: Template/Operators/edit.ctp:22 -#: Template/Operators/view.ctp:10 -msgid "Edit Operator" -msgstr "" - -#: Template/Operators/index.ctp:14 -msgid "Operators" -msgstr "" - -#: Template/Operators/view.ctp:11 -msgid "Delete Operator" -msgstr "" - -#: Template/Operators/view.ctp:24 -msgid "User Pubkey" -msgstr "" - -#: Template/Profile/edit.ctp:9 -msgid "Profil ändern" -msgstr "" - -#: Template/Profile/edit.ctp:18 -msgid "Vorname" -msgstr "" - -#: Template/Profile/edit.ctp:19 -msgid "Nachname" -msgstr "" - -#: Template/Profile/edit.ctp:20 -msgid "Profilbild" -msgstr "" - -#: Template/Profile/edit.ctp:25 -msgid "Beschreibung" -msgstr "" - -#: Template/Profile/edit.ctp:26 -msgid "Daten speichern" -msgstr "" - -#: Template/Roles/add.ctp:10 -#: Template/Roles/edit.ctp:16 -#: Template/Roles/view.ctp:12 -msgid "List Roles" -msgstr "" - -#: Template/Roles/add.ctp:16 -msgid "Add Role" -msgstr "" - -#: Template/Roles/edit.ctp:22 -#: Template/Roles/view.ctp:10 -msgid "Edit Role" -msgstr "" - -#: Template/Roles/index.ctp:10 -#: Template/Roles/view.ctp:13 -msgid "New Role" -msgstr "" - -#: Template/Roles/index.ctp:14 -msgid "Roles" -msgstr "" - -#: Template/Roles/view.ctp:11 -msgid "Delete Role" -msgstr "" - -#: Template/Roles/view.ctp:20 -msgid "Title" -msgstr "" - -#: Template/ServerUsers/add.ctp:10 -#: Template/ServerUsers/edit.ctp:16 -#: Template/ServerUsers/view.ctp:12 -msgid "List Server Users" -msgstr "" - -#: Template/ServerUsers/add.ctp:16 -msgid "Add Server User" -msgstr "" - -#: Template/ServerUsers/edit.ctp:22 -#: Template/ServerUsers/view.ctp:10 -msgid "Edit Server User" -msgstr "" - -#: Template/ServerUsers/index.ctp:10 -#: Template/ServerUsers/view.ctp:13 -msgid "New Server User" -msgstr "" - -#: Template/ServerUsers/index.ctp:14 -msgid "Server Users" -msgstr "" - -#: Template/ServerUsers/login.ctp:16 -msgid "Please enter your username and password" -msgstr "" - -#: Template/ServerUsers/login.ctp:20 -msgid "Login" -msgstr "" - -#: Template/ServerUsers/view.ctp:11 -msgid "Delete Server User" -msgstr "" - -#: Template/ServerUsers/view.ctp:24 -#: Template/Users/view.ctp:40 -msgid "Password" -msgstr "" - -#: Template/ServerUsers/view.ctp:28 -#: Template/Users/view.ctp:20 -msgid "Email" -msgstr "" - -#: Template/ServerUsers/view.ctp:32 -#: Template/StateUserRoles/assign_role.ctp:45 -#: Template/StateUserRoles/search.ctp:32 -msgid "Role" -msgstr "" - -#: Template/ServerUsers/view.ctp:40 -msgid "Last Login" -msgstr "" - -#: Template/ServerUsers/view.ctp:48 -#: Template/StateBalances/view.ctp:35 -msgid "Modified" -msgstr "" - -#: Template/ServerUsers/view.ctp:52 -msgid "Activated" -msgstr "" - -#: Template/StateBalances/add.ctp:10 -#: Template/StateBalances/edit.ctp:16 -#: Template/StateBalances/view.ctp:12 -#: Template/StateUserRoles/index.ctp:13 -#: Template/StateUsers/add.ctp:13 -#: Template/StateUsers/edit.ctp:19 -#: Template/StateUsers/index.ctp:13 -#: Template/StateUsers/view.ctp:16 -msgid "List State Balances" -msgstr "" - -#: Template/StateBalances/add.ctp:19 -msgid "Add State Balance" -msgstr "" - -#: Template/StateBalances/edit.ctp:25 -#: Template/StateBalances/view.ctp:10 -msgid "Edit State Balance" -msgstr "" - -#: Template/StateBalances/index.ctp:10 -#: Template/StateBalances/view.ctp:13 -#: Template/StateUserRoles/index.ctp:14 -#: Template/StateUsers/add.ctp:14 -#: Template/StateUsers/edit.ctp:20 -#: Template/StateUsers/index.ctp:14 -#: Template/StateUsers/view.ctp:17 -msgid "New State Balance" -msgstr "" - -#: Template/StateBalances/index.ctp:16 -msgid "State Balances" -msgstr "" - -#: Template/StateBalances/overview.ctp:10 -msgid "Aktueller Kontostand: " -msgstr "" - -#: Template/StateBalances/overview.ctp:34 -msgid "Absender" -msgstr "" - -#: Template/StateBalances/overview.ctp:35 -#: Template/StateUsers/view.ctp:57 -#: Template/StateUsers/view.ctp:87 -#: Template/StateUsers/view.ctp:121 -#: Template/TransactionSendCoins/create.ctp:21 -#: Template/TransactionSendCoins/create_raw.ctp:32 -msgid "Verwendungszweck" -msgstr "" - -#: Template/StateBalances/overview.ctp:36 -#: Template/StateBalances/overview_gdt.ctp:42 -#: Template/StateBalances/overview_gdt.ctp:75 -msgid "Datum" -msgstr "" - -#: Template/StateBalances/overview.ctp:37 -#: Template/StateUsers/view.ctp:56 -#: Template/StateUsers/view.ctp:86 -#: Template/StateUsers/view.ctp:120 -msgid "Betrag" -msgstr "" - -#: Template/StateBalances/overview.ctp:38 -msgid "Transaktions Nr." -msgstr "" - -#: Template/StateBalances/overview.ctp:38 -msgid "Nr" -msgstr "" - -#: Template/StateBalances/overview.ctp:75 -msgid "Geschöpft" -msgstr "" - -#: Template/StateBalances/overview.ctp:78 -msgid "Gesendet" -msgstr "" - -#: Template/StateBalances/overview.ctp:81 -msgid "Empfangen" -msgstr "" - -#: Template/StateBalances/overview.ctp:84 -msgid "Vergänglichkeit" -msgstr "" - -#: Template/StateBalances/overview.ctp:124 -#: Template/TransactionCreations/create_multi.ctp:184 -msgid "Laufende Transaktion" -msgstr "" - -#: Template/StateBalances/overview.ctp:126 -#: Template/TransactionCreations/create_multi.ctp:186 -msgid "Laufende Transaktionen" -msgstr "" - -#: Template/StateBalances/overview_gdt.ctp:21 -msgid "Zur Verfügung: " -msgstr "" - -#: Template/StateBalances/overview_gdt.ctp:31 -msgid "Nur die letzten 100 Einträge werden angezeigt!" -msgstr "" - -#: Template/StateBalances/overview_gdt.ctp:38 -msgid "Eigene Einzahlungen" -msgstr "" - -#: Template/StateBalances/overview_gdt.ctp:41 -#: Template/Users/statistics.ctp:65 -msgid "E-Mail" -msgstr "" - -#: Template/StateBalances/overview_gdt.ctp:43 -msgid "Kommentar" -msgstr "" - -#: Template/StateBalances/overview_gdt.ctp:44 -#: Template/StateBalances/overview_gdt.ctp:76 -msgid "Euro" -msgstr "" - -#: Template/StateBalances/overview_gdt.ctp:45 -#: Template/StateBalances/overview_gdt.ctp:77 -msgid "Factor" -msgstr "" - -#: Template/StateBalances/overview_gdt.ctp:46 -#: Template/StateBalances/overview_gdt.ctp:78 -msgid "GDT" -msgstr "" - -#: Template/StateBalances/overview_gdt.ctp:71 -msgid "Einzahlungen anderer (Publisherprogramm)" -msgstr "" - -#: Template/StateBalances/overview_gdt.ctp:74 -msgid "Einzahlender" -msgstr "" - -#: Template/StateBalances/view.ctp:11 -msgid "Delete State Balance" -msgstr "" - -#: Template/StateBalances/view.ctp:31 -#: Template/StateUsers/view.ctp:33 -#: Template/TransactionCreations/view.ctp:36 -#: Template/TransactionSendCoins/view.ctp:36 -#: Template/Transactions/view.ctp:95 -#: Template/Transactions/view.ctp:209 -msgid "Amount" -msgstr "" - -#: Template/StateCreated/add.ctp:10 -#: Template/StateCreated/edit.ctp:16 -#: Template/StateCreated/view.ctp:12 -#: Template/StateUserRoles/index.ctp:15 -#: Template/StateUsers/add.ctp:15 -#: Template/StateUsers/edit.ctp:21 -#: Template/StateUsers/index.ctp:15 -#: Template/Transactions/add.ctp:15 -#: Template/Transactions/edit.ctp:21 -#: Template/Transactions/index.ctp:15 -#: Template/Transactions/view.ctp:18 -msgid "List State Created" -msgstr "" - -#: Template/StateCreated/add.ctp:11 -#: Template/StateCreated/edit.ctp:17 -#: Template/StateCreated/index.ctp:11 -#: Template/StateCreated/view.ctp:14 -#: Template/StateGroups/add.ctp:17 -#: Template/StateGroups/edit.ctp:23 -#: Template/StateGroups/index.ctp:17 -#: Template/StateGroups/view.ctp:20 -#: Template/StateUserTransactions/add.ctp:13 -#: Template/StateUserTransactions/edit.ctp:19 -#: Template/StateUserTransactions/index.ctp:13 -#: Template/StateUserTransactions/view.ctp:16 -#: Template/TransactionCreations/add.ctp:11 -#: Template/TransactionCreations/edit.ctp:17 -#: Template/TransactionCreations/index.ctp:11 -#: Template/TransactionCreations/view.ctp:14 -#: Template/TransactionGroupAddaddress/add.ctp:11 -#: Template/TransactionGroupAddaddress/edit.ctp:17 -#: Template/TransactionGroupAddaddress/index.ctp:11 -#: Template/TransactionGroupAddaddress/view.ctp:14 -#: Template/TransactionGroupAllowtrades/add.ctp:11 -#: Template/TransactionGroupAllowtrades/edit.ctp:17 -#: Template/TransactionGroupAllowtrades/index.ctp:11 -#: Template/TransactionGroupAllowtrades/view.ctp:14 -#: Template/TransactionGroupCreates/add.ctp:11 -#: Template/TransactionGroupCreates/edit.ctp:17 -#: Template/TransactionGroupCreates/index.ctp:11 -#: Template/TransactionGroupCreates/view.ctp:14 -#: Template/TransactionSendCoins/add.ctp:11 -#: Template/TransactionSendCoins/edit.ctp:17 -#: Template/TransactionSendCoins/index.ctp:11 -#: Template/TransactionSendCoins/view.ctp:14 -#: Template/TransactionSignatures/add.ctp:11 -#: Template/TransactionSignatures/edit.ctp:17 -#: Template/TransactionSignatures/index.ctp:11 -#: Template/TransactionSignatures/view.ctp:14 -#: Template/TransactionTypes/add.ctp:11 -#: Template/TransactionTypes/edit.ctp:17 -#: Template/TransactionTypes/index.ctp:11 -#: Template/TransactionTypes/view.ctp:14 -#: Template/Transactions/add.ctp:10 -#: Template/Transactions/edit.ctp:16 -#: Template/Transactions/view.ctp:12 -msgid "List Transactions" -msgstr "" - -#: Template/StateCreated/add.ctp:12 -#: Template/StateCreated/edit.ctp:18 -#: Template/StateCreated/index.ctp:12 -#: Template/StateCreated/view.ctp:15 -#: Template/StateGroups/add.ctp:18 -#: Template/StateGroups/edit.ctp:24 -#: Template/StateGroups/index.ctp:18 -#: Template/StateGroups/view.ctp:21 -#: Template/StateUserTransactions/add.ctp:14 -#: Template/StateUserTransactions/edit.ctp:20 -#: Template/StateUserTransactions/index.ctp:14 -#: Template/StateUserTransactions/view.ctp:17 -#: Template/TransactionCreations/add.ctp:12 -#: Template/TransactionCreations/edit.ctp:18 -#: Template/TransactionCreations/index.ctp:12 -#: Template/TransactionCreations/view.ctp:15 -#: Template/TransactionGroupAddaddress/add.ctp:12 -#: Template/TransactionGroupAddaddress/edit.ctp:18 -#: Template/TransactionGroupAddaddress/index.ctp:12 -#: Template/TransactionGroupAddaddress/view.ctp:15 -#: Template/TransactionGroupAllowtrades/add.ctp:12 -#: Template/TransactionGroupAllowtrades/edit.ctp:18 -#: Template/TransactionGroupAllowtrades/index.ctp:12 -#: Template/TransactionGroupAllowtrades/view.ctp:15 -#: Template/TransactionGroupCreates/add.ctp:12 -#: Template/TransactionGroupCreates/edit.ctp:18 -#: Template/TransactionGroupCreates/index.ctp:12 -#: Template/TransactionGroupCreates/view.ctp:15 -#: Template/TransactionSendCoins/add.ctp:12 -#: Template/TransactionSendCoins/edit.ctp:18 -#: Template/TransactionSendCoins/index.ctp:12 -#: Template/TransactionSendCoins/view.ctp:15 -#: Template/TransactionSignatures/add.ctp:12 -#: Template/TransactionSignatures/edit.ctp:18 -#: Template/TransactionSignatures/index.ctp:12 -#: Template/TransactionSignatures/view.ctp:15 -#: Template/TransactionTypes/add.ctp:12 -#: Template/TransactionTypes/edit.ctp:18 -#: Template/TransactionTypes/index.ctp:12 -#: Template/TransactionTypes/view.ctp:15 -#: Template/Transactions/index.ctp:10 -#: Template/Transactions/view.ctp:13 -msgid "New Transaction" -msgstr "" - -#: Template/StateCreated/add.ctp:20 -msgid "Add State Created" -msgstr "" - -#: Template/StateCreated/edit.ctp:26 -#: Template/StateCreated/view.ctp:10 -msgid "Edit State Created" -msgstr "" - -#: Template/StateCreated/index.ctp:10 -#: Template/StateCreated/view.ctp:13 -#: Template/StateUserRoles/index.ctp:16 -#: Template/StateUsers/add.ctp:16 -#: Template/StateUsers/edit.ctp:22 -#: Template/StateUsers/index.ctp:16 -#: Template/Transactions/add.ctp:16 -#: Template/Transactions/edit.ctp:22 -#: Template/Transactions/index.ctp:16 -#: Template/Transactions/view.ctp:19 -msgid "New State Created" -msgstr "" - -#: Template/StateCreated/index.ctp:18 -msgid "State Created" -msgstr "" - -#: Template/StateCreated/view.ctp:11 -msgid "Delete State Created" -msgstr "" - -#: Template/StateCreated/view.ctp:24 -#: Template/StateUserTransactions/view.ctp:30 -#: Template/StateUsers/view.ctp:53 -#: Template/TransactionCreations/view.ctp:24 -#: Template/TransactionGroupAddaddress/view.ctp:24 -#: Template/TransactionGroupAllowtrades/view.ctp:22 -#: Template/TransactionGroupCreates/view.ctp:24 -#: Template/TransactionSendCoins/view.ctp:24 -#: Template/TransactionSignatures/view.ctp:22 -msgid "Transaction" -msgstr "" - -#: Template/StateCreated/view.ctp:36 -#: Template/Transactions/view.ctp:61 -msgid "Month" -msgstr "" - -#: Template/StateCreated/view.ctp:40 -#: Template/Transactions/view.ctp:62 -msgid "Year" -msgstr "" - -#: Template/StateCreated/view.ctp:44 -#: Template/Transactions/view.ctp:65 -msgid "Short Ident Hash" -msgstr "" - -#: Template/StateErrors/add.ctp:10 -#: Template/StateErrors/edit.ctp:16 -#: Template/StateErrors/view.ctp:12 -msgid "List State Errors" -msgstr "" - -#: Template/StateErrors/add.ctp:13 -#: Template/StateErrors/edit.ctp:19 -#: Template/StateErrors/index.ctp:13 -#: Template/StateErrors/view.ctp:16 -#: Template/StateUserTransactions/add.ctp:15 -#: Template/StateUserTransactions/edit.ctp:21 -#: Template/StateUserTransactions/index.ctp:15 -#: Template/StateUserTransactions/view.ctp:18 -#: Template/TransactionTypes/add.ctp:10 -#: Template/TransactionTypes/edit.ctp:16 -#: Template/TransactionTypes/view.ctp:12 -#: Template/Transactions/add.ctp:13 -#: Template/Transactions/edit.ctp:19 -#: Template/Transactions/index.ctp:13 -#: Template/Transactions/view.ctp:16 -msgid "List Transaction Types" -msgstr "" - -#: Template/StateErrors/add.ctp:14 -#: Template/StateErrors/edit.ctp:20 -#: Template/StateErrors/index.ctp:14 -#: Template/StateErrors/view.ctp:17 -#: Template/StateUserTransactions/add.ctp:16 -#: Template/StateUserTransactions/edit.ctp:22 -#: Template/StateUserTransactions/index.ctp:16 -#: Template/StateUserTransactions/view.ctp:19 -#: Template/TransactionTypes/index.ctp:10 -#: Template/TransactionTypes/view.ctp:13 -#: Template/Transactions/add.ctp:14 -#: Template/Transactions/edit.ctp:20 -#: Template/Transactions/index.ctp:14 -#: Template/Transactions/view.ctp:17 -msgid "New Transaction Type" -msgstr "" - -#: Template/StateErrors/add.ctp:20 -msgid "Add State Error" -msgstr "" - -#: Template/StateErrors/edit.ctp:26 -#: Template/StateErrors/view.ctp:10 -msgid "Edit State Error" -msgstr "" - -#: Template/StateErrors/index.ctp:10 -#: Template/StateErrors/view.ctp:13 -msgid "New State Error" -msgstr "" - -#: Template/StateErrors/index.ctp:18 -msgid "State Errors" -msgstr "" - -#: Template/StateErrors/show_for_user.ctp:9 -msgid "Fehlermeldungen" -msgstr "" - -#: Template/StateErrors/view.ctp:11 -msgid "Delete State Error" -msgstr "" - -#: Template/StateErrors/view.ctp:28 -#: Template/StateUserTransactions/view.ctp:34 -#: Template/Transactions/view.ctp:42 -msgid "Transaction Type" -msgstr "" - -#: Template/StateErrors/view.ctp:41 -msgid "Message Json" -msgstr "" - -#: Template/StateGroupAddresses/add.ctp:11 -#: Template/StateGroupAddresses/edit.ctp:17 -#: Template/StateGroupAddresses/index.ctp:11 -#: Template/StateGroupAddresses/view.ctp:14 -#: Template/StateGroups/add.ctp:10 -#: Template/StateGroups/edit.ctp:16 -#: Template/StateGroups/view.ctp:12 -#: Template/StateUserRoles/index.ctp:11 -#: Template/StateUsers/add.ctp:11 -#: Template/StateUsers/edit.ctp:17 -#: Template/StateUsers/index.ctp:11 -#: Template/StateUsers/view.ctp:14 -#: Template/TransactionGroupCreates/add.ctp:13 -#: Template/TransactionGroupCreates/edit.ctp:19 -#: Template/TransactionGroupCreates/index.ctp:13 -#: Template/TransactionGroupCreates/view.ctp:16 -#: Template/Transactions/add.ctp:11 -#: Template/Transactions/edit.ctp:17 -#: Template/Transactions/index.ctp:11 -#: Template/Transactions/view.ctp:14 -msgid "List State Groups" -msgstr "" - -#: Template/StateGroupAddresses/add.ctp:12 -#: Template/StateGroupAddresses/edit.ctp:18 -#: Template/StateGroupAddresses/index.ctp:12 -#: Template/StateGroupAddresses/view.ctp:15 -#: Template/StateGroups/index.ctp:10 -#: Template/StateGroups/view.ctp:13 -#: Template/StateUserRoles/index.ctp:12 -#: Template/StateUsers/add.ctp:12 -#: Template/StateUsers/edit.ctp:18 -#: Template/StateUsers/index.ctp:12 -#: Template/StateUsers/view.ctp:15 -#: Template/TransactionGroupCreates/add.ctp:14 -#: Template/TransactionGroupCreates/edit.ctp:20 -#: Template/TransactionGroupCreates/index.ctp:14 -#: Template/TransactionGroupCreates/view.ctp:17 -#: Template/Transactions/add.ctp:12 -#: Template/Transactions/edit.ctp:18 -#: Template/Transactions/index.ctp:12 -#: Template/Transactions/view.ctp:15 -msgid "New State Group" -msgstr "" - -#: Template/StateGroupAddresses/add.ctp:20 -msgid "Add State Group Address" -msgstr "" - -#: Template/StateGroupAddresses/edit.ctp:26 -#: Template/StateGroupAddresses/view.ctp:10 -msgid "Edit State Group Address" -msgstr "" - -#: Template/StateGroupAddresses/index.ctp:18 -msgid "State Group Addresses" -msgstr "" - -#: Template/StateGroupAddresses/index.ctp:25 -#: Template/TransactionGroupAddaddress/index.ctp:25 -msgid "user public key" -msgstr "" - -#: Template/StateGroupAddresses/view.ctp:11 -msgid "Delete State Group Address" -msgstr "" - -#: Template/StateGroupAddresses/view.ctp:24 -#: Template/TransactionGroupAddaddress/view.ctp:28 -msgid "Address Type" -msgstr "" - -#: Template/StateGroupRelationships/add.ctp:10 -#: Template/StateGroupRelationships/edit.ctp:16 -#: Template/StateGroupRelationships/view.ctp:12 -msgid "List State Group Relationships" -msgstr "" - -#: Template/StateGroupRelationships/add.ctp:16 -msgid "Add State Group Relationship" -msgstr "" - -#: Template/StateGroupRelationships/edit.ctp:22 -#: Template/StateGroupRelationships/view.ctp:10 -msgid "Edit State Group Relationship" -msgstr "" - -#: Template/StateGroupRelationships/index.ctp:10 -#: Template/StateGroupRelationships/view.ctp:13 -msgid "New State Group Relationship" -msgstr "" - -#: Template/StateGroupRelationships/index.ctp:14 -msgid "State Group Relationships" -msgstr "" - -#: Template/StateGroupRelationships/view.ctp:11 -msgid "Delete State Group Relationship" -msgstr "" - -#: Template/StateGroupRelationships/view.ctp:24 -msgid "State Group1 Id" -msgstr "" - -#: Template/StateGroupRelationships/view.ctp:28 -msgid "State Group2 Id" -msgstr "" - -#: Template/StateGroupRelationships/view.ctp:32 -msgid "State Relationship Id" -msgstr "" - -#: Template/StateGroups/add.ctp:15 -#: Template/StateGroups/edit.ctp:21 -#: Template/StateGroups/index.ctp:15 -#: Template/StateGroups/view.ctp:18 -#: Template/TransactionGroupCreates/add.ctp:10 -#: Template/TransactionGroupCreates/edit.ctp:16 -#: Template/TransactionGroupCreates/view.ctp:12 -#: Template/Transactions/add.ctp:23 -#: Template/Transactions/edit.ctp:29 -#: Template/Transactions/index.ctp:23 -#: Template/Transactions/view.ctp:26 -msgid "List Transaction Group Creates" -msgstr "" - -#: Template/StateGroups/add.ctp:16 -#: Template/StateGroups/edit.ctp:22 -#: Template/StateGroups/index.ctp:16 -#: Template/StateGroups/view.ctp:19 -#: Template/TransactionGroupCreates/index.ctp:10 -#: Template/TransactionGroupCreates/view.ctp:13 -#: Template/Transactions/add.ctp:24 -#: Template/Transactions/edit.ctp:30 -#: Template/Transactions/index.ctp:24 -#: Template/Transactions/view.ctp:27 -msgid "New Transaction Group Create" -msgstr "" - -#: Template/StateGroups/add.ctp:24 -msgid "Add State Group" -msgstr "" - -#: Template/StateGroups/edit.ctp:30 -#: Template/StateGroups/view.ctp:10 -msgid "Edit State Group" -msgstr "" - -#: Template/StateGroups/index.ctp:22 -msgid "State Groups" -msgstr "" - -#: Template/StateGroups/view.ctp:11 -msgid "Delete State Group" -msgstr "" - -#: Template/StateGroups/view.ctp:36 -msgid "User Count" -msgstr "" - -#: Template/StateGroups/view.ctp:46 -#: Template/StateGroups/view.ctp:74 -#: Template/StateGroups/view.ctp:102 -#: Template/StateGroups/view.ctp:129 -#: Template/TransactionTypes/view.ctp:40 -#: Template/Transactions/view.ctp:178 -msgid "State Group Id" -msgstr "" - -#: Template/StateGroups/view.ctp:68 -msgid "Related State Users" -msgstr "" - -#: Template/StateGroups/view.ctp:73 -msgid "Index Id" -msgstr "" - -#: Template/StateGroups/view.ctp:95 -#: Template/Transactions/view.ctp:171 -msgid "Related Transaction Group Creates" -msgstr "" - -#: Template/StateGroups/view.ctp:101 -#: Template/Transactions/view.ctp:177 -msgid "Group Public Key" -msgstr "" - -#: Template/StateGroups/view.ctp:124 -#: Template/TransactionTypes/view.ctp:35 -msgid "Related Transactions" -msgstr "" - -#: Template/StateGroups/view.ctp:130 -#: Template/TransactionTypes/view.ctp:41 -msgid "Transaction Type Id" -msgstr "" - -#: Template/StateGroups/view.ctp:131 -#: Template/TransactionTypes/view.ctp:42 -msgid "Tx Hash" -msgstr "" - -#: Template/StateGroups/view.ctp:132 -#: Template/TransactionTypes/view.ctp:43 -#: Template/Transactions/view.ctp:50 -msgid "Received" -msgstr "" - -#: Template/StateRelationshipTypes/add.ctp:10 -#: Template/StateRelationshipTypes/edit.ctp:16 -#: Template/StateRelationshipTypes/view.ctp:12 -msgid "List State Relationship Types" -msgstr "" - -#: Template/StateRelationshipTypes/add.ctp:16 -msgid "Add State Relationship Type" -msgstr "" - -#: Template/StateRelationshipTypes/edit.ctp:22 -#: Template/StateRelationshipTypes/view.ctp:10 -msgid "Edit State Relationship Type" -msgstr "" - -#: Template/StateRelationshipTypes/index.ctp:10 -#: Template/StateRelationshipTypes/view.ctp:13 -msgid "New State Relationship Type" -msgstr "" - -#: Template/StateRelationshipTypes/index.ctp:14 -msgid "State Relationship Types" -msgstr "" - -#: Template/StateRelationshipTypes/view.ctp:11 -msgid "Delete State Relationship Type" -msgstr "" - -#: Template/StateUserRoles/assign_role.ctp:9 -#: Template/StateUserRoles/assign_role.ctp:46 -#: Template/StateUserRoles/search.ctp:47 -msgid "Assign Role" -msgstr "" - -#: Template/StateUserRoles/index.ctp:17 -#: Template/StateUsers/add.ctp:17 -#: Template/StateUsers/edit.ctp:23 -#: Template/StateUsers/index.ctp:17 -#: Template/StateUsers/view.ctp:18 -#: Template/TransactionCreations/add.ctp:10 -#: Template/TransactionCreations/edit.ctp:16 -#: Template/TransactionCreations/view.ctp:12 -#: Template/Transactions/add.ctp:17 -#: Template/Transactions/edit.ctp:23 -#: Template/Transactions/index.ctp:17 -#: Template/Transactions/view.ctp:20 -msgid "List Transaction Creations" -msgstr "" - -#: Template/StateUserRoles/index.ctp:18 -#: Template/StateUsers/add.ctp:18 -#: Template/StateUsers/edit.ctp:24 -#: Template/StateUsers/index.ctp:18 -#: Template/StateUsers/view.ctp:19 -#: Template/TransactionCreations/index.ctp:10 -#: Template/TransactionCreations/view.ctp:13 -#: Template/Transactions/add.ctp:18 -#: Template/Transactions/edit.ctp:24 -#: Template/Transactions/index.ctp:18 -#: Template/Transactions/view.ctp:21 -msgid "New Transaction Creation" -msgstr "" - -#: Template/StateUserRoles/index.ctp:19 -#: Template/StateUsers/add.ctp:19 -#: Template/StateUsers/edit.ctp:25 -#: Template/StateUsers/index.ctp:19 -#: Template/StateUsers/view.ctp:20 -#: Template/TransactionSendCoins/add.ctp:10 -#: Template/TransactionSendCoins/edit.ctp:16 -#: Template/TransactionSendCoins/view.ctp:12 -#: Template/Transactions/add.ctp:25 -#: Template/Transactions/edit.ctp:31 -#: Template/Transactions/index.ctp:25 -#: Template/Transactions/view.ctp:28 -msgid "List Transaction Send Coins" -msgstr "" - -#: Template/StateUserRoles/index.ctp:20 -#: Template/StateUsers/add.ctp:20 -#: Template/StateUsers/edit.ctp:26 -#: Template/StateUsers/index.ctp:20 -#: Template/StateUsers/view.ctp:21 -#: Template/TransactionSendCoins/index.ctp:10 -#: Template/TransactionSendCoins/view.ctp:13 -#: Template/Transactions/add.ctp:26 -#: Template/Transactions/edit.ctp:32 -#: Template/Transactions/index.ctp:26 -#: Template/Transactions/view.ctp:29 -msgid "New Transaction Send Coin" -msgstr "" - -#: Template/StateUserRoles/index.ctp:24 -#: Template/StateUserRoles/search.ctp:25 -#: Template/StateUsers/index.ctp:24 -msgid "State Users" -msgstr "" - -#: Template/StateUserRoles/search.ctp:19 -#: Template/StateUsers/search.ctp:57 -msgid "Suchbegriff" -msgstr "" - -#: Template/StateUserRoles/search.ctp:19 -#: Template/StateUsers/search.ctp:57 -msgid "Vorname/Nachname/E-Mail" -msgstr "" - -#: Template/StateUserRoles/search.ctp:20 -#: Template/StateUsers/search.ctp:59 -#: Template/TransactionCreations/create_multi.ctp:35 -msgid "Suchen" -msgstr "" - -#: Template/StateUserTransactions/add.ctp:10 -#: Template/StateUserTransactions/edit.ctp:16 -#: Template/StateUserTransactions/view.ctp:12 -msgid "List State User Transactions" -msgstr "" - -#: Template/StateUserTransactions/add.ctp:22 -msgid "Add State User Transaction" -msgstr "" - -#: Template/StateUserTransactions/edit.ctp:28 -#: Template/StateUserTransactions/view.ctp:10 -msgid "Edit State User Transaction" -msgstr "" - -#: Template/StateUserTransactions/index.ctp:10 -#: Template/StateUserTransactions/view.ctp:13 -msgid "New State User Transaction" -msgstr "" - -#: Template/StateUserTransactions/index.ctp:20 -msgid "State User Transactions" -msgstr "" - -#: Template/StateUserTransactions/view.ctp:11 -msgid "Delete State User Transaction" -msgstr "" - -#: Template/StateUsers/add.ctp:26 -msgid "Add State User" -msgstr "" - -#: Template/StateUsers/edit.ctp:32 -#: Template/StateUsers/view.ctp:10 -msgid "Edit State User" -msgstr "" - -#: Template/StateUsers/search.ctp:16 -msgid "Alle" -msgstr "" - -#: Template/StateUsers/search.ctp:21 -msgid "Konto nicht aktiviert" -msgstr "" - -#: Template/StateUsers/search.ctp:58 -msgid "Konto Status" -msgstr "" - -#: Template/StateUsers/view.ctp:11 -msgid "Delete State User" -msgstr "" - -#: Template/StateUsers/view.ctp:28 -msgid "State Balance" -msgstr "" - -#: Template/StateUsers/view.ctp:32 -msgid "Letztes Update" -msgstr "" - -#: Template/StateUsers/view.ctp:49 -msgid "Schöpfungen" -msgstr "" - -#: Template/StateUsers/view.ctp:54 -#: Template/StateUsers/view.ctp:84 -#: Template/StateUsers/view.ctp:118 -msgid "Erhalten" -msgstr "" - -#: Template/StateUsers/view.ctp:55 -msgid "Verrechnungs-Datum" -msgstr "" - -#: Template/StateUsers/view.ctp:79 -msgid "Versendete Überweisungen" -msgstr "" - -#: Template/StateUsers/view.ctp:85 -msgid "Empfänger " -msgstr "" - -#: Template/StateUsers/view.ctp:88 -msgid "Betrag nach Senden" -msgstr "" - -#: Template/StateUsers/view.ctp:113 -msgid "Empfangende Überweisungen" -msgstr "" - -#: Template/StateUsers/view.ctp:119 -msgid "Sender" -msgstr "" - -#: Template/TransactionCreations/add.ctp:20 -msgid "Add Transaction Creation" -msgstr "" - -#: Template/TransactionCreations/create.ctp:17 -#: Template/TransactionCreations/create_multi.ctp:17 -msgid "Schöpfungstransaktion" -msgstr "" - -#: Template/TransactionCreations/create.ctp:28 -#: Template/TransactionCreations/create_multi.ctp:125 -msgid "Transaktion(en) abschließen" -msgstr "" - -#: Template/TransactionCreations/create.ctp:29 -#: Template/TransactionCreations/create_multi.ctp:126 -#: Template/TransactionSendCoins/create.ctp:24 -msgid "Weitere Transaktion erstellen" -msgstr "" - -#: Template/TransactionCreations/create_multi.ctp:34 -msgid "Suche" -msgstr "" - -#: Template/TransactionCreations/create_multi.ctp:38 -msgid "Memo" -msgstr "" - -#: Template/TransactionCreations/create_multi.ctp:39 -#: Template/TransactionSendCoins/create.ctp:22 -#: Template/TransactionSendCoins/create_raw.ctp:33 -msgid "Betrag in GDD" -msgstr "" - -#: Template/TransactionCreations/create_multi.ctp:46 -msgid "Zieldatum" -msgstr "" - -#: Template/TransactionCreations/create_multi.ctp:81 -msgid "Für benutzerdefinierten Betrag" -msgstr "" - -#: Template/TransactionCreations/create_multi.ctp:189 -msgid "Alle Transaktionen abgeschlossen!" -msgstr "" - -#: Template/TransactionCreations/edit.ctp:26 -#: Template/TransactionCreations/view.ctp:10 -msgid "Edit Transaction Creation" -msgstr "" - -#: Template/TransactionCreations/index.ctp:18 -msgid "Transaction Creations" -msgstr "" - -#: Template/TransactionCreations/view.ctp:11 -msgid "Delete Transaction Creation" -msgstr "" - -#: Template/TransactionGroupAddaddress/add.ctp:20 -msgid "Add Transaction Group Addaddres" -msgstr "" - -#: Template/TransactionGroupAddaddress/edit.ctp:26 -#: Template/TransactionGroupAddaddress/view.ctp:10 -msgid "Edit Transaction Group Addaddres" -msgstr "" - -#: Template/TransactionGroupAddaddress/index.ctp:18 -msgid "Transaction Group Addaddress" -msgstr "" - -#: Template/TransactionGroupAddaddress/view.ctp:11 -msgid "Delete Transaction Group Addaddres" -msgstr "" - -#: Template/TransactionGroupAllowtrades/add.ctp:10 -#: Template/TransactionGroupAllowtrades/edit.ctp:16 -#: Template/TransactionGroupAllowtrades/view.ctp:12 -#: Template/Transactions/add.ctp:21 -#: Template/Transactions/edit.ctp:27 -#: Template/Transactions/index.ctp:21 -#: Template/Transactions/view.ctp:24 -msgid "List Transaction Group Allowtrades" -msgstr "" - -#: Template/TransactionGroupAllowtrades/add.ctp:18 -msgid "Add Transaction Group Allowtrade" -msgstr "" - -#: Template/TransactionGroupAllowtrades/edit.ctp:24 -#: Template/TransactionGroupAllowtrades/view.ctp:10 -msgid "Edit Transaction Group Allowtrade" -msgstr "" - -#: Template/TransactionGroupAllowtrades/index.ctp:10 -#: Template/TransactionGroupAllowtrades/view.ctp:13 -#: Template/Transactions/add.ctp:22 -#: Template/Transactions/edit.ctp:28 -#: Template/Transactions/index.ctp:22 -#: Template/Transactions/view.ctp:25 -msgid "New Transaction Group Allowtrade" -msgstr "" - -#: Template/TransactionGroupAllowtrades/index.ctp:16 -msgid "Transaction Group Allowtrades" -msgstr "" - -#: Template/TransactionGroupAllowtrades/view.ctp:11 -msgid "Delete Transaction Group Allowtrade" -msgstr "" - -#: Template/TransactionGroupAllowtrades/view.ctp:34 -#: Template/Transactions/view.ctp:151 -msgid "Allow" -msgstr "" - -#: Template/TransactionGroupCreates/add.ctp:20 -msgid "Add Transaction Group Create" -msgstr "" - -#: Template/TransactionGroupCreates/edit.ctp:26 -#: Template/TransactionGroupCreates/view.ctp:10 -msgid "Edit Transaction Group Create" -msgstr "" - -#: Template/TransactionGroupCreates/index.ctp:18 -msgid "Transaction Group Creates" -msgstr "" - -#: Template/TransactionGroupCreates/view.ctp:11 -msgid "Delete Transaction Group Create" -msgstr "" - -#: Template/TransactionGroupCreates/view.ctp:28 -#: Template/Transactions/view.ctp:38 -msgid "State Group" -msgstr "" - -#: Template/TransactionSendCoins/add.ctp:20 -msgid "Add Transaction Send Coin" -msgstr "" - -#: Template/TransactionSendCoins/create.ctp:19 -msgid "Empfänger" -msgstr "" - -#: Template/TransactionSendCoins/create.ctp:20 -msgid "Community Alias" -msgstr "" - -#: Template/TransactionSendCoins/create.ctp:23 -#: Template/TransactionSendCoins/create_raw.ctp:34 -msgid "Transaktion abschließen" -msgstr "" - -#: Template/TransactionSendCoins/create_raw.ctp:29 -msgid "Sender Private Key" -msgstr "" - -#: Template/TransactionSendCoins/create_raw.ctp:30 -msgid "Sender Public Key" -msgstr "" - -#: Template/TransactionSendCoins/create_raw.ctp:31 -msgid "Empfänger Public Key" -msgstr "" - -#: Template/TransactionSendCoins/edit.ctp:26 -#: Template/TransactionSendCoins/view.ctp:10 -msgid "Edit Transaction Send Coin" -msgstr "" - -#: Template/TransactionSendCoins/index.ctp:18 -msgid "Transaction Send Coins" -msgstr "" - -#: Template/TransactionSendCoins/view.ctp:11 -msgid "Delete Transaction Send Coin" -msgstr "" - -#: Template/TransactionSendCoins/view.ctp:40 -#: Template/Transactions/view.ctp:210 -msgid "Sender Final Balance" -msgstr "" - -#: Template/TransactionSignatures/add.ctp:10 -#: Template/TransactionSignatures/edit.ctp:16 -#: Template/TransactionSignatures/view.ctp:12 -#: Template/Transactions/add.ctp:27 -#: Template/Transactions/edit.ctp:33 -#: Template/Transactions/index.ctp:27 -#: Template/Transactions/view.ctp:30 -msgid "List Transaction Signatures" -msgstr "" - -#: Template/TransactionSignatures/add.ctp:18 -msgid "Add Transaction Signature" -msgstr "" - -#: Template/TransactionSignatures/edit.ctp:24 -#: Template/TransactionSignatures/view.ctp:10 -msgid "Edit Transaction Signature" -msgstr "" - -#: Template/TransactionSignatures/index.ctp:10 -#: Template/TransactionSignatures/view.ctp:13 -#: Template/Transactions/add.ctp:28 -#: Template/Transactions/edit.ctp:34 -#: Template/Transactions/index.ctp:28 -#: Template/Transactions/view.ctp:31 -msgid "New Transaction Signature" -msgstr "" - -#: Template/TransactionSignatures/index.ctp:16 -msgid "Transaction Signatures" -msgstr "" - -#: Template/TransactionSignatures/view.ctp:11 -msgid "Delete Transaction Signature" -msgstr "" - -#: Template/TransactionTypes/add.ctp:18 -msgid "Add Transaction Type" -msgstr "" - -#: Template/TransactionTypes/edit.ctp:24 -#: Template/TransactionTypes/view.ctp:10 -msgid "Edit Transaction Type" -msgstr "" - -#: Template/TransactionTypes/index.ctp:16 -msgid "Transaction Types" -msgstr "" - -#: Template/TransactionTypes/view.ctp:11 -msgid "Delete Transaction Type" -msgstr "" - -#: Template/Transactions/add.ctp:34 -msgid "Add Transaction" -msgstr "" - -#: Template/Transactions/edit.ctp:40 -#: Template/Transactions/view.ctp:10 -msgid "Edit Transaction" -msgstr "" - -#: Template/Transactions/manual_transaction.ctp:26 -msgid "Creation Transaction" -msgstr "" - -#: Template/Transactions/manual_transaction.ctp:41 -msgid "Transfer Transaction" -msgstr "" - -#: Template/Transactions/send_to_node.ctp:8 -msgid "Transaktionen an Gradido-Node senden" -msgstr "" - -#: Template/Transactions/synchronize_with_state_user_transactions.ctp:44 -msgid "Synchronize" -msgstr "" - -#: Template/Transactions/view.ctp:11 -msgid "Delete Transaction" -msgstr "" - -#: Template/Transactions/view.ctp:55 -msgid "Related State Created" -msgstr "" - -#: Template/Transactions/view.ctp:88 -msgid "Related Transaction Creations" -msgstr "" - -#: Template/Transactions/view.ctp:96 -msgid "Ident Hash" -msgstr "" - -#: Template/Transactions/view.ctp:144 -msgid "Related Transaction Group Allowtrades" -msgstr "" - -#: Template/Transactions/view.ctp:200 -msgid "Related Transaction Send Coins" -msgstr "" - -#: Template/Transactions/view.ctp:207 -msgid "Receiver Public Key" -msgstr "" - -#: Template/Transactions/view.ctp:208 -msgid "Receiver User Id" -msgstr "" - -#: Template/Transactions/view.ctp:233 -msgid "Related Transaction Signatures" -msgstr "" - -#: Template/Transactions/view.ctp:239 -msgid "Signature" -msgstr "" - -#: Template/Transactions/view.ctp:240 -msgid "Pubkey" -msgstr "" - -#: Template/Users/add.ctp:10 -#: Template/Users/edit.ctp:16 -#: Template/Users/view.ctp:12 -msgid "List Users" -msgstr "" - -#: Template/Users/add.ctp:16 -msgid "Add User" -msgstr "" - -#: Template/Users/edit.ctp:22 -#: Template/Users/view.ctp:10 -msgid "Edit User" -msgstr "" - -#: Template/Users/index.ctp:10 -#: Template/Users/view.ctp:13 -msgid "New User" -msgstr "" - -#: Template/Users/index.ctp:14 -msgid "Users" -msgstr "" - -#: Template/Users/statistics.ctp:9 -msgid "Benutzer Statistiken" -msgstr "" - -#: Template/Users/statistics.ctp:39 -msgid "Alle Anmeldungen" -msgstr "" - -#: Template/Users/statistics.ctp:56 -msgid "Anmeldungen im Vergleich zum letzten Monat, 0% = gleiche Anzahl" -msgstr "" - -#: Template/Users/statistics.ctp:61 -msgid "Letzte Anmeldungen" -msgstr "" - -#: Template/Users/statistics.ctp:66 -msgid "Erstellt" -msgstr "" - -#: Template/Users/statistics.ctp:79 -msgid "Anmeldungen detailliert" -msgstr "" - -#: Template/Users/statistics.ctp:82 -msgid "Jahr" -msgstr "" - -#: Template/Users/statistics.ctp:83 -msgid "Monat" -msgstr "" - -#: Template/Users/statistics.ctp:84 -msgid "Anzahl Anmeldungen" -msgstr "" - -#: Template/Users/view.ctp:11 -msgid "Delete User" -msgstr "" - -#: Template/Users/view.ctp:24 -msgid "First Name" -msgstr "" - -#: Template/Users/view.ctp:28 -msgid "Last Name" -msgstr "" - -#: Template/Users/view.ctp:32 -msgid "Language" -msgstr "" - -#: Template/Users/view.ctp:48 -msgid "Email Checked" -msgstr "" - diff --git a/community_server/src/Model/Behavior/empty b/community_server/src/Model/Behavior/empty deleted file mode 100644 index e69de29bb..000000000 diff --git a/community_server/src/Model/Entity/AddressType.php b/community_server/src/Model/Entity/AddressType.php deleted file mode 100644 index 87d64d61a..000000000 --- a/community_server/src/Model/Entity/AddressType.php +++ /dev/null @@ -1,33 +0,0 @@ - true, - 'text' => true, - 'state_group_addresses' => true, - 'transaction_group_addaddress' => true, - ]; -} diff --git a/community_server/src/Model/Entity/AdminError.php b/community_server/src/Model/Entity/AdminError.php deleted file mode 100644 index 23c60fd4a..000000000 --- a/community_server/src/Model/Entity/AdminError.php +++ /dev/null @@ -1,41 +0,0 @@ - true, - 'controller' => true, - 'action' => true, - 'state' => true, - 'msg' => true, - 'details' => true, - 'created' => true, - 'state_user' => true - ]; -} diff --git a/community_server/src/Model/Entity/BlockchainType.php b/community_server/src/Model/Entity/BlockchainType.php deleted file mode 100644 index c2e21402c..000000000 --- a/community_server/src/Model/Entity/BlockchainType.php +++ /dev/null @@ -1,30 +0,0 @@ - true, - 'text' => true, - 'symbol' => true, - ]; -} diff --git a/community_server/src/Model/Entity/CommunityProfile.php b/community_server/src/Model/Entity/CommunityProfile.php deleted file mode 100644 index 367fe713c..000000000 --- a/community_server/src/Model/Entity/CommunityProfile.php +++ /dev/null @@ -1,30 +0,0 @@ - true, - 'profile_img' => true, - 'profile_desc' => true, - ]; -} diff --git a/community_server/src/Model/Entity/ElopageBuy.php b/community_server/src/Model/Entity/ElopageBuy.php deleted file mode 100644 index eca2f760b..000000000 --- a/community_server/src/Model/Entity/ElopageBuy.php +++ /dev/null @@ -1,57 +0,0 @@ - true, - 'affiliate_program_id' => true, - 'publisher_id' => true, - 'order_id' => true, - 'product_id' => true, - 'product_price' => true, - 'payer_email' => true, - 'publisher_email' => true, - 'payed' => true, - 'success_date' => true, - 'event' => true, - 'elopage_user' => true, - 'affiliate_program' => true, - 'publisher' => true, - 'order' => true, - 'product' => true, - ]; -} diff --git a/community_server/src/Model/Entity/Operator.php b/community_server/src/Model/Entity/Operator.php deleted file mode 100644 index 9d5ddd3ca..000000000 --- a/community_server/src/Model/Entity/Operator.php +++ /dev/null @@ -1,32 +0,0 @@ - true, - 'user_pubkey' => true, - 'operator_type_id' => true, - 'data_base64' => true, - 'modified' => true - ]; -} diff --git a/community_server/src/Model/Entity/OperatorType.php b/community_server/src/Model/Entity/OperatorType.php deleted file mode 100644 index 0ca968f47..000000000 --- a/community_server/src/Model/Entity/OperatorType.php +++ /dev/null @@ -1,31 +0,0 @@ - true, - 'text' => true, - 'operators' => true - ]; -} diff --git a/community_server/src/Model/Entity/Role.php b/community_server/src/Model/Entity/Role.php deleted file mode 100644 index ae0ddd0ba..000000000 --- a/community_server/src/Model/Entity/Role.php +++ /dev/null @@ -1,26 +0,0 @@ - true, - ]; -} diff --git a/community_server/src/Model/Entity/ServerUser.php b/community_server/src/Model/Entity/ServerUser.php deleted file mode 100644 index f1d47fd34..000000000 --- a/community_server/src/Model/Entity/ServerUser.php +++ /dev/null @@ -1,57 +0,0 @@ - true, - 'password' => true, - 'email' => true, - 'role' => true, - 'activated' => true, - 'last_login' => true, - 'created' => true, - 'modified' => true - ]; - - /** - * Fields that are excluded from JSON versions of the entity. - * - * @var array - */ - protected $_hidden = [ - 'password' - ]; - - protected function _setPassword($password) - { - if (strlen($password) > 0) { - return (new DefaultPasswordHasher)->hash($password); - } - } -} diff --git a/community_server/src/Model/Entity/StateBalance.php b/community_server/src/Model/Entity/StateBalance.php deleted file mode 100644 index 334db222f..000000000 --- a/community_server/src/Model/Entity/StateBalance.php +++ /dev/null @@ -1,89 +0,0 @@ - true, - 'modified' => true, - 'record_date' => true, - 'amount' => true, - 'record_date' => true, - 'state_user' => true - ]; - - protected $_virtual = ['decay','amount_float']; - - private function convertToTimestamp($dateOrTime) - { - if(method_exists($dateOrTime, 'getTimestamp')) { - return $dateOrTime->getTimestamp(); - } else if(method_exists($dateOrTime, 'i18nFormat')) { - return $dateOrTime->i18nFormat(Time::UNIX_TIMESTAMP_FORMAT); - } else { - return 0; - } - } - - protected function _getDecay() - { - // decay factor in seconds per year - // q = e^((lg Kn - lg K0) / n) - // 0.999999978 - // - // SELECT TIMESTAMPDIFF(SECOND, modified, CURDATE()) AS age_in_seconds from state_balances - // decay_for_duration = decay_factor^seconds - // decay = gradido_cent * decay_for_duration - $startDate = $this->convertToTimestamp($this->record_date); - if($startDate == 0) { - return $this->amount; - } - - $decay_duration = intval(Time::now()->getTimestamp() - $startDate); - if($decay_duration === 0) { - return $this->amount; - } - //return $this->amount; - return intval($this->amount * pow(0.99999997802044727, $decay_duration)); - - } - - public function partDecay($target_date) - { - $decay_duration = intval($this->convertToTimestamp($target_date) - $this->convertToTimestamp($this->record_date)); - if($decay_duration <= 0) { - return $this->amount; - } - //return 0; - return intval($this->amount * pow(0.99999997802044727, $decay_duration)); - } - - public function decayDuration($target_date) - { - return intval($this->convertToTimestamp($target_date) - $this->convertToTimestamp($this->record_date)); - } -} - diff --git a/community_server/src/Model/Entity/StateCreated.php b/community_server/src/Model/Entity/StateCreated.php deleted file mode 100644 index 99c783e6c..000000000 --- a/community_server/src/Model/Entity/StateCreated.php +++ /dev/null @@ -1,41 +0,0 @@ - true, - 'month' => true, - 'year' => true, - 'state_user_id' => true, - 'created' => true, - 'short_ident_hash' => true, - 'transaction' => true, - 'state_user' => true - ]; -} diff --git a/community_server/src/Model/Entity/StateError.php b/community_server/src/Model/Entity/StateError.php deleted file mode 100644 index 448e9ccb3..000000000 --- a/community_server/src/Model/Entity/StateError.php +++ /dev/null @@ -1,37 +0,0 @@ - true, - 'transaction_type_id' => true, - 'created' => true, - 'message_json' => true, - 'state_user' => true, - 'transaction_type' => true - ]; -} diff --git a/community_server/src/Model/Entity/StateGroup.php b/community_server/src/Model/Entity/StateGroup.php deleted file mode 100644 index c2bdc75fc..000000000 --- a/community_server/src/Model/Entity/StateGroup.php +++ /dev/null @@ -1,43 +0,0 @@ - true, - 'name' => true, - 'root_public_key' => true, - 'user_count' => true, - 'index' => true, - 'state_group_addresses' => true, - 'state_users' => true, - 'transaction_group_creates' => true, - 'transactions' => true - ]; -} diff --git a/community_server/src/Model/Entity/StateGroupAddress.php b/community_server/src/Model/Entity/StateGroupAddress.php deleted file mode 100644 index e2d669d09..000000000 --- a/community_server/src/Model/Entity/StateGroupAddress.php +++ /dev/null @@ -1,35 +0,0 @@ - true, - 'public_key' => true, - 'address_type_id' => true, - 'state_group' => true, - 'address_type' => true, - ]; -} diff --git a/community_server/src/Model/Entity/StateGroupRelationship.php b/community_server/src/Model/Entity/StateGroupRelationship.php deleted file mode 100644 index 974b1375d..000000000 --- a/community_server/src/Model/Entity/StateGroupRelationship.php +++ /dev/null @@ -1,37 +0,0 @@ - true, - 'state_group2_id' => true, - 'state_relationship_id' => true, - 'state_group1' => true, - 'state_group2' => true, - 'state_relationship' => true - ]; -} diff --git a/community_server/src/Model/Entity/StateRelationshipType.php b/community_server/src/Model/Entity/StateRelationshipType.php deleted file mode 100644 index f3c70d31e..000000000 --- a/community_server/src/Model/Entity/StateRelationshipType.php +++ /dev/null @@ -1,28 +0,0 @@ - true, - 'text' => true - ]; -} diff --git a/community_server/src/Model/Entity/StateUser.php b/community_server/src/Model/Entity/StateUser.php deleted file mode 100644 index 5fac7cda7..000000000 --- a/community_server/src/Model/Entity/StateUser.php +++ /dev/null @@ -1,58 +0,0 @@ - true, - 'state_group_id' => true, - 'public_key' => true, - 'email' => true, - 'first_name' => true, - 'last_name' => true, - 'disabled' => true, - 'username' => true, - 'index' => true, - 'state_group' => true, - 'state_balances' => true, - 'state_created' => true, - 'transaction_creations' => true, - 'transaction_send_coins' => true - ]; - - public function getEmailWithName() - { - return $this->first_name . ' ' . $this->last_name . ' <' . $this->email . '>'; - } - - public function getNames() - { - return $this->first_name . ' ' . $this->last_name; - } -} diff --git a/community_server/src/Model/Entity/StateUserRole.php b/community_server/src/Model/Entity/StateUserRole.php deleted file mode 100644 index d510bb025..000000000 --- a/community_server/src/Model/Entity/StateUserRole.php +++ /dev/null @@ -1,30 +0,0 @@ - true, - 'role_id' => true - ]; -} diff --git a/community_server/src/Model/Entity/StateUserTransaction.php b/community_server/src/Model/Entity/StateUserTransaction.php deleted file mode 100644 index 9fed345a5..000000000 --- a/community_server/src/Model/Entity/StateUserTransaction.php +++ /dev/null @@ -1,37 +0,0 @@ - true, - 'transaction_id' => true, - 'transaction_type_id' => true, - 'state_user' => true, - 'transaction' => true, - 'transaction_type' => true, - ]; -} diff --git a/community_server/src/Model/Entity/Transaction.php b/community_server/src/Model/Entity/Transaction.php deleted file mode 100644 index 209b8997e..000000000 --- a/community_server/src/Model/Entity/Transaction.php +++ /dev/null @@ -1,53 +0,0 @@ - true, - 'transaction_type_id' => true, - 'tx_hash' => true, - 'memo' => true, - 'received' => true, - 'blockchain_type_id' => true, - 'state_group' => true, - 'transaction_type' => true, - 'state_created' => true, - 'transaction_creations' => true, - 'transaction_group_addaddress' => true, - 'transaction_group_allowtrades' => true, - 'transaction_group_creates' => true, - 'transaction_send_coins' => true, - 'transaction_signatures' => true - ]; -} diff --git a/community_server/src/Model/Entity/TransactionCreation.php b/community_server/src/Model/Entity/TransactionCreation.php deleted file mode 100644 index 36aa7ac2d..000000000 --- a/community_server/src/Model/Entity/TransactionCreation.php +++ /dev/null @@ -1,39 +0,0 @@ - true, - 'state_user_id' => true, - 'amount' => true, - 'ident_hash' => true, - 'transaction' => true, - 'state_user' => true, - 'target_date' => true - ]; -} diff --git a/community_server/src/Model/Entity/TransactionGroupAddaddres.php b/community_server/src/Model/Entity/TransactionGroupAddaddres.php deleted file mode 100644 index 30819209f..000000000 --- a/community_server/src/Model/Entity/TransactionGroupAddaddres.php +++ /dev/null @@ -1,37 +0,0 @@ - true, - 'address_type_id' => true, - 'remove_from_group' => true, - 'public_key' => true, - 'transaction' => true, - 'address_type' => true, - 'state_user_id' => true - ]; -} diff --git a/community_server/src/Model/Entity/TransactionGroupAllowtrade.php b/community_server/src/Model/Entity/TransactionGroupAllowtrade.php deleted file mode 100644 index d097c643f..000000000 --- a/community_server/src/Model/Entity/TransactionGroupAllowtrade.php +++ /dev/null @@ -1,35 +0,0 @@ - true, - 'group_id' => true, - 'allow' => true, - 'transaction' => true, - 'group' => true - ]; -} diff --git a/community_server/src/Model/Entity/TransactionGroupCreate.php b/community_server/src/Model/Entity/TransactionGroupCreate.php deleted file mode 100644 index 26fab510b..000000000 --- a/community_server/src/Model/Entity/TransactionGroupCreate.php +++ /dev/null @@ -1,37 +0,0 @@ - true, - 'group_public_key' => true, - 'state_group_id' => true, - 'name' => true, - 'transaction' => true, - 'state_group' => true - ]; -} diff --git a/community_server/src/Model/Entity/TransactionSendCoin.php b/community_server/src/Model/Entity/TransactionSendCoin.php deleted file mode 100644 index 4d774501e..000000000 --- a/community_server/src/Model/Entity/TransactionSendCoin.php +++ /dev/null @@ -1,43 +0,0 @@ - true, - 'state_user_id' => true, - 'receiver_public_key' => true, - 'receiver_user_id' => true, - 'amount' => true, - 'sender_final_balance' => true, - 'transaction' => true, - 'state_user' => true, - 'receiver_user' => true - ]; -} diff --git a/community_server/src/Model/Entity/TransactionSignature.php b/community_server/src/Model/Entity/TransactionSignature.php deleted file mode 100644 index 16bce8b00..000000000 --- a/community_server/src/Model/Entity/TransactionSignature.php +++ /dev/null @@ -1,33 +0,0 @@ - true, - 'signature' => true, - 'pubkey' => true, - 'transaction' => true - ]; -} diff --git a/community_server/src/Model/Entity/TransactionType.php b/community_server/src/Model/Entity/TransactionType.php deleted file mode 100644 index b8f13e474..000000000 --- a/community_server/src/Model/Entity/TransactionType.php +++ /dev/null @@ -1,31 +0,0 @@ - true, - 'text' => true, - 'transactions' => true - ]; -} diff --git a/community_server/src/Model/Entity/User.php b/community_server/src/Model/Entity/User.php deleted file mode 100644 index 352371471..000000000 --- a/community_server/src/Model/Entity/User.php +++ /dev/null @@ -1,58 +0,0 @@ - true, - 'first_name' => true, - 'last_name' => true, - 'password' => true, - 'pubkey' => true, - 'privkey' => true, - 'created' => true, - 'email_checked' => true, - 'language' => true, - 'email_opt_in' => true, - 'user_backups' => true, - 'user_roles' => true, - ]; - - /** - * Fields that are excluded from JSON versions of the entity. - * - * @var array - */ - protected $_hidden = [ - 'password', - ]; -} diff --git a/community_server/src/Model/Messages/GPBMetadata/Gradido/BasicTypes.php b/community_server/src/Model/Messages/GPBMetadata/Gradido/BasicTypes.php deleted file mode 100644 index 60fa5f22b..000000000 --- a/community_server/src/Model/Messages/GPBMetadata/Gradido/BasicTypes.php +++ /dev/null @@ -1,39 +0,0 @@ -internalAddGeneratedFile(hex2bin( - "0aca030a186772616469646f2f426173696354797065732e70726f746f12" . - "0d70726f746f2e6772616469646f22380a034b657912110a076564323535" . - "313918022001280c480012170a0d656432353531395f7265663130180320" . - "01280c480042050a036b657922580a0d5369676e61747572655061697212" . - "0e0a067075624b657918012001280c12110a076564323535313918022001" . - "280c480012170a0d656432353531395f726566313018032001280c480042" . - "0b0a097369676e6174757265223d0a0c5369676e61747572654d6170122d" . - "0a077369675061697218012003280b321c2e70726f746f2e677261646964" . - "6f2e5369676e617475726550616972222b0a0954696d657374616d70120f" . - "0a077365636f6e6473180120012803120d0a056e616e6f73180220012805" . - "22230a1054696d657374616d705365636f6e6473120f0a077365636f6e64" . - "7318012001280322300a0e5472616e73666572416d6f756e74120e0a0670" . - "75626b657918012001280c120e0a06616d6f756e7418022001281222400a" . - "08486564657261494412100a0873686172644e756d18012001280312100a" . - "087265616c6d4e756d18022001280312100a08746f7069634e756d180320" . - "012803620670726f746f33" - ), true); - - static::$is_initialized = true; - } -} - diff --git a/community_server/src/Model/Messages/GPBMetadata/Gradido/GradidoCreation.php b/community_server/src/Model/Messages/GPBMetadata/Gradido/GradidoCreation.php deleted file mode 100644 index ebe7409db..000000000 --- a/community_server/src/Model/Messages/GPBMetadata/Gradido/GradidoCreation.php +++ /dev/null @@ -1,30 +0,0 @@ -internalAddGeneratedFile(hex2bin( - "0ab0010a1d6772616469646f2f4772616469646f4372656174696f6e2e70" . - "726f746f120d70726f746f2e6772616469646f22780a0f4772616469646f" . - "4372656174696f6e122f0a08726563656976657218012001280b321d2e70" . - "726f746f2e6772616469646f2e5472616e73666572416d6f756e7412340a" . - "0b7461726765745f6461746518032001280b321f2e70726f746f2e677261" . - "6469646f2e54696d657374616d705365636f6e6473620670726f746f33" - ), true); - - static::$is_initialized = true; - } -} - diff --git a/community_server/src/Model/Messages/GPBMetadata/Gradido/GradidoTransaction.php b/community_server/src/Model/Messages/GPBMetadata/Gradido/GradidoTransaction.php deleted file mode 100644 index 78460bd9f..000000000 --- a/community_server/src/Model/Messages/GPBMetadata/Gradido/GradidoTransaction.php +++ /dev/null @@ -1,29 +0,0 @@ -internalAddGeneratedFile(hex2bin( - "0a91010a206772616469646f2f4772616469646f5472616e73616374696f" . - "6e2e70726f746f120d70726f746f2e6772616469646f22560a1247726164" . - "69646f5472616e73616374696f6e122c0a077369675f6d61701801200128" . - "0b321b2e70726f746f2e6772616469646f2e5369676e61747572654d6170" . - "12120a0a626f64795f627974657318022001280c620670726f746f33" - ), true); - - static::$is_initialized = true; - } -} - diff --git a/community_server/src/Model/Messages/GPBMetadata/Gradido/GradidoTransfer.php b/community_server/src/Model/Messages/GPBMetadata/Gradido/GradidoTransfer.php deleted file mode 100644 index 6d7e6e375..000000000 --- a/community_server/src/Model/Messages/GPBMetadata/Gradido/GradidoTransfer.php +++ /dev/null @@ -1,41 +0,0 @@ -internalAddGeneratedFile(hex2bin( - "0ae6030a1d6772616469646f2f4772616469646f5472616e736665722e70" . - "726f746f120d70726f746f2e6772616469646f22500a0d4c6f63616c5472" . - "616e73666572122d0a0673656e64657218012001280b321d2e70726f746f" . - "2e6772616469646f2e5472616e73666572416d6f756e7412100a08726563" . - "656976657218022001280c22a3010a1243726f737347726f75705472616e" . - "73666572122d0a0673656e64657218012001280b321d2e70726f746f2e67" . - "72616469646f2e5472616e73666572416d6f756e7412100a087265636569" . - "76657218022001280c12130a0b6f746865725f67726f7570180320012809" . - "12370a157061697265645f7472616e73616374696f6e5f69641804200128" . - "0b32182e70726f746f2e6772616469646f2e54696d657374616d7022b501" . - "0a0f4772616469646f5472616e73666572122d0a056c6f63616c18012001" . - "280b321c2e70726f746f2e6772616469646f2e4c6f63616c5472616e7366" . - "6572480012340a07696e626f756e6418022001280b32212e70726f746f2e" . - "6772616469646f2e43726f737347726f75705472616e7366657248001235" . - "0a086f7574626f756e6418032001280b32212e70726f746f2e6772616469" . - "646f2e43726f737347726f75705472616e73666572480042060a04646174" . - "61620670726f746f33" - ), true); - - static::$is_initialized = true; - } -} - diff --git a/community_server/src/Model/Messages/GPBMetadata/Gradido/GroupFriendsUpdate.php b/community_server/src/Model/Messages/GPBMetadata/Gradido/GroupFriendsUpdate.php deleted file mode 100644 index 929e33b9d..000000000 --- a/community_server/src/Model/Messages/GPBMetadata/Gradido/GroupFriendsUpdate.php +++ /dev/null @@ -1,30 +0,0 @@ -internalAddGeneratedFile(hex2bin( - "0ac6010a206772616469646f2f47726f7570467269656e64735570646174" . - "652e70726f746f120d70726f746f2e6772616469646f228a010a1247726f" . - "7570467269656e6473557064617465120d0a0567726f7570180120012809" . - "12380a06616374696f6e18022001280e32282e70726f746f2e6772616469" . - "646f2e47726f7570467269656e64735570646174652e416374696f6e222b" . - "0a06416374696f6e120e0a0a4144445f465249454e44100012110a0d5245" . - "4d4f56455f465249454e441001620670726f746f33" - ), true); - - static::$is_initialized = true; - } -} - diff --git a/community_server/src/Model/Messages/GPBMetadata/Gradido/GroupMemberUpdate.php b/community_server/src/Model/Messages/GPBMetadata/Gradido/GroupMemberUpdate.php deleted file mode 100644 index c2a308292..000000000 --- a/community_server/src/Model/Messages/GPBMetadata/Gradido/GroupMemberUpdate.php +++ /dev/null @@ -1,36 +0,0 @@ -internalAddGeneratedFile(hex2bin( - "0ad2020a1f6772616469646f2f47726f75704d656d626572557064617465" . - "2e70726f746f120d70726f746f2e6772616469646f2297020a1147726f75" . - "704d656d62657255706461746512130a0b757365725f7075626b65791801" . - "2001280c124d0a126d656d6265725f7570646174655f7479706518022001" . - "280e32312e70726f746f2e6772616469646f2e47726f75704d656d626572" . - "5570646174652e4d656d6265725570646174655479706512370a15706169" . - "7265645f7472616e73616374696f6e5f696418032001280b32182e70726f" . - "746f2e6772616469646f2e54696d657374616d7012140a0c746172676574" . - "5f67726f7570180420012809224f0a104d656d6265725570646174655479" . - "7065120c0a084144445f55534552100012150a114d4f56455f555345525f" . - "494e424f554e44100112160a124d4f56455f555345525f4f5554424f554e" . - "441002620670726f746f33" - ), true); - - static::$is_initialized = true; - } -} - diff --git a/community_server/src/Model/Messages/GPBMetadata/Gradido/ManageNodeBody.php b/community_server/src/Model/Messages/GPBMetadata/Gradido/ManageNodeBody.php deleted file mode 100644 index aec11c28b..000000000 --- a/community_server/src/Model/Messages/GPBMetadata/Gradido/ManageNodeBody.php +++ /dev/null @@ -1,32 +0,0 @@ -internalAddGeneratedFile(hex2bin( - "0ab9010a1c6772616469646f2f4d616e6167654e6f6465426f64792e7072" . - "6f746f120d70726f746f2e6772616469646f1a186772616469646f2f4261" . - "73696354797065732e70726f746f22680a0e4d616e6167654e6f6465426f" . - "647912160a0e76657273696f6e5f6e756d62657218012001280412360a09" . - "67726f75705f61646418032001280b32212e70726f746f2e677261646964" . - "6f2e4d616e6167654e6f646547726f7570416464480042060a0464617461" . - "620670726f746f33" - ), true); - - static::$is_initialized = true; - } -} - diff --git a/community_server/src/Model/Messages/GPBMetadata/Gradido/ManageNodeGroupAdd.php b/community_server/src/Model/Messages/GPBMetadata/Gradido/ManageNodeGroupAdd.php deleted file mode 100644 index ffb25984d..000000000 --- a/community_server/src/Model/Messages/GPBMetadata/Gradido/ManageNodeGroupAdd.php +++ /dev/null @@ -1,30 +0,0 @@ -internalAddGeneratedFile(hex2bin( - "0aaa010a206772616469646f2f4d616e6167654e6f646547726f75704164" . - "642e70726f746f120d70726f746f2e6772616469646f226f0a124d616e61" . - "67654e6f646547726f757041646412120a0a67726f75705f6e616d651801" . - "2001280912130a0b67726f75705f616c69617318022001280912300a0f68" . - "65646572615f746f7069635f696418032001280b32172e70726f746f2e67" . - "72616469646f2e4865646572614944620670726f746f33" - ), true); - - static::$is_initialized = true; - } -} - diff --git a/community_server/src/Model/Messages/GPBMetadata/Gradido/ManageNodeRequest.php b/community_server/src/Model/Messages/GPBMetadata/Gradido/ManageNodeRequest.php deleted file mode 100644 index ef7dca297..000000000 --- a/community_server/src/Model/Messages/GPBMetadata/Gradido/ManageNodeRequest.php +++ /dev/null @@ -1,36 +0,0 @@ -internalAddGeneratedFile(hex2bin( - "0ade020a1f6772616469646f2f4d616e6167654e6f646552657175657374" . - "2e70726f746f120d70726f746f2e6772616469646f22550a114d616e6167" . - "654e6f646552657175657374122c0a077369675f6d617018012001280b32" . - "1b2e70726f746f2e6772616469646f2e5369676e61747572654d61701212" . - "0a0a626f64795f627974657318022001280c22cc010a124d616e6167654e" . - "6f6465526573706f6e7365120f0a0773756363657373180120012808123a" . - "0a056572726f7218022001280e322b2e70726f746f2e6772616469646f2e" . - "4d616e6167654e6f6465526573706f6e73652e4572726f72436f64652269" . - "0a094572726f72436f646512100a0c494e56414c49445f424f4459100012" . - "150a11494e56414c49445f5349474e4154555245100112140a105349474e" . - "45525f4e4f545f4b4e4f574e1002121d0a1947524f55505f414c4941535f" . - "414c52454144595f45584953541003620670726f746f33" - ), true); - - static::$is_initialized = true; - } -} - diff --git a/community_server/src/Model/Messages/GPBMetadata/Gradido/TransactionBody.php b/community_server/src/Model/Messages/GPBMetadata/Gradido/TransactionBody.php deleted file mode 100644 index f55b61f4d..000000000 --- a/community_server/src/Model/Messages/GPBMetadata/Gradido/TransactionBody.php +++ /dev/null @@ -1,46 +0,0 @@ -internalAddGeneratedFile(hex2bin( - "0a92040a1d6772616469646f2f5472616e73616374696f6e426f64792e70" . - "726f746f120d70726f746f2e6772616469646f1a1d6772616469646f2f47" . - "72616469646f4372656174696f6e2e70726f746f1a206772616469646f2f" . - "47726f7570467269656e64735570646174652e70726f746f1a1f67726164" . - "69646f2f47726f75704d656d6265725570646174652e70726f746f1a1867" . - "72616469646f2f426173696354797065732e70726f746f22dd020a0f5472" . - "616e73616374696f6e426f6479120c0a046d656d6f18012001280912300a" . - "076372656174656418022001280b321f2e70726f746f2e6772616469646f" . - "2e54696d657374616d705365636f6e647312160a0e76657273696f6e5f6e" . - "756d62657218032001280412320a087472616e7366657218062001280b32" . - "1e2e70726f746f2e6772616469646f2e4772616469646f5472616e736665" . - "72480012320a086372656174696f6e18072001280b321e2e70726f746f2e" . - "6772616469646f2e4772616469646f4372656174696f6e480012410a1467" . - "726f75705f667269656e64735f75706461746518082001280b32212e7072" . - "6f746f2e6772616469646f2e47726f7570467269656e6473557064617465" . - "4800123f0a1367726f75705f6d656d6265725f7570646174651809200128" . - "0b32202e70726f746f2e6772616469646f2e47726f75704d656d62657255" . - "7064617465480042060a0464617461620670726f746f33" - ), true); - - static::$is_initialized = true; - } -} - diff --git a/community_server/src/Model/Messages/Proto/Gradido/CrossGroupTransfer.php b/community_server/src/Model/Messages/Proto/Gradido/CrossGroupTransfer.php deleted file mode 100644 index 781ac8f25..000000000 --- a/community_server/src/Model/Messages/Proto/Gradido/CrossGroupTransfer.php +++ /dev/null @@ -1,146 +0,0 @@ -proto.gradido.CrossGroupTransfer - */ -class CrossGroupTransfer extends \Google\Protobuf\Internal\Message -{ - /** - * Generated from protobuf field .proto.gradido.TransferAmount sender = 1; - */ - private $sender = null; - /** - * Generated from protobuf field bytes receiver = 2; - */ - private $receiver = ''; - /** - * Generated from protobuf field string other_group = 3; - */ - private $other_group = ''; - /** - * this matches related OutboundTransfer.paired_transaction_id - * - * Generated from protobuf field .proto.gradido.Timestamp paired_transaction_id = 4; - */ - private $paired_transaction_id = null; - - /** - * Constructor. - * - * @param array $data { - * Optional. Data for populating the Message object. - * - * @type \Proto\Gradido\TransferAmount $sender - * @type string $receiver - * @type string $other_group - * @type \Proto\Gradido\Timestamp $paired_transaction_id - * this matches related OutboundTransfer.paired_transaction_id - * } - */ - public function __construct($data = NULL) { - \GPBMetadata\Gradido\GradidoTransfer::initOnce(); - parent::__construct($data); - } - - /** - * Generated from protobuf field .proto.gradido.TransferAmount sender = 1; - * @return \Proto\Gradido\TransferAmount - */ - public function getSender() - { - return $this->sender; - } - - /** - * Generated from protobuf field .proto.gradido.TransferAmount sender = 1; - * @param \Proto\Gradido\TransferAmount $var - * @return $this - */ - public function setSender($var) - { - GPBUtil::checkMessage($var, \Proto\Gradido\TransferAmount::class); - $this->sender = $var; - - return $this; - } - - /** - * Generated from protobuf field bytes receiver = 2; - * @return string - */ - public function getReceiver() - { - return $this->receiver; - } - - /** - * Generated from protobuf field bytes receiver = 2; - * @param string $var - * @return $this - */ - public function setReceiver($var) - { - GPBUtil::checkString($var, False); - $this->receiver = $var; - - return $this; - } - - /** - * Generated from protobuf field string other_group = 3; - * @return string - */ - public function getOtherGroup() - { - return $this->other_group; - } - - /** - * Generated from protobuf field string other_group = 3; - * @param string $var - * @return $this - */ - public function setOtherGroup($var) - { - GPBUtil::checkString($var, True); - $this->other_group = $var; - - return $this; - } - - /** - * this matches related OutboundTransfer.paired_transaction_id - * - * Generated from protobuf field .proto.gradido.Timestamp paired_transaction_id = 4; - * @return \Proto\Gradido\Timestamp - */ - public function getPairedTransactionId() - { - return $this->paired_transaction_id; - } - - /** - * this matches related OutboundTransfer.paired_transaction_id - * - * Generated from protobuf field .proto.gradido.Timestamp paired_transaction_id = 4; - * @param \Proto\Gradido\Timestamp $var - * @return $this - */ - public function setPairedTransactionId($var) - { - GPBUtil::checkMessage($var, \Proto\Gradido\Timestamp::class); - $this->paired_transaction_id = $var; - - return $this; - } - -} - diff --git a/community_server/src/Model/Messages/Proto/Gradido/GradidoCreation.php b/community_server/src/Model/Messages/Proto/Gradido/GradidoCreation.php deleted file mode 100644 index 9b4c3208d..000000000 --- a/community_server/src/Model/Messages/Proto/Gradido/GradidoCreation.php +++ /dev/null @@ -1,102 +0,0 @@ -proto.gradido.GradidoCreation - */ -class GradidoCreation extends \Google\Protobuf\Internal\Message -{ - /** - * 40 Byte - * - * Generated from protobuf field .proto.gradido.TransferAmount receiver = 1; - */ - private $receiver = null; - /** - * 8 Byte - * - * Generated from protobuf field .proto.gradido.TimestampSeconds target_date = 3; - */ - private $target_date = null; - - /** - * Constructor. - * - * @param array $data { - * Optional. Data for populating the Message object. - * - * @type \Proto\Gradido\TransferAmount $receiver - * 40 Byte - * @type \Proto\Gradido\TimestampSeconds $target_date - * 8 Byte - * } - */ - public function __construct($data = NULL) { - \GPBMetadata\Gradido\GradidoCreation::initOnce(); - parent::__construct($data); - } - - /** - * 40 Byte - * - * Generated from protobuf field .proto.gradido.TransferAmount receiver = 1; - * @return \Proto\Gradido\TransferAmount - */ - public function getReceiver() - { - return $this->receiver; - } - - /** - * 40 Byte - * - * Generated from protobuf field .proto.gradido.TransferAmount receiver = 1; - * @param \Proto\Gradido\TransferAmount $var - * @return $this - */ - public function setReceiver($var) - { - GPBUtil::checkMessage($var, \Proto\Gradido\TransferAmount::class); - $this->receiver = $var; - - return $this; - } - - /** - * 8 Byte - * - * Generated from protobuf field .proto.gradido.TimestampSeconds target_date = 3; - * @return \Proto\Gradido\TimestampSeconds - */ - public function getTargetDate() - { - return $this->target_date; - } - - /** - * 8 Byte - * - * Generated from protobuf field .proto.gradido.TimestampSeconds target_date = 3; - * @param \Proto\Gradido\TimestampSeconds $var - * @return $this - */ - public function setTargetDate($var) - { - GPBUtil::checkMessage($var, \Proto\Gradido\TimestampSeconds::class); - $this->target_date = $var; - - return $this; - } - -} - diff --git a/community_server/src/Model/Messages/Proto/Gradido/GradidoTransaction.php b/community_server/src/Model/Messages/Proto/Gradido/GradidoTransaction.php deleted file mode 100644 index b4b34c77e..000000000 --- a/community_server/src/Model/Messages/Proto/Gradido/GradidoTransaction.php +++ /dev/null @@ -1,116 +0,0 @@ -proto.gradido.GradidoTransaction - */ -class GradidoTransaction extends \Google\Protobuf\Internal\Message -{ - /** - * Generated from protobuf field .proto.gradido.SignatureMap sig_map = 1; - */ - private $sig_map = null; - /** - * TODO: consider if having concrete type wouldn't be better; - * having bytes would better show what is signed, still for - * blockchain it doesn't matter, as it has to be serialized again - * when validating - * UNICORN ANSWER: - * Maybe but hedera has at first concrete type and has depracted that now, so is must - * be reason for that - * - * Generated from protobuf field bytes body_bytes = 2; - */ - private $body_bytes = ''; - - /** - * Constructor. - * - * @param array $data { - * Optional. Data for populating the Message object. - * - * @type \Proto\Gradido\SignatureMap $sig_map - * @type string $body_bytes - * TODO: consider if having concrete type wouldn't be better; - * having bytes would better show what is signed, still for - * blockchain it doesn't matter, as it has to be serialized again - * when validating - * UNICORN ANSWER: - * Maybe but hedera has at first concrete type and has depracted that now, so is must - * be reason for that - * } - */ - public function __construct($data = NULL) { - \GPBMetadata\Gradido\GradidoTransaction::initOnce(); - parent::__construct($data); - } - - /** - * Generated from protobuf field .proto.gradido.SignatureMap sig_map = 1; - * @return \Proto\Gradido\SignatureMap - */ - public function getSigMap() - { - return $this->sig_map; - } - - /** - * Generated from protobuf field .proto.gradido.SignatureMap sig_map = 1; - * @param \Proto\Gradido\SignatureMap $var - * @return $this - */ - public function setSigMap($var) - { - GPBUtil::checkMessage($var, \Proto\Gradido\SignatureMap::class); - $this->sig_map = $var; - - return $this; - } - - /** - * TODO: consider if having concrete type wouldn't be better; - * having bytes would better show what is signed, still for - * blockchain it doesn't matter, as it has to be serialized again - * when validating - * UNICORN ANSWER: - * Maybe but hedera has at first concrete type and has depracted that now, so is must - * be reason for that - * - * Generated from protobuf field bytes body_bytes = 2; - * @return string - */ - public function getBodyBytes() - { - return $this->body_bytes; - } - - /** - * TODO: consider if having concrete type wouldn't be better; - * having bytes would better show what is signed, still for - * blockchain it doesn't matter, as it has to be serialized again - * when validating - * UNICORN ANSWER: - * Maybe but hedera has at first concrete type and has depracted that now, so is must - * be reason for that - * - * Generated from protobuf field bytes body_bytes = 2; - * @param string $var - * @return $this - */ - public function setBodyBytes($var) - { - GPBUtil::checkString($var, False); - $this->body_bytes = $var; - - return $this; - } - -} - diff --git a/community_server/src/Model/Messages/Proto/Gradido/GradidoTransfer.php b/community_server/src/Model/Messages/Proto/Gradido/GradidoTransfer.php deleted file mode 100644 index a76954c2e..000000000 --- a/community_server/src/Model/Messages/Proto/Gradido/GradidoTransfer.php +++ /dev/null @@ -1,109 +0,0 @@ -proto.gradido.GradidoTransfer - */ -class GradidoTransfer extends \Google\Protobuf\Internal\Message -{ - protected $data; - - /** - * Constructor. - * - * @param array $data { - * Optional. Data for populating the Message object. - * - * @type \Proto\Gradido\LocalTransfer $local - * @type \Proto\Gradido\CrossGroupTransfer $inbound - * @type \Proto\Gradido\CrossGroupTransfer $outbound - * } - */ - public function __construct($data = NULL) { - \GPBMetadata\Gradido\GradidoTransfer::initOnce(); - parent::__construct($data); - } - - /** - * Generated from protobuf field .proto.gradido.LocalTransfer local = 1; - * @return \Proto\Gradido\LocalTransfer - */ - public function getLocal() - { - return $this->readOneof(1); - } - - /** - * Generated from protobuf field .proto.gradido.LocalTransfer local = 1; - * @param \Proto\Gradido\LocalTransfer $var - * @return $this - */ - public function setLocal($var) - { - GPBUtil::checkMessage($var, \Proto\Gradido\LocalTransfer::class); - $this->writeOneof(1, $var); - - return $this; - } - - /** - * Generated from protobuf field .proto.gradido.CrossGroupTransfer inbound = 2; - * @return \Proto\Gradido\CrossGroupTransfer - */ - public function getInbound() - { - return $this->readOneof(2); - } - - /** - * Generated from protobuf field .proto.gradido.CrossGroupTransfer inbound = 2; - * @param \Proto\Gradido\CrossGroupTransfer $var - * @return $this - */ - public function setInbound($var) - { - GPBUtil::checkMessage($var, \Proto\Gradido\CrossGroupTransfer::class); - $this->writeOneof(2, $var); - - return $this; - } - - /** - * Generated from protobuf field .proto.gradido.CrossGroupTransfer outbound = 3; - * @return \Proto\Gradido\CrossGroupTransfer - */ - public function getOutbound() - { - return $this->readOneof(3); - } - - /** - * Generated from protobuf field .proto.gradido.CrossGroupTransfer outbound = 3; - * @param \Proto\Gradido\CrossGroupTransfer $var - * @return $this - */ - public function setOutbound($var) - { - GPBUtil::checkMessage($var, \Proto\Gradido\CrossGroupTransfer::class); - $this->writeOneof(3, $var); - - return $this; - } - - /** - * @return string - */ - public function getData() - { - return $this->whichOneof("data"); - } - -} - diff --git a/community_server/src/Model/Messages/Proto/Gradido/GroupFriendsUpdate.php b/community_server/src/Model/Messages/Proto/Gradido/GroupFriendsUpdate.php deleted file mode 100644 index 22e86d3e1..000000000 --- a/community_server/src/Model/Messages/Proto/Gradido/GroupFriendsUpdate.php +++ /dev/null @@ -1,92 +0,0 @@ -proto.gradido.GroupFriendsUpdate - */ -class GroupFriendsUpdate extends \Google\Protobuf\Internal\Message -{ - /** - * char[16], alias - * - * Generated from protobuf field string group = 1; - */ - private $group = ''; - /** - * Generated from protobuf field .proto.gradido.GroupFriendsUpdate.Action action = 2; - */ - private $action = 0; - - /** - * Constructor. - * - * @param array $data { - * Optional. Data for populating the Message object. - * - * @type string $group - * char[16], alias - * @type int $action - * } - */ - public function __construct($data = NULL) { - \GPBMetadata\Gradido\GroupFriendsUpdate::initOnce(); - parent::__construct($data); - } - - /** - * char[16], alias - * - * Generated from protobuf field string group = 1; - * @return string - */ - public function getGroup() - { - return $this->group; - } - - /** - * char[16], alias - * - * Generated from protobuf field string group = 1; - * @param string $var - * @return $this - */ - public function setGroup($var) - { - GPBUtil::checkString($var, True); - $this->group = $var; - - return $this; - } - - /** - * Generated from protobuf field .proto.gradido.GroupFriendsUpdate.Action action = 2; - * @return int - */ - public function getAction() - { - return $this->action; - } - - /** - * Generated from protobuf field .proto.gradido.GroupFriendsUpdate.Action action = 2; - * @param int $var - * @return $this - */ - public function setAction($var) - { - GPBUtil::checkEnum($var, \Proto\Gradido\GroupFriendsUpdate_Action::class); - $this->action = $var; - - return $this; - } - -} - diff --git a/community_server/src/Model/Messages/Proto/Gradido/GroupFriendsUpdate/Action.php b/community_server/src/Model/Messages/Proto/Gradido/GroupFriendsUpdate/Action.php deleted file mode 100644 index 2a3396c55..000000000 --- a/community_server/src/Model/Messages/Proto/Gradido/GroupFriendsUpdate/Action.php +++ /dev/null @@ -1,51 +0,0 @@ -proto.gradido.GroupFriendsUpdate.Action - */ -class Action -{ - /** - * Generated from protobuf enum ADD_FRIEND = 0; - */ - const ADD_FRIEND = 0; - /** - * Generated from protobuf enum REMOVE_FRIEND = 1; - */ - const REMOVE_FRIEND = 1; - - private static $valueToName = [ - self::ADD_FRIEND => 'ADD_FRIEND', - self::REMOVE_FRIEND => 'REMOVE_FRIEND', - ]; - - public static function name($value) - { - if (!isset(self::$valueToName[$value])) { - throw new UnexpectedValueException(sprintf( - 'Enum %s has no name defined for value %s', __CLASS__, $value)); - } - return self::$valueToName[$value]; - } - - - public static function value($name) - { - $const = __CLASS__ . '::' . strtoupper($name); - if (!defined($const)) { - throw new UnexpectedValueException(sprintf( - 'Enum %s has no value defined for name %s', __CLASS__, $name)); - } - return constant($const); - } -} - -// Adding a class alias for backwards compatibility with the previous class name. -class_alias(Action::class, \Proto\Gradido\GroupFriendsUpdate_Action::class); - diff --git a/community_server/src/Model/Messages/Proto/Gradido/GroupFriendsUpdate_Action.php b/community_server/src/Model/Messages/Proto/Gradido/GroupFriendsUpdate_Action.php deleted file mode 100644 index 24f8cef70..000000000 --- a/community_server/src/Model/Messages/Proto/Gradido/GroupFriendsUpdate_Action.php +++ /dev/null @@ -1,16 +0,0 @@ -proto.gradido.GroupMemberUpdate - */ -class GroupMemberUpdate extends \Google\Protobuf\Internal\Message -{ - /** - * Generated from protobuf field bytes user_pubkey = 1; - */ - private $user_pubkey = ''; - /** - * Generated from protobuf field .proto.gradido.GroupMemberUpdate.MemberUpdateType member_update_type = 2; - */ - private $member_update_type = 0; - /** - * this only makes sense for user move, TODO: probably restructure - * - * Generated from protobuf field .proto.gradido.Timestamp paired_transaction_id = 3; - */ - private $paired_transaction_id = null; - /** - * Generated from protobuf field string target_group = 4; - */ - private $target_group = ''; - - /** - * Constructor. - * - * @param array $data { - * Optional. Data for populating the Message object. - * - * @type string $user_pubkey - * @type int $member_update_type - * @type \Proto\Gradido\Timestamp $paired_transaction_id - * this only makes sense for user move, TODO: probably restructure - * @type string $target_group - * } - */ - public function __construct($data = NULL) { - \GPBMetadata\Gradido\GroupMemberUpdate::initOnce(); - parent::__construct($data); - } - - /** - * Generated from protobuf field bytes user_pubkey = 1; - * @return string - */ - public function getUserPubkey() - { - return $this->user_pubkey; - } - - /** - * Generated from protobuf field bytes user_pubkey = 1; - * @param string $var - * @return $this - */ - public function setUserPubkey($var) - { - GPBUtil::checkString($var, False); - $this->user_pubkey = $var; - - return $this; - } - - /** - * Generated from protobuf field .proto.gradido.GroupMemberUpdate.MemberUpdateType member_update_type = 2; - * @return int - */ - public function getMemberUpdateType() - { - return $this->member_update_type; - } - - /** - * Generated from protobuf field .proto.gradido.GroupMemberUpdate.MemberUpdateType member_update_type = 2; - * @param int $var - * @return $this - */ - public function setMemberUpdateType($var) - { - GPBUtil::checkEnum($var, \Proto\Gradido\GroupMemberUpdate_MemberUpdateType::class); - $this->member_update_type = $var; - - return $this; - } - - /** - * this only makes sense for user move, TODO: probably restructure - * - * Generated from protobuf field .proto.gradido.Timestamp paired_transaction_id = 3; - * @return \Proto\Gradido\Timestamp - */ - public function getPairedTransactionId() - { - return $this->paired_transaction_id; - } - - /** - * this only makes sense for user move, TODO: probably restructure - * - * Generated from protobuf field .proto.gradido.Timestamp paired_transaction_id = 3; - * @param \Proto\Gradido\Timestamp $var - * @return $this - */ - public function setPairedTransactionId($var) - { - GPBUtil::checkMessage($var, \Proto\Gradido\Timestamp::class); - $this->paired_transaction_id = $var; - - return $this; - } - - /** - * Generated from protobuf field string target_group = 4; - * @return string - */ - public function getTargetGroup() - { - return $this->target_group; - } - - /** - * Generated from protobuf field string target_group = 4; - * @param string $var - * @return $this - */ - public function setTargetGroup($var) - { - GPBUtil::checkString($var, True); - $this->target_group = $var; - - return $this; - } - -} - diff --git a/community_server/src/Model/Messages/Proto/Gradido/GroupMemberUpdate/MemberUpdateType.php b/community_server/src/Model/Messages/Proto/Gradido/GroupMemberUpdate/MemberUpdateType.php deleted file mode 100644 index 57580cd75..000000000 --- a/community_server/src/Model/Messages/Proto/Gradido/GroupMemberUpdate/MemberUpdateType.php +++ /dev/null @@ -1,56 +0,0 @@ -proto.gradido.GroupMemberUpdate.MemberUpdateType - */ -class MemberUpdateType -{ - /** - * Generated from protobuf enum ADD_USER = 0; - */ - const ADD_USER = 0; - /** - * Generated from protobuf enum MOVE_USER_INBOUND = 1; - */ - const MOVE_USER_INBOUND = 1; - /** - * Generated from protobuf enum MOVE_USER_OUTBOUND = 2; - */ - const MOVE_USER_OUTBOUND = 2; - - private static $valueToName = [ - self::ADD_USER => 'ADD_USER', - self::MOVE_USER_INBOUND => 'MOVE_USER_INBOUND', - self::MOVE_USER_OUTBOUND => 'MOVE_USER_OUTBOUND', - ]; - - public static function name($value) - { - if (!isset(self::$valueToName[$value])) { - throw new UnexpectedValueException(sprintf( - 'Enum %s has no name defined for value %s', __CLASS__, $value)); - } - return self::$valueToName[$value]; - } - - - public static function value($name) - { - $const = __CLASS__ . '::' . strtoupper($name); - if (!defined($const)) { - throw new UnexpectedValueException(sprintf( - 'Enum %s has no value defined for name %s', __CLASS__, $name)); - } - return constant($const); - } -} - -// Adding a class alias for backwards compatibility with the previous class name. -class_alias(MemberUpdateType::class, \Proto\Gradido\GroupMemberUpdate_MemberUpdateType::class); - diff --git a/community_server/src/Model/Messages/Proto/Gradido/GroupMemberUpdate_MemberUpdateType.php b/community_server/src/Model/Messages/Proto/Gradido/GroupMemberUpdate_MemberUpdateType.php deleted file mode 100644 index b7080cf75..000000000 --- a/community_server/src/Model/Messages/Proto/Gradido/GroupMemberUpdate_MemberUpdateType.php +++ /dev/null @@ -1,16 +0,0 @@ -proto.gradido.HederaID - */ -class HederaID extends \Google\Protobuf\Internal\Message -{ - /** - * The shard number (nonnegative) - * - * Generated from protobuf field int64 shardNum = 1; - */ - private $shardNum = 0; - /** - * The realm number (nonnegative) - * - * Generated from protobuf field int64 realmNum = 2; - */ - private $realmNum = 0; - /** - * Unique topic identifier within a realm (nonnegative). - * - * Generated from protobuf field int64 topicNum = 3; - */ - private $topicNum = 0; - - /** - * Constructor. - * - * @param array $data { - * Optional. Data for populating the Message object. - * - * @type int|string $shardNum - * The shard number (nonnegative) - * @type int|string $realmNum - * The realm number (nonnegative) - * @type int|string $topicNum - * Unique topic identifier within a realm (nonnegative). - * } - */ - public function __construct($data = NULL) { - \GPBMetadata\Gradido\BasicTypes::initOnce(); - parent::__construct($data); - } - - /** - * The shard number (nonnegative) - * - * Generated from protobuf field int64 shardNum = 1; - * @return int|string - */ - public function getShardNum() - { - return $this->shardNum; - } - - /** - * The shard number (nonnegative) - * - * Generated from protobuf field int64 shardNum = 1; - * @param int|string $var - * @return $this - */ - public function setShardNum($var) - { - GPBUtil::checkInt64($var); - $this->shardNum = $var; - - return $this; - } - - /** - * The realm number (nonnegative) - * - * Generated from protobuf field int64 realmNum = 2; - * @return int|string - */ - public function getRealmNum() - { - return $this->realmNum; - } - - /** - * The realm number (nonnegative) - * - * Generated from protobuf field int64 realmNum = 2; - * @param int|string $var - * @return $this - */ - public function setRealmNum($var) - { - GPBUtil::checkInt64($var); - $this->realmNum = $var; - - return $this; - } - - /** - * Unique topic identifier within a realm (nonnegative). - * - * Generated from protobuf field int64 topicNum = 3; - * @return int|string - */ - public function getTopicNum() - { - return $this->topicNum; - } - - /** - * Unique topic identifier within a realm (nonnegative). - * - * Generated from protobuf field int64 topicNum = 3; - * @param int|string $var - * @return $this - */ - public function setTopicNum($var) - { - GPBUtil::checkInt64($var); - $this->topicNum = $var; - - return $this; - } - -} - diff --git a/community_server/src/Model/Messages/Proto/Gradido/Key.php b/community_server/src/Model/Messages/Proto/Gradido/Key.php deleted file mode 100644 index 4c32e0083..000000000 --- a/community_server/src/Model/Messages/Proto/Gradido/Key.php +++ /dev/null @@ -1,96 +0,0 @@ -proto.gradido.Key - */ -class Key extends \Google\Protobuf\Internal\Message -{ - protected $key; - - /** - * Constructor. - * - * @param array $data { - * Optional. Data for populating the Message object. - * - * @type string $ed25519 - * ed25519 signature (libsodium default) - * @type string $ed25519_ref10 - * ed25519 ref10 signature - * } - */ - public function __construct($data = NULL) { - \GPBMetadata\Gradido\BasicTypes::initOnce(); - parent::__construct($data); - } - - /** - * ed25519 signature (libsodium default) - * - * Generated from protobuf field bytes ed25519 = 2; - * @return string - */ - public function getEd25519() - { - return $this->readOneof(2); - } - - /** - * ed25519 signature (libsodium default) - * - * Generated from protobuf field bytes ed25519 = 2; - * @param string $var - * @return $this - */ - public function setEd25519($var) - { - GPBUtil::checkString($var, False); - $this->writeOneof(2, $var); - - return $this; - } - - /** - * ed25519 ref10 signature - * - * Generated from protobuf field bytes ed25519_ref10 = 3; - * @return string - */ - public function getEd25519Ref10() - { - return $this->readOneof(3); - } - - /** - * ed25519 ref10 signature - * - * Generated from protobuf field bytes ed25519_ref10 = 3; - * @param string $var - * @return $this - */ - public function setEd25519Ref10($var) - { - GPBUtil::checkString($var, False); - $this->writeOneof(3, $var); - - return $this; - } - - /** - * @return string - */ - public function getKey() - { - return $this->whichOneof("key"); - } - -} - diff --git a/community_server/src/Model/Messages/Proto/Gradido/LocalTransfer.php b/community_server/src/Model/Messages/Proto/Gradido/LocalTransfer.php deleted file mode 100644 index 58f5e23ae..000000000 --- a/community_server/src/Model/Messages/Proto/Gradido/LocalTransfer.php +++ /dev/null @@ -1,85 +0,0 @@ -proto.gradido.LocalTransfer - */ -class LocalTransfer extends \Google\Protobuf\Internal\Message -{ - /** - * Generated from protobuf field .proto.gradido.TransferAmount sender = 1; - */ - private $sender = null; - /** - * Generated from protobuf field bytes receiver = 2; - */ - private $receiver = ''; - - /** - * Constructor. - * - * @param array $data { - * Optional. Data for populating the Message object. - * - * @type \Proto\Gradido\TransferAmount $sender - * @type string $receiver - * } - */ - public function __construct($data = NULL) { - \GPBMetadata\Gradido\GradidoTransfer::initOnce(); - parent::__construct($data); - } - - /** - * Generated from protobuf field .proto.gradido.TransferAmount sender = 1; - * @return \Proto\Gradido\TransferAmount - */ - public function getSender() - { - return $this->sender; - } - - /** - * Generated from protobuf field .proto.gradido.TransferAmount sender = 1; - * @param \Proto\Gradido\TransferAmount $var - * @return $this - */ - public function setSender($var) - { - GPBUtil::checkMessage($var, \Proto\Gradido\TransferAmount::class); - $this->sender = $var; - - return $this; - } - - /** - * Generated from protobuf field bytes receiver = 2; - * @return string - */ - public function getReceiver() - { - return $this->receiver; - } - - /** - * Generated from protobuf field bytes receiver = 2; - * @param string $var - * @return $this - */ - public function setReceiver($var) - { - GPBUtil::checkString($var, False); - $this->receiver = $var; - - return $this; - } - -} - diff --git a/community_server/src/Model/Messages/Proto/Gradido/ManageNodeBody.php b/community_server/src/Model/Messages/Proto/Gradido/ManageNodeBody.php deleted file mode 100644 index eed599868..000000000 --- a/community_server/src/Model/Messages/Proto/Gradido/ManageNodeBody.php +++ /dev/null @@ -1,90 +0,0 @@ -proto.gradido.ManageNodeBody - */ -class ManageNodeBody extends \Google\Protobuf\Internal\Message -{ - /** - * Generated from protobuf field uint64 version_number = 1; - */ - private $version_number = 0; - protected $data; - - /** - * Constructor. - * - * @param array $data { - * Optional. Data for populating the Message object. - * - * @type int|string $version_number - * @type \Proto\Gradido\ManageNodeGroupAdd $group_add - * } - */ - public function __construct($data = NULL) { - \GPBMetadata\Gradido\ManageNodeBody::initOnce(); - parent::__construct($data); - } - - /** - * Generated from protobuf field uint64 version_number = 1; - * @return int|string - */ - public function getVersionNumber() - { - return $this->version_number; - } - - /** - * Generated from protobuf field uint64 version_number = 1; - * @param int|string $var - * @return $this - */ - public function setVersionNumber($var) - { - GPBUtil::checkUint64($var); - $this->version_number = $var; - - return $this; - } - - /** - * Generated from protobuf field .proto.gradido.ManageNodeGroupAdd group_add = 3; - * @return \Proto\Gradido\ManageNodeGroupAdd - */ - public function getGroupAdd() - { - return $this->readOneof(3); - } - - /** - * Generated from protobuf field .proto.gradido.ManageNodeGroupAdd group_add = 3; - * @param \Proto\Gradido\ManageNodeGroupAdd $var - * @return $this - */ - public function setGroupAdd($var) - { - GPBUtil::checkMessage($var, \Proto\Gradido\ManageNodeGroupAdd::class); - $this->writeOneof(3, $var); - - return $this; - } - - /** - * @return string - */ - public function getData() - { - return $this->whichOneof("data"); - } - -} - diff --git a/community_server/src/Model/Messages/Proto/Gradido/ManageNodeGroupAdd.php b/community_server/src/Model/Messages/Proto/Gradido/ManageNodeGroupAdd.php deleted file mode 100644 index 777075066..000000000 --- a/community_server/src/Model/Messages/Proto/Gradido/ManageNodeGroupAdd.php +++ /dev/null @@ -1,119 +0,0 @@ -proto.gradido.ManageNodeGroupAdd - */ -class ManageNodeGroupAdd extends \Google\Protobuf\Internal\Message -{ - /** - * Generated from protobuf field string group_name = 1; - */ - private $group_name = ''; - /** - * Generated from protobuf field string group_alias = 2; - */ - private $group_alias = ''; - /** - *string parent_group_alias = 4; - * - * Generated from protobuf field .proto.gradido.HederaID hedera_topic_id = 3; - */ - private $hedera_topic_id = null; - - /** - * Constructor. - * - * @param array $data { - * Optional. Data for populating the Message object. - * - * @type string $group_name - * @type string $group_alias - * @type \Proto\Gradido\HederaID $hedera_topic_id - * string parent_group_alias = 4; - * } - */ - public function __construct($data = NULL) { - \GPBMetadata\Gradido\ManageNodeGroupAdd::initOnce(); - parent::__construct($data); - } - - /** - * Generated from protobuf field string group_name = 1; - * @return string - */ - public function getGroupName() - { - return $this->group_name; - } - - /** - * Generated from protobuf field string group_name = 1; - * @param string $var - * @return $this - */ - public function setGroupName($var) - { - GPBUtil::checkString($var, True); - $this->group_name = $var; - - return $this; - } - - /** - * Generated from protobuf field string group_alias = 2; - * @return string - */ - public function getGroupAlias() - { - return $this->group_alias; - } - - /** - * Generated from protobuf field string group_alias = 2; - * @param string $var - * @return $this - */ - public function setGroupAlias($var) - { - GPBUtil::checkString($var, True); - $this->group_alias = $var; - - return $this; - } - - /** - *string parent_group_alias = 4; - * - * Generated from protobuf field .proto.gradido.HederaID hedera_topic_id = 3; - * @return \Proto\Gradido\HederaID - */ - public function getHederaTopicId() - { - return $this->hedera_topic_id; - } - - /** - *string parent_group_alias = 4; - * - * Generated from protobuf field .proto.gradido.HederaID hedera_topic_id = 3; - * @param \Proto\Gradido\HederaID $var - * @return $this - */ - public function setHederaTopicId($var) - { - GPBUtil::checkMessage($var, \Proto\Gradido\HederaID::class); - $this->hedera_topic_id = $var; - - return $this; - } - -} - diff --git a/community_server/src/Model/Messages/Proto/Gradido/ManageNodeRequest.php b/community_server/src/Model/Messages/Proto/Gradido/ManageNodeRequest.php deleted file mode 100644 index 6699b98c5..000000000 --- a/community_server/src/Model/Messages/Proto/Gradido/ManageNodeRequest.php +++ /dev/null @@ -1,92 +0,0 @@ -proto.gradido.ManageNodeRequest - */ -class ManageNodeRequest extends \Google\Protobuf\Internal\Message -{ - /** - * Generated from protobuf field .proto.gradido.SignatureMap sig_map = 1; - */ - private $sig_map = null; - /** - * ManageNodeBody - * - * Generated from protobuf field bytes body_bytes = 2; - */ - private $body_bytes = ''; - - /** - * Constructor. - * - * @param array $data { - * Optional. Data for populating the Message object. - * - * @type \Proto\Gradido\SignatureMap $sig_map - * @type string $body_bytes - * ManageNodeBody - * } - */ - public function __construct($data = NULL) { - \GPBMetadata\Gradido\ManageNodeRequest::initOnce(); - parent::__construct($data); - } - - /** - * Generated from protobuf field .proto.gradido.SignatureMap sig_map = 1; - * @return \Proto\Gradido\SignatureMap - */ - public function getSigMap() - { - return $this->sig_map; - } - - /** - * Generated from protobuf field .proto.gradido.SignatureMap sig_map = 1; - * @param \Proto\Gradido\SignatureMap $var - * @return $this - */ - public function setSigMap($var) - { - GPBUtil::checkMessage($var, \Proto\Gradido\SignatureMap::class); - $this->sig_map = $var; - - return $this; - } - - /** - * ManageNodeBody - * - * Generated from protobuf field bytes body_bytes = 2; - * @return string - */ - public function getBodyBytes() - { - return $this->body_bytes; - } - - /** - * ManageNodeBody - * - * Generated from protobuf field bytes body_bytes = 2; - * @param string $var - * @return $this - */ - public function setBodyBytes($var) - { - GPBUtil::checkString($var, False); - $this->body_bytes = $var; - - return $this; - } - -} - diff --git a/community_server/src/Model/Messages/Proto/Gradido/ManageNodeResponse.php b/community_server/src/Model/Messages/Proto/Gradido/ManageNodeResponse.php deleted file mode 100644 index c7a4f80a5..000000000 --- a/community_server/src/Model/Messages/Proto/Gradido/ManageNodeResponse.php +++ /dev/null @@ -1,85 +0,0 @@ -proto.gradido.ManageNodeResponse - */ -class ManageNodeResponse extends \Google\Protobuf\Internal\Message -{ - /** - * Generated from protobuf field bool success = 1; - */ - private $success = false; - /** - * Generated from protobuf field .proto.gradido.ManageNodeResponse.ErrorCode error = 2; - */ - private $error = 0; - - /** - * Constructor. - * - * @param array $data { - * Optional. Data for populating the Message object. - * - * @type bool $success - * @type int $error - * } - */ - public function __construct($data = NULL) { - \GPBMetadata\Gradido\ManageNodeRequest::initOnce(); - parent::__construct($data); - } - - /** - * Generated from protobuf field bool success = 1; - * @return bool - */ - public function getSuccess() - { - return $this->success; - } - - /** - * Generated from protobuf field bool success = 1; - * @param bool $var - * @return $this - */ - public function setSuccess($var) - { - GPBUtil::checkBool($var); - $this->success = $var; - - return $this; - } - - /** - * Generated from protobuf field .proto.gradido.ManageNodeResponse.ErrorCode error = 2; - * @return int - */ - public function getError() - { - return $this->error; - } - - /** - * Generated from protobuf field .proto.gradido.ManageNodeResponse.ErrorCode error = 2; - * @param int $var - * @return $this - */ - public function setError($var) - { - GPBUtil::checkEnum($var, \Proto\Gradido\ManageNodeResponse_ErrorCode::class); - $this->error = $var; - - return $this; - } - -} - diff --git a/community_server/src/Model/Messages/Proto/Gradido/ManageNodeResponse/ErrorCode.php b/community_server/src/Model/Messages/Proto/Gradido/ManageNodeResponse/ErrorCode.php deleted file mode 100644 index ab352829e..000000000 --- a/community_server/src/Model/Messages/Proto/Gradido/ManageNodeResponse/ErrorCode.php +++ /dev/null @@ -1,61 +0,0 @@ -proto.gradido.ManageNodeResponse.ErrorCode - */ -class ErrorCode -{ - /** - * Generated from protobuf enum INVALID_BODY = 0; - */ - const INVALID_BODY = 0; - /** - * Generated from protobuf enum INVALID_SIGNATURE = 1; - */ - const INVALID_SIGNATURE = 1; - /** - * Generated from protobuf enum SIGNER_NOT_KNOWN = 2; - */ - const SIGNER_NOT_KNOWN = 2; - /** - * Generated from protobuf enum GROUP_ALIAS_ALREADY_EXIST = 3; - */ - const GROUP_ALIAS_ALREADY_EXIST = 3; - - private static $valueToName = [ - self::INVALID_BODY => 'INVALID_BODY', - self::INVALID_SIGNATURE => 'INVALID_SIGNATURE', - self::SIGNER_NOT_KNOWN => 'SIGNER_NOT_KNOWN', - self::GROUP_ALIAS_ALREADY_EXIST => 'GROUP_ALIAS_ALREADY_EXIST', - ]; - - public static function name($value) - { - if (!isset(self::$valueToName[$value])) { - throw new UnexpectedValueException(sprintf( - 'Enum %s has no name defined for value %s', __CLASS__, $value)); - } - return self::$valueToName[$value]; - } - - - public static function value($name) - { - $const = __CLASS__ . '::' . strtoupper($name); - if (!defined($const)) { - throw new UnexpectedValueException(sprintf( - 'Enum %s has no value defined for name %s', __CLASS__, $name)); - } - return constant($const); - } -} - -// Adding a class alias for backwards compatibility with the previous class name. -class_alias(ErrorCode::class, \Proto\Gradido\ManageNodeResponse_ErrorCode::class); - diff --git a/community_server/src/Model/Messages/Proto/Gradido/ManageNodeResponse_ErrorCode.php b/community_server/src/Model/Messages/Proto/Gradido/ManageNodeResponse_ErrorCode.php deleted file mode 100644 index 8a7db7515..000000000 --- a/community_server/src/Model/Messages/Proto/Gradido/ManageNodeResponse_ErrorCode.php +++ /dev/null @@ -1,16 +0,0 @@ -proto.gradido.SignatureMap - */ -class SignatureMap extends \Google\Protobuf\Internal\Message -{ - /** - * Each signature pair corresponds to a unique Key required to sign the transaction. - * - * Generated from protobuf field repeated .proto.gradido.SignaturePair sigPair = 1; - */ - private $sigPair; - - /** - * Constructor. - * - * @param array $data { - * Optional. Data for populating the Message object. - * - * @type \Proto\Gradido\SignaturePair[]|\Google\Protobuf\Internal\RepeatedField $sigPair - * Each signature pair corresponds to a unique Key required to sign the transaction. - * } - */ - public function __construct($data = NULL) { - \GPBMetadata\Gradido\BasicTypes::initOnce(); - parent::__construct($data); - } - - /** - * Each signature pair corresponds to a unique Key required to sign the transaction. - * - * Generated from protobuf field repeated .proto.gradido.SignaturePair sigPair = 1; - * @return \Google\Protobuf\Internal\RepeatedField - */ - public function getSigPair() - { - return $this->sigPair; - } - - /** - * Each signature pair corresponds to a unique Key required to sign the transaction. - * - * Generated from protobuf field repeated .proto.gradido.SignaturePair sigPair = 1; - * @param \Proto\Gradido\SignaturePair[]|\Google\Protobuf\Internal\RepeatedField $var - * @return $this - */ - public function setSigPair($var) - { - $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Proto\Gradido\SignaturePair::class); - $this->sigPair = $arr; - - return $this; - } - -} - diff --git a/community_server/src/Model/Messages/Proto/Gradido/SignaturePair.php b/community_server/src/Model/Messages/Proto/Gradido/SignaturePair.php deleted file mode 100644 index 2ef0e81c5..000000000 --- a/community_server/src/Model/Messages/Proto/Gradido/SignaturePair.php +++ /dev/null @@ -1,123 +0,0 @@ -proto.gradido.SignaturePair - */ -class SignaturePair extends \Google\Protobuf\Internal\Message -{ - /** - * Generated from protobuf field bytes pubKey = 1; - */ - private $pubKey = ''; - protected $signature; - - /** - * Constructor. - * - * @param array $data { - * Optional. Data for populating the Message object. - * - * @type string $pubKey - * @type string $ed25519 - * ed25519 signature (libsodium default) - * @type string $ed25519_ref10 - * ed25519 ref10 signature - * } - */ - public function __construct($data = NULL) { - \GPBMetadata\Gradido\BasicTypes::initOnce(); - parent::__construct($data); - } - - /** - * Generated from protobuf field bytes pubKey = 1; - * @return string - */ - public function getPubKey() - { - return $this->pubKey; - } - - /** - * Generated from protobuf field bytes pubKey = 1; - * @param string $var - * @return $this - */ - public function setPubKey($var) - { - GPBUtil::checkString($var, False); - $this->pubKey = $var; - - return $this; - } - - /** - * ed25519 signature (libsodium default) - * - * Generated from protobuf field bytes ed25519 = 2; - * @return string - */ - public function getEd25519() - { - return $this->readOneof(2); - } - - /** - * ed25519 signature (libsodium default) - * - * Generated from protobuf field bytes ed25519 = 2; - * @param string $var - * @return $this - */ - public function setEd25519($var) - { - GPBUtil::checkString($var, False); - $this->writeOneof(2, $var); - - return $this; - } - - /** - * ed25519 ref10 signature - * - * Generated from protobuf field bytes ed25519_ref10 = 3; - * @return string - */ - public function getEd25519Ref10() - { - return $this->readOneof(3); - } - - /** - * ed25519 ref10 signature - * - * Generated from protobuf field bytes ed25519_ref10 = 3; - * @param string $var - * @return $this - */ - public function setEd25519Ref10($var) - { - GPBUtil::checkString($var, False); - $this->writeOneof(3, $var); - - return $this; - } - - /** - * @return string - */ - public function getSignature() - { - return $this->whichOneof("signature"); - } - -} - diff --git a/community_server/src/Model/Messages/Proto/Gradido/Timestamp.php b/community_server/src/Model/Messages/Proto/Gradido/Timestamp.php deleted file mode 100644 index ae3ecea0e..000000000 --- a/community_server/src/Model/Messages/Proto/Gradido/Timestamp.php +++ /dev/null @@ -1,101 +0,0 @@ -proto.gradido.Timestamp - */ -class Timestamp extends \Google\Protobuf\Internal\Message -{ - /** - * Number of complete seconds since the start of the epoch - * - * Generated from protobuf field int64 seconds = 1; - */ - private $seconds = 0; - /** - * Number of nanoseconds since the start of the last second - * - * Generated from protobuf field int32 nanos = 2; - */ - private $nanos = 0; - - /** - * Constructor. - * - * @param array $data { - * Optional. Data for populating the Message object. - * - * @type int|string $seconds - * Number of complete seconds since the start of the epoch - * @type int $nanos - * Number of nanoseconds since the start of the last second - * } - */ - public function __construct($data = NULL) { - \GPBMetadata\Gradido\BasicTypes::initOnce(); - parent::__construct($data); - } - - /** - * Number of complete seconds since the start of the epoch - * - * Generated from protobuf field int64 seconds = 1; - * @return int|string - */ - public function getSeconds() - { - return $this->seconds; - } - - /** - * Number of complete seconds since the start of the epoch - * - * Generated from protobuf field int64 seconds = 1; - * @param int|string $var - * @return $this - */ - public function setSeconds($var) - { - GPBUtil::checkInt64($var); - $this->seconds = $var; - - return $this; - } - - /** - * Number of nanoseconds since the start of the last second - * - * Generated from protobuf field int32 nanos = 2; - * @return int - */ - public function getNanos() - { - return $this->nanos; - } - - /** - * Number of nanoseconds since the start of the last second - * - * Generated from protobuf field int32 nanos = 2; - * @param int $var - * @return $this - */ - public function setNanos($var) - { - GPBUtil::checkInt32($var); - $this->nanos = $var; - - return $this; - } - -} - diff --git a/community_server/src/Model/Messages/Proto/Gradido/TimestampSeconds.php b/community_server/src/Model/Messages/Proto/Gradido/TimestampSeconds.php deleted file mode 100644 index d31aa40d2..000000000 --- a/community_server/src/Model/Messages/Proto/Gradido/TimestampSeconds.php +++ /dev/null @@ -1,67 +0,0 @@ -proto.gradido.TimestampSeconds - */ -class TimestampSeconds extends \Google\Protobuf\Internal\Message -{ - /** - * Number of complete seconds since the start of the epoch - * - * Generated from protobuf field int64 seconds = 1; - */ - private $seconds = 0; - - /** - * Constructor. - * - * @param array $data { - * Optional. Data for populating the Message object. - * - * @type int|string $seconds - * Number of complete seconds since the start of the epoch - * } - */ - public function __construct($data = NULL) { - \GPBMetadata\Gradido\BasicTypes::initOnce(); - parent::__construct($data); - } - - /** - * Number of complete seconds since the start of the epoch - * - * Generated from protobuf field int64 seconds = 1; - * @return int|string - */ - public function getSeconds() - { - return $this->seconds; - } - - /** - * Number of complete seconds since the start of the epoch - * - * Generated from protobuf field int64 seconds = 1; - * @param int|string $var - * @return $this - */ - public function setSeconds($var) - { - GPBUtil::checkInt64($var); - $this->seconds = $var; - - return $this; - } - -} - diff --git a/community_server/src/Model/Messages/Proto/Gradido/TransactionBody.php b/community_server/src/Model/Messages/Proto/Gradido/TransactionBody.php deleted file mode 100644 index b1ad01ea4..000000000 --- a/community_server/src/Model/Messages/Proto/Gradido/TransactionBody.php +++ /dev/null @@ -1,220 +0,0 @@ -proto.gradido.TransactionBody - */ -class TransactionBody extends \Google\Protobuf\Internal\Message -{ - /** - * max 150 chars - * - * Generated from protobuf field string memo = 1; - */ - private $memo = ''; - /** - * Generated from protobuf field .proto.gradido.TimestampSeconds created = 2; - */ - private $created = null; - /** - * Generated from protobuf field uint64 version_number = 3; - */ - private $version_number = 0; - protected $data; - - /** - * Constructor. - * - * @param array $data { - * Optional. Data for populating the Message object. - * - * @type string $memo - * max 150 chars - * @type \Proto\Gradido\TimestampSeconds $created - * @type int|string $version_number - * @type \Proto\Gradido\GradidoTransfer $transfer - * @type \Proto\Gradido\GradidoCreation $creation - * @type \Proto\Gradido\GroupFriendsUpdate $group_friends_update - * @type \Proto\Gradido\GroupMemberUpdate $group_member_update - * } - */ - public function __construct($data = NULL) { - \GPBMetadata\Gradido\TransactionBody::initOnce(); - parent::__construct($data); - } - - /** - * max 150 chars - * - * Generated from protobuf field string memo = 1; - * @return string - */ - public function getMemo() - { - return $this->memo; - } - - /** - * max 150 chars - * - * Generated from protobuf field string memo = 1; - * @param string $var - * @return $this - */ - public function setMemo($var) - { - GPBUtil::checkString($var, True); - $this->memo = $var; - - return $this; - } - - /** - * Generated from protobuf field .proto.gradido.TimestampSeconds created = 2; - * @return \Proto\Gradido\TimestampSeconds - */ - public function getCreated() - { - return $this->created; - } - - /** - * Generated from protobuf field .proto.gradido.TimestampSeconds created = 2; - * @param \Proto\Gradido\TimestampSeconds $var - * @return $this - */ - public function setCreated($var) - { - GPBUtil::checkMessage($var, \Proto\Gradido\TimestampSeconds::class); - $this->created = $var; - - return $this; - } - - /** - * Generated from protobuf field uint64 version_number = 3; - * @return int|string - */ - public function getVersionNumber() - { - return $this->version_number; - } - - /** - * Generated from protobuf field uint64 version_number = 3; - * @param int|string $var - * @return $this - */ - public function setVersionNumber($var) - { - GPBUtil::checkUint64($var); - $this->version_number = $var; - - return $this; - } - - /** - * Generated from protobuf field .proto.gradido.GradidoTransfer transfer = 6; - * @return \Proto\Gradido\GradidoTransfer - */ - public function getTransfer() - { - return $this->readOneof(6); - } - - /** - * Generated from protobuf field .proto.gradido.GradidoTransfer transfer = 6; - * @param \Proto\Gradido\GradidoTransfer $var - * @return $this - */ - public function setTransfer($var) - { - GPBUtil::checkMessage($var, \Proto\Gradido\GradidoTransfer::class); - $this->writeOneof(6, $var); - - return $this; - } - - /** - * Generated from protobuf field .proto.gradido.GradidoCreation creation = 7; - * @return \Proto\Gradido\GradidoCreation - */ - public function getCreation() - { - return $this->readOneof(7); - } - - /** - * Generated from protobuf field .proto.gradido.GradidoCreation creation = 7; - * @param \Proto\Gradido\GradidoCreation $var - * @return $this - */ - public function setCreation($var) - { - GPBUtil::checkMessage($var, \Proto\Gradido\GradidoCreation::class); - $this->writeOneof(7, $var); - - return $this; - } - - /** - * Generated from protobuf field .proto.gradido.GroupFriendsUpdate group_friends_update = 8; - * @return \Proto\Gradido\GroupFriendsUpdate - */ - public function getGroupFriendsUpdate() - { - return $this->readOneof(8); - } - - /** - * Generated from protobuf field .proto.gradido.GroupFriendsUpdate group_friends_update = 8; - * @param \Proto\Gradido\GroupFriendsUpdate $var - * @return $this - */ - public function setGroupFriendsUpdate($var) - { - GPBUtil::checkMessage($var, \Proto\Gradido\GroupFriendsUpdate::class); - $this->writeOneof(8, $var); - - return $this; - } - - /** - * Generated from protobuf field .proto.gradido.GroupMemberUpdate group_member_update = 9; - * @return \Proto\Gradido\GroupMemberUpdate - */ - public function getGroupMemberUpdate() - { - return $this->readOneof(9); - } - - /** - * Generated from protobuf field .proto.gradido.GroupMemberUpdate group_member_update = 9; - * @param \Proto\Gradido\GroupMemberUpdate $var - * @return $this - */ - public function setGroupMemberUpdate($var) - { - GPBUtil::checkMessage($var, \Proto\Gradido\GroupMemberUpdate::class); - $this->writeOneof(9, $var); - - return $this; - } - - /** - * @return string - */ - public function getData() - { - return $this->whichOneof("data"); - } - -} - diff --git a/community_server/src/Model/Messages/Proto/Gradido/TransferAmount.php b/community_server/src/Model/Messages/Proto/Gradido/TransferAmount.php deleted file mode 100644 index 7673582fa..000000000 --- a/community_server/src/Model/Messages/Proto/Gradido/TransferAmount.php +++ /dev/null @@ -1,85 +0,0 @@ -proto.gradido.TransferAmount - */ -class TransferAmount extends \Google\Protobuf\Internal\Message -{ - /** - * Generated from protobuf field bytes pubkey = 1; - */ - private $pubkey = ''; - /** - * Generated from protobuf field sint64 amount = 2; - */ - private $amount = 0; - - /** - * Constructor. - * - * @param array $data { - * Optional. Data for populating the Message object. - * - * @type string $pubkey - * @type int|string $amount - * } - */ - public function __construct($data = NULL) { - \GPBMetadata\Gradido\BasicTypes::initOnce(); - parent::__construct($data); - } - - /** - * Generated from protobuf field bytes pubkey = 1; - * @return string - */ - public function getPubkey() - { - return $this->pubkey; - } - - /** - * Generated from protobuf field bytes pubkey = 1; - * @param string $var - * @return $this - */ - public function setPubkey($var) - { - GPBUtil::checkString($var, False); - $this->pubkey = $var; - - return $this; - } - - /** - * Generated from protobuf field sint64 amount = 2; - * @return int|string - */ - public function getAmount() - { - return $this->amount; - } - - /** - * Generated from protobuf field sint64 amount = 2; - * @param int|string $var - * @return $this - */ - public function setAmount($var) - { - GPBUtil::checkInt64($var); - $this->amount = $var; - - return $this; - } - -} - diff --git a/community_server/src/Model/Navigation/NaviBreakLine.php b/community_server/src/Model/Navigation/NaviBreakLine.php deleted file mode 100644 index 79917db8c..000000000 --- a/community_server/src/Model/Navigation/NaviBreakLine.php +++ /dev/null @@ -1,16 +0,0 @@ -
    "; - } -} \ No newline at end of file diff --git a/community_server/src/Model/Navigation/NaviEntry.php b/community_server/src/Model/Navigation/NaviEntry.php deleted file mode 100644 index 2b02db9a8..000000000 --- a/community_server/src/Model/Navigation/NaviEntry.php +++ /dev/null @@ -1,89 +0,0 @@ -controller = $controller; - $this->action = $action; - $this->param = $param; - $this->iconClass = $iconClass; - if($active != null) { - $this->active = $active; - } else { - $this->active = ($GLOBALS["side"] == $controller && - $GLOBALS["subside"] == $action && - $GLOBALS["passed"] == $param); - } - $this->title = $title; - return $this; - } - - public function setIconColor($iconColorClass) { - $this->iconColor = $iconColorClass; - return $this; - } - public function setBGColor($bgColorClass) { - $this->bgColorClass = $bgColorClass; - return $this; - } - private function isActive() { - return $this->active; - } - - - - private function link() { - $self = $GLOBALS["self"]; - if($this->hasChilds()) { - return $self->Html->link( - $this->title.'', - ['controller' => $this->controller, "action" => $this->action, $this->param], - ['escape' => false] - ); - } else { - return $self->Html->Link( - ''. $this->iconClass .'' - .'' . $this->title . '', - ['controller' => $this->controller, 'action' => $this->action, $this->param], - ['class' => $this->bgColorClass, 'escape' => false]); - } - } - - public function __toString() { - $str = ""; - $str .= "hasChilds()) { $class .= "dropdown";} - if($this->isActive()) { $class .= " selected"; } - if(strlen($class) > 0 ) $str .= " class='$class'"; - $str .= ">"; - - $str .= $this->link(); - if($this->hasChilds()) { - $str .= ""; - } - $str .= ""; - return $str; - } -} \ No newline at end of file diff --git a/community_server/src/Model/Navigation/NaviEntryAbsoluteLink.php b/community_server/src/Model/Navigation/NaviEntryAbsoluteLink.php deleted file mode 100644 index 7d467ed69..000000000 --- a/community_server/src/Model/Navigation/NaviEntryAbsoluteLink.php +++ /dev/null @@ -1,92 +0,0 @@ -link = $link; - $this->iconClass = $iconClass; - if ($active != null) { - $this->active = $active; - } - $this->title = $title; - return $this; - } - - public function setIconColor($iconColorClass) - { - $this->iconColor = $iconColorClass; - return $this; - } - - public function setBGColor($bgColorClass) - { - $this->bgColorClass = $bgColorClass; - return $this; - } - - private function isActive() - { - return $this->active; - } - - protected function link() - { - $self = $GLOBALS["self"]; - if ($this->hasChilds()) { - return $self->Html->link( - $this->title.'', - ['controller' => $this->controller, "action" => $this->action, $this->param], - ['escape' => false] - ); - } else { - return '' - .''. $this->iconClass .'' - . '' . $this->title . '' - . ''; - } - } - - public function __toString() - { - $str = ""; - $str .= "hasChilds()) { - $class .= "dropdown"; - } - if ($this->isActive()) { - $class .= " selected"; - } - if (strlen($class) > 0) { - $str .= " class='$class'"; - } - $str .= ">"; - - $str .= $this->link(); - if ($this->hasChilds()) { - $str .= ""; - } - $str .= ""; - return $str; - } -} diff --git a/community_server/src/Model/Navigation/NaviEntryBase.php b/community_server/src/Model/Navigation/NaviEntryBase.php deleted file mode 100644 index ebb4e122f..000000000 --- a/community_server/src/Model/Navigation/NaviEntryBase.php +++ /dev/null @@ -1,31 +0,0 @@ -title = $title; - return $this; - } - - public function add($child) { - $child->isChild = true; - array_push($this->childs, $child); - return $this; - } - - protected function hasChilds() { - return count($this->childs) > 0; - } - -} diff --git a/community_server/src/Model/Navigation/NaviEntryExternLink.php b/community_server/src/Model/Navigation/NaviEntryExternLink.php deleted file mode 100644 index 8ace7fb4c..000000000 --- a/community_server/src/Model/Navigation/NaviEntryExternLink.php +++ /dev/null @@ -1,26 +0,0 @@ -link.'" class="' .$this->bgColorClass .'" target="_blank">' - .''. $this->iconClass .'' - . '' . $this->title . '' - . ''; - } -} diff --git a/community_server/src/Model/Navigation/NaviEntrySub.php b/community_server/src/Model/Navigation/NaviEntrySub.php deleted file mode 100644 index ae79aa433..000000000 --- a/community_server/src/Model/Navigation/NaviEntrySub.php +++ /dev/null @@ -1,105 +0,0 @@ -controller = $controller; - $this->action = $action; - $this->param = $param; - $this->iconClass = $iconClass; - if ($active != null) { - $this->active = $active; - } else { - $this->active = ($GLOBALS["side"] == $controller && - $GLOBALS["subside"] == $action && - $GLOBALS["passed"] == $param); - } - $this->title = $title; - $this->subtitle = $subtitle; - return $this; - } - - public function setIconColor($iconColorClass) - { - $this->iconColor = $iconColorClass; - return $this; - } - public function setBGColor($bgColorClass) - { - $this->bgColorClass = $bgColorClass; - return $this; - } - private function isActive() - { - return $this->active; - } - - private function link() - { - $self = $GLOBALS["self"]; - if ($this->hasChilds()) { - return $self->Html->link( - $this->title.'', - ['controller' => $this->controller, "action" => $this->action, $this->param], - ['escape' => false] - ); - } else { - return $self->Html->Link( - '' - .'' . $this->title . '' - .''. $this->iconClass .'', - ['controller' => $this->controller, 'action' => $this->action, $this->param], - ['class' => $this->bgColorClass, 'escape' => false] - ); - } - } - - public function __toString() - { - $str = ""; - $str .= "hasChilds()) { - $class .= "dropdown"; - } - if ($this->isActive()) { - $class .= " selected"; - } - if (strlen($class) > 0) { - $str .= " class='$class'"; - } - $str .= ">"; - - $str .= ''. $this->subtitle .''; - $str .= $this->link(); - - if ($this->hasChilds()) { - $str .= ""; - } - $str .= ""; - return $str; - } -} diff --git a/community_server/src/Model/Navigation/NaviHierarchy.php b/community_server/src/Model/Navigation/NaviHierarchy.php deleted file mode 100644 index 5017f8678..000000000 --- a/community_server/src/Model/Navigation/NaviHierarchy.php +++ /dev/null @@ -1,49 +0,0 @@ - -*/ -class NaviHierarchy implements \Countable -{ - private $hierarchy = []; - - public function add($entry) - { - array_push($this->hierarchy, $entry); - return $this; - } - public function getHierarchy() - { - return $this->hierarchy; - } - public function count() - { - return count($this->hierarchy); - } - public function __toString() - { - $html = ""; - return $html; - } -} diff --git a/community_server/src/Model/Navigation/NaviHierarchyEntry.php b/community_server/src/Model/Navigation/NaviHierarchyEntry.php deleted file mode 100644 index 5256518df..000000000 --- a/community_server/src/Model/Navigation/NaviHierarchyEntry.php +++ /dev/null @@ -1,53 +0,0 @@ - -*/ -class NaviHierarchyEntry -{ - private $name; - private $controller; - private $action; - public function __construct($name, $controller, $action, $isLast) - { - $this->name = $name; - $this->controller = $controller; - $this->action = $action; - $this->isLast = $isLast; - return $this; - } - private function link() - { - $self = $GLOBALS["self"]; - return $self->Html->Link( - '' . $this->name . '', - ['controller' => $this->controller, 'action' => $this->action], - ['class' => "", 'escape' => false] - ); - } - - public function __toString() - { - $str = "isLast){ - $str .= " class='selected'"; - } - $str .= ">"; - $str .= $this->link(); - $str .= ""; - return $str; - } -} diff --git a/community_server/src/Model/Navigation/TitleOnly.php b/community_server/src/Model/Navigation/TitleOnly.php deleted file mode 100644 index 39d7ac616..000000000 --- a/community_server/src/Model/Navigation/TitleOnly.php +++ /dev/null @@ -1,37 +0,0 @@ -title = $title; - } - - public function __toString() { - $str = ""; - $str .= "hasChilds()) { $class .= " dropdown";} - if(strlen($class) > 0 ) $str .= " class='$class'"; - $str .= ">"; - $hNumber = 1; - if($this->isChild) $hNumber = 3; - $str .= "" . $this->title . ""; - if($this->hasChilds()) { - $str .= ""; - } - $str .= ""; - return $str; - } -} diff --git a/community_server/src/Model/Table/AddressTypesTable.php b/community_server/src/Model/Table/AddressTypesTable.php deleted file mode 100644 index ba94c99c7..000000000 --- a/community_server/src/Model/Table/AddressTypesTable.php +++ /dev/null @@ -1,74 +0,0 @@ -setTable('address_types'); - $this->setDisplayField('name'); - $this->setPrimaryKey('id'); - - $this->hasMany('StateGroupAddresses', [ - 'foreignKey' => 'address_type_id', - ]); - $this->hasMany('TransactionGroupAddaddress', [ - 'foreignKey' => 'address_type_id', - ]); - } - - /** - * Default validation rules. - * - * @param \Cake\Validation\Validator $validator Validator instance. - * @return \Cake\Validation\Validator - */ - public function validationDefault(Validator $validator) - { - $validator - ->nonNegativeInteger('id') - ->allowEmptyString('id', null, 'create'); - - $validator - ->scalar('name') - ->maxLength('name', 45) - ->requirePresence('name', 'create') - ->notEmptyString('name'); - - $validator - ->scalar('text') - ->maxLength('text', 255) - ->requirePresence('text', 'create') - ->notEmptyString('text'); - - return $validator; - } -} diff --git a/community_server/src/Model/Table/AdminErrorsTable.php b/community_server/src/Model/Table/AdminErrorsTable.php deleted file mode 100644 index e6263d8ff..000000000 --- a/community_server/src/Model/Table/AdminErrorsTable.php +++ /dev/null @@ -1,107 +0,0 @@ -setTable('admin_errors'); - $this->setDisplayField('id'); - $this->setPrimaryKey('id'); - - $this->addBehavior('Timestamp'); - - $this->belongsTo('StateUsers', [ - 'foreignKey' => 'state_user_id', - 'joinType' => 'INNER' - ]); - } - - /** - * Default validation rules. - * - * @param \Cake\Validation\Validator $validator Validator instance. - * @return \Cake\Validation\Validator - */ - public function validationDefault(Validator $validator) - { - $validator - ->integer('id') - ->allowEmptyString('id', null, 'create'); - - $validator - ->scalar('controller') - ->maxLength('controller', 255) - ->requirePresence('controller', 'create') - ->notEmptyString('controller'); - - $validator - ->scalar('action') - ->maxLength('action', 255) - ->requirePresence('action', 'create') - ->notEmptyString('action'); - - $validator - ->scalar('state') - ->maxLength('state', 255) - ->requirePresence('state', 'create') - ->notEmptyString('state'); - - $validator - ->scalar('msg') - ->maxLength('msg', 255) - ->requirePresence('msg', 'create') - ->notEmptyString('msg'); - - $validator - ->scalar('details') - ->maxLength('details', 255) - ->requirePresence('details', 'create') - ->notEmptyString('details'); - - return $validator; - } - - /** - * Returns a rules checker object that will be used for validating - * application integrity. - * - * @param \Cake\ORM\RulesChecker $rules The rules object to be modified. - * @return \Cake\ORM\RulesChecker - */ - public function buildRules(RulesChecker $rules) - { - $rules->add($rules->existsIn(['state_user_id'], 'StateUsers')); - - return $rules; - } -} diff --git a/community_server/src/Model/Table/AppTable.php b/community_server/src/Model/Table/AppTable.php deleted file mode 100644 index a0758c97a..000000000 --- a/community_server/src/Model/Table/AppTable.php +++ /dev/null @@ -1,41 +0,0 @@ -getSchema()->truncateSql($this->getConnection()); - foreach ($truncateCommands as $truncateCommand) { - $this->getConnection()->query($truncateCommand); - } - $this->getConnection()->query('ALTER TABLE ' . $this->getSchema()->name() . ' AUTO_INCREMENT=1'); - return ['success' => true]; - } - public function saveManyWithErrors($entities) - { - $save_results = $this->saveMany($entities); - // save all at once failed, no try one by one to get error message - if($save_results === false) { - foreach($entities as $entity) { - if(!$this->save($entity)) { - return ['success' => false, 'errors' => $entity->getErrors()]; - } - } - } else { - return ['success' => true]; - } - } -} diff --git a/community_server/src/Model/Table/BlockchainTypesTable.php b/community_server/src/Model/Table/BlockchainTypesTable.php deleted file mode 100644 index 3aa67a83d..000000000 --- a/community_server/src/Model/Table/BlockchainTypesTable.php +++ /dev/null @@ -1,94 +0,0 @@ -setTable('blockchain_types'); - $this->setDisplayField('name'); - $this->setPrimaryKey('id'); - } - - /** - * Default validation rules. - * - * @param \Cake\Validation\Validator $validator Validator instance. - * @return \Cake\Validation\Validator - */ - public function validationDefault(Validator $validator) - { - $validator - ->nonNegativeInteger('id') - ->allowEmptyString('id', null, 'create'); - - $validator - ->scalar('name') - ->maxLength('name', 45) - ->requirePresence('name', 'create') - ->notEmptyString('name'); - - $validator - ->scalar('text') - ->maxLength('text', 255) - ->allowEmptyString('text'); - - $validator - ->scalar('symbol') - ->maxLength('symbol', 10) - ->allowEmptyString('symbol'); - - return $validator; - } - - public function fillWithDefault() - { - $entry_contents = [ - [ - 'id' => 1, - 'name' => 'mysql', - 'text' => 'use mysql db as blockchain, work only with single community-server', - 'symbol' => NULL - ], - [ - 'id' => 2, - 'name' => 'hedera', - 'text' => 'use hedera for transactions', - 'symbol' => 'HBAR' - ] - ]; - $entities = $this->newEntities($entry_contents); - $this->truncate(); - $save_results = $this->saveManyWithErrors($entities); - if(!$save_results['success']) { - $save_results['msg'] = 'error by saving default transaction types'; - } - return $save_results; - - } -} diff --git a/community_server/src/Model/Table/CommunityProfilesTable.php b/community_server/src/Model/Table/CommunityProfilesTable.php deleted file mode 100644 index bbe862092..000000000 --- a/community_server/src/Model/Table/CommunityProfilesTable.php +++ /dev/null @@ -1,81 +0,0 @@ -setTable('community_profiles'); - $this->setDisplayField('id'); - $this->setPrimaryKey('id'); - - $this->belongsTo('StateUsers', [ - 'foreignKey' => 'state_user_id', - 'joinType' => 'INNER', - ]); - } - - /** - * Default validation rules. - * - * @param \Cake\Validation\Validator $validator Validator instance. - * @return \Cake\Validation\Validator - */ - public function validationDefault(Validator $validator) - { - $validator - ->integer('id') - ->allowEmptyString('id', null, 'create'); - - $validator - ->allowEmptyFile('profile_img'); - - $validator - ->scalar('profile_desc') - ->maxLength('profile_desc', 2000) - ->allowEmptyFile('profile_desc'); - - return $validator; - } - - /** - * Returns a rules checker object that will be used for validating - * application integrity. - * - * @param \Cake\ORM\RulesChecker $rules The rules object to be modified. - * @return \Cake\ORM\RulesChecker - */ - public function buildRules(RulesChecker $rules) - { - $rules->add($rules->existsIn(['state_user_id'], 'StateUsers')); - - return $rules; - } -} diff --git a/community_server/src/Model/Table/ElopageBuysTable.php b/community_server/src/Model/Table/ElopageBuysTable.php deleted file mode 100644 index a5279d920..000000000 --- a/community_server/src/Model/Table/ElopageBuysTable.php +++ /dev/null @@ -1,116 +0,0 @@ -setTable('elopage_buys'); - $this->setDisplayField('payer_email'); - $this->setPrimaryKey('id'); - - } - - - /** - * Default validation rules. - * - * @param \Cake\Validation\Validator $validator Validator instance. - * @return \Cake\Validation\Validator - */ - public function validationDefault(Validator $validator) - { - $validator - ->integer('id') - ->allowEmptyString('id', null, 'create'); - - $validator - ->integer('product_price') - ->requirePresence('product_price', 'create') - ->notEmptyString('product_price'); - - $validator - ->scalar('payer_email') - ->maxLength('payer_email', 255) - ->requirePresence('payer_email', 'create') - ->notEmptyString('payer_email'); - - $validator - ->scalar('publisher_email') - ->maxLength('publisher_email', 255) - ->requirePresence('publisher_email', 'create') - ->notEmptyString('publisher_email'); - - $validator - ->boolean('payed') - ->requirePresence('payed', 'create') - ->notEmptyString('payed'); - - $validator - ->dateTime('success_date') - ->requirePresence('success_date', 'create') - ->notEmptyDateTime('success_date'); - - $validator - ->scalar('event') - ->maxLength('event', 255) - ->requirePresence('event', 'create') - ->notEmptyString('event'); - - return $validator; - } - - /** - * Returns a rules checker object that will be used for validating - * application integrity. - * - * @param \Cake\ORM\RulesChecker $rules The rules object to be modified. - * @return \Cake\ORM\RulesChecker - */ - public function buildRules(RulesChecker $rules) - { - - return $rules; - } - - /** - * Returns the database connection name to use by default. - * - * @return string - */ - public static function defaultConnectionName() - { - return 'loginServer'; - } -} diff --git a/community_server/src/Model/Table/OperatorTypesTable.php b/community_server/src/Model/Table/OperatorTypesTable.php deleted file mode 100644 index 8a3ce608c..000000000 --- a/community_server/src/Model/Table/OperatorTypesTable.php +++ /dev/null @@ -1,70 +0,0 @@ -setTable('operator_types'); - $this->setDisplayField('name'); - $this->setPrimaryKey('id'); - - $this->hasMany('Operators', [ - 'foreignKey' => 'operator_type_id' - ]); - } - - /** - * Default validation rules. - * - * @param \Cake\Validation\Validator $validator Validator instance. - * @return \Cake\Validation\Validator - */ - public function validationDefault(Validator $validator) - { - $validator - ->integer('id') - ->allowEmptyString('id', null, 'create'); - - $validator - ->scalar('name') - ->maxLength('name', 25) - ->requirePresence('name', 'create') - ->notEmptyString('name'); - - $validator - ->scalar('text') - ->maxLength('text', 255) - ->requirePresence('text', 'create') - ->notEmptyString('text'); - - return $validator; - } -} diff --git a/community_server/src/Model/Table/OperatorsTable.php b/community_server/src/Model/Table/OperatorsTable.php deleted file mode 100644 index 7ae272767..000000000 --- a/community_server/src/Model/Table/OperatorsTable.php +++ /dev/null @@ -1,93 +0,0 @@ -setTable('operators'); - $this->setDisplayField('name'); - $this->setPrimaryKey('id'); - - $this->belongsTo('OperatorTypes', [ - 'foreignKey' => 'operator_type_id', - 'joinType' => 'INNER' - ]); - - $this->addBehavior('Timestamp'); - } - - /** - * Default validation rules. - * - * @param \Cake\Validation\Validator $validator Validator instance. - * @return \Cake\Validation\Validator - */ - public function validationDefault(Validator $validator) - { - $validator - ->integer('id') - ->allowEmptyString('id', null, 'create'); - - $validator - ->scalar('username') - ->maxLength('username', 50) - ->requirePresence('username', 'create') - ->notEmptyString('username'); - //->add('usernamePasswordHash', 'unique', ['rule' => 'validateUnique', 'provider' => 'table']); - - $validator - ->requirePresence('user_pubkey', 'create') - ->notEmptyString('user_pubkey'); - - $validator - ->scalar('data_base64') - ->maxLength('data_base64', 255) - ->requirePresence('data_base64', 'create') - ->notEmptyString('data_base64'); - - return $validator; - } - - /** - * Returns a rules checker object that will be used for validating - * application integrity. - * - * @param \Cake\ORM\RulesChecker $rules The rules object to be modified. - * @return \Cake\ORM\RulesChecker - */ - public function buildRules(RulesChecker $rules) - { - //$rules->add($rules->isUnique(['usernamePasswordHash'])); - $rules->add($rules->existsIn(['operator_type_id'], 'OperatorTypes')); - - return $rules; - } -} diff --git a/community_server/src/Model/Table/RolesTable.php b/community_server/src/Model/Table/RolesTable.php deleted file mode 100644 index 940b7f246..000000000 --- a/community_server/src/Model/Table/RolesTable.php +++ /dev/null @@ -1,72 +0,0 @@ -setTable('roles'); - $this->setDisplayField('title'); - $this->setPrimaryKey('id'); - } - - /** - * Default validation rules. - * - * @param \Cake\Validation\Validator $validator Validator instance. - * @return \Cake\Validation\Validator - */ - public function validationDefault(Validator $validator) - { - $validator - ->integer('id') - ->allowEmptyString('id', null, 'create') - ->add('id', 'unique', ['rule' => 'validateUnique', 'provider' => 'table']); - - $validator - ->scalar('title') - ->maxLength('title', 255) - ->allowEmptyString('title'); - - return $validator; - } - - /** - * Returns a rules checker object that will be used for validating - * application integrity. - * - * @param \Cake\ORM\RulesChecker $rules The rules object to be modified. - * @return \Cake\ORM\RulesChecker - */ - public function buildRules(RulesChecker $rules) - { - $rules->add($rules->isUnique(['id'])); - - return $rules; - } -} diff --git a/community_server/src/Model/Table/ServerUsersTable.php b/community_server/src/Model/Table/ServerUsersTable.php deleted file mode 100644 index 0ad1fbacb..000000000 --- a/community_server/src/Model/Table/ServerUsersTable.php +++ /dev/null @@ -1,101 +0,0 @@ -setTable('server_users'); - $this->setDisplayField('id'); - $this->setPrimaryKey('id'); - - $this->addBehavior('Timestamp'); - } - - /** - * Default validation rules. - * - * @param \Cake\Validation\Validator $validator Validator instance. - * @return \Cake\Validation\Validator - */ - public function validationDefault(Validator $validator) - { - $validator - ->integer('id') - ->allowEmptyString('id', null, 'create'); - - $validator - ->scalar('username') - ->maxLength('username', 50) - ->requirePresence('username', 'create') - ->notEmptyString('username', __('Please give a username')); - - $validator - ->scalar('password') - ->maxLength('password', 255) - ->requirePresence('password', 'create') - ->notEmptyString('password', __('Please give a password')); - - $validator - ->email('email') - ->requirePresence('email', 'create') - ->notEmptyString('email', __('Please give a email')); - - $validator - ->scalar('role') - ->maxLength('role', 20) - ->notEmptyString('role'); - - $validator - ->boolean('activated') - ->notEmptyString('activated'); - - $validator - ->dateTime('last_login') - ->allowEmptyDateTime('last_login'); - - return $validator; - } - - /** - * Returns a rules checker object that will be used for validating - * application integrity. - * - * @param \Cake\ORM\RulesChecker $rules The rules object to be modified. - * @return \Cake\ORM\RulesChecker - */ - public function buildRules(RulesChecker $rules) - { - $rules->add($rules->isUnique(['username'])); - $rules->add($rules->isUnique(['email'])); - - return $rules; - } -} diff --git a/community_server/src/Model/Table/StateBalancesTable.php b/community_server/src/Model/Table/StateBalancesTable.php deleted file mode 100644 index ff7a0aca2..000000000 --- a/community_server/src/Model/Table/StateBalancesTable.php +++ /dev/null @@ -1,325 +0,0 @@ -setTable('state_balances'); - $this->setDisplayField('id'); - $this->setPrimaryKey('id'); - - $this->addBehavior('Timestamp'); - - $this->belongsTo('StateUsers', [ - 'foreignKey' => 'state_user_id', - 'joinType' => 'INNER' - ]); - } - - public static function getDecayStartDateCached() - { - if(self::$startDecayDate == null) { - $transactionsTable = TableRegistry::getTableLocator()->get('Transactions'); - self::$startDecayDate = $transactionsTable->getDecayStartDate(); - } - return self::$startDecayDate; - } - - /** - * Default validation rules. - * - * @param \Cake\Validation\Validator $validator Validator instance. - * @return \Cake\Validation\Validator - */ - public function validationDefault(Validator $validator) - { - $validator - ->integer('id') - ->allowEmptyString('id', null, 'create'); - - $validator - ->requirePresence('amount', 'create') - ->notEmptyString('amount'); - - return $validator; - } - - /** - * Returns a rules checker object that will be used for validating - * application integrity. - * - * @param \Cake\ORM\RulesChecker $rules The rules object to be modified. - * @return \Cake\ORM\RulesChecker - */ - public function buildRules(RulesChecker $rules) - { - $rules->add($rules->existsIn(['state_user_id'], 'StateUsers')); - - return $rules; - } - - public function calculateDecay($startBalance, FrozenTime $startDate, FrozenTime $endDate, $withInterval = false) - { - $decayStartDate = self::getDecayStartDateCached(); - // if no start decay block exist, we just return input - // if start date for decay is after enddate, we also just return input - if($decayStartDate === null || $decayStartDate >= $endDate) { - if($withInterval) { - return [ - 'balance' => $startBalance, - 'interval' => new \DateInterval('PT0S'), - 'start_date' => $startDate->getTimestamp(), - 'end_date' => $startDate->getTimestamp() - ]; - } else { - return $startBalance; - } - } - $state_balance = $this->newEntity(); - $state_balance->amount = $startBalance; - $interval = null; - // if decay start date is before start date we calculate decay for full duration - if($decayStartDate < $startDate) { - $state_balance->record_date = $startDate; - $interval = $endDate->diff($startDate); - } - // if decay start in between start date and end date we caculcate decay from decay start time to end date - else { - $state_balance->record_date = $decayStartDate; - $interval = $endDate->diff($decayStartDate); - } - $decay = $state_balance->partDecay($endDate); - if($withInterval) { - return [ - 'balance' => $decay, - 'interval' => $interval, - 'start_date' => $state_balance->record_date->getTimestamp(), - 'end_date' => $endDate->getTimestamp() - ]; - } else { - return $decay; - } - - - } - - public function updateAllBalances() - { - $stateUserTable = TableRegistry::getTableLocator()->get('StateUsers'); - $state_users = $stateUserTable->find()->select(['id'])->contain([]); - foreach($state_users as $state_user) { - $result = $this->updateBalances($state_user->id); - if($result['success'] === false) { - $result['state_user_id'] = $state_user->id; - return $result; - } - } - return ['success' => true]; - } - - public function updateBalances($stateUserId) - { - $stateUserTransactionsTable = TableRegistry::getTableLocator()->get('StateUserTransactions'); - $transactionsTable = TableRegistry::getTableLocator()->get('Transactions'); - $now = new FrozenTime; - // info: cakephp use lazy loading, query will be executed later only if needed - $state_balances = $this->find('all')->where(['state_user_id' => $stateUserId]); - $state_user_transactions = $stateUserTransactionsTable - ->find() - ->where(['state_user_id' => $stateUserId]) - ->order(['balance_date ASC']) - //->contain(false); - ; - - if(!$state_user_transactions || !$state_user_transactions->count()) { - return ['success' => true]; - } - - // first: decide what todo - $create_state_balance = false; - $recalculate_state_user_transactions_balance = false; - $clear_state_balance = false; - $update_state_balance = false; - if($state_balances->count() == 0) { - $create_state_balance = true; - $recalculate_state_user_transactions_balance = true; - } - if($state_balances->count() > 1) { - $clear_state_balance = true; - $create_state_balance = true; - $recalculate_state_user_transactions_balance = true; - } - if($state_balances->count() == 1) { - if($state_user_transactions->count() == 0){ - $clear_state_balance = true; - } else { - - $first_state_balance = $state_balances->first(); - $first_state_balance_decayed = self::calculateDecay( - $first_state_balance->amount, - $first_state_balance->record_date, - $now); - - $last_state_user_transaction = $state_user_transactions->last(); - $last_state_user_transaction_decayed = self::calculateDecay( - $last_state_user_transaction->balance, - $last_state_user_transaction->balance_date, - $now); - // if entrys are nearly the same, we don't need doing anything - if(floor($last_state_user_transaction_decayed/100) !== floor($first_state_balance_decayed/100)) { - $recalculate_state_user_transactions_balance = true; - $update_state_balance = true; - } - } - } - - if(!$recalculate_state_user_transactions_balance) { - $last_state_user_transaction = $state_user_transactions->last(); - if($last_state_user_transaction && $last_state_user_transaction->balance <= 0) { - $recalculate_state_user_transactions_balance = true; - if(!$create_state_balance) { - $update_state_balance = true; - } - } else if(!$last_state_user_transaction) { - - $creationsTable = TableRegistry::getTableLocator()->get('TransactionCreations'); - $creationTransactions = $creationsTable - ->find('all') - ->where(['state_user_id' => $stateUserId]) - ->contain(false); - - $transferTable = TableRegistry::getTableLocator()->get('TransactionSendCoins'); - $transferTransactions = $transferTable - ->find('all') - ->where(['OR' => ['state_user_id' => $stateUserId, 'receiver_user_id' => $stateUserId]]) - ->contain(false); - if($creationTransactions->count() > 0 || $transferTransactions->count() > 0) { - return ['success' => false, 'error' => 'state_user_transactions is empty but it exist transactions for user']; - } - } - } - // second: do what is needed - if($clear_state_balance) { - $this->deleteAll(['state_user_id' => $stateUserId]); - } - - $transaction_ids = []; - if($recalculate_state_user_transactions_balance) { - - $state_user_transactions_array = $state_user_transactions->toArray(); - foreach($state_user_transactions_array as $i => $state_user_transaction) { - $transaction_ids[$state_user_transaction->transaction_id] = $i; - } - - $transactions = $transactionsTable - ->find('all') - ->where(['Transactions.id IN' => array_keys($transaction_ids)]) - ->contain(['TransactionCreations', 'TransactionSendCoins']); - - $transactions_indiced = []; - foreach($transactions as $transaction) { - $transactions_indiced[$transaction->id] = $transaction; - } - $balance_cursor = $this->newEntity(); - $i = 0; - foreach($state_user_transactions_array as $state_user_transaction) { - $transaction = $transactions_indiced[$state_user_transaction->transaction_id]; - if($transaction->transaction_type_id > 2) { - continue; - } - $amount = 0; - - if($transaction->transaction_type_id == 1) { // creation - $amount = intval($transaction->transaction_creation->amount); - } else if($transaction->transaction_type_id == 2) { // transfer - $temp = $transaction->transaction_send_coin; - $amount = intval($temp->amount); - // reverse if sender - if($stateUserId == $temp->state_user_id) { - $amount *= -1.0; - } - } - $amount_date = $transaction->received; - if($i == 0) { - $balance_cursor->amount = $amount; - } else { - - //$balance_cursor->amount = $balance_cursor->partDecay($amount_date) + $amount; - $balance_cursor->amount = - $this->calculateDecay($balance_cursor->amount, $balance_cursor->record_date, $amount_date) - + $amount; - } - //echo "new balance: " . $balance_cursor->amount . "
    "; - - $balance_cursor->record_date = $amount_date; - $state_user_transaction_index = $transaction_ids[$transaction->id]; - $state_user_transactions_array[$state_user_transaction_index]->balance = $balance_cursor->amount; - $state_user_transactions_array[$state_user_transaction_index]->balance_date = $balance_cursor->record_date; - $i++; - - } - - $results = $stateUserTransactionsTable->saveMany($state_user_transactions_array); - $errors = []; - foreach($results as $i => $result) { - if(!$result) { - $errors[$i] = $state_user_transactions_array[$i]->getErrors(); - } - } - if(count($errors)) { - return ['success' => false, 'error' => 'error saving one ore more state user transactions', 'details' => $errors]; - } - } - $state_balance = null; - if($update_state_balance) { - $state_balance = $state_balances->first(); - } - else if($create_state_balance) { - $state_balance = $this->newEntity(); - $state_balance->state_user_id = $stateUserId; - } - if($state_balance) { - $state_balance->amount = $state_user_transactions->last()->balance; - $state_balance->record_date = $state_user_transactions->last()->balance_date; - if(!$this->save($state_balance)) { - return ['success' => false, 'error' => 'error saving state balance', 'details' => $state_balance->getErrors()]; - } - } - return ['success' => true]; - - } - -} diff --git a/community_server/src/Model/Table/StateCreatedTable.php b/community_server/src/Model/Table/StateCreatedTable.php deleted file mode 100644 index c97851f28..000000000 --- a/community_server/src/Model/Table/StateCreatedTable.php +++ /dev/null @@ -1,96 +0,0 @@ -setTable('state_created'); - $this->setDisplayField('id'); - $this->setPrimaryKey('id'); - - $this->addBehavior('Timestamp'); - - $this->belongsTo('Transactions', [ - 'foreignKey' => 'transaction_id', - 'joinType' => 'INNER' - ]); - $this->belongsTo('StateUsers', [ - 'foreignKey' => 'state_user_id', - 'joinType' => 'INNER' - ]); - } - - /** - * Default validation rules. - * - * @param \Cake\Validation\Validator $validator Validator instance. - * @return \Cake\Validation\Validator - */ - public function validationDefault(Validator $validator) - { - $validator - ->integer('id') - ->allowEmptyString('id', null, 'create'); - - $validator - ->requirePresence('month', 'create') - ->notEmptyString('month'); - - $validator - ->requirePresence('year', 'create') - ->notEmptyString('year'); - - $validator - ->integer('short_ident_hash') - ->requirePresence('short_ident_hash', 'create') - ->notEmptyString('short_ident_hash'); - - return $validator; - } - - /** - * Returns a rules checker object that will be used for validating - * application integrity. - * - * @param \Cake\ORM\RulesChecker $rules The rules object to be modified. - * @return \Cake\ORM\RulesChecker - */ - public function buildRules(RulesChecker $rules) - { - $rules->add($rules->existsIn(['transaction_id'], 'Transactions')); - $rules->add($rules->existsIn(['state_user_id'], 'StateUsers')); - - return $rules; - } -} diff --git a/community_server/src/Model/Table/StateErrorsTable.php b/community_server/src/Model/Table/StateErrorsTable.php deleted file mode 100644 index 62893b7bf..000000000 --- a/community_server/src/Model/Table/StateErrorsTable.php +++ /dev/null @@ -1,88 +0,0 @@ -setTable('state_errors'); - $this->setDisplayField('id'); - $this->setPrimaryKey('id'); - - $this->addBehavior('Timestamp'); - - $this->belongsTo('StateUsers', [ - 'foreignKey' => 'state_user_id', - 'joinType' => 'INNER' - ]); - $this->belongsTo('TransactionTypes', [ - 'foreignKey' => 'transaction_type_id', - 'joinType' => 'INNER' - ]); - } - - /** - * Default validation rules. - * - * @param \Cake\Validation\Validator $validator Validator instance. - * @return \Cake\Validation\Validator - */ - public function validationDefault(Validator $validator) - { - $validator - ->integer('id') - ->allowEmptyString('id', null, 'create'); - - $validator - ->scalar('message_json') - ->requirePresence('message_json', 'create') - ->notEmptyString('message_json'); - - return $validator; - } - - /** - * Returns a rules checker object that will be used for validating - * application integrity. - * - * @param \Cake\ORM\RulesChecker $rules The rules object to be modified. - * @return \Cake\ORM\RulesChecker - */ - public function buildRules(RulesChecker $rules) - { - $rules->add($rules->existsIn(['state_user_id'], 'StateUsers')); - $rules->add($rules->existsIn(['transaction_type_id'], 'TransactionTypes')); - - return $rules; - } -} diff --git a/community_server/src/Model/Table/StateGroupAddressesTable.php b/community_server/src/Model/Table/StateGroupAddressesTable.php deleted file mode 100644 index a63e2ae1c..000000000 --- a/community_server/src/Model/Table/StateGroupAddressesTable.php +++ /dev/null @@ -1,85 +0,0 @@ -setTable('state_group_addresses'); - $this->setDisplayField('id'); - $this->setPrimaryKey('id'); - - /*$this->belongsTo('Groups', [ - 'foreignKey' => 'group_id', - 'joinType' => 'INNER', - ]);*/ - $this->belongsTo('AddressTypes', [ - 'foreignKey' => 'address_type_id', - 'joinType' => 'INNER', - ]); - } - - /** - * Default validation rules. - * - * @param \Cake\Validation\Validator $validator Validator instance. - * @return \Cake\Validation\Validator - */ - public function validationDefault(Validator $validator) - { - $validator - ->nonNegativeInteger('id') - ->allowEmptyString('id', null, 'create'); - - $validator - ->requirePresence('public_key', 'create') - ->notEmptyString('public_key') - ->add('public_key', 'unique', ['rule' => 'validateUnique', 'provider' => 'table']); - - return $validator; - } - - /** - * Returns a rules checker object that will be used for validating - * application integrity. - * - * @param \Cake\ORM\RulesChecker $rules The rules object to be modified. - * @return \Cake\ORM\RulesChecker - */ - public function buildRules(RulesChecker $rules) - { - $rules->add($rules->isUnique(['public_key'])); - //$rules->add($rules->existsIn(['group_id'], 'Groups')); - $rules->add($rules->existsIn(['address_type_id'], 'AddressTypes')); - - return $rules; - } -} diff --git a/community_server/src/Model/Table/StateGroupRelationshipsTable.php b/community_server/src/Model/Table/StateGroupRelationshipsTable.php deleted file mode 100644 index 449561583..000000000 --- a/community_server/src/Model/Table/StateGroupRelationshipsTable.php +++ /dev/null @@ -1,85 +0,0 @@ -setTable('state_group_relationships'); - $this->setDisplayField('id'); - $this->setPrimaryKey('id'); - - $this->belongsTo('StateGroup1s', [ - 'foreignKey' => 'state_group1_id', - 'joinType' => 'INNER' - ]); - $this->belongsTo('StateGroup2s', [ - 'foreignKey' => 'state_group2_id', - 'joinType' => 'INNER' - ]); - $this->belongsTo('StateRelationships', [ - 'foreignKey' => 'state_relationship_id', - 'joinType' => 'INNER' - ]); - } - - /** - * Default validation rules. - * - * @param \Cake\Validation\Validator $validator Validator instance. - * @return \Cake\Validation\Validator - */ - public function validationDefault(Validator $validator) - { - $validator - ->integer('id') - ->allowEmptyString('id', null, 'create'); - - return $validator; - } - - /** - * Returns a rules checker object that will be used for validating - * application integrity. - * - * @param \Cake\ORM\RulesChecker $rules The rules object to be modified. - * @return \Cake\ORM\RulesChecker - */ - public function buildRules(RulesChecker $rules) - { - $rules->add($rules->existsIn(['state_group1_id'], 'StateGroup1s')); - $rules->add($rules->existsIn(['state_group2_id'], 'StateGroup2s')); - $rules->add($rules->existsIn(['state_relationship_id'], 'StateRelationships')); - - return $rules; - } -} diff --git a/community_server/src/Model/Table/StateGroupsTable.php b/community_server/src/Model/Table/StateGroupsTable.php deleted file mode 100644 index 49911d495..000000000 --- a/community_server/src/Model/Table/StateGroupsTable.php +++ /dev/null @@ -1,102 +0,0 @@ -setTable('state_groups'); - $this->setDisplayField('name'); - $this->setPrimaryKey('id'); - - $this->belongsTo('Indices', [ - 'foreignKey' => 'index_id', - 'joinType' => 'INNER' - ]); - $this->hasMany('StateGroupAddresses', [ - 'foreignKey' => 'state_group_id' - ]); - $this->hasMany('StateUsers', [ - 'foreignKey' => 'state_group_id' - ]); - $this->hasMany('TransactionGroupCreates', [ - 'foreignKey' => 'state_group_id' - ]); - $this->hasMany('Transactions', [ - 'foreignKey' => 'state_group_id' - ]); - } - - /** - * Default validation rules. - * - * @param \Cake\Validation\Validator $validator Validator instance. - * @return \Cake\Validation\Validator - */ - public function validationDefault(Validator $validator) - { - $validator - ->integer('id') - ->allowEmptyString('id', null, 'create'); - - $validator - ->scalar('name') - ->maxLength('name', 50) - ->requirePresence('name', 'create') - ->notEmptyString('name'); - - $validator - ->requirePresence('root_public_key', 'create') - ->notEmptyString('root_public_key'); - - $validator - ->notEmptyString('user_count'); - - return $validator; - } - - /** - * Returns a rules checker object that will be used for validating - * application integrity. - * - * @param \Cake\ORM\RulesChecker $rules The rules object to be modified. - * @return \Cake\ORM\RulesChecker - */ - public function buildRules(RulesChecker $rules) - { - $rules->add($rules->existsIn(['index_id'], 'Indices')); - - return $rules; - } -} diff --git a/community_server/src/Model/Table/StateRelationshipTypesTable.php b/community_server/src/Model/Table/StateRelationshipTypesTable.php deleted file mode 100644 index a18e7ce51..000000000 --- a/community_server/src/Model/Table/StateRelationshipTypesTable.php +++ /dev/null @@ -1,63 +0,0 @@ -setTable('state_relationship_types'); - $this->setDisplayField('name'); - $this->setPrimaryKey('id'); - } - - /** - * Default validation rules. - * - * @param \Cake\Validation\Validator $validator Validator instance. - * @return \Cake\Validation\Validator - */ - public function validationDefault(Validator $validator) - { - $validator - ->integer('id') - ->allowEmptyString('id', null, 'create'); - - $validator - ->scalar('name') - ->maxLength('name', 25) - ->requirePresence('name', 'create') - ->notEmptyString('name'); - - $validator - ->scalar('text') - ->maxLength('text', 255) - ->allowEmptyString('text'); - - return $validator; - } -} diff --git a/community_server/src/Model/Table/StateUserRolesTable.php b/community_server/src/Model/Table/StateUserRolesTable.php deleted file mode 100644 index 895e788b2..000000000 --- a/community_server/src/Model/Table/StateUserRolesTable.php +++ /dev/null @@ -1,86 +0,0 @@ -setTable('state_user_roles'); - $this->setPrimaryKey('id'); - - - $this->belongsTo('StateUser', [ - 'foreignKey' => 'state_user_id', - 'joinType' => 'INNER' - ]); - - $this->belongsTo('Role', [ - 'foreignKey' => 'role_id', - 'joinType' => 'INNER' - ]); - - - } - - /** - * Default validation rules. - * - * @param \Cake\Validation\Validator $validator Validator instance. - * @return \Cake\Validation\Validator - */ - public function validationDefault(Validator $validator) - { - $validator - ->integer('id') - ->allowEmptyString('id', null, 'create'); - - - - return $validator; - } - - /** - * Returns a rules checker object that will be used for validating - * application integrity. - * - * @param \Cake\ORM\RulesChecker $rules The rules object to be modified. - * @return \Cake\ORM\RulesChecker - */ - public function buildRules(RulesChecker $rules) - { - // $rules->add($rules->existsIn(['index_id'], 'Indices')); - //$rules->add($rules->existsIn(['state_group_id'], 'StateGroups')); - - return $rules; - } - - -} diff --git a/community_server/src/Model/Table/StateUserTransactionsTable.php b/community_server/src/Model/Table/StateUserTransactionsTable.php deleted file mode 100644 index 2c984d964..000000000 --- a/community_server/src/Model/Table/StateUserTransactionsTable.php +++ /dev/null @@ -1,85 +0,0 @@ -setTable('state_user_transactions'); - $this->setDisplayField('id'); - $this->setPrimaryKey('id'); - - $this->belongsTo('StateUsers', [ - 'foreignKey' => 'state_user_id', - 'joinType' => 'INNER', - ]); - $this->belongsTo('Transactions', [ - 'foreignKey' => 'transaction_id', - 'joinType' => 'INNER', - ]); - $this->belongsTo('TransactionTypes', [ - 'foreignKey' => 'transaction_type_id', - 'joinType' => 'INNER', - ]); - } - - /** - * Default validation rules. - * - * @param \Cake\Validation\Validator $validator Validator instance. - * @return \Cake\Validation\Validator - */ - public function validationDefault(Validator $validator) - { - $validator - ->nonNegativeInteger('id') - ->allowEmptyString('id', null, 'create'); - - return $validator; - } - - /** - * Returns a rules checker object that will be used for validating - * application integrity. - * - * @param \Cake\ORM\RulesChecker $rules The rules object to be modified. - * @return \Cake\ORM\RulesChecker - */ - public function buildRules(RulesChecker $rules) - { - $rules->add($rules->existsIn(['state_user_id'], 'StateUsers')); - $rules->add($rules->existsIn(['transaction_id'], 'Transactions')); - $rules->add($rules->existsIn(['transaction_type_id'], 'TransactionTypes')); - - return $rules; - } -} diff --git a/community_server/src/Model/Table/StateUsersTable.php b/community_server/src/Model/Table/StateUsersTable.php deleted file mode 100644 index 5b01609f3..000000000 --- a/community_server/src/Model/Table/StateUsersTable.php +++ /dev/null @@ -1,136 +0,0 @@ -setTable('state_users'); - $this->setDisplayField('email'); - $this->setPrimaryKey('id'); - - /*$this->belongsTo('Indices', [ - 'foreignKey' => 'index_id', - 'joinType' => 'INNER' - ]);*/ - $this->belongsTo('StateGroups', [ - 'foreignKey' => 'state_group_id', - 'joinType' => 'INNER' - ]); - $this->hasMany('StateBalances', [ - 'foreignKey' => 'state_user_id' - ]); - $this->hasMany('StateCreated', [ - 'foreignKey' => 'state_user_id' - ]); - $this->hasMany('TransactionCreations', [ - 'foreignKey' => 'state_user_id' - ]); - $this->hasMany('TransactionSendCoins', [ - 'foreignKey' => 'state_user_id' - ]); - $this->hasMany('TransactionReceivedCoins', [ - 'className' => 'TransactionSendCoins', - 'foreignKey' => 'receiver_user_id' - ]); - } - - /** - * Default validation rules. - * - * @param \Cake\Validation\Validator $validator Validator instance. - * @return \Cake\Validation\Validator - */ - public function validationDefault(Validator $validator) - { - $validator - ->integer('id') - ->allowEmptyString('id', null, 'create'); - - $validator - ->requirePresence('public_key', 'create') - ->notEmptyString('public_key'); - - return $validator; - } - - /** - * Returns a rules checker object that will be used for validating - * application integrity. - * - * @param \Cake\ORM\RulesChecker $rules The rules object to be modified. - * @return \Cake\ORM\RulesChecker - */ - public function buildRules(RulesChecker $rules) - { - // $rules->add($rules->existsIn(['index_id'], 'Indices')); - //$rules->add($rules->existsIn(['state_group_id'], 'StateGroups')); - - return $rules; - } - - public function getReceiverProposal() { - $stateUsers = $this->find('all'); - $receiverProposal = []; - foreach($stateUsers as $stateUser) { - $name = $stateUser->email; - $keyHex = bin2hex(stream_get_contents($stateUser->public_key)); - if($name === NULL) { - $name = $stateUser->first_name . ' ' . $stateUser->last_name; - } - array_push($receiverProposal, ['name' => $name, 'key' => $keyHex]); - //$stateUser->public_key - } - return $receiverProposal; - } - - public function getUsersIndiced($user_ids) - { - $involvedUser_temp = array_flip($user_ids); - // exchange back - $involvedUserIds = array_flip($involvedUser_temp); - $involvedUser = $this->find('all', [ - 'contain' => [], - 'where' => ['id IN' => $involvedUserIds], - 'fields' => ['id', 'first_name', 'last_name', 'email'], - ]); - //var_dump($involvedUser->toArray()); - $involvedUserIndices = []; - foreach ($involvedUser as $involvedUser) { - $involvedUserIndices[$involvedUser->id] = $involvedUser; - } - return $involvedUserIndices; - } -} diff --git a/community_server/src/Model/Table/TransactionCreationsTable.php b/community_server/src/Model/Table/TransactionCreationsTable.php deleted file mode 100644 index bc9592ccf..000000000 --- a/community_server/src/Model/Table/TransactionCreationsTable.php +++ /dev/null @@ -1,89 +0,0 @@ -setTable('transaction_creations'); - $this->setDisplayField('id'); - $this->setPrimaryKey('id'); - - $this->belongsTo('Transactions', [ - 'foreignKey' => 'transaction_id', - 'joinType' => 'INNER' - ]); - $this->belongsTo('StateUsers', [ - 'foreignKey' => 'state_user_id', - 'joinType' => 'INNER' - ]); - } - - /** - * Default validation rules. - * - * @param \Cake\Validation\Validator $validator Validator instance. - * @return \Cake\Validation\Validator - */ - public function validationDefault(Validator $validator) - { - $validator - ->integer('id') - ->allowEmptyString('id', null, 'create'); - - $validator - ->requirePresence('amount', 'create') - ->notEmptyString('amount'); - - $validator - //->requirePresence('ident_hash', 'create') - //->notEmptyString('ident_hash'); - ->allowEmptyString('ident_hash', null, 'create'); - - return $validator; - } - - /** - * Returns a rules checker object that will be used for validating - * application integrity. - * - * @param \Cake\ORM\RulesChecker $rules The rules object to be modified. - * @return \Cake\ORM\RulesChecker - */ - public function buildRules(RulesChecker $rules) - { - $rules->add($rules->existsIn(['transaction_id'], 'Transactions')); - $rules->add($rules->existsIn(['state_user_id'], 'StateUsers')); - $rules->add($rules->existsIn(['receiver_user_id'], 'StateUsers')); - - return $rules; - } -} diff --git a/community_server/src/Model/Table/TransactionGroupAddaddressTable.php b/community_server/src/Model/Table/TransactionGroupAddaddressTable.php deleted file mode 100644 index cb9912083..000000000 --- a/community_server/src/Model/Table/TransactionGroupAddaddressTable.php +++ /dev/null @@ -1,88 +0,0 @@ -setTable('transaction_group_addaddress'); - $this->setDisplayField('id'); - $this->setPrimaryKey('id'); - - $this->belongsTo('Transactions', [ - 'foreignKey' => 'transaction_id', - 'joinType' => 'INNER' - ]); - $this->belongsTo('AddressTypes', [ - 'foreignKey' => 'address_type_id', - 'joinType' => 'INNER' - ]); - $this->belongsTo('StateUsers', [ - 'foreignKey' => 'state_user_id', - 'joinType' => 'INNER' - ]); - } - - /** - * Default validation rules. - * - * @param \Cake\Validation\Validator $validator Validator instance. - * @return \Cake\Validation\Validator - */ - public function validationDefault(Validator $validator) - { - $validator - ->integer('id') - ->allowEmptyString('id', null, 'create'); - - $validator - ->requirePresence('public_key', 'create') - ->notEmptyString('public_key'); - - return $validator; - } - - /** - * Returns a rules checker object that will be used for validating - * application integrity. - * - * @param \Cake\ORM\RulesChecker $rules The rules object to be modified. - * @return \Cake\ORM\RulesChecker - */ - public function buildRules(RulesChecker $rules) - { - $rules->add($rules->existsIn(['transaction_id'], 'Transactions')); - $rules->add($rules->existsIn(['address_type_id'], 'AddressTypes')); - $rules->add($rules->existsIn(['state_user_id'], 'StateUsers')); - - return $rules; - } -} diff --git a/community_server/src/Model/Table/TransactionGroupAllowtradesTable.php b/community_server/src/Model/Table/TransactionGroupAllowtradesTable.php deleted file mode 100644 index 463d1af8e..000000000 --- a/community_server/src/Model/Table/TransactionGroupAllowtradesTable.php +++ /dev/null @@ -1,83 +0,0 @@ -setTable('transaction_group_allowtrades'); - $this->setDisplayField('id'); - $this->setPrimaryKey('id'); - - $this->belongsTo('Transactions', [ - 'foreignKey' => 'transaction_id', - 'joinType' => 'INNER' - ]); - $this->belongsTo('Groups', [ - 'foreignKey' => 'group_id', - 'joinType' => 'INNER' - ]); - } - - /** - * Default validation rules. - * - * @param \Cake\Validation\Validator $validator Validator instance. - * @return \Cake\Validation\Validator - */ - public function validationDefault(Validator $validator) - { - $validator - ->integer('id') - ->allowEmptyString('id', null, 'create'); - - $validator - ->boolean('allow') - ->notEmptyString('allow'); - - return $validator; - } - - /** - * Returns a rules checker object that will be used for validating - * application integrity. - * - * @param \Cake\ORM\RulesChecker $rules The rules object to be modified. - * @return \Cake\ORM\RulesChecker - */ - public function buildRules(RulesChecker $rules) - { - $rules->add($rules->existsIn(['transaction_id'], 'Transactions')); - $rules->add($rules->existsIn(['group_id'], 'Groups')); - - return $rules; - } -} diff --git a/community_server/src/Model/Table/TransactionGroupCreatesTable.php b/community_server/src/Model/Table/TransactionGroupCreatesTable.php deleted file mode 100644 index 263182b8e..000000000 --- a/community_server/src/Model/Table/TransactionGroupCreatesTable.php +++ /dev/null @@ -1,89 +0,0 @@ -setTable('transaction_group_creates'); - $this->setDisplayField('name'); - $this->setPrimaryKey('id'); - - $this->belongsTo('Transactions', [ - 'foreignKey' => 'transaction_id', - 'joinType' => 'INNER' - ]); - $this->belongsTo('StateGroups', [ - 'foreignKey' => 'state_group_id', - 'joinType' => 'INNER' - ]); - } - - /** - * Default validation rules. - * - * @param \Cake\Validation\Validator $validator Validator instance. - * @return \Cake\Validation\Validator - */ - public function validationDefault(Validator $validator) - { - $validator - ->integer('id') - ->allowEmptyString('id', null, 'create'); - - $validator - ->requirePresence('group_public_key', 'create') - ->notEmptyString('group_public_key'); - - $validator - ->scalar('name') - ->maxLength('name', 64) - ->requirePresence('name', 'create') - ->notEmptyString('name'); - - return $validator; - } - - /** - * Returns a rules checker object that will be used for validating - * application integrity. - * - * @param \Cake\ORM\RulesChecker $rules The rules object to be modified. - * @return \Cake\ORM\RulesChecker - */ - public function buildRules(RulesChecker $rules) - { - $rules->add($rules->existsIn(['transaction_id'], 'Transactions')); - $rules->add($rules->existsIn(['state_group_id'], 'StateGroups')); - - return $rules; - } -} diff --git a/community_server/src/Model/Table/TransactionSendCoinsTable.php b/community_server/src/Model/Table/TransactionSendCoinsTable.php deleted file mode 100644 index c1530e908..000000000 --- a/community_server/src/Model/Table/TransactionSendCoinsTable.php +++ /dev/null @@ -1,102 +0,0 @@ -setTable('transaction_send_coins'); - $this->setDisplayField('id'); - $this->setPrimaryKey('id'); - - $this->belongsTo('Transactions', [ - 'foreignKey' => 'transaction_id', - 'joinType' => 'INNER' - ]); - $this->belongsTo('StateUsers', [ - 'foreignKey' => 'state_user_id', - 'joinType' => 'INNER' - ]); - $this->belongsTo('ReceiverUsers', [ - 'className' => 'StateUsers', - 'foreignKey' => 'receiver_user_id', - 'joinType' => 'INNER' - ]); - } - - /** - * Default validation rules. - * - * @param \Cake\Validation\Validator $validator Validator instance. - * @return \Cake\Validation\Validator - */ - public function validationDefault(Validator $validator) - { - $validator - ->integer('id') - ->allowEmptyString('id', null, 'create'); - - $validator - ->requirePresence('sender_public_key', 'create') - ->notEmptyString('sender_public_key'); - - $validator - ->requirePresence('receiver_public_key', 'create') - ->notEmptyString('receiver_public_key'); - - $validator - ->requirePresence('amount', 'create') - ->notEmptyString('amount'); - - $validator - ->requirePresence('sender_final_balance', 'create') - ->notEmptyString('sender_final_balance'); - - return $validator; - } - - /** - * Returns a rules checker object that will be used for validating - * application integrity. - * - * @param \Cake\ORM\RulesChecker $rules The rules object to be modified. - * @return \Cake\ORM\RulesChecker - */ - public function buildRules(RulesChecker $rules) - { - $rules->add($rules->existsIn(['transaction_id'], 'Transactions')); - $rules->add($rules->existsIn(['state_user_id'], 'StateUsers')); - $rules->add($rules->existsIn(['receiver_user_id'], 'ReceiverUsers')); - - return $rules; - } -} diff --git a/community_server/src/Model/Table/TransactionSignaturesTable.php b/community_server/src/Model/Table/TransactionSignaturesTable.php deleted file mode 100644 index 60c1ae99f..000000000 --- a/community_server/src/Model/Table/TransactionSignaturesTable.php +++ /dev/null @@ -1,81 +0,0 @@ -setTable('transaction_signatures'); - $this->setDisplayField('id'); - $this->setPrimaryKey('id'); - - $this->belongsTo('Transactions', [ - 'foreignKey' => 'transaction_id', - 'joinType' => 'INNER' - ]); - } - - /** - * Default validation rules. - * - * @param \Cake\Validation\Validator $validator Validator instance. - * @return \Cake\Validation\Validator - */ - public function validationDefault(Validator $validator) - { - $validator - ->integer('id') - ->allowEmptyString('id', null, 'create'); - - $validator - ->requirePresence('signature', 'create') - ->notEmptyString('signature'); - - $validator - ->requirePresence('pubkey', 'create') - ->notEmptyString('pubkey'); - - return $validator; - } - - /** - * Returns a rules checker object that will be used for validating - * application integrity. - * - * @param \Cake\ORM\RulesChecker $rules The rules object to be modified. - * @return \Cake\ORM\RulesChecker - */ - public function buildRules(RulesChecker $rules) - { - $rules->add($rules->existsIn(['transaction_id'], 'Transactions')); - - return $rules; - } -} diff --git a/community_server/src/Model/Table/TransactionTypesTable.php b/community_server/src/Model/Table/TransactionTypesTable.php deleted file mode 100644 index 2ffd1e64c..000000000 --- a/community_server/src/Model/Table/TransactionTypesTable.php +++ /dev/null @@ -1,120 +0,0 @@ -setTable('transaction_types'); - $this->setDisplayField('name'); - $this->setPrimaryKey('id'); - - $this->hasMany('Transactions', [ - 'foreignKey' => 'transaction_type_id' - ]); - } - - /** - * Default validation rules. - * - * @param \Cake\Validation\Validator $validator Validator instance. - * @return \Cake\Validation\Validator - */ - public function validationDefault(Validator $validator) - { - $validator - ->integer('id') - ->allowEmptyString('id', null, 'create'); - - $validator - ->scalar('name') - ->maxLength('name', 45) - ->requirePresence('name', 'create') - ->notEmptyString('name'); - - $validator - ->scalar('text') - ->maxLength('text', 255) - ->allowEmptyString('text'); - - return $validator; - } - - public function fillWithDefault() - { - - $entry_contents = [ - [ - 'id' => 1, - 'name' => 'creation', - 'text' => 'create new gradidos for member and also for group (in development)', - ], [ - 'id' => 2, - 'name' => 'transfer', - 'text' => 'send gradidos from one member to another, also cross group transfer', - ], [ - 'id' => 3, - 'name' => 'group create', - 'text' => 'create a new group, trigger creation of new hedera topic and new blockchain on node server' - ], [ - 'id' => 4, - 'name' => 'group add member', - 'text' => 'add user to a group or move if he was already in a group' - ], [ - 'id' => 5, - 'name' => 'group remove member', - 'text' => 'remove user from group, maybe he was moved elsewhere' - ],[ - 'id' => 6, - 'name' => 'hedera topic create', - 'text' => 'create new topic on hedera' - ],[ - 'id' => 7, - 'name' => 'hedera topic send message', - 'text' => 'send consensus message over hedera topic' - ],[ - 'id' => 8, - 'name' => 'hedera account create', - 'text' => 'create new account on hedera for holding some founds with unencrypted keys' - ],[ - 'id' => 9, - 'name' => 'decay start', - 'text' => 'signalize the starting point for decay calculation, allowed only once per chain' - ] - ]; - $entities = $this->newEntities($entry_contents); - $this->truncate(); - $save_results = $this->saveManyWithErrors($entities); - if(!$save_results['success']) { - $save_results['msg'] = 'error by saving default transaction types'; - } - return $save_results; - } -} diff --git a/community_server/src/Model/Table/TransactionsTable.php b/community_server/src/Model/Table/TransactionsTable.php deleted file mode 100644 index 1f8606a82..000000000 --- a/community_server/src/Model/Table/TransactionsTable.php +++ /dev/null @@ -1,469 +0,0 @@ -setTable('transactions'); - $this->setDisplayField('id'); - $this->setPrimaryKey('id'); - - $this->belongsTo('StateGroups', [ - 'foreignKey' => 'state_group_id', - 'joinType' => 'INNER' - ]); - $this->belongsTo('TransactionTypes', [ - 'foreignKey' => 'transaction_type_id', - 'joinType' => 'INNER' - ]); - $this->belongsTo('BlockchainTypes', [ - 'foreignKey' => 'blockchain_type_id', - 'joinType' => 'INNER' - ]); - $this->hasMany('StateCreated', [ - 'foreignKey' => 'transaction_id' - ]); - $this->hasOne('TransactionCreations', [ - 'foreignKey' => 'transaction_id' - ]); - $this->hasOne('TransactionGroupAddaddress', [ - 'foreignKey' => 'transaction_id' - ]); - $this->hasOne('TransactionGroupAllowtrades', [ - 'foreignKey' => 'transaction_id' - ]); - $this->hasOne('TransactionGroupCreates', [ - 'foreignKey' => 'transaction_id' - ]); - $this->hasOne('TransactionSendCoins', [ - 'foreignKey' => 'transaction_id' - ]); - $this->hasMany('TransactionSignatures', [ - 'foreignKey' => 'transaction_id' - ]); - $this->hasMany('StateUserTransactions', [ - 'foreignKey' => 'transaction_id' - ]); - } - - /** - * Default validation rules. - * - * @param \Cake\Validation\Validator $validator Validator instance. - * @return \Cake\Validation\Validator - */ - public function validationDefault(Validator $validator) - { - $validator - ->allowEmptyString('id', null, 'create'); - - $validator - //->requirePresence('tx_hash', 'create') - ->allowEmptyString('tx_hash', null, 'create'); - - $validator - ->allowEmptyString('memo', null, 'create'); - - $validator - ->dateTime('received') - ->notEmptyDateTime('received'); - - return $validator; - } - - /** - * Returns a rules checker object that will be used for validating - * application integrity. - * - * @param \Cake\ORM\RulesChecker $rules The rules object to be modified. - * @return \Cake\ORM\RulesChecker - */ - public function buildRules(RulesChecker $rules) - { - $rules->add($rules->existsIn(['state_group_id'], 'StateGroups')); - $rules->add($rules->existsIn(['transaction_type_id'], 'TransactionTypes')); - $rules->add($rules->existsIn(['blockchain_type_id'], 'BlockchainTypes')); - - return $rules; - } - - public function sortTransactions($a, $b) - { - if ($a['date'] == $b['date']) { - return 0; - } - return ($a['date'] > $b['date']) ? -1 : 1; - } - - - public function listTransactionsHumanReadable($stateUserTransactions, array $user, $decay = true, $skip_first_transaction = false) - { - - $stateUsersTable = TableRegistry::getTableLocator()->get('StateUsers'); - $stateBalancesTable = TableRegistry::getTableLocator()->get('StateBalances'); - $transactionsTable = TableRegistry::getTableLocator()->get('Transactions'); - - $transaction_ids = []; - $involved_user_ids = []; - $stateUserTransactionsCount = 0; - foreach($stateUserTransactions as $su_transaction) { - $transaction_ids[] = $su_transaction->transaction_id; - $involved_user_ids[] = $su_transaction->state_user_id; - $stateUserTransactionsCount++; - } - - $involved_users = $stateUsersTable->getUsersIndiced($involved_user_ids); - - $transactions = $this - ->find() - ->where(['Transactions.id IN' => $transaction_ids]) - ->contain(['TransactionSendCoins', 'TransactionCreations']) - ; - $transaction_indiced = []; - foreach($transactions as $tr) { - $transaction_indiced[$tr->id] = $tr; - } - - $state_balance = $stateBalancesTable->newEntity(); - $final_transactions = []; - $decay_start_transaction = $transactionsTable->find()->where(['transaction_type_id' => 9]); - $decay_start_transaction_id = 0; - if($decay_start_transaction->count()) { - $decay_start_transaction_id = $decay_start_transaction->first()->id; - } - $decay_start_date = $stateBalancesTable->getDecayStartDateCached(); - $decay_start_time = 0; - if($decay_start_date) { - $decay_start_time = $decay_start_date->getTimestamp(); - } - - foreach($stateUserTransactions as $i => $su_transaction) - { - // sender or receiver when user has sended money - // group name if creation - // type: gesendet / empfangen / geschöpft - // transaktion nr / id - // date - // balance - $transaction = $transaction_indiced[$su_transaction->transaction_id]; - - $final_transaction = [ - 'transaction_id' => $transaction->id, - 'date' => $transaction->received, - 'memo' => $transaction->memo - ]; - - $prev = null; - if($i > 0 ) { - $prev = $stateUserTransactions[$i-1]; - } - if($prev) - { - if($prev->balance > 0) - { - $current = $su_transaction; - $calculated_decay = $stateBalancesTable->calculateDecay($prev->balance, $prev->balance_date, $current->balance_date, true); - $balance = floatval($prev->balance - $calculated_decay['balance']); - - if($balance) - { - $final_transaction['decay'] = [ - 'balance' => $balance, - 'decay_duration' => $calculated_decay['interval']->format('%a days, %H hours, %I minutes, %S seconds'), - 'decay_start' => $calculated_decay['start_date'], - 'decay_end' => $calculated_decay['end_date'] - ]; - if($decay_start_time && $prev->transaction_id < $decay_start_transaction_id && - $current->transaction_id > $decay_start_transaction_id) { - $final_transaction['decay']['decay_start_block'] = $decay_start_time; - } - // hint: use transaction id - /*if($calculated_decay['start_date'] < $decay_start_time && $calculated_decay['end_date'] > $decay_start_time) { - $final_transaction['decay']['decay_start_block'] = $decay_start_time; - } else { - echo "start block: " . $decay_start_time . "
    "; - echo "start date: " . $calculated_decay['start_date'] . "
    "; - echo "end date: " . $calculated_decay['end_date']. "
    "; - }*/ - } - } - } - - // sender or receiver when user has sended money - // group name if creation - // type: gesendet / empfangen / geschöpft - // transaktion nr / id - // date - // balance - $transaction = $transaction_indiced[$su_transaction->transaction_id]; - - if($su_transaction->transaction_type_id == 1) { // creation - $creation = $transaction->transaction_creation; - - $final_transaction['name'] = 'Gradido Akademie'; - $final_transaction['type'] = 'creation'; - $final_transaction['target_date'] = $creation->target_date; - //$final_transaction['creation_amount'] = $creation->amount; - $final_transaction['balance'] = $creation->amount; - - } else if($su_transaction->transaction_type_id == 2) { // transfer or send coins - $sendCoins = $transaction->transaction_send_coin; - $otherUser = null; - $final_transaction['balance'] = $sendCoins->amount; - $other_user_public = ''; - if ($sendCoins->state_user_id == $user['id']) { - $final_transaction['type'] = 'send'; - - if(isset($involved_users[$sendCoins->receiver_user_id])) { - $otherUser = $involved_users[$sendCoins->receiver_user_id]; - } - $final_transaction['pubkey'] = bin2hex(stream_get_contents($sendCoins->receiver_public_key)); - } else if ($sendCoins->receiver_user_id == $user['id']) { - $final_transaction['type'] = 'receive'; - if(isset($involved_users[$sendCoins->state_user_id])) { - $otherUser = $involved_users[$sendCoins->state_user_id]; - } - if($sendCoins->sender_public_key) { - $final_transaction['pubkey'] = bin2hex(stream_get_contents($sendCoins->sender_public_key)); - } - } - if(null == $otherUser) { - $otherUser = $stateUsersTable->newEntity(); - } - $final_transaction['name'] = $otherUser->first_name . ' ' . $otherUser->last_name; - $final_transaction['email'] = $otherUser->email; - } - if($i > 0 || !$skip_first_transaction) { - $final_transactions[] = $final_transaction; - } - - if($i == $stateUserTransactionsCount-1 && $decay) { - $now = new FrozenTime(); - $calculated_decay = $stateBalancesTable->calculateDecay( - $su_transaction->balance, - $su_transaction->balance_date, $now, true); - $decay_start_date = $stateBalancesTable->getDecayStartDateCached(); - $duration = $su_transaction->balance_date->timeAgoInWords(); - if($decay_start_date > $su_transaction->balance_date) { - $duration = $decay_start_date->timeAgoInWords(); - } - $balance = floatval($su_transaction->balance - $calculated_decay['balance']); - if($balance) { - $final_transactions[] = [ - 'type' => 'decay', - 'balance' => $balance, - 'decay_duration' => $duration, - 'decay_start' => $calculated_decay['start_date'], - 'decay_end' => $calculated_decay['end_date'], - 'memo' => '' - ]; - } - } - } - - return $final_transactions; - - } - - public function updateTxHash($transaction, $signatureMapString) - { - $transaction_id = $transaction->id; - $previousTxHash = null; - if($transaction_id > 1) { - try { - $previousTransaction = $this - ->find('all', ['contain' => false]) - ->select(['tx_hash']) - ->where(['id' => $transaction_id - 1]) - ->first(); - /*$previousTransaction = $transactionsTable->get($this->mTransactionID - 1, [ - 'contain' => false, - 'fields' => ['tx_hash'] - ]);*/ - } catch(Cake\Datasource\Exception\RecordNotFoundException $ex) { - return ['state' => 'error', 'msg' => 'previous transaction not found', 'details' => $ex->getMessage()]; - } - if(!$previousTransaction) { - // shouldn't occur - return ['state' => 'error', 'msg' => 'previous transaction not found']; - } - $previousTxHash = $previousTransaction->tx_hash; - } - try { - //$transactionEntity->received = $transactionsTable->get($transactionEntity->id, ['contain' => false, 'fields' => ['received']])->received; - $transaction->received = $this - ->find('all', ['contain' => false]) - ->where(['id' => $transaction->id]) - ->select(['received'])->first()->received; - } catch(Cake\Datasource\Exception\RecordNotFoundException $ex) { - return ['state' => 'error', 'msg' => 'current transaction not found in db', 'details' => $ex->getMessage()]; - } - - // calculate tx hash - // previous tx hash + id + received + sigMap as string - // Sodium use for the generichash function BLAKE2b today (11.11.2019), mabye change in the future - $state = \Sodium\crypto_generichash_init(); - //echo "prev hash: $previousTxHash\n"; - if($previousTxHash != null) { - \Sodium\crypto_generichash_update($state, stream_get_contents($previousTxHash)); - } - //echo "id: " . $transactionEntity->id . "\n"; - \Sodium\crypto_generichash_update($state, strval($transaction->id)); - //echo "received: " . $transactionEntity->received; - \Sodium\crypto_generichash_update($state, $transaction->received->i18nFormat('yyyy-MM-dd HH:mm:ss')); - \Sodium\crypto_generichash_update($state, $signatureMapString); - $transaction->tx_hash = \Sodium\crypto_generichash_final($state); - if ($this->save($transaction)) { - return true; - } - return ['state' => 'error', 'msg' => 'error by saving transaction', 'details' => $transaction->getErrors()]; - } - - /*! - * @return: false if no decay start block found - * @return: DateTime Object with start date if one start block found - * @return: ['state':'error'] if more than one found - */ - public function getDecayStartDate() - { - $transaction = $this->find()->where(['transaction_type_id' => 9])->select(['received'])->order(['received' => 'ASC']); - if($transaction->count() == 0) { - return null; - } - return $transaction->first()->received; - } - - public function fillStateUserTransactions() - { - $missing_transaction_ids = []; - $transaction_ids = $this - ->find('all') - ->select(['id', 'transaction_type_id']) - ->order(['id']) - ->where(['transaction_type_id <' => 6]) - ->all() - ; - $state_user_transaction_ids = $this->StateUserTransactions - ->find('all') - ->select(['transaction_id']) - ->group(['transaction_id']) - ->order(['transaction_id']) - ->toArray() - ; - $i2 = 0; - $count = count($state_user_transaction_ids); - foreach($transaction_ids as $tr_id) { - //echo "$i1: "; - if($i2 >= $count) { - $missing_transaction_ids[] = $tr_id; - //echo "adding to missing: $tr_id, continue
    "; - continue; - } - $stu_id = $state_user_transaction_ids[$i2]; - if($tr_id->id == $stu_id->transaction_id) { - $i2++; - //echo "after i2++: $i2
    "; - } else if($tr_id->id < $stu_id->transaction_id) { - $missing_transaction_ids[] = $tr_id; - //echo "adding to missing: $tr_id
    "; - } - } - - - $tablesForType = [ - 1 => $this->TransactionCreations, - 2 => $this->TransactionSendCoins, - 3 => $this->TransactionGroupCreates, - 4 => $this->TransactionGroupAddaddress, - 5 => $this->TransactionGroupAddaddress - ]; - $idsForType = []; - foreach($missing_transaction_ids as $i => $transaction) { - if(!isset($idsForType[$transaction->transaction_type_id])) { - $idsForType[$transaction->transaction_type_id] = []; - } - $idsForType[$transaction->transaction_type_id][] = $transaction->id; - } - $entities = []; - $state_user_ids = []; - foreach($idsForType as $type_id => $transaction_ids) { - $specific_transactions = $tablesForType[$type_id]->find('all')->where(['transaction_id IN' => $transaction_ids])->toArray(); - $keys = $tablesForType[$type_id]->getSchema()->columns(); - //var_dump($keys); - foreach($specific_transactions as $specific) { - - foreach($keys as $key) { - if(preg_match('/_user_id/', $key)) { - $entity = $this->StateUserTransactions->newEntity(); - $entity->transaction_id = $specific['transaction_id']; - $entity->transaction_type_id = $type_id; - $entity->state_user_id = $specific[$key]; - if(!in_array($entity->state_user_id, $state_user_ids)) { - array_push($state_user_ids, $entity->state_user_id); - } - $entities[] = $entity; - } - } - } - } - if(count($state_user_ids) < 1) { - return ['success' => true]; - } - //var_dump($entities); - $stateUsersTable = TableRegistry::getTableLocator()->get('StateUsers'); - $existingStateUsers = $stateUsersTable->find('all')->select(['id'])->where(['id IN' => $state_user_ids])->order(['id'])->all(); - $existing_state_user_ids = []; - $finalEntities = []; - foreach($existingStateUsers as $stateUser) { - $existing_state_user_ids[] = $stateUser->id; - } - foreach($entities as $entity) { - if(in_array($entity->state_user_id, $existing_state_user_ids)) { - array_push($finalEntities, $entity); - } - } - - $save_results = $this->StateUserTransactions->saveManyWithErrors($finalEntities); - if(!$save_results['success']) { - $save_results['msg'] = 'error by saving at least one state user transaction'; - } - return $save_results; - } -} diff --git a/community_server/src/Model/Table/UsersTable.php b/community_server/src/Model/Table/UsersTable.php deleted file mode 100644 index 0e99ba521..000000000 --- a/community_server/src/Model/Table/UsersTable.php +++ /dev/null @@ -1,130 +0,0 @@ -setTable('users'); - $this->setDisplayField('id'); - $this->setPrimaryKey('id'); - - $this->addBehavior('Timestamp'); - - $this->hasMany('EmailOptIn', [ - 'foreignKey' => 'user_id', - ]); - $this->hasMany('UserBackups', [ - 'foreignKey' => 'user_id', - ]); - $this->hasMany('UserRoles', [ - 'foreignKey' => 'user_id', - ]); - } - - /** - * Default validation rules. - * - * @param \Cake\Validation\Validator $validator Validator instance. - * @return \Cake\Validation\Validator - */ - public function validationDefault(Validator $validator) - { - $validator - ->integer('id') - ->allowEmptyString('id', null, 'create'); - - $validator - ->email('email') - ->requirePresence('email', 'create') - ->notEmptyString('email') - ->add('email', 'unique', ['rule' => 'validateUnique', 'provider' => 'table']); - - $validator - ->scalar('first_name') - ->maxLength('first_name', 150) - ->requirePresence('first_name', 'create') - ->notEmptyString('first_name'); - - $validator - ->scalar('last_name') - ->maxLength('last_name', 255) - ->allowEmptyString('last_name'); - - $validator - ->requirePresence('password', 'create') - ->notEmptyString('password'); - - $validator - ->allowEmptyString('pubkey'); - - $validator - ->allowEmptyString('privkey'); - - $validator - ->boolean('email_checked') - ->notEmptyString('email_checked'); - - $validator - ->scalar('language') - ->maxLength('language', 4) - ->notEmptyString('language'); - - return $validator; - } - - /** - * Returns a rules checker object that will be used for validating - * application integrity. - * - * @param \Cake\ORM\RulesChecker $rules The rules object to be modified. - * @return \Cake\ORM\RulesChecker - */ - public function buildRules(RulesChecker $rules) - { - $rules->add($rules->isUnique(['email'])); - - return $rules; - } - - /** - * Returns the database connection name to use by default. - * - * @return string - */ - public static function defaultConnectionName() - { - return 'loginServer'; - } -} diff --git a/community_server/src/Model/Transactions/Record.php b/community_server/src/Model/Transactions/Record.php deleted file mode 100644 index 5572730ef..000000000 --- a/community_server/src/Model/Transactions/Record.php +++ /dev/null @@ -1,575 +0,0 @@ -signature = $signature; - $this->publicKey = $pubkey; - } - - public function finalize($transactionId) - { - $signaturesTable = TableRegistry::getTableLocator()->get('TransactionSignatures'); - $entity = $signaturesTable->newEntity(); - $entity->transaction_id = $transactionId; - if(strlen($this->signature) != 128) { - return ['state' => 'error', 'msg' => 'invalid signature size', 'details' => strlen($this->signature)]; - } - if(strlen($this->publicKey) != 64) { - return ['state' => 'error', 'msg' => 'invalid pubkey size', 'details' => strlen($this->publicKey)]; - } - if(!preg_match('/^[0-9a-fA-F]*$/', $this->signature)) { - return ['state' => 'error', 'msg' => 'signature isn\'t in hex format']; - } - if(!preg_match('/^[0-9a-fA-F]*$/', $this->publicKey)) { - return ['state' => 'error', 'msg' => 'publicKey isn\'t in hex format']; - } - $entity->signature = hex2bin($this->signature); - $entity->pubkey = hex2bin($this->publicKey); - - if(!$signaturesTable->save($entity)) { - return ['state' => 'error', 'msg' => 'error saving signature', 'details' => $entity->getErrors()]; - } - return true; - } -} - - - -class GradidoModifieUserBalance -{ - private $state_users = []; - private $user_balances = []; - - public function getUserId($userPublicKey) - { - $stateUsersTable = TableRegistry::getTableLocator()->get('StateUsers'); - - $stateUser = $stateUsersTable->find('all')->where(['public_key' => hex2bin($userPublicKey)]); - if($stateUser->isEmpty()) { - return ['state' => 'error', 'msg' => '[GradidoModifieUserBalance::getUserId] couldn\'t find user via public key']; - } - $id = $stateUser->first()->id; - if($id && is_int($id) && (int)$id > 0 && !in_array((int)$id, $this->state_users)) { - array_push($this->state_users, (int)$id); - } - return $id; - } - - public function updateBalance($newBalance, $recordDate, $userId) - { - $stateBalancesTable = TableRegistry::getTableLocator()->get('StateBalances'); - $state_balance_query = $stateBalancesTable->find()->where(['state_user_id' => $userId])->order(['record_date ASC']); - $state_balance = null; - if($state_balance_query->count() > 0) { - $state_balance = $state_balance_query->last(); - } else { - $state_balance = $stateBalancesTable->newEntity(); - $state_balance->state_user_id = $userId; - } - $state_balance->amount = $newBalance; - $state_balance->record_date = $recordDate; - $this->user_balances[$userId] = $state_balance; - $stateBalancesTable->save($state_balance); - return true; - //$this->user_balances[$userId] = ['balance' => $newBalance, ''] - // - //return $stateBalancesTable->updateBalanceWithTransaction($newBalance, $recordDate, $userId); - - /*$first_of_month = new Time("$year-$month-01 00:00"); - $stateBalanceQuery = $stateBalancesTable - ->find('all') - ->where(['state_user_id' => $userId]) - ->order(['record_date' => 'DESC']) - ->limit(1); - $entity = null; - - if(!$stateBalanceQuery->isEmpty()) { - $entity = $stateBalanceQuery->first(); - if($entity->record_date != NULL && - ($entity->record_date > $recordDate || $entity->record_date->day == 1)) { - return false; - } - } else { - $entity = $stateBalancesTable->newEntity(); - $entity->state_user_id = $userId; - } - $entity->record_date = $recordDate; - $entity->amount = $newBalance; - /*if(!$stateBalancesTable->save($entity)) { - return ['state' => 'error', 'msg' => 'error saving state balance', 'details' => $entity->getErrors()]; - }*/ - //return true; - } - - public function getAllStateUsers() - { - return $this->state_users; - } - public function getAllStateUserBalances() - { - return $this->user_balances; - } -} - -class ManageNodeGroupAdd extends GradidoModifieUserBalance -{ - /* - "add_user": { - "user\": " << user << ", - }, - OR - - "move_user_inbound|move_user_outbound": { - "user": " << user << ", - "other_group": " << other_group << ", - "paired_transaction_id": { - "seconds": << ts.seconds <<, - "nanos": << ts.nanos - } - }, - - */ - - private $user_pubkey; - private $other_group = ''; - private $remove_from_group = false; - - public function __construct($data) - { - $this->user_pubkey = $data['user']; - if(isset($data['other_group'])) { - $this->other_group = $data['other_group']; - } - } - - public function finalize($transactionId, $received) - { - $transactionGroupAddadressTable = TableRegistry::getTableLocator()->get('TransactionGroupAddaddress'); - $stateGroupAddresses = TableRegistry::getTableLocator()->get('StateGroupAddresses'); - $transactionGroupEntity = $transactionGroupAddadressTable->newEntity(); - if(!is_int($transactionId)) { - return ['state' => 'error', 'msg' => '[ManageNodeGroupAdd::finalize] transaction id is not int', 'details' => $transactionId]; - } - $transactionGroupEntity->transaction_id = $transactionId; - $transactionGroupEntity->address_type_id = 1; - if(strlen($this->user_pubkey) != 64) { - return ['state' => 'error', 'msg' => 'invalid size user pubkey', 'details' => strlen($this->user_pubkey)]; - } - if(!preg_match('/^[0-9a-fA-F]*$/', $this->user_pubkey)) { - return ['state' => 'error', 'msg' => 'user_pubkey isn\'t in hex format']; - } - - $userPubkeyBin = hex2bin($this->user_pubkey); - - $transactionGroupEntity->public_key = $userPubkeyBin; - $user_id = $this->getUserId($this->user_pubkey); - if(!is_int($user_id)) { - return ['state' => 'error', 'msg' => '[ManageNodeGroupAdd::finalize] user id is not int', 'details' => $user_id]; - } - $transactionGroupEntity->state_user_id = $user_id; - $transactionGroupEntity->remove_from_group = $this->remove_from_group; - if(!$transactionGroupAddadressTable->save($transactionGroupEntity)) { - return ['state' => 'error', 'msg' => 'error saving TransactionGroupAddaddress Entity', 'details' => $transactionGroupEntity->getErrors()]; - } - - - if($this->remove_from_group) { - $stateGroup_query = $stateGroupAddresses->find('all')->where(['public_key' => hex2bin($this->user_pubkey)]); - if(!$stateGroup_query->isEmpty()) { - $stateGroupAddresses->delete($stateGroup_query->first()); - } - } else { - $stateGroupAddressesEntity = $stateGroupAddresses->newEntity(); - $stateGroupAddressesEntity->group_id = 1; - $stateGroupAddressesEntity->public_key = $userPubkeyBin; - $stateGroupAddressesEntity->address_type_id = 1; - if(!$stateGroupAddresses->save($stateGroupAddressesEntity)) { - return ['state' => 'error', 'msg' => 'error saving state group addresses entity', 'details' => $stateGroupAddressesEntity->getErrors()]; - } - } - - return true; - } - - public function setRemoveFromGroup($removeFromGroup) { - $this->remove_from_group = $removeFromGroup; - } -} - - -class GradidoCreation extends GradidoModifieUserBalance -{ - /* - * "gradido_creation": { - "user": " << user << ", - "new_balance": << v.new_balance << , - "prev_transfer_rec_num": << v.prev_transfer_rec_num <<, - "amount": << v.amount << - } - */ - private $userPubkey; - private $amount; - private $targetDate; // seems currently not in node server implementet, use hedera date until it is implemented - private $new_balance; - - - public function __construct($data) - { - $this->userPubkey = $data['user']; - $this->amount = $data['amount']['amount']; - $this->new_balance = $data['new_balance']['amount']; - //$this->targetDate = $received; - } - - public function finalize($transactionId, $received) - { - // TODO: don't use, after node server transmit correct date - $this->targetDate = $received; - - $transactionCreationTable = TableRegistry::getTableLocator()->get('TransactionCreations'); - - - $state_user_id = $this->getUserId($this->userPubkey); - if(!is_int($state_user_id)) { - return $state_user_id; - } - - $entity = $transactionCreationTable->newEntity(); - $entity->transaction_id = $transactionId; - $entity->amount = $this->amount; - $entity->target_date = $this->targetDate; - $entity->state_user_id = $state_user_id; - - if(!$transactionCreationTable->save($entity)) { - return ['state' => 'error', 'msg' => 'error saving create transaction', 'details' => $entity->getErrors()]; - } - - $balance_result = $this->updateBalance($this->new_balance, $received, $state_user_id); - if(is_array($balance_result)) { - return $balance_result; - } - - return true; - } - - - -} - -class GradidoTransfer extends GradidoModifieUserBalance -{ - /* - "local_transfer|inbound_transfer|outbound_transfer": { - "sender": { - "user": " << sender << ", - "new_balance": << tt.sender.new_balance << , - "prev_transfer_rec_num": << tt.sender.prev_transfer_rec_num << - }, - "receiver": { - "user": " << receiver << ", - "new_balance": << tt.receiver.new_balance << , - "prev_transfer_rec_num": << tt.receiver.prev_transfer_rec_num << - }, - "amount": << tt.amount << - }, - * */ - private $amount; - private $sender_new_balance = null; - private $sender_pubkey; - - private $receiver_pubkey; - private $receiver_new_balance = null; - - - public function __construct($data) - { - $this->amount = $data['amount']['amount']; - - $sender = $data['sender']; - $this->sender_pubkey = $sender['user']; - if(isset($sender['new_balance'])) { - $this->sender_new_balance = $sender['new_balance']['amount']; - } - - $receiver = $data['receiver']; - $this->receiver_pubkey = $receiver['user']; - if(isset($receiver['new_balance'])) { - $this->receiver_new_balance = $receiver['new_balance']['amount']; - } - - } - - public function finalize($transactionId, $received) - { - $transactionTransferTable = TableRegistry::getTableLocator()->get('TransactionSendCoins'); - if(strlen($this->sender_pubkey) != 64) { - return ['state' => 'error', 'msg' => 'invalid size sender pubkey', 'details' => strlen($this->user_pubkey)]; - } - if(!preg_match('/^[0-9a-fA-F]*$/', $this->sender_pubkey)) { - return ['state' => 'error', 'msg' => 'sender_pubkey isn\'t in hex format']; - } - if(strlen($this->receiver_pubkey) != 64) { - return ['state' => 'error', 'msg' => 'invalid size receiver pubkey', 'details' => strlen($this->user_pubkey)]; - } - if(!preg_match('/^[0-9a-fA-F]*$/', $this->receiver_pubkey)) { - return ['state' => 'error', 'msg' => 'receiver_pubkey isn\'t in hex format']; - } - - $sender_id = $this->getUserId($this->sender_pubkey); - $receiver_id = $this->getUserId($this->receiver_pubkey); - if(is_array($sender_id) && is_array($receiver_id)) { - return ['state' => 'error', 'msg' => 'neither sender or receiver known']; - } - $transferEntity = $transactionTransferTable->newEntity(); - $transferEntity->transaction_id = $transactionId; - $transferEntity->sender_public_key = hex2bin($this->sender_pubkey); - $transferEntity->receiver_public_key = hex2bin($this->receiver_pubkey); - $transferEntity->amount = $this->amount; - if($this->sender_new_balance != null) { - $transferEntity->sender_final_balance = $this->sender_new_balance; - - if(is_int($sender_id) && $sender_id > 0) { - $transferEntity->state_user_id = $sender_id; - $balance_result = $this->updateBalance($this->sender_new_balance, $received, $sender_id); - if(is_array($balance_result)) { - return $balance_result; - } - } - } - if($this->receiver_new_balance != null && is_int($receiver_id) && $receiver_id > 0) { - $transferEntity->receiver_user_id = $receiver_id; - $balance_result = $this->updateBalance($this->receiver_new_balance, $received, $receiver_id); - if(is_array($balance_result)) { - return $balance_result; - } - } - - if(!$transactionTransferTable->save($transferEntity)) { - return ['state' => 'error', 'msg' => 'error saving transaction send coins entity', 'details' => $transferEntity->getErrors()]; - } - - return true; - } - -} - - - - -class Record -{ - private $sequenceNumber = 0; - private $runningHash = null; - private $transactionType = ''; - private $memo = ''; - private $signatures = []; - private $received; - private $transactionObj = null; - private $result; - private $partCount = 0; - - public function __construct() - { - - } - - - public function parseRecord($json) { - if(!isset($json['record_type'])) { - return false; - } - //var_dump($json); - switch($json['record_type']) { - case 'GRADIDO_TRANSACTION': - return $this->parseTransaction($json['transaction']); - case 'MEMO': - $this->memo .= $json['memo']; - return true; - case 'SIGNATURES': - return $this->parseSignatures($json['signature']); - case 'STRUCTURALLY_BAD_MESSAGE': - case 'RAW_MESSAGE': - case 'BLANK': - return false; - } - } - - /*! - * \brief save data parts in db - */ - public function finalize() - { - $transactionTypesTable = TableRegistry::getTableLocator()->get('TransactionTypes'); - $transactionsTable = TableRegistry::getTableLocator()->get('Transactions'); - $stateUserTransactionsTable = TableRegistry::getTableLocator()->get('StateUserTransactions'); - - $transactionTypeName = $this->nodeTransactionTypeToDBTransactionType($this->transactionType); - $transactionTypeResults = $transactionTypesTable->find('all')->where(['name' => $transactionTypeName]); - if($transactionTypeResults->isEmpty()) { - return [ - 'state' => 'error', 'msg' => 'transaction type not found', - 'details' => ['nodeType' => $this->transactionType, 'dbType' => $transactionTypeName] - ]; - } - if(!$this->transactionObj) { - return ['state' => 'error', 'msg' => 'transaction obj is null']; - } - if($this->sequenceNumber <= 0) { - return ['state' => 'error', 'msg' => 'sequence number invalid', 'details' => $this->sequenceNumber]; - } - $transactionExistResult = $transactionsTable->find('all')->where(['id' => intval($this->sequenceNumber)]); - if(!$transactionExistResult->isEmpty()) { - return ['state' => 'warning', 'msg' => 'transaction already exist in db', 'details' => $this->sequenceNumber]; - } - $newTransaction = $transactionsTable->newEntity(); - $newTransaction->id = $this->sequenceNumber; - $newTransaction->transaction_type_id = $transactionTypeResults->first()->id; - $newTransaction->memo = $this->memo; - if($this->runningHash != '' && strlen($this->runningHash) % 2 == 0) { - $newTransaction->tx_hash = hex2bin($this->runningHash); - } - $newTransaction->received = $this->received; - - //! TODO change into transaction, if at least one fail, rollback - /* - // In a controller. - $articles->getConnection()->transactional(function () use ($articles, $entities) { - foreach ($entities as $entity) { - $articles->save($entity, ['atomic' => false]); - } - }); - */ - if(!$transactionsTable->save($newTransaction)) { - return ['state' => 'error', 'msg' => 'error saving transaction', 'details' => $newTransaction->getErrors()]; - } - - foreach($this->signatures as $sign) { - $sign_result = $sign->finalize($this->sequenceNumber); - if($sign_result !== true) { - return ['state' => 'error', 'msg', 'error finalizing signature', 'details' => $sign_result]; - } - } - $transaction_obj_result = $this->transactionObj->finalize($newTransaction->id, $this->received); - if($transaction_obj_result !== true) { - return ['state' => 'error', 'msg' => 'error finalizing transaction object', 'details' => $transaction_obj_result]; - } - $state_users = $this->transactionObj->getAllStateUsers(); - $sut_entities = []; - $state_user_balances = $this->transactionObj->getAllStateUserBalances(); - foreach($state_users as $state_user_id) { - $entity = $stateUserTransactionsTable->newEntity(); - $entity->state_user_id = $state_user_id; - $entity->transaction_id = $newTransaction->id; - $entity->transaction_type_id = $newTransaction->transaction_type_id; - $entity->balance = $state_user_balances[$state_user_id]->amount; - $entity->balance_date = $state_user_balances[$state_user_id]->record_date; - $sut_entities[] = $entity; - } - $sut_results = $stateUserTransactionsTable->saveMany($sut_entities); - foreach($sut_results as $i => $result) { - if(false == $result) { - return ['state' => 'error', 'msg' => 'error saving state_user_transaction', 'details' => $sut_entities[$i]->getErrors()]; - } - } - - return true; - - } - - private function nodeTransactionTypeToDBTransactionType($nodeTransactionType) - { - switch($nodeTransactionType) { - case 'GRADIDO_CREATION': - return 'creation'; - - case 'MOVE_USER_INBOUND': - case 'ADD_USER': - return 'group add member'; - - case 'MOVE_USER_OUTBOUND': - return 'group remove member'; - - case 'LOCAL_TRANSFER': - case 'INBOUND_TRANSFER': - case 'OUTBOUND_TRANSFER': - return 'transfer'; - } - return 'unknown'; - } - - private function parseSignatures($signaturesArray) - { - foreach($signaturesArray as $sign) { - $this->signatures[] = new Signature($sign['signature'], $sign['pubkey']); - } - return true; - } - - private function parseTransaction($data) - { - $this->transactionType = $data['transaction_type']; - $sign = $data['signature']; - $this->signatures[] = new Signature($sign['signature'], $sign['pubkey']); - - $hedera = $data['hedera_transaction']; - $this->sequenceNumber = $hedera['sequenceNumber']; - $this->runningHash = $hedera['runningHash']; - $this->received = Time::createFromTimestamp($hedera['consensusTimestamp']['seconds']); - - $field_index = ''; - $class_name = ''; - - $removeFromGroup = false; - switch($this->transactionType) - { - case 'GRADIDO_CREATION': $field_index = 'gradido_creation'; $class_name = 'GradidoCreation'; break; - case 'ADD_USER': $field_index = 'add_user'; $class_name = 'ManageNodeGroupAdd'; break; - case 'MOVE_USER_INBOUND': $field_index = 'move_user_inbound'; $class_name = 'ManageNodeGroupAdd'; break; - case 'MOVE_USER_OUTBOUND': $field_index = 'move_user_outbound'; $class_name = 'ManageNodeGroupAdd'; $removeFromGroup = true; break; - case 'LOCAL_TRANSFER': $field_index = 'local_transfer'; $class_name = 'GradidoTransfer'; break; - case 'INBOUND_TRANSFER': $field_index = 'inbound_transfer'; $class_name = 'GradidoTransfer'; break; - case 'OUTBOUND_TRANSFER': $field_index = 'outbound_transfer'; $class_name = 'GradidoTransfer'; break; - } - if($class_name == '' || $field_index == '') { - return ['state' => 'error', 'msg' => 'node transaction type unknown', 'details' => $this->transactionType]; - } - $class_name = 'Model\\Transactions\\' . $class_name; - $this->transactionObj = new $class_name($data[$field_index]); - if($class_name == 'ManageNodeGroupAdd') { - $this->transactionObj->setRemoveFromGroup($removeFromGroup); - } - - $this->result = $data['result']; - $this->partCount = intval($data['parts']); - $this->memo = $data['memo']; - return true; - } - - public function getSequenceNumber() { - return $this->sequenceNumber; - } - public function getPartCount() { - return $this->partCount; - } - -} \ No newline at end of file diff --git a/community_server/src/Model/Transactions/SignatureMap.php b/community_server/src/Model/Transactions/SignatureMap.php deleted file mode 100644 index cbe48e636..000000000 --- a/community_server/src/Model/Transactions/SignatureMap.php +++ /dev/null @@ -1,68 +0,0 @@ -mProtoSigMap = $protoSigMap; - } - - public function getProto() { - return $this->mProtoSigMap; - } - - static public function fromEntity($transactionSignatures) - { - - $protoSigMap = new \Proto\Gradido\SignatureMap(); - $sigPairs = $protoSigMap->getSigPair(); - //echo "sigPairs: "; var_dump($sigPairs); echo "
    "; - //return null; - foreach($transactionSignatures as $signature) { - $sigPair = new \Proto\Gradido\SignaturePair(); - $sigPair->setPubKey(stream_get_contents($signature->pubkey)); - $sigPair->setEd25519(stream_get_contents($signature->signature)); - - $sigPairs[] = $sigPair; - //array_push($sigPairs, $sigPair); - } - return new SignatureMap($protoSigMap); - } - - static public function build($bodyBytes, array $keys) - { - $protoSigMap = new \Proto\Gradido\SignatureMap(); - $sigPairs = $protoSigMap->getSigPair(); - //echo "sigPairs: "; var_dump($sigPairs); echo "
    "; - //return null; - - // sign with keys - foreach($keys as $key) { - $sigPair = new \Proto\Gradido\SignaturePair(); - $sigPair->setPubKey(hex2bin($key['pub'])); - $sigPair->setEd25519(sodium_crypto_sign_detached($bodyBytes, hex2bin($key['priv']))); - - $sigPairs[] = $sigPair; - } - //array_push($sigPairs, $sigPair); - - return new SignatureMap($protoSigMap); - } - - -} \ No newline at end of file diff --git a/community_server/src/Model/Transactions/Transaction.php b/community_server/src/Model/Transactions/Transaction.php deleted file mode 100644 index 810f20c9d..000000000 --- a/community_server/src/Model/Transactions/Transaction.php +++ /dev/null @@ -1,289 +0,0 @@ -mProtoTransaction = $base64Data; - $this->mTransactionBody = new TransactionBody($this->mProtoTransaction->getBodyBytes()); - return; - } - - try { - $transactionBin = sodium_base642bin($base64Data, SODIUM_BASE64_VARIANT_URLSAFE_NO_PADDING); - } catch(\SodiumException $e) { - //$this->addError('Transaction', $e->getMessage());// . ' ' . $base64Data); - //return; - $transactionBin = base64_decode($base64Data, true); - if($transactionBin == false) { - $this->addError('Transaction', $e->getMessage());// . ' ' . $base64Data); - $this->addError('base64', $base64Data); - return; - } - } - //*/} - - if($transactionBin == false) { - //$this->addError('base64 decode failed'); - $this->addError('Transaction', 'base64 decode error: ' . $base64Data); - } else { - //var_dump($transactionBin); - $this->mProtoTransaction = new \Proto\Gradido\GradidoTransaction(); - try { - $this->mProtoTransaction->mergeFromString($transactionBin); - //var_dump($this->mProtoTransaction); - // cannot catch Exception with cakePHP, I don't know why - } catch(\Google\Protobuf\Internal\GPBDecodeException $e) { - //var_dump($e); - $this->addError('Transaction', $e->getMessage()); - return; - }//*/ - - //echo 'serialize to json:
    '; - //echo $this->mProtoTransaction->serializeToJsonString(); - //echo "body bytes:
    "; - //var_dump($this->mProtoTransaction->getBodyBytes()); - //echo "
    end body bytes
    "; - $this->mTransactionBody = new TransactionBody($this->mProtoTransaction->getBodyBytes()); - } - } - - static public function build(\Proto\Gradido\TransactionBody $transactionBody, $senderKeyPair) - { - $protoTransaction = new \Proto\Gradido\GradidoTransaction(); - - $recevied = new \Proto\Gradido\TimestampSeconds(); - $recevied->setSeconds(time()); - $protoTransaction->setReceived($recevied); - - $bodyBytes = $transactionBody->serializeToString(); - - $sigMap = SignatureMap::build($bodyBytes, [$senderKeyPair]); - $protoTransaction->setSigMap($sigMap->getProto()); - - $protoTransaction->setBodyBytes($bodyBytes); - - return $protoTransaction; - - } - - public function getTransactionBody() { - return $this->mTransactionBody; - } - - public function getFirstPublic() - { - if(!$this->mProtoTransaction || !$this->mProtoTransaction->getSigMap()) { - return ''; - } - $sigPairs = $this->mProtoTransaction->getSigMap()->getSigPair(); - return $sigPairs[0]->getPubKey(); - } - - public function getFirstSigningUser() - { - return $this->getStateUserFromPublickey($this->getFirstPublic()); - } - - public function getId() { - return $this->mProtoTransaction->getId(); - } - - public function validate() { - $sigMap = $this->mProtoTransaction->getSigMap(); - if(!$sigMap) { - $this->addError('Transaction', 'signature map is zero'); - //var_dump($this->mProtoTransaction); - return false; - } - //var_dump($sigMap); - //die(); - $sigPairs = $sigMap->getSigPair(); - $bodyBytes = $this->mProtoTransaction->getBodyBytes(); - - - if(!$sigPairs || count($sigPairs) < 1) { - $this->addError('Transaction::validate', 'no signature found'); - return false; - } - - // check signature(s) - foreach($sigPairs as $sigPair) { - //echo 'sig Pair: '; var_dump($sigPair); echo "
    "; - $pubkey = $sigPair->getPubKey(); - $signature = $sigPair->getEd25519(); - //echo "verify bodybytes:
    " . bin2hex($bodyBytes) . '
    '; - if (!\Sodium\crypto_sign_verify_detached($signature, $bodyBytes, $pubkey)) { - $this->addError('Transaction::validate', 'signature for key ' . bin2hex($pubkey) . ' isn\'t valid ' ); - return false; - } - } - - if(!$this->mTransactionBody->validate($sigPairs)) { - $this->addErrors($this->mTransactionBody->getErrors()); - return false; - } - - return true; - } - - public function save() - { - $connection = ConnectionManager::get('default'); - $connection->begin(); - //id transaction_id signature pubkey - - if (!$this->mTransactionBody->save($this->getFirstPublic(), $this->mProtoTransaction->getSigMap())) { - $this->addErrors($this->mTransactionBody->getErrors()); - $connection->rollback(); - // correct auto-increment value to prevent gaps - $transactionsTable = $this->getTable('transactions'); - $transactions = $transactionsTable->find()->select(['id'])->contain(false); - $count = $transactions->count(); - $connection = ConnectionManager::get('default'); - $connection->execute("ALTER TABLE `transactions` auto_increment = $count;"); - - return false; - } - - // save transaction signatures - $transactionsSignaturesTable = TableRegistry::getTableLocator()->get('transaction_signatures'); - $transactionId = $this->mTransactionBody->getTransactionID(); - //signature pubkey - - $sigPairs = $this->mProtoTransaction->getSigMap()->getSigPair(); - //echo "sigPairs: "; var_dump($sigPairs); - $signatureEntitys = []; - foreach($sigPairs as $sigPair) { - $signatureEntity = $transactionsSignaturesTable->newEntity(); - $signatureEntity->transaction_id = $transactionId; - $signatureEntity->signature = $sigPair->getEd25519(); - $signatureEntity->pubkey = $sigPair->getPubKey(); - array_push($signatureEntitys, $signatureEntity); - } - //debug($signatureEntitys); - if(!$transactionsSignaturesTable->saveMany($signatureEntitys)) { - foreach($signatureEntitys as $entity) { - $errors = $entity->getErrors(); - if(!$errors && count($errors) > 0) { - $pubkeyHex = bin2hex($entity->pubkey); - $this->addError('Transaction::save', 'error saving signature for pubkey: ' . $pubkeyHex . ', with errors: ' . json_encode($errors) ); - } - } - $connection->rollback(); - return false; - } - - $connection->commit(); - - $specificTransaction = $this->mTransactionBody->getSpecificTransaction(); - - $specificTransaction->sendNotificationEmail($this->mTransactionBody->getMemo()); - $this->addWarnings($specificTransaction->getWarnings()); - return true; - } - - static public function fromTable($id) - { - $transactionsTable = TableRegistry::getTableLocator()->get('transactions'); - $transactionEntry = $transactionsTable - ->find('all') - ->where(['id' => $id]) - ->contain([ - 'TransactionCreations', - 'TransactionSendCoins', - 'TransactionSignatures']) - ->first(); - //var_dump($transactionEntry->toArray()); - $protoTransaction = new \Proto\Gradido\Transaction(); - - - - $protoTransaction->setId($transactionEntry->id); - - - $recevied = new \Proto\Gradido\TimestampSeconds(); - $recevied->setSeconds($transactionEntry->received->getTimestamp()); - $protoTransaction->setReceived($recevied); - - - $sigMap = SignatureMap::fromEntity($transactionEntry->transaction_signatures); - $protoTransaction->setSigMap($sigMap->getProto()); - - //echo "sig map: check
    "; - $protoTransaction->setTxHash(stream_get_contents($transactionEntry->tx_hash)); - - $body = TransactionBody::fromEntity($transactionEntry->memo, $transactionEntry); - if(is_array($body)) { - return ['state' => 'error', 'msg' => 'error creating body transaction', 'details' => $body]; - } - - // validate signatures - $sigPairs = $sigMap->getProto()->getSigPair(); - - if(!$sigPairs || count($sigPairs) < 1) { - return ['state' => 'error', 'msg' => 'error no signatures found']; - } - - //echo "verify bodybytes:
    " . bin2hex($bodyBytes) . '
    '; - $created = new \Proto\Gradido\TimestampSeconds(); - $created->setSeconds($recevied->getSeconds()); - $body->setCreated($created); - $bodyBytes = $body->serializeToString(); - $createTrys = 0; - $createRight = false; - // check signature(s) and - // try to get created field of TransactionBody right, because it wasn't saved - foreach($sigPairs as $sigPair) { - //echo 'sig Pair: '; var_dump($sigPair); echo "
    "; - $pubkey = $sigPair->getPubKey(); - $signature = $sigPair->getEd25519(); - if(!$createRight) { - while($createTrys < 500) { - if(\Sodium\crypto_sign_verify_detached($signature, $bodyBytes, $pubkey)) { - $createRight = true; - break; - } else { - $createTrys++; - $created->setSeconds($created->getSeconds() - 1); - //$body->setCreated($created); - $bodyBytes = $body->serializeToString(); - } - } - } - - if (!\Sodium\crypto_sign_verify_detached($signature, $bodyBytes, $pubkey)) { - return ['state' => 'error', 'msg' => 'signature for key ' . bin2hex($pubkey) . ' isn\'t valid ']; - } - } - - $protoTransaction->setBodyBytes($bodyBytes); - - - - return $protoTransaction; - } - -} \ No newline at end of file diff --git a/community_server/src/Model/Transactions/TransactionBase.php b/community_server/src/Model/Transactions/TransactionBase.php deleted file mode 100644 index 6b3817201..000000000 --- a/community_server/src/Model/Transactions/TransactionBase.php +++ /dev/null @@ -1,166 +0,0 @@ -errors; - } - - public function getWarnings() { - return $this->warnings; - } - public function addError($functionName, $errorName) { - array_push($this->errors, [$functionName => $errorName]); - } - public function addWarning($functionName, $warningName) { - array_push($this->warnings, [$functionName => $warningName]); - } - - public function addErrors($errors) { - $this->errors = array_merge($this->errors, $errors); - } - - public function addWarnings($warnings) { - $this->warnings = array_merge($this->warnings, $warnings); - } - - public function hasErrors() { - return count($this->errors) > 0; - } - - public function hasWarnings() { - return count($this->warnings) > 0; - } - public static function getTable($tableName) { - if(!isset(self::$tables[$tableName])) { - self::$tables[$tableName] = TableRegistry::getTableLocator()->get($tableName); - } - return self::$tables[$tableName]; - } - - - protected function getStateUserId($publicKey) { - - $stateUsersTable = self::getTable('state_users'); - $stateUser = $stateUsersTable->find('all')->select(['id'])->where(['public_key' => $publicKey])->first(); - if($stateUser) { - return $stateUser->id; - } - // create new entry - $stateUserEntity = $stateUsersTable->newEntity(); - $stateUserEntity->public_key = $publicKey; - if($stateUsersTable->save($stateUserEntity)) { - return $stateUserEntity->id; - } else { - $this->addError('TransactionBase::getStateUserId', 'error saving new state user with error: ' . json_encode($stateUserEntity->getErrors())); - } - - return NULL; - } - - protected function getStateUser($id) { - $stateUsersTable = self::getTable('state_users'); - $stateUser = $stateUsersTable->get($id); - if($stateUser) { - return $stateUser; - } - - return NULL; - } - - protected function getStateUserFromPublickey($publicKey) { - $stateUsersTable = self::getTable('state_users'); - $stateUser = $stateUsersTable->find('all')->where(['public_key' => $publicKey])->first(); - if($stateUser) { - return $stateUser; - } - - return NULL; - } - - - protected function updateStateBalance($stateUserId, $addAmountCent, $recordDate) { - $stateBalancesTable = self::getTable('stateBalances'); - $stateBalanceQuery = $stateBalancesTable - ->find('all') - ->select(['amount', 'id', 'record_date']) - ->contain(false) - ->where(['state_user_id' => $stateUserId]);//->first(); - //debug($stateBalanceQuery); - - if($stateBalanceQuery->count() > 0) { - - $stateBalanceEntry = $stateBalanceQuery->first(); - $stateBalanceEntry->amount = - $stateBalancesTable->calculateDecay($stateBalanceEntry->amount, $stateBalanceEntry->record_date, $recordDate) - + $addAmountCent; - } else { - $stateBalanceEntry = $stateBalancesTable->newEntity(); - $stateBalanceEntry->state_user_id = $stateUserId; - $stateBalanceEntry->amount = $addAmountCent; - } - $stateBalanceEntry->record_date = $recordDate; - $finalBalance = $stateBalanceEntry->amount; - //echo "\ntry to save: "; var_dump($stateBalanceEntry); echo "\n"; - if(!$stateBalancesTable->save($stateBalanceEntry)) { - $errors = $stateBalanceEntry->getErrors(); - $this->addError('TransactionBase::updateStateBalance', 'error saving state balance with: ' . json_encode($errors)); - return false; - } - return $finalBalance; - } - - protected function addStateUserTransaction($stateUserId, $transactionId, $transactionTypeId, $balance, $balance_date) { - $stateUserTransactionTable = self::getTable('state_user_transactions'); - - $stateUserTransactions = $stateUserTransactionTable - ->find('all') - ->where(['state_user_id' => $stateUserId]) - ->order(['transaction_id DESC']); - $new_balance = $balance; - if($stateUserTransactions->count() > 0) { - $stateBalanceTable = self::getTable('state_balances'); - $state_user_transaction = $stateUserTransactions->first(); - if(!$state_user_transaction) { - $this->addError('TransactionBase::addStateUserTransaction', 'state_user_transaction is zero, no first entry exist?'); - return false; - } - $new_balance += $stateBalanceTable->calculateDecay( - $state_user_transaction->balance, - $state_user_transaction->balance_date, - $balance_date - ); - } - $entity = $stateUserTransactionTable->newEntity(); - $entity->state_user_id = $stateUserId; - $entity->transaction_id = $transactionId; - $entity->transaction_type_id = $transactionTypeId; - $entity->balance = $new_balance; - $entity->balance_date = $balance_date; - - if(!$stateUserTransactionTable->save($entity)) { - $errors = $entity->getErrors(); - $this->addError('TransactionBase::addStateUserTransaction', 'error saving state user balance with: ' . json_encode($errors)); - return false; - } - // set balance from all state_user_transactions which came after (sorted by balance_date) to 0 - // because creation transaction can be added before other transaction which already happend - $state_user_transactions = $stateUserTransactionTable - ->find() - ->select(['id', 'balance']) - ->where(['state_user_id' => $stateUserId, 'balance_date >' => $balance_date]) - ; - foreach($state_user_transactions as $t) { - $t->balance = 0; - } - $stateUserTransactionTable->saveMany($state_user_transactions); - return true; - } -} \ No newline at end of file diff --git a/community_server/src/Model/Transactions/TransactionBody.php b/community_server/src/Model/Transactions/TransactionBody.php deleted file mode 100644 index 87a029b80..000000000 --- a/community_server/src/Model/Transactions/TransactionBody.php +++ /dev/null @@ -1,194 +0,0 @@ -mProtoTransactionBody = new \Proto\Gradido\TransactionBody(); - try { - $this->mProtoTransactionBody->mergeFromString($bodyBytes); - // cannot catch Exception with cakePHP, I don't know why - } catch(\Google\Protobuf\Internal\GPBDecodeException $e) { - //var_dump($e); - $this->addError('TransactionBody', $e->getMessage()); - return; - } - - switch($this->mProtoTransactionBody->getData()) { - case 'creation' : $this->mSpecificTransaction = new TransactionCreation($this->mProtoTransactionBody->getCreation()); break; - case 'transfer' : $this->mSpecificTransaction = new TransactionTransfer($this->mProtoTransactionBody->getTransfer()); break; - } - } - - public function validate($sigPairs) { - - // transaction type id - $transactionTypesTable = TableRegistry::getTableLocator()->get('transaction_types'); - - $typeName = $this->getTransactionTypeName(); - $transactionType = $transactionTypesTable->find('all')->where(['name' => $typeName])->select(['id'])->first(); - if($transactionType == NULL) { - $this->addError('TransactionBody::validate', 'zero type id for type: ' . $typeName); - return false; - } - $this->transactionTypeId = $transactionType->id; - - // check if creation time is in the past - if($this->mProtoTransactionBody->getCreated()->getSeconds() > time()) { - $this->addError('TransactionBody::validate', 'Transaction were created in the past!'); - return false; - } - if(!$this->mSpecificTransaction->validate($sigPairs)) { - $this->addErrors($this->mSpecificTransaction->getErrors()); - return false; - } - - - - return true; - } - - public function getSpecificTransaction() { - return $this->mSpecificTransaction; - } - - public function getMemo() { - return $this->mProtoTransactionBody->getMemo(); - } - - public function getTransactionTypeName() - { - return $this->mProtoTransactionBody->getData(); - } - - public function save($firstPublic, $sigMap) { - $transactionsTable = TableRegistry::getTableLocator()->get('transactions'); - $transactionEntity = $transactionsTable->newEntity(); - - - $transactionEntity->transaction_type_id = $this->transactionTypeId; - $transactionEntity->memo = $this->getMemo(); - - if ($transactionsTable->save($transactionEntity)) { - // reload entity to get received date filled from mysql - $transactionEntity = $transactionsTable->get($transactionEntity->id); - // success - $this->mTransactionID = $transactionEntity->id; - if(!$this->mSpecificTransaction->save($transactionEntity->id, $firstPublic, $transactionEntity->received)) { - $this->addErrors($this->mSpecificTransaction->getErrors()); - return false; - } - } else { - $this->addError('TransactionBody::save', 'error saving transaction with: ' . json_encode($transactionEntity->getError())); - return false; - } - $previousTxHash = null; - if($this->mTransactionID > 1) { - try { - $previousTransaction = $transactionsTable - ->find('all', ['contain' => false]) - ->select(['tx_hash']) - ->where(['id' => $this->mTransactionID - 1]) - ->first(); - /*$previousTransaction = $transactionsTable->get($this->mTransactionID - 1, [ - 'contain' => false, - 'fields' => ['tx_hash'] - ]);*/ - } catch(Cake\Datasource\Exception\RecordNotFoundException $ex) { - $this->addError('TransactionBody::save', 'previous transaction (with id ' . ($this->mTransactionID-1) . ' not found'); - return false; - } - if(!$previousTransaction) { - // shouldn't occur - $this->addError('TransactionBody::save', 'previous transaction (with id ' . ($this->mTransactionID-1) . ' not found'); - return false; - } - $previousTxHash = $previousTransaction->tx_hash; - } - try { - //$transactionEntity->received = $transactionsTable->get($transactionEntity->id, ['contain' => false, 'fields' => ['received']])->received; - $transactionEntity->received = $transactionsTable - ->find('all', ['contain' => false]) - ->where(['id' => $transactionEntity->id]) - ->select(['received'])->first()->received; - } catch(Cake\Datasource\Exception\RecordNotFoundException $ex) { - $this->addError('TransactionBody::save', 'current transaction (with id ' . ($transactionEntity->id) . ' not found'); - $this->addError('exception: ', $ex->getMessage()); - return false; - } - - // calculate tx hash - // previous tx hash + id + received + sigMap as string - // Sodium use for the generichash function BLAKE2b today (11.11.2019), mabye change in the future - $state = \Sodium\crypto_generichash_init(); - //echo "prev hash: $previousTxHash\n"; - if($previousTxHash != null) { - \Sodium\crypto_generichash_update($state, stream_get_contents($previousTxHash)); - } - //echo "id: " . $transactionEntity->id . "\n"; - \Sodium\crypto_generichash_update($state, strval($transactionEntity->id)); - //echo "received: " . $transactionEntity->received; - \Sodium\crypto_generichash_update($state, $transactionEntity->received->i18nFormat('yyyy-MM-dd HH:mm:ss')); - \Sodium\crypto_generichash_update($state, $sigMap->serializeToString()); - $transactionEntity->tx_hash = \Sodium\crypto_generichash_final($state); - if ($transactionsTable->save($transactionEntity)) { - return true; - } - $this->addError('TransactionBody::save', 'error saving transaction with: ' . json_encode($transactionEntity->getError())); - return false; - } - - public function getTransactionID() { - return $this->mTransactionID; - } - - public function getTransactionTypeId() { - return $this->transactionTypeId; - } - - static public function fromEntity($memo, $transaction) - { - $protoBody = new \Proto\Gradido\TransactionBody(); - $protoBody->setMemo($memo); - - //$created->setSeconds($var); - //$protoBody->setCreated($created); - if(count($transaction->transaction_creations) == 1) { - //echo "is creation
    "; - $protoBody->setCreation(TransactionCreation::fromEntity($transaction->transaction_creations[0])->getProto()); - } - else if(count($transaction->transaction_send_coins) == 1) { - //echo "is transfer"; - $protoBody->setTransfer(TransactionTransfer::fromEntity($transaction->transaction_send_coins)->getProto()); - } else { - return ['invalid transaction type or count']; - } - - return $protoBody; - } - - static public function build($memo, $specificTransaction) - { - $protoBody = new \Proto\Gradido\TransactionBody(); - $protoBody->setMemo($memo); - - if(is_a($specificTransaction, 'TransactionCreation')) { - $protoBody->setCreation($specificTransaction->getProto()); - } else if(is_a($specificTransaction, 'TransactionTransfer')) { - $protoBody->setTransfer($specificTransaction->getProto()); - } else { - return ['invalid tarnsaction type']; - } - return $protoBody; - - } - -} diff --git a/community_server/src/Model/Transactions/TransactionCreation.php b/community_server/src/Model/Transactions/TransactionCreation.php deleted file mode 100644 index 87f2d2104..000000000 --- a/community_server/src/Model/Transactions/TransactionCreation.php +++ /dev/null @@ -1,249 +0,0 @@ -protoTransactionCreation = $protoTransactionCreation; - $this->transactionCreationsTable = TableRegistry::getTableLocator()->get('transaction_creations'); - $this->receiver_pubkey_hex = bin2hex($this->getReceiverPublic()); - } - - public function getProto() { - return $this->protoTransactionCreation; - } - - static public function build($amount, $memo, $receiver_public_hex, $targetDate = null) - { - $receiver = new \Proto\Gradido\TransferAmount(); - $receiver->setAmount($amount); - //$this->receiver_pubkey_hex = $receiver_public_hex; - if(strlen($receiver_public_hex) != 64) { - return ['state' => 'error', 'msg' => 'invalid pubkey']; - } - $pubKeyBin = hex2bin($receiver_public_hex); - $receiver->setPubkey($pubKeyBin); - //var_dump($requestData); - - $creationDate = new \Proto\Gradido\TimestampSeconds(); - $creationDate->setSeconds(time()); - - $transactionBody = new \Proto\Gradido\TransactionBody(); - $transactionBody->setMemo($memo); - $transactionBody->setCreated($creationDate); - - - $transaction = new \Proto\Gradido\GradidoTransaction(); - $transaction->setReceiver($receiver); - //echo "target date: "; - //var_dump($targetDate); - //die('die'); - if($targetDate) { - $targetDateTimestamp = new \Proto\Gradido\TimestampSeconds(); - $targetDateTimestamp->setSeconds($targetDate->getTimestamp()); - //var_dump($targetDateTimestamp); die('target'); - $transaction->setTargetDate($targetDateTimestamp); - } - - $transactionBody->setCreation($transaction); - return ['state' => 'success', 'transactionBody' => $transactionBody]; - } - - - public function getAmount() { - return $this->protoTransactionCreation->getReceiver()->getAmount(); - } - - public function getReceiverPublic() { - return $this->protoTransactionCreation->getReceiver()->getPubkey(); - } - - public function getReceiverUser() { - return $this->getStateUserFromPublickey($this->getReceiverPublic()); - } - public function getTargetDate() { - return new FrozenDate($this->protoTransactionCreation->getTargetDate()->getSeconds()); - } - - public function validate($sigPairs) { - // check if receiver public is not in signature list - $receiverPublic = $this->getReceiverPublic(); - foreach($sigPairs as $sigPair) { - $pubkey = $sigPair->getPubKey(); - if($pubkey == $receiverPublic) { - $this->addError('TransactionCreation::validate', 'receiver aren\'t allowed to sign creation Transaction'); - return false; - } - } - - - /////////////// new validation, not more than 1K GDD per month via target_date /////////////////////////// - $existingCreations2 = $this->transactionCreationsTable - ->find('all') - ->select(['amount', 'state_user_id', 'target_date']) - ->contain(['StateUsers' => ['fields' => ['StateUsers.public_key']]]); - $q = $existingCreations2; - $targetDate = $this->protoTransactionCreation->getTargetDate(); - - $targetDateFrozen = new FrozenDate($targetDate->getSeconds()); - $targetDateMonthYearConcat = $targetDateFrozen->format('Ym'); - - $existingCreations2->where([ - 'target_date IS NOT' => NULL, - 'EXTRACT(YEAR_MONTH FROM target_date) LIKE ' => $targetDateMonthYearConcat, - ]); - - $newSum2 = $this->getAmount(); - $receiverEmail = ''; - foreach($existingCreations2 as $creation) { - $keyHex = bin2hex(stream_get_contents($creation->state_user->public_key)); - //echo "\ncompare \n$keyHex\nwith: \n". $this->receiver_pubkey_hex."\n"; - if($keyHex == $this->receiver_pubkey_hex) { - $newSum2 += $creation->amount; - $receiverEmail = $creation->state_user->email; - } - //$newSum2 += $creation->amount; - } - - /*if(!$existingCreations2->count()) { - if($newSum > 30000000) { - $this->addError('TransactionCreation::validate', 'Creation more than 1.000 GDD per Month (3 Month) not allowed'); - return false; - } - } else {*/ - if($newSum2 <= 0) { - $this->addError( - 'TransactionCreation::validate', - 'Creation less than 0 GDD per Month for '. $receiverEmail .' in target_date not allowed' - ); - } - if($newSum2 > 10000000) { - $this->addError( - 'TransactionCreation::validate', - 'Creation more than 1.000 GDD per Month for '. $receiverEmail .' in target_date not allowed' - ); - return false; - //} - } - - return true; - } - - public function save($transaction_id, $firstPublic, $received) - { - $stateBalancesTable = self::getTable('stateBalances'); - - $transactionCreationEntity = $this->transactionCreationsTable->newEntity(); - $transactionCreationEntity->transaction_id = $transaction_id; - - // state user id - //$state_user_id = $this->getStateUserId($firstPublic); - $receiverUserId = $this->getStateUserId($this->getReceiverPublic()); - if(!$receiverUserId) { - $this->addError('TransactionCreation::save', 'couldn\'t get state user id'); - return false; - } - - $transactionCreationEntity->state_user_id = $receiverUserId; - $transactionCreationEntity->amount = $this->getAmount(); - $transactionCreationEntity->target_date = $this->protoTransactionCreation->getTargetDate()->getSeconds(); - $target_date = new FrozenTime($transactionCreationEntity->target_date); - - //$decayed_balance = $stateBalancesTable->calculateDecay($this->getAmount(), $target_date, $received); - $balance = $this->getAmount(); - - if(!$this->transactionCreationsTable->save($transactionCreationEntity)) { - $this->addError('TransactionCreation::save', 'error saving transactionCreation with errors: ' . json_encode($transactionCreationEntity->getErrors())); - return false; - } - - // update state balance - $final_balance = $this->updateStateBalance($receiverUserId, $balance, $received); - if(false === $final_balance) { - return false; - } - - // decay is a virtual field which is calculated from amount and now() - record_date - if(!$this->addStateUserTransaction($receiverUserId, $transaction_id, 1, $balance, $received)) { - return false; - } - - return true; - } - - public function sendNotificationEmail($memo) - { - $disable_email = Configure::read('disableEmail', false); - if($disable_email) return true; - // send notification email - $receiverUserId = $this->getStateUserId($this->getReceiverPublic()); - $receiverUser = $this->getStateUser($receiverUserId); - $noReplyEmail = Configure::read('noReplyEmail'); - - try { - $email = new Email(); - $emailViewBuilder = $email->viewBuilder(); - $emailViewBuilder->setTemplate('notificationCreation') - ->setVars(['user' => $receiverUser, 'gdd_cent' => $this->getAmount(), 'memo' => $memo]); - $receiverNames = $receiverUser->getNames(); - if($receiverNames == '' || $receiverUser->email == '') { - $this->addError('TransactionCreation::sendNotificationEmail', 'to email is empty for user: ' . $receiverUser->id); - return false; - } - $email->setFrom([$noReplyEmail => 'Gradido (nicht antworten)']) - ->setTo([$receiverUser->email => $receiverUser->getNames()]) - ->setSubject(__('Gradido Schöpfung erhalten')) - ->send(); - } catch(Exception $e) { -// $this->addError('TransactionCreation::sendNotificationEmail', 'error sending notification email: ' . $e->getMessage()); - $this->addWarning('TransactionCreation::sendNotificationEmail', 'error sending notification email: ' . $e->getMessage()); - return false; - } - return true; - } - - static public function fromEntity($transactionCreationEntity) - { - $protoCreation = new \Proto\Gradido\GradidoCreation(); - - //var_dump($transactionCreationEntity); - $stateUsersTable = TableRegistry::getTableLocator()->get('state_users'); - //return new TransactionCreation($protoCreation); - $userId = $transactionCreationEntity->state_user_id; - - - $stateUser = $stateUsersTable->get($userId); - - - $receiverAmount = new \Proto\Gradido\TransferAmount(); - $receiverAmount->setPubkey(stream_get_contents($stateUser->public_key)); - $receiverAmount->setAmount($transactionCreationEntity->amount); - - $protoCreation->setReceiver($receiverAmount); - - // TODO: add target_date - // function currently not used, maybe can even be deleted - - //echo "receiver amount: check
    "; - //$identHashBytes = stream_get_contents($transactionCreationEntity->ident_hash); - - // intval - //$protoCreation->setIdentHash(intval($identHashBytes)); - //$protoCreation->setIdentHash(self::DRMakeStringHash($stateUser->email)); - return new TransactionCreation($protoCreation); - } -} diff --git a/community_server/src/Model/Transactions/TransactionTransfer.php b/community_server/src/Model/Transactions/TransactionTransfer.php deleted file mode 100644 index dc1606f55..000000000 --- a/community_server/src/Model/Transactions/TransactionTransfer.php +++ /dev/null @@ -1,249 +0,0 @@ -protoTransactionTransfer = $protoTransactionTransfer; - } - - public function getProto() { - return $this->protoTransactionTransfer; - } - - static public function build($amount, $memo, $receiver_public_hex, $sender_public_hex) - { - // repeated SenderAmount senderAmounts = 1; - // repeated ReceiverAmount receiverAmounts = 2; - - $sender = new \Proto\Gradido\TransferAmount(); - $sender->setAmount($amount); - - if(strlen($receiver_public_hex) != 64) { - return ['state' => 'error', 'msg' => 'invalid receiver pubkey']; - } - if(strlen($sender_public_hex) != 64) { - return ['state' => 'error', 'msg' => 'invalid sender pubkey']; - } - $receiverPubKeyBin = hex2bin($receiver_public_hex); - - $senderPubKeyBin = hex2bin($sender_public_hex); - $sender->setPubkey($senderPubKeyBin); - //var_dump($requestData); - - $creationDate = new \Proto\Gradido\TimestampSeconds(); - $creationDate->setSeconds(time()); - - $transactionBody = new \Proto\Gradido\TransactionBody(); - $transactionBody->setMemo($memo); - $transactionBody->setCreated($creationDate); - - $transfer = new \Proto\Gradido\GradidoTransfer(); - $local_transfer = new \Proto\Gradido\LocalTransfer(); - $local_transfer->setReceiver($receiverPubKeyBin); - $local_transfer->setSender($sender); - $transfer->setLocal($local_transfer); - $transactionBody->setTransfer($transfer); - return ['state' => 'success', 'transactionBody' => $transactionBody]; - } - - public function validate($sigPairs) { - //$this->addError('TransactionTransfer::validate', 'not implemented yet'); - //return false; - //$time = microtime(true); - static $functionName = 'TransactionTransfer::validate'; - - $sigPubHexs = []; - foreach($sigPairs as $sigPair) - { - $pubkey = $sigPair->getPubKey(); - $pubkey_hex = bin2hex($pubkey); - //$hash = TransactionCreation::DRMakeStringHash($pubkey); - $hash = $pubkey_hex; - if(!isset($sigPubHexs[$hash])) { - $sigPubHexs[$hash] = [$pubkey_hex]; - } else { - array_push($sigPubHexs[$hash], $pubkey_hex); - } - //array_push($sigPubHexs, $pubkey); - } - - $stateUsersTable = TableRegistry::getTableLocator()->get('state_users'); - $local_transfer = $this->protoTransactionTransfer->getLocal(); - $sender = $local_transfer->getSender(); - $senderPublic = $sender->getPubkey(); - $senderPublicHex = bin2hex($senderPublic); - if(strlen($senderPublicHex) != 64) { - $this->addError($functionName, 'invalid sender public key'); - return false; - } - // check if signature exist for sender - //$hash = TransactionCreation::DRMakeStringHash($senderPublicHex); - $hash = $senderPublicHex; - if(!isset($sigPubHexs[$hash]) || in_array($senderPublicHex, $sigPubHexs[$hash]) === FALSE) { - $this->addError($functionName, 'missing signature for sender'); - return false; - } - // check if sender has enough Gradido - $amount = $sender->getAmount(); - $user = $stateUsersTable - ->find('all') - ->select(['id']) - ->where(['public_key' => $senderPublic]) - ->contain(['StateBalances' => ['fields' => ['amount', 'state_user_id']]])->first(); - if(!$user) { - $this->addError($functionName, 'couldn\'t find sender in db' ); - return false; - } - //var_dump($user); - if(intval($user->state_balances[0]->amount) < intval($amount)) { - $this->addError($functionName, 'sender hasn\t enough GDD'); - return false; - } - - $receiver_public_key = $local_transfer->getReceiver(); - if(strlen($receiver_public_key) != 32) { - $this->addError($functionName, 'invalid receiver public key'); - return false; - } - // check if receiver exist - $receiver_user = $stateUsersTable->find('all')->select(['id'])->where(['public_key' => $receiver_public_key])->first(); - if(!$receiver_user) { - $this->addError($functionName, 'couldn\'t find receiver in db' ); - return false; - } - if($amount < 0) { - $this->addError($functionName, 'negative amount not supported'); - return false; - } - return true; - } - - public function save($transaction_id, $firstPublic, $received) { - - static $functionName = 'TransactionCreation::save'; - $local_transfer = $this->protoTransactionTransfer->getLocal(); - - $senderAmount = $local_transfer->getSender(); - $receiver = $local_transfer->getReceiver(); - - $transactionTransferTable = TableRegistry::getTableLocator()->get('TransactionSendCoins'); - - $senderUserId = $this->getStateUserId($senderAmount->getPubkey()); - $receiverUserId = $this->getStateUserId($receiver); - - if($senderUserId === NULL || $receiverUserId === NULL) { - return false; - } - - $finalSenderBalance = $this->updateStateBalance($senderUserId, -$senderAmount->getAmount(), $received); - if(false === $finalSenderBalance) { - return false; - } - if(false === $this->updateStateBalance($receiverUserId, $senderAmount->getAmount(), $received)) { - return false; - } - - $transactionTransferEntity = $transactionTransferTable->newEntity(); - $transactionTransferEntity->transaction_id = $transaction_id; - $transactionTransferEntity->state_user_id = $senderUserId; - $transactionTransferEntity->sender_public_key = $senderAmount->getPubkey(); - $transactionTransferEntity->receiver_public_key = $receiver; - $transactionTransferEntity->receiver_user_id = $receiverUserId; - $transactionTransferEntity->amount = $senderAmount->getAmount(); - $transactionTransferEntity->sender_final_balance = $finalSenderBalance; - - if(!$transactionTransferTable->save($transactionTransferEntity)) { - $this->addError($functionName, 'error saving transactionSendCoins with errors: ' . json_encode($transactionTransferEntity->getErrors())); - return false; - } - - if(!$this->addStateUserTransaction($senderUserId, $transaction_id, 2, $senderAmount->getAmount(), $received)) { - return false; - } - if(!$this->addStateUserTransaction($receiverUserId, $transaction_id, 2, -$senderAmount->getAmount(), $received)) { - return false; - } - - //$this->addError('TransactionTransfer::save', 'not implemented yet'); - //return false; - return true; - } - - public function sendNotificationEmail($memo) - { - // send notification email - $disable_email = Configure::read('disableEmail', false); - if($disable_email) return true; - - $local_transfer = $this->protoTransactionTransfer->getLocal(); - $sender = $local_transfer->getSender(); - $senderAmount = $sender->getAmount(); - $senderUser = $this->getStateUserFromPublickey($sender->getPubkey()); - $receiverUser = $this->getStateUserFromPublickey($local_transfer->getReceiver()); - - $serverAdminEmail = Configure::read('ServerAdminEmail'); - - try { - $email = new Email(); - $emailViewBuilder = $email->viewBuilder(); - $emailViewBuilder->setTemplate('notificationTransfer') - ->setVars(['receiverUser' => $receiverUser, - 'senderUser' => $senderUser, - 'gdd_cent' => $senderAmount, - 'memo' => $memo]); - $receiverNames = $receiverUser->getNames(); - if($receiverNames == '' || $receiverUser->email == '') { - $this->addError('TransactionCreation::sendNotificationEmail', 'to email is empty for user: ' . $receiverUser->id); - return false; - } - $noReplyEmail = Configure::read('noReplyEmail'); - $email->setFrom([$noReplyEmail => 'Gradido (nicht antworten)']) - ->setTo([$receiverUser->email => $receiverUser->getNames()]) - ->setSubject(__('Gradidos erhalten')) - ->send(); - } catch(Exception $e) { - //$this->addError('TransactionTransfer::sendNotificationEmail', 'error sending notification email: ' . $e->getMessage()); - $this->addWarning('TransactionTransfer::sendNotificationEmail', 'error sending notification email: ' . $e->getMessage()); - return false; - } - return true; - } - - public function getSenderUser() - { - $local_transfer = $this->protoTransactionTransfer->getLocal(); - return $this->getStateUserFromPublickey($local_transfer->getSender()->getPubkey()); - } - - public function getReceiverUser() - { - $local_transfer = $this->protoTransactionTransfer->getLocal(); - return $this->getStateUserFromPublickey($local_transfer->getReceiver()); - } - - public function getAmount() - { - $local_transfer = $this->protoTransactionTransfer->getLocal(); - $sender = $local_transfer->getSender(); - return $sender->getAmount(); - } - - static public function fromEntity($transactionTransferEntity) - { - $protoTransfer = new \Proto\Gradido\GradidoTransfer(); - - $stateUsersTable = TableRegistry::getTableLocator()->get('state_users'); - - - return new TransactionTransfer($protoTransfer); - } -} - diff --git a/community_server/src/Model/Validation/GenericValidation.php b/community_server/src/Model/Validation/GenericValidation.php deleted file mode 100644 index 839441454..000000000 --- a/community_server/src/Model/Validation/GenericValidation.php +++ /dev/null @@ -1,35 +0,0 @@ -]|>|<|javascript:){1,}/', $value)) { - return false; - } - return true; - } - - public static function email($value, array $context) { - if(preg_match('/^[a-zA-Z0-9.!#$%&’*+\/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/', $value)) { - return true; - } - return false; - } -} \ No newline at end of file diff --git a/community_server/src/Model/Validation/TransactionValidation.php b/community_server/src/Model/Validation/TransactionValidation.php deleted file mode 100644 index 9705ef40b..000000000 --- a/community_server/src/Model/Validation/TransactionValidation.php +++ /dev/null @@ -1,49 +0,0 @@ - 'en_GB']); - $numberparts = preg_split('/\./', $checkFloatVal); - //var_dump($numberparts); - if(isset($numberparts[1]) && strlen($numberparts[1]) > 2) return false; - - $floatVal = floatval(Number::format($value, ['places' => 4, 'locale' => 'en_GB'])); - //echo "floatVal: $floatVal
    "; - return $floatVal >= 0.0; - } - - public static function hexKey64($value, array $context) { - if(strlen($value) != 64) return false; - if(preg_match('/^[[:xdigit:]]*$/', $value)) { - return true; - } - return false; - } - - public static function hexKey128($value, array $context) { - if(strlen($value) != 128) return false; - if(preg_match('/^[[:xdigit:]]*$/', $value)) { - return true; - } - return false; - } - - public static function alphaNumeric($value, array $context) { - //if(preg_match('/^[a-zA-Z0-9äöüÄÖÜß _;:()-]\n\r*$/', $value)) { - if(preg_match('/([<>]|>|<|javascript:){1,}/', $value)) { - return false; - } - return true; - } -} \ No newline at end of file diff --git a/community_server/src/Shell/ConsoleShell.php b/community_server/src/Shell/ConsoleShell.php deleted file mode 100644 index f7bfe8ed4..000000000 --- a/community_server/src/Shell/ConsoleShell.php +++ /dev/null @@ -1,81 +0,0 @@ -err('Unable to load Psy\Shell.'); - $this->err(''); - $this->err('Make sure you have installed psysh as a dependency,'); - $this->err('and that Psy\Shell is registered in your autoloader.'); - $this->err(''); - $this->err('If you are using composer run'); - $this->err(''); - $this->err('$ php composer.phar require --dev psy/psysh'); - $this->err(''); - - return self::CODE_ERROR; - } - - $this->out("You can exit with `CTRL-C` or `exit`"); - $this->out(''); - - Log::drop('debug'); - Log::drop('error'); - $this->_io->setLoggers(false); - restore_error_handler(); - restore_exception_handler(); - - $psy = new PsyShell(); - $psy->run(); - } - - /** - * Display help for this console. - * - * @return \Cake\Console\ConsoleOptionParser - */ - public function getOptionParser() - { - $parser = new ConsoleOptionParser('console'); - $parser->setDescription( - 'This shell provides a REPL that you can use to interact with ' . - 'your application in a command line designed to run PHP code. ' . - 'You can use it to run adhoc queries with your models, or ' . - 'explore the features of CakePHP and your application.' . - "\n\n" . - 'You will need to have psysh installed for this Shell to work.' - ); - - return $parser; - } -} diff --git a/community_server/src/Template/AddressTypes/add.ctp b/community_server/src/Template/AddressTypes/add.ctp deleted file mode 100644 index f62c5115e..000000000 --- a/community_server/src/Template/AddressTypes/add.ctp +++ /dev/null @@ -1,28 +0,0 @@ - - -
    - Form->create($addressType) ?> -
    - - Form->control('name'); - echo $this->Form->control('text'); - ?> -
    - Form->button(__('Submit')) ?> - Form->end() ?> -
    diff --git a/community_server/src/Template/AddressTypes/edit.ctp b/community_server/src/Template/AddressTypes/edit.ctp deleted file mode 100644 index 3e363e331..000000000 --- a/community_server/src/Template/AddressTypes/edit.ctp +++ /dev/null @@ -1,34 +0,0 @@ - - -
    - Form->create($addressType) ?> -
    - - Form->control('name'); - echo $this->Form->control('text'); - ?> -
    - Form->button(__('Submit')) ?> - Form->end() ?> -
    diff --git a/community_server/src/Template/AddressTypes/index.ctp b/community_server/src/Template/AddressTypes/index.ctp deleted file mode 100644 index 905d406a1..000000000 --- a/community_server/src/Template/AddressTypes/index.ctp +++ /dev/null @@ -1,53 +0,0 @@ - - -
    -

    - - - - - - - - - - - - - - - - - - - -
    Paginator->sort('id') ?>Paginator->sort('name') ?>Paginator->sort('text') ?>
    Number->format($addressType->id) ?>name) ?>text) ?> - Html->link(__('View'), ['action' => 'view', $addressType->id]) ?> - Html->link(__('Edit'), ['action' => 'edit', $addressType->id]) ?> - Form->postLink(__('Delete'), ['action' => 'delete', $addressType->id], ['confirm' => __('Are you sure you want to delete # {0}?', $addressType->id)]) ?> -
    -
    -
      - Paginator->first('<< ' . __('first')) ?> - Paginator->prev('< ' . __('previous')) ?> - Paginator->numbers() ?> - Paginator->next(__('next') . ' >') ?> - Paginator->last(__('last') . ' >>') ?> -
    -

    Paginator->counter(['format' => __('Page {{page}} of {{pages}}, showing {{current}} record(s) out of {{count}} total')]) ?>

    -
    -
    diff --git a/community_server/src/Template/AddressTypes/view.ctp b/community_server/src/Template/AddressTypes/view.ctp deleted file mode 100644 index 69817e264..000000000 --- a/community_server/src/Template/AddressTypes/view.ctp +++ /dev/null @@ -1,92 +0,0 @@ - - -
    -

    name) ?>

    - - - - - - - - - - - - - -
    name) ?>
    text) ?>
    Number->format($addressType->id) ?>
    - - -
    diff --git a/community_server/src/Template/AdminErrors/add.ctp b/community_server/src/Template/AdminErrors/add.ctp deleted file mode 100644 index b69f68213..000000000 --- a/community_server/src/Template/AdminErrors/add.ctp +++ /dev/null @@ -1,30 +0,0 @@ - - -
    - Form->create($adminError) ?> -
    - - Form->control('state_user_id', ['options' => $stateUsers]); - echo $this->Form->control('controller'); - echo $this->Form->control('action'); - echo $this->Form->control('state'); - echo $this->Form->control('msg'); - echo $this->Form->control('details'); - ?> -
    - Form->button(__('Submit')) ?> - Form->end() ?> -
    diff --git a/community_server/src/Template/AdminErrors/edit.ctp b/community_server/src/Template/AdminErrors/edit.ctp deleted file mode 100644 index dea74b94b..000000000 --- a/community_server/src/Template/AdminErrors/edit.ctp +++ /dev/null @@ -1,36 +0,0 @@ - - -
    - Form->create($adminError) ?> -
    - - Form->control('state_user_id', ['options' => $stateUsers]); - echo $this->Form->control('controller'); - echo $this->Form->control('action'); - echo $this->Form->control('state'); - echo $this->Form->control('msg'); - echo $this->Form->control('details'); - ?> -
    - Form->button(__('Submit')) ?> - Form->end() ?> -
    diff --git a/community_server/src/Template/AdminErrors/index.ctp b/community_server/src/Template/AdminErrors/index.ctp deleted file mode 100644 index 96e077ce1..000000000 --- a/community_server/src/Template/AdminErrors/index.ctp +++ /dev/null @@ -1,58 +0,0 @@ - - -
    -
    -
    -
    Paginator->sort('id') ?>
    -
    Paginator->sort('state_user_id') ?>
    -
    Paginator->sort('controller') ?>
    -
    Paginator->sort('action') ?>
    -
    Paginator->sort('state') ?>
    -
    Paginator->sort('msg') ?>
    -
    Paginator->sort('details') ?>
    -
    Paginator->sort('created') ?>
    -
    -
    - -
    -
    Number->format($adminError->id) ?>
    -
    has('state_user') ? $this->Html->link($adminError->state_user->id, ['controller' => 'StateUsers', 'action' => 'view', $adminError->state_user->id]) : '' ?>
    -
    controller) ?>
    -
    action) ?>
    -
    state) ?>
    -
    msg) ?>
    -
    details) ?>
    -
    created) ?>
    -
    - Html->link(__('View'), ['action' => 'view', $adminError->id]) ?> -   - Html->link(__('Edit'), ['action' => 'edit', $adminError->id]) ?> -   - Form->postLink(__('Delete'), ['action' => 'delete', $adminError->id], ['confirm' => __('Are you sure you want to delete # {0}?', $adminError->id)]) ?> -
    -
    - -
    -
    - -

    Paginator->counter(['format' => __('Page {{page}} of {{pages}}, showing {{current}} record(s) out of {{count}} total')]) ?>

    -
    -
    diff --git a/community_server/src/Template/AdminErrors/view.ctp b/community_server/src/Template/AdminErrors/view.ctp deleted file mode 100644 index 0b0bebb64..000000000 --- a/community_server/src/Template/AdminErrors/view.ctp +++ /dev/null @@ -1,54 +0,0 @@ - - -
    -

    id) ?>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    has('state_user') ? $this->Html->link($adminError->state_user->id, ['controller' => 'StateUsers', 'action' => 'view', $adminError->state_user->id]) : '' ?>
    controller) ?>
    action) ?>
    state) ?>
    msg) ?>
    details) ?>
    Number->format($adminError->id) ?>
    created) ?>
    -
    diff --git a/community_server/src/Template/AppRequests/get_balance.ctp b/community_server/src/Template/AppRequests/get_balance.ctp deleted file mode 100644 index 7dd4d6025..000000000 --- a/community_server/src/Template/AppRequests/get_balance.ctp +++ /dev/null @@ -1,15 +0,0 @@ -element('centToFloat', ['cent' => $body['balance'], 'precision' => 4]); -} -if(isset($body['decay'])) { - $body['decay'] = $this->element('centToFloat', ['cent' => $body['decay'], 'precision' => 4]); -} -?> \ No newline at end of file diff --git a/community_server/src/Template/AppRequests/list_transactions.ctp b/community_server/src/Template/AppRequests/list_transactions.ctp deleted file mode 100644 index 174092273..000000000 --- a/community_server/src/Template/AppRequests/list_transactions.ctp +++ /dev/null @@ -1,31 +0,0 @@ -element('centToFloat', ['cent' => $body['balance'], 'precision' => 4]); -$body['decay'] = $this->element('centToFloat', ['cent' => $body['decay'], 'precision' => 4]); -$body['gdtSum'] = $this->element('centToFloat', ['cent' => $body['gdtSum'], 'precision' => 2]); - -foreach($body['transactions'] as $i => $transaction) { - $useCeil = false; - if(!isset($transaction['type'])) { - $body = ['state' => 'error', 'msg' => 'transaction without type found', 'details' => $transaction]; - } else { - if($transaction['type'] == 'decay') { - $useCeil = true; - } - $body['transactions'][$i]['balance'] = $this->element('centToFloat', ['cent' => $transaction['balance'], 'precision' => 4, 'useCeil' => $useCeil]); - if(isset($transaction['creation_amount'])) { - $body['transactions'][$i]['creation_amount'] = $this->element('centToFloat', ['cent' => $transaction['creation_amount'], 'precision' => 4]); - } - if(isset($transaction['decay'])) { - $body['transactions'][$i]['decay']['balance'] = $this->element('centToFloat', ['cent' => $transaction['decay']['balance'], 'precision' => 4]); - } - } -} - -?> \ No newline at end of file diff --git a/community_server/src/Template/BlockchainTypes/add.ctp b/community_server/src/Template/BlockchainTypes/add.ctp deleted file mode 100644 index bef6b70c5..000000000 --- a/community_server/src/Template/BlockchainTypes/add.ctp +++ /dev/null @@ -1,25 +0,0 @@ - - -
    - Form->create($blockchainType) ?> -
    - - Form->control('name'); - echo $this->Form->control('text'); - echo $this->Form->control('symbol'); - ?> -
    - Form->button(__('Submit')) ?> - Form->end() ?> -
    diff --git a/community_server/src/Template/BlockchainTypes/edit.ctp b/community_server/src/Template/BlockchainTypes/edit.ctp deleted file mode 100644 index 40cd7849b..000000000 --- a/community_server/src/Template/BlockchainTypes/edit.ctp +++ /dev/null @@ -1,31 +0,0 @@ - - -
    - Form->create($blockchainType) ?> -
    - - Form->control('name'); - echo $this->Form->control('text'); - echo $this->Form->control('symbol'); - ?> -
    - Form->button(__('Submit')) ?> - Form->end() ?> -
    diff --git a/community_server/src/Template/BlockchainTypes/index.ctp b/community_server/src/Template/BlockchainTypes/index.ctp deleted file mode 100644 index 457782043..000000000 --- a/community_server/src/Template/BlockchainTypes/index.ctp +++ /dev/null @@ -1,51 +0,0 @@ - - -
    -

    - - - - - - - - - - - - - - - - - - - - - -
    Paginator->sort('id') ?>Paginator->sort('name') ?>Paginator->sort('text') ?>Paginator->sort('symbol') ?>
    Number->format($blockchainType->id) ?>name) ?>text) ?>symbol) ?> - Html->link(__('View'), ['action' => 'view', $blockchainType->id]) ?> - Html->link(__('Edit'), ['action' => 'edit', $blockchainType->id]) ?> - Form->postLink(__('Delete'), ['action' => 'delete', $blockchainType->id], ['confirm' => __('Are you sure you want to delete # {0}?', $blockchainType->id)]) ?> -
    -
    -
      - Paginator->first('<< ' . __('first')) ?> - Paginator->prev('< ' . __('previous')) ?> - Paginator->numbers() ?> - Paginator->next(__('next') . ' >') ?> - Paginator->last(__('last') . ' >>') ?> -
    -

    Paginator->counter(['format' => __('Page {{page}} of {{pages}}, showing {{current}} record(s) out of {{count}} total')]) ?>

    -
    -
    diff --git a/community_server/src/Template/BlockchainTypes/view.ctp b/community_server/src/Template/BlockchainTypes/view.ctp deleted file mode 100644 index 481cc7b90..000000000 --- a/community_server/src/Template/BlockchainTypes/view.ctp +++ /dev/null @@ -1,36 +0,0 @@ - - -
    -

    name) ?>

    - - - - - - - - - - - - - - - - - -
    name) ?>
    text) ?>
    symbol) ?>
    Number->format($blockchainType->id) ?>
    -
    diff --git a/community_server/src/Template/Cell/empty b/community_server/src/Template/Cell/empty deleted file mode 100644 index 8b1378917..000000000 --- a/community_server/src/Template/Cell/empty +++ /dev/null @@ -1 +0,0 @@ - diff --git a/community_server/src/Template/CommunityProfiles/add.ctp b/community_server/src/Template/CommunityProfiles/add.ctp deleted file mode 100644 index ab7ce0f6b..000000000 --- a/community_server/src/Template/CommunityProfiles/add.ctp +++ /dev/null @@ -1,24 +0,0 @@ - - -
    - Form->create($communityProfile) ?> -
    - - Form->control('state_user_id'); - echo $this->Form->control('profile_desc'); - ?> -
    - Form->button(__('Submit')) ?> - Form->end() ?> -
    diff --git a/community_server/src/Template/CommunityProfiles/edit.ctp b/community_server/src/Template/CommunityProfiles/edit.ctp deleted file mode 100644 index 230e3b685..000000000 --- a/community_server/src/Template/CommunityProfiles/edit.ctp +++ /dev/null @@ -1,30 +0,0 @@ - - -
    - Form->create($communityProfile) ?> -
    - - Form->control('state_user_id'); - echo $this->Form->control('profile_desc'); - ?> -
    - Form->button(__('Submit')) ?> - Form->end() ?> -
    diff --git a/community_server/src/Template/CommunityProfiles/index.ctp b/community_server/src/Template/CommunityProfiles/index.ctp deleted file mode 100644 index 12f3c03b1..000000000 --- a/community_server/src/Template/CommunityProfiles/index.ctp +++ /dev/null @@ -1,49 +0,0 @@ - - -
    -

    - - - - - - - - - - - - - - - - - - - -
    Paginator->sort('id') ?>Paginator->sort('state_user_id') ?>Paginator->sort('profile_desc') ?>
    Number->format($communityProfile->id) ?>Number->format($communityProfile->state_user_id) ?>profile_desc) ?> - Html->link(__('View'), ['action' => 'view', $communityProfile->id]) ?> - Html->link(__('Edit'), ['action' => 'edit', $communityProfile->id]) ?> - Form->postLink(__('Delete'), ['action' => 'delete', $communityProfile->id], ['confirm' => __('Are you sure you want to delete # {0}?', $communityProfile->id)]) ?> -
    -
    -
      - Paginator->first('<< ' . __('first')) ?> - Paginator->prev('< ' . __('previous')) ?> - Paginator->numbers() ?> - Paginator->next(__('next') . ' >') ?> - Paginator->last(__('last') . ' >>') ?> -
    -

    Paginator->counter(['format' => __('Page {{page}} of {{pages}}, showing {{current}} record(s) out of {{count}} total')]) ?>

    -
    -
    diff --git a/community_server/src/Template/CommunityProfiles/view.ctp b/community_server/src/Template/CommunityProfiles/view.ctp deleted file mode 100644 index 1f8aaf0f4..000000000 --- a/community_server/src/Template/CommunityProfiles/view.ctp +++ /dev/null @@ -1,32 +0,0 @@ - - -
    -

    id) ?>

    - - - - - - - - - - - - - -
    profile_desc) ?>
    Number->format($communityProfile->id) ?>
    Number->format($communityProfile->state_user_id) ?>
    -
    diff --git a/community_server/src/Template/Dashboard/error_http_request.ctp b/community_server/src/Template/Dashboard/error_http_request.ctp deleted file mode 100644 index cdbbec19b..000000000 --- a/community_server/src/Template/Dashboard/error_http_request.ctp +++ /dev/null @@ -1,14 +0,0 @@ -assign('title', __('Error, Please try again')); -?> - -
    - -
    diff --git a/community_server/src/Template/Dashboard/index.ctp b/community_server/src/Template/Dashboard/index.ctp deleted file mode 100644 index fdfe5b072..000000000 --- a/community_server/src/Template/Dashboard/index.ctp +++ /dev/null @@ -1,143 +0,0 @@ -assign( - 'title', - __('Willkommen') . ', ' . $user['first_name'] . ' ' . $user['last_name'] . '!' -); -$this->assign( - 'header', - '

    '.__('Willkommen') . ', ' . $user['first_name'] . ' ' . $user['last_name'] . '!

    ' -); -?> - - ms - -
    -

    Gradido ...

    -
    -
    - account_balance_wallet - Html->link( - __('Kontoübersicht'), - ['controller' => 'StateBalances', 'action' => 'overview'], - ['class' => 'action-button-link'] - );?> -
    -
    - account_balance - Html->link( - __('Überweisung'), - ['controller' => 'TransactionSendCoins', 'action' => 'create'], - ['class' => 'action-button-link'] - ); ?> -
    -
    -
    - - -
    -

    -

    Gradido ...

    -
    -
    - redeem - Html->link( - __('viele schöpfen'), - ['controller' => 'TransactionCreations', 'action' => 'createMulti'], - ['class' => 'action-button-link'] - );?> -
    -
    -
    -
    - Statistik -
    -
    - cached - Html->link( - __('Anmeldungen'), - ['controller' => 'Users', 'action' => 'statistics'], - ['class' => 'info-item-link'] - );?> -
    - -
    - error_outline - Html->link( - __('Fehler') . ' (' . $adminErrorCount . ')', - ['controller' => 'AdminErrors'], ['class' => 'info-item-link']); - ?> -
    - -
    -
    - - -
    -

    Benutzer ...

    -
    -
    - search - Html->link( - __('suchen'), - ['controller' => 'StateUsers', 'action' => 'search'], - ['class' => 'info-item-link'] - ); ?> -
    -
    - how_to_reg - - - -
    -
    - enhanced_encryption - - - -
    -
    -
    -
    -

    Login Server ...

    -
    -
    - groups - - - -
    -
    - servers - - - -
    -
    - topics - - - -
    -
    -
    -
    - hedera_accounts - - - -
    -
    - diff --git a/community_server/src/Template/Dashboard/server_index.ctp b/community_server/src/Template/Dashboard/server_index.ctp deleted file mode 100644 index 1b4da7647..000000000 --- a/community_server/src/Template/Dashboard/server_index.ctp +++ /dev/null @@ -1,36 +0,0 @@ -assign('title', __('Willkommen')); -$this->assign( - 'header', - '

    Server Dashboard, nur für Admins

    ' -); -?> -
    -

    Gradido ...

    -
    -
    - redeem - Html->link( - __('viele schöpfen'), - ['controller' => 'TransactionCreations', 'action' => 'createMulti'], - ['class' => 'action-button-link'] - );?> -
    -
    -
    -
    - error_outline - Html->link( - __('Fehler') . ' (' . $adminErrorCount . ')', - ['controller' => 'AdminErrors'], ['class' => 'info-item-link']); - ?> -
    -
    -
    \ No newline at end of file diff --git a/community_server/src/Template/Element/Flash/default.ctp b/community_server/src/Template/Element/Flash/default.ctp deleted file mode 100644 index 694b244c1..000000000 --- a/community_server/src/Template/Element/Flash/default.ctp +++ /dev/null @@ -1,13 +0,0 @@ - - - diff --git a/community_server/src/Template/Element/Flash/error.ctp b/community_server/src/Template/Element/Flash/error.ctp deleted file mode 100644 index 65a8fbec3..000000000 --- a/community_server/src/Template/Element/Flash/error.ctp +++ /dev/null @@ -1,10 +0,0 @@ - - - \ No newline at end of file diff --git a/community_server/src/Template/Element/Flash/success.ctp b/community_server/src/Template/Element/Flash/success.ctp deleted file mode 100644 index 31a062095..000000000 --- a/community_server/src/Template/Element/Flash/success.ctp +++ /dev/null @@ -1,10 +0,0 @@ - - - - \ No newline at end of file diff --git a/community_server/src/Template/Element/centToFloat.ctp b/community_server/src/Template/Element/centToFloat.ctp deleted file mode 100644 index 3beabf837..000000000 --- a/community_server/src/Template/Element/centToFloat.ctp +++ /dev/null @@ -1,22 +0,0 @@ - 0) { - if(isset($useCeil) && $useCeil) { - $transformAmount = ceil($cent / pow(10, $cut_places)); - } else { - $transformAmount = floor($cent / pow(10, $cut_places)); - } -} -if($cut_places < 0) { - $cut_places = 0; -} -echo $transformAmount / pow(10, $precision - $cut_places); - diff --git a/community_server/src/Template/Element/navi.ctp b/community_server/src/Template/Element/navi.ctp deleted file mode 100644 index 33055197f..000000000 --- a/community_server/src/Template/Element/navi.ctp +++ /dev/null @@ -1,38 +0,0 @@ -getRequest()->getSession(); -$errorCount = intval($session->read('StateUser.errorCount')); -$balance = $session->read('StateUser.balance'); -//echo "balance: $balance
    "; -if(!isset($balance)) { - $balance = 0; -} - -$navi = []; -/*if($errorCount > 0) { - $errorNaviEntry = new NaviEntry(__('Fehler '). "($errorCount)", 'mdi-alert-outline', 'StateErrors', 'showForUser'); - $errorNaviEntry->setBGColor('bg-inverse-danger') - ->setIconColor('alert-color'); - array_push($navi, $errorNaviEntry); -}*/ -$balanceNaviEntry = new NaviEntry( - __('Kontoübersicht') . ' (' . - str_replace(array("\r", "\n"), '', strip_tags($this->element('printGradido', ['number' => $balance]))) - . ' )', - 'account_balance_wallet', 'StateBalances', 'overview' -); -if($balance < 0 ) { - //$balanceNaviEntry->setIconColor('alert-color'); -} else if($balance > 0) { - //$balanceNaviEntry->setIconColor('success-color'); -} -array_push($navi, $balanceNaviEntry); -array_push($navi, new NaviEntry(__('Startseite'), 'home', 'Dashboard', 'index')); -array_push($navi, new NaviEntry(__('Überweisung'), 'account_balance', 'TransactionSendCoins', 'create')); -array_push($navi, new NaviEntryExternLink(__('Mitgliederbereich'), 'people_alt', 'https://elopage.com/s/gradido/sign_in')); - -?> - diff --git a/community_server/src/Template/Element/navi_center.ctp b/community_server/src/Template/Element/navi_center.ctp deleted file mode 100644 index d07f44978..000000000 --- a/community_server/src/Template/Element/navi_center.ctp +++ /dev/null @@ -1,7 +0,0 @@ - \ No newline at end of file diff --git a/community_server/src/Template/Element/navi_header.ctp b/community_server/src/Template/Element/navi_header.ctp deleted file mode 100644 index cbc2eea97..000000000 --- a/community_server/src/Template/Element/navi_header.ctp +++ /dev/null @@ -1,45 +0,0 @@ -getRequest()->getSession(); -$errorCount = intval($session->read('StateUser.errorCount')); -$transactionPendings = $session->read('Transactions.pending'); - -/* -class NavHeaderEntry -{ - public function __construct($icon_name, $controller, $action, $title) { - ; - } - - public function -} -*/ -?> - \ No newline at end of file diff --git a/community_server/src/Template/Element/navi_notify.ctp b/community_server/src/Template/Element/navi_notify.ctp deleted file mode 100644 index 12ae74465..000000000 --- a/community_server/src/Template/Element/navi_notify.ctp +++ /dev/null @@ -1,44 +0,0 @@ -getRequest()->getSession(); -$errorCount = intval($session->read('StateUser.errorCount')); -$transactionPendings = $session->read('Transactions.pending'); -$transactionPendings += $session->read('Transactions.can_signed'); - -/* -class NavHeaderEntry -{ - public function __construct($icon_name, $controller, $action, $title) { - ; - } - - public function -} -*/ -?> - 0) : ?> - Html->link( - 'announcement' - . 'ss', - ['controller' => 'StateErrors', 'action' => 'ShowForUser'], - ['class' => 'nav-link', 'escape' => false, 'title' => "$errorCount " . __('Fehler')]) ?> - - 0) : ?> - " href="account/checkTransactions"> - verified_user - - () - - - diff --git a/community_server/src/Template/Element/printEuro.ctp b/community_server/src/Template/Element/printEuro.ctp deleted file mode 100644 index 976e4e007..000000000 --- a/community_server/src/Template/Element/printEuro.ctp +++ /dev/null @@ -1,24 +0,0 @@ - 0) $class = "grd-positive-currency";*/ -if($number < 0) { - $class = 'grd-negative-currency'; -} - -?> -Number->format(intval($number) / 100.0, ['precision' => 2]) . ' €';?> - - - Number->format(intval($number) / 100.0, ['precision' => 2]) . ' €';?> - - \ No newline at end of file diff --git a/community_server/src/Template/Element/printGDT.ctp b/community_server/src/Template/Element/printGDT.ctp deleted file mode 100644 index 8052283d0..000000000 --- a/community_server/src/Template/Element/printGDT.ctp +++ /dev/null @@ -1,24 +0,0 @@ - 0) $class = "grd-positive-currency";*/ -if($number < 0) { - $class = 'grd-negative-currency'; -} - -?> -Number->format(intval($number) / 100.0, ['precision' => 2]) . ' GDT';?> - - - Number->format(intval($number) / 100.0, ['precision' => 2]) . ' GDT';?> - - \ No newline at end of file diff --git a/community_server/src/Template/Element/printGradido.ctp b/community_server/src/Template/Element/printGradido.ctp deleted file mode 100644 index 404bdb70d..000000000 --- a/community_server/src/Template/Element/printGradido.ctp +++ /dev/null @@ -1,19 +0,0 @@ - -Number->format(intval($number) / 10000.0, ['precision' => 2]) . ' GDD';?> - - - Number->format(intval($number) / 10000.0, ['precision' => 2]) . ' GDD';?> - - \ No newline at end of file diff --git a/community_server/src/Template/Element/user_menu.ctp b/community_server/src/Template/Element/user_menu.ctp deleted file mode 100644 index 633674233..000000000 --- a/community_server/src/Template/Element/user_menu.ctp +++ /dev/null @@ -1,43 +0,0 @@ -getRequest()->getSession(); -$user = $session->read('StateUser'); -$transactionPendings = $session->read('Transactions.pending'); -$this->set('user', $user); -$navi = []; -array_push($navi, new NaviEntry(__('Mein Profil'), 'build', 'Profile', 'index')); -if(intval($transactionPendings) > 0) { -/* array_push($navi, new NaviEntryAbsoluteLink( - __("Transaktionen unterzeichnen") . ' (' . intval($transactionPendings) . ')', - 'mdi-signature-freehand', 'account/checkTransactions' - ));*/ -} else { - array_push($navi, new NaviEntryAbsoluteLink(__('Abmelden'), 'exit_to_app', 'account/logout')); -} -?> -
    - - account_circle -
    - - \ No newline at end of file diff --git a/community_server/src/Template/ElopageBuys/add.ctp b/community_server/src/Template/ElopageBuys/add.ctp deleted file mode 100644 index e9c2c6a80..000000000 --- a/community_server/src/Template/ElopageBuys/add.ctp +++ /dev/null @@ -1,33 +0,0 @@ - - -
    - Form->create($elopageBuy) ?> -
    - - Form->control('elopage_user_id'); - echo $this->Form->control('affiliate_program_id'); - echo $this->Form->control('publisher_id'); - echo $this->Form->control('order_id'); - echo $this->Form->control('product_id'); - echo $this->Form->control('product_price'); - echo $this->Form->control('payer_email'); - echo $this->Form->control('publisher_email'); - echo $this->Form->control('payed'); - echo $this->Form->control('success_date'); - echo $this->Form->control('event'); - ?> -
    - Form->button(__('Submit')) ?> - Form->end() ?> -
    diff --git a/community_server/src/Template/ElopageBuys/edit.ctp b/community_server/src/Template/ElopageBuys/edit.ctp deleted file mode 100644 index e33956b83..000000000 --- a/community_server/src/Template/ElopageBuys/edit.ctp +++ /dev/null @@ -1,39 +0,0 @@ - - -
    - Form->create($elopageBuy) ?> -
    - - Form->control('elopage_user_id'); - echo $this->Form->control('affiliate_program_id'); - echo $this->Form->control('publisher_id'); - echo $this->Form->control('order_id'); - echo $this->Form->control('product_id'); - echo $this->Form->control('product_price'); - echo $this->Form->control('payer_email'); - echo $this->Form->control('publisher_email'); - echo $this->Form->control('payed'); - echo $this->Form->control('success_date'); - echo $this->Form->control('event'); - ?> -
    - Form->button(__('Submit')) ?> - Form->end() ?> -
    diff --git a/community_server/src/Template/ElopageBuys/index.ctp b/community_server/src/Template/ElopageBuys/index.ctp deleted file mode 100644 index 4d5ecc1d1..000000000 --- a/community_server/src/Template/ElopageBuys/index.ctp +++ /dev/null @@ -1,67 +0,0 @@ - - -
    -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Paginator->sort('id') ?>Paginator->sort('elopage_user_id') ?>Paginator->sort('affiliate_program_id') ?>Paginator->sort('publisher_id') ?>Paginator->sort('order_id') ?>Paginator->sort('product_id') ?>Paginator->sort('product_price') ?>Paginator->sort('payer_email') ?>Paginator->sort('publisher_email') ?>Paginator->sort('payed') ?>Paginator->sort('success_date') ?>Paginator->sort('event') ?>
    Number->format($elopageBuy->id) ?>Number->format($elopageBuy->elopage_user_id) ?>Number->format($elopageBuy->affiliate_program_id) ?>Number->format($elopageBuy->publisher_id) ?>Number->format($elopageBuy->order_id) ?>Number->format($elopageBuy->product_id) ?>Number->format($elopageBuy->product_price) ?>payer_email) ?>publisher_email) ?>payed) ?>success_date) ?>event) ?> - Html->link(__('View'), ['action' => 'view', $elopageBuy->id]) ?> - Html->link(__('Edit'), ['action' => 'edit', $elopageBuy->id]) ?> - Form->postLink(__('Delete'), ['action' => 'delete', $elopageBuy->id], ['confirm' => __('Are you sure you want to delete # {0}?', $elopageBuy->id)]) ?> -
    -
    - -

    Paginator->counter(['format' => __('Page {{page}} of {{pages}}, showing {{current}} record(s) out of {{count}} total')]) ?>

    -
    -
    diff --git a/community_server/src/Template/ElopageBuys/statistics.ctp b/community_server/src/Template/ElopageBuys/statistics.ctp deleted file mode 100644 index 3ac6cf7f6..000000000 --- a/community_server/src/Template/ElopageBuys/statistics.ctp +++ /dev/null @@ -1,35 +0,0 @@ -toArray()); -/*foreach($elopageBuys as $entry) { - echo $entry->success_date . "
    "; -} - * - */ -/*foreach($users as $user) { - //var_dump($user); - echo $user->created; - echo "
    "; -}*/ -?> -
    -
    -
    -
    -
    -
    -
    -

    count()?>

    - - 12.01% -
    -
    -
    -
    -
    -
    \ No newline at end of file diff --git a/community_server/src/Template/ElopageBuys/view.ctp b/community_server/src/Template/ElopageBuys/view.ctp deleted file mode 100644 index 2631e17fe..000000000 --- a/community_server/src/Template/ElopageBuys/view.ctp +++ /dev/null @@ -1,68 +0,0 @@ - - -
    -

    id) ?>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    payer_email) ?>
    publisher_email) ?>
    event) ?>
    Number->format($elopageBuy->id) ?>
    Number->format($elopageBuy->elopage_user_id) ?>
    Number->format($elopageBuy->affiliate_program_id) ?>
    Number->format($elopageBuy->publisher_id) ?>
    Number->format($elopageBuy->order_id) ?>
    Number->format($elopageBuy->product_id) ?>
    Number->format($elopageBuy->product_price) ?>
    success_date) ?>
    payed ? __('Yes') : __('No'); ?>
    -
    diff --git a/community_server/src/Template/Email/html/default.ctp b/community_server/src/Template/Email/html/default.ctp deleted file mode 100644 index ac3daa7fe..000000000 --- a/community_server/src/Template/Email/html/default.ctp +++ /dev/null @@ -1,20 +0,0 @@ - ' . $line . "

    \n"; -endforeach; diff --git a/community_server/src/Template/Email/text/default.ctp b/community_server/src/Template/Email/text/default.ctp deleted file mode 100644 index 862cd9f76..000000000 --- a/community_server/src/Template/Email/text/default.ctp +++ /dev/null @@ -1,16 +0,0 @@ -assign('title', __('Gradido Schöpfung')); -?> first_name ?> last_name ?>, - -element('printGradido', ['number' => $gdd_cent, 'raw' => true])) ?> -Gradido Akademie schreibt: - - - - - - -Gradido Community Server \ No newline at end of file diff --git a/community_server/src/Template/Email/text/notification_transaction_failed.ctp b/community_server/src/Template/Email/text/notification_transaction_failed.ctp deleted file mode 100644 index 975848e58..000000000 --- a/community_server/src/Template/Email/text/notification_transaction_failed.ctp +++ /dev/null @@ -1,50 +0,0 @@ -assign('title', __('Gradido Transaktion fehlgeschlagen')); - -$transaction_body = $transaction->getTransactionBody(); -$specific_transaction = $transaction_body->getSpecificTransaction(); -$transaction_type_name = $transaction_body->getTransactionTypeName(); - -?> first_name ?> last_name ?>, - - - - -element('printGradido', ['number' => $specific_transaction->getAmount(), 'raw' => true]), - $specific_transaction->getReceiverUser()->getEmailWithName()) ?> - -getTargetDate()->format('d.m.Y') ?> - -element('printGradido', ['number' => $specific_transaction->getAmount(), 'raw' => true]), - $specific_transaction->getReceiverUser()->getEmailWithName()) ?> - - - - - -getErrors(); - foreach($errors as $error) { - //echo "\t".json_encode($error); - echo "\n\t".$error[array_keys($error)[0]]."\n"; - } -}?> - - - - - - -Gradido Community Server \ No newline at end of file diff --git a/community_server/src/Template/Email/text/notification_transfer.ctp b/community_server/src/Template/Email/text/notification_transfer.ctp deleted file mode 100644 index 05df9695d..000000000 --- a/community_server/src/Template/Email/text/notification_transfer.ctp +++ /dev/null @@ -1,26 +0,0 @@ -assign('title', __('Gradido Überweisung')); -$receiverNames = $receiverUser->first_name . ' ' . $receiverUser->last_name; -$senderNames = $senderUser->first_name . ' ' . $senderUser->last_name; -$senderNamesEmail = $senderUser->getEmailWithName(); -?> , - -element('printGradido', ['number' => $gdd_cent, 'raw' => true]), $senderNamesEmail) ?> - - - - - - - -email ?> - - - -Gradido Community Server \ No newline at end of file diff --git a/community_server/src/Template/Error/error400.ctp b/community_server/src/Template/Error/error400.ctp deleted file mode 100644 index 6b538b7f4..000000000 --- a/community_server/src/Template/Error/error400.ctp +++ /dev/null @@ -1,38 +0,0 @@ -layout = 'error'; - -if (Configure::read('debug')) : - $this->layout = 'dev_error'; - - $this->assign('title', $message); - $this->assign('templateName', 'error400.ctp'); - - $this->start('file'); -?> -queryString)) : ?> -

    - SQL Query: - queryString) ?> -

    - -params)) : ?> - SQL Query Params: - params) ?> - -element('auto_table_warning') ?> -end(); -endif; -?> -

    -

    - : - '{$url}'") ?> -

    diff --git a/community_server/src/Template/Error/error500.ctp b/community_server/src/Template/Error/error500.ctp deleted file mode 100644 index 3328cc52c..000000000 --- a/community_server/src/Template/Error/error500.ctp +++ /dev/null @@ -1,43 +0,0 @@ -layout = 'error'; - -if (Configure::read('debug')) : - $this->layout = 'dev_error'; - - $this->assign('title', $message); - $this->assign('templateName', 'error500.ctp'); - - $this->start('file'); -?> -queryString)) : ?> -

    - SQL Query: - queryString) ?> -

    - -params)) : ?> - SQL Query Params: - params) ?> - - - Error in: - getFile()), $error->getLine()) ?> - -element('auto_table_warning'); - - if (extension_loaded('xdebug')) : - xdebug_print_function_stack(); - endif; - - $this->end(); -endif; -?> -

    -

    - : - -

    diff --git a/community_server/src/Template/Layout/Email/html/default.ctp b/community_server/src/Template/Layout/Email/html/default.ctp deleted file mode 100644 index 3ff87ff83..000000000 --- a/community_server/src/Template/Layout/Email/html/default.ctp +++ /dev/null @@ -1,24 +0,0 @@ - - - - - <?= $this->fetch('title') ?> - - - fetch('content') ?> - - diff --git a/community_server/src/Template/Layout/Email/text/default.ctp b/community_server/src/Template/Layout/Email/text/default.ctp deleted file mode 100644 index 29b439ccc..000000000 --- a/community_server/src/Template/Layout/Email/text/default.ctp +++ /dev/null @@ -1,16 +0,0 @@ -fetch('content'); diff --git a/community_server/src/Template/Layout/ajax.ctp b/community_server/src/Template/Layout/ajax.ctp deleted file mode 100644 index 29b439ccc..000000000 --- a/community_server/src/Template/Layout/ajax.ctp +++ /dev/null @@ -1,16 +0,0 @@ -fetch('content'); diff --git a/community_server/src/Template/Layout/default.ctp b/community_server/src/Template/Layout/default.ctp deleted file mode 100644 index 4633502df..000000000 --- a/community_server/src/Template/Layout/default.ctp +++ /dev/null @@ -1,53 +0,0 @@ - - - - - Html->charset() ?> - - - <?= $cakeDescription ?>: - <?= $this->fetch('title') ?> - - Html->meta('icon') ?> - Html->css(['main.css']) ?> - Html->script(['basic']) ?> - fetch('meta') ?> - fetch('css') ?> - fetch('script') ?> - - -
    -
    - -

    fetch('title') ?>

    - Flash->render() ?> - fetch('content') ?> -
    -
    - -
    - ms -
    - - - diff --git a/community_server/src/Template/Layout/error.ctp b/community_server/src/Template/Layout/error.ctp deleted file mode 100644 index 7367c1bf7..000000000 --- a/community_server/src/Template/Layout/error.ctp +++ /dev/null @@ -1,47 +0,0 @@ - - - - - Html->charset() ?> - - <?= $this->fetch('title') ?> - - Html->meta('icon') ?> - - Html->css('base.css') ?> - Html->css('style.css') ?> - - fetch('meta') ?> - fetch('css') ?> - fetch('script') ?> - - -
    - -
    - Flash->render() ?> - - fetch('content') ?> -
    - -
    - - diff --git a/community_server/src/Template/Layout/frontend.ctp b/community_server/src/Template/Layout/frontend.ctp deleted file mode 100644 index cb01fea30..000000000 --- a/community_server/src/Template/Layout/frontend.ctp +++ /dev/null @@ -1,113 +0,0 @@ -"; -//echo "transactions pending: " . $transactionPendings; -?> - - - - Html->charset() ?> - - - <?= $cakeDescription ?>: - <?= $this->fetch('title') ?> - - Html->meta('icon') ?> - Html->css(['main.css']) ?> - Html->script(['basic']) ?> - fetch('meta') ?> - fetch('css') ?> - fetch('script') ?> - - -
    -
    - element('navi_notify'); ?> -
    -
    - element('user_menu'); ?> -
    -
    - menu -
    - - - -
    - fetch('header')): ?> -
    - fetch('header') ?> -
    - -
    - fetch('content') ?> -
    -
    - - -
    - - ms - -
    -
    -

    -

    Alpha 0.20.06.03

    -
    -
    - - \ No newline at end of file diff --git a/community_server/src/Template/Layout/rss/default.ctp b/community_server/src/Template/Layout/rss/default.ctp deleted file mode 100644 index 8269be212..000000000 --- a/community_server/src/Template/Layout/rss/default.ctp +++ /dev/null @@ -1,11 +0,0 @@ -fetch('title'); -endif; - -echo $this->Rss->document( - $this->Rss->channel([], $channel, $this->fetch('content')) -); diff --git a/community_server/src/Template/OperatorTypes/add.ctp b/community_server/src/Template/OperatorTypes/add.ctp deleted file mode 100644 index c50feecf0..000000000 --- a/community_server/src/Template/OperatorTypes/add.ctp +++ /dev/null @@ -1,26 +0,0 @@ - - -
    - Form->create($operatorType) ?> -
    - - Form->control('name'); - echo $this->Form->control('text'); - ?> -
    - Form->button(__('Submit')) ?> - Form->end() ?> -
    diff --git a/community_server/src/Template/OperatorTypes/edit.ctp b/community_server/src/Template/OperatorTypes/edit.ctp deleted file mode 100644 index 0b61f0f7a..000000000 --- a/community_server/src/Template/OperatorTypes/edit.ctp +++ /dev/null @@ -1,32 +0,0 @@ - - -
    - Form->create($operatorType) ?> -
    - - Form->control('name'); - echo $this->Form->control('text'); - ?> -
    - Form->button(__('Submit')) ?> - Form->end() ?> -
    diff --git a/community_server/src/Template/OperatorTypes/index.ctp b/community_server/src/Template/OperatorTypes/index.ctp deleted file mode 100644 index 52a49b547..000000000 --- a/community_server/src/Template/OperatorTypes/index.ctp +++ /dev/null @@ -1,51 +0,0 @@ - - -
    -

    - - - - - - - - - - - - - - - - - - - -
    Paginator->sort('id') ?>Paginator->sort('name') ?>Paginator->sort('text') ?>
    Number->format($operatorType->id) ?>name) ?>text) ?> - Html->link(__('View'), ['action' => 'view', $operatorType->id]) ?> - Html->link(__('Edit'), ['action' => 'edit', $operatorType->id]) ?> - Form->postLink(__('Delete'), ['action' => 'delete', $operatorType->id], ['confirm' => __('Are you sure you want to delete # {0}?', $operatorType->id)]) ?> -
    -
    - -

    Paginator->counter(['format' => __('Page {{page}} of {{pages}}, showing {{current}} record(s) out of {{count}} total')]) ?>

    -
    -
    diff --git a/community_server/src/Template/OperatorTypes/view.ctp b/community_server/src/Template/OperatorTypes/view.ctp deleted file mode 100644 index a7cb775cf..000000000 --- a/community_server/src/Template/OperatorTypes/view.ctp +++ /dev/null @@ -1,61 +0,0 @@ - - -
    -

    name) ?>

    - - - - - - - - - - - - - -
    name) ?>
    text) ?>
    Number->format($operatorType->id) ?>
    - -
    diff --git a/community_server/src/Template/Operators/add.ctp b/community_server/src/Template/Operators/add.ctp deleted file mode 100644 index 6696cce5c..000000000 --- a/community_server/src/Template/Operators/add.ctp +++ /dev/null @@ -1,26 +0,0 @@ - - -
    - Form->create($operator) ?> -
    - - Form->control('username'); - echo $this->Form->control('user_pubkey'); - echo $this->Form->control('operator_type_id'); - echo $this->Form->control('data_base64'); - ?> -
    - Form->button(__('Submit')) ?> - Form->end() ?> -
    diff --git a/community_server/src/Template/Operators/edit.ctp b/community_server/src/Template/Operators/edit.ctp deleted file mode 100644 index 88a348e59..000000000 --- a/community_server/src/Template/Operators/edit.ctp +++ /dev/null @@ -1,32 +0,0 @@ - - -
    - Form->create($operator) ?> -
    - - Form->control('username'); - echo $this->Form->control('user_pubkey'); - echo $this->Form->control('operator_type_id'); - echo $this->Form->control('data_base64'); - ?> -
    - Form->button(__('Submit')) ?> - Form->end() ?> -
    diff --git a/community_server/src/Template/Operators/index.ctp b/community_server/src/Template/Operators/index.ctp deleted file mode 100644 index 3da9a6afb..000000000 --- a/community_server/src/Template/Operators/index.ctp +++ /dev/null @@ -1,56 +0,0 @@ - - -
    -

    - - - - - - - - - - - - - - operator_type->name ?> - - - - - - - - - - - -
    Paginator->sort('id') ?>Paginator->sort('username') ?>Paginator->sort('user_pubkey') ?>Paginator->sort('operator_type_id') ?>Paginator->sort('data_base64') ?>Paginator->sort('modified') ?>
    Number->format($operator->id) ?>username) ?>user_pubkey)) ?>Html->link(__($operator->operator_type->name), ['controller' => 'OperatorTypes', 'action' => 'view', $operator->operator_type_id]) ?>data_base64) ?>modified) ?> - Html->link(__('View'), ['action' => 'view', $operator->id]) ?> - Html->link(__('Edit'), ['action' => 'edit', $operator->id]) ?> - Form->postLink(__('Delete'), ['action' => 'delete', $operator->id], ['confirm' => __('Are you sure you want to delete # {0}?', $operator->id)]) ?> -
    -
    - -

    Paginator->counter(['format' => __('Page {{page}} of {{pages}}, showing {{current}} record(s) out of {{count}} total')]) ?>

    -
    -
    diff --git a/community_server/src/Template/Operators/view.ctp b/community_server/src/Template/Operators/view.ctp deleted file mode 100644 index a317c8e17..000000000 --- a/community_server/src/Template/Operators/view.ctp +++ /dev/null @@ -1,40 +0,0 @@ - - -
    -

    id) ?>

    - - - - - - - - - - - - - - - - - - - - - -
    username) ?>
    user_pubkey)) ?>
    data_base64) ?>
    Number->format($operator->id) ?>
    Number->format($operator->operator_type_id) ?>
    -
    diff --git a/community_server/src/Template/Pages/cake_home.ctp b/community_server/src/Template/Pages/cake_home.ctp deleted file mode 100644 index 5a3731e4c..000000000 --- a/community_server/src/Template/Pages/cake_home.ctp +++ /dev/null @@ -1,276 +0,0 @@ -layout = false; - -if (!Configure::read('debug')) : - throw new NotFoundException( - 'Please replace src/Template/Pages/home.ctp with your own version or re-enable debug mode.' - ); -endif; - -$cakeDescription = 'CakePHP: the rapid development PHP framework'; -?> - - - - Html->charset() ?> - - - <?= $cakeDescription ?> - - - Html->meta('icon') ?> - Html->css('base.css') ?> - Html->css('style.css') ?> - Html->css('home.css') ?> - - - - -
    -
    Html->image('cake.logo.svg') ?>
    -
    -

    Welcome to CakePHP Red Velvet. Build fast. Grow solid.

    -
    -
    - -
    -
    -
    -

    Please be aware that this page will not be shown if you turn off debug mode unless you replace src/Template/Pages/home.ctp with your own version.

    -
    -
    - -
    - -
    -
    - -
    -
    -

    Environment

    -
      - =')) : ?> -
    • Your version of PHP is 5.6.0 or higher (detected ).
    • - -
    • Your version of PHP is too low. You need PHP 5.6.0 or higher to use CakePHP (detected ).
    • - - - -
    • Your version of PHP has the mbstring extension loaded.
    • - -
    • Your version of PHP does NOT have the mbstring extension loaded.
    • - - - -
    • Your version of PHP has the openssl extension loaded.
    • - -
    • Your version of PHP has the mcrypt extension loaded.
    • - -
    • Your version of PHP does NOT have the openssl or mcrypt extension loaded.
    • - - - -
    • Your version of PHP has the intl extension loaded.
    • - -
    • Your version of PHP does NOT have the intl extension loaded.
    • - -
    -
    -
    -

    Filesystem

    -
      - -
    • Your tmp directory is writable.
    • - -
    • Your tmp directory is NOT writable.
    • - - - -
    • Your logs directory is writable.
    • - -
    • Your logs directory is NOT writable.
    • - - - - -
    • The Engine is being used for core caching. To change the config edit config/app.php
    • - -
    • Your cache is NOT working. Please check the settings in config/app.php
    • - -
    -
    -
    -
    - -
    -
    -

    Database

    - connect(); - } catch (Exception $connectionError) { - $connected = false; - $errorMsg = $connectionError->getMessage(); - if (method_exists($connectionError, 'getAttributes')) : - $attributes = $connectionError->getAttributes(); - if (isset($errorMsg['message'])) : - $errorMsg .= '
    ' . $attributes['message']; - endif; - endif; - } - ?> -
      - -
    • CakePHP is able to connect to the database.
    • - -
    • CakePHP is NOT able to connect to the database.
    • - -
    -
    -
    -

    DebugKit

    -
      - -
    • DebugKit is loaded.
    • - -
    • DebugKit is NOT loaded. You need to either install pdo_sqlite, or define the "debug_kit" connection name.
    • - -
    -
    -
    -
    - -
    -
    -

    Editing this Page

    -
      -
    • To change the content of this page, edit: src/Template/Pages/home.ctp.
    • -
    • You can also add some CSS styles for your pages at: webroot/css/.
    • -
    -
    -
    -

    Getting Started

    - -
    -
    - -
    -
    -

    More about Cake

    -

    - CakePHP is a rapid development framework for PHP which uses commonly known design patterns like Front Controller and MVC.
    - Our primary goal is to provide a structured framework that enables PHP users at all levels to rapidly develop robust web applications, without any loss to flexibility. -

    -
    -
    -
    - -
    -
    - P -

    Help and Bug Reports

    - -
    -
    - r -

    Docs and Downloads

    - -
    -
    - s -

    Training and Certification

    - -
    -
    - - - diff --git a/community_server/src/Template/Pages/gradido.ctp b/community_server/src/Template/Pages/gradido.ctp deleted file mode 100644 index f6a2213cc..000000000 --- a/community_server/src/Template/Pages/gradido.ctp +++ /dev/null @@ -1,14 +0,0 @@ -layout = false;?> - - Web Assembly Test (CakePHP Single Node Version) - - - -
    Wird geladen...
    - - - - - \ No newline at end of file diff --git a/community_server/src/Template/Pages/home.ctp b/community_server/src/Template/Pages/home.ctp deleted file mode 100644 index 3926921c4..000000000 --- a/community_server/src/Template/Pages/home.ctp +++ /dev/null @@ -1,19 +0,0 @@ -layout = false;?> - - Web Assembly Test (CakePHP Single Node Version) - - - -
    -
    -

    Gradido

    -

    Implementierung wählen

    -
    - -
    - - - \ No newline at end of file diff --git a/community_server/src/Template/Pages/js.ctp b/community_server/src/Template/Pages/js.ctp deleted file mode 100644 index dd1525dbe..000000000 --- a/community_server/src/Template/Pages/js.ctp +++ /dev/null @@ -1,41 +0,0 @@ -layout = false;?> - - - - - - - - - BootstrapVue Argon Dashboard by Creative Tim - - - - - - - - - -
    - wird geladen... -
    - - - - diff --git a/community_server/src/Template/Pages/visitor.ctp b/community_server/src/Template/Pages/visitor.ctp deleted file mode 100644 index e6956c97c..000000000 --- a/community_server/src/Template/Pages/visitor.ctp +++ /dev/null @@ -1,16 +0,0 @@ -layout = false;?> - - - - Visitor Page - - - - -
    Info Page for Visitor to learn about group before try to enter or connect (befriend)
    - - diff --git a/community_server/src/Template/Profile/edit.ctp b/community_server/src/Template/Profile/edit.ctp deleted file mode 100644 index edddf1631..000000000 --- a/community_server/src/Template/Profile/edit.ctp +++ /dev/null @@ -1,41 +0,0 @@ -assign('title', __('Profil ändern')); -// In a View class -$this->loadHelper('Form', [ - 'templates' => 'horizontal_form', -]); -?> -
    -
    - Form->create($profileForm, ['enctype' => 'multipart/form-data']) ?> - Form->control('first_name', ['label' => __('Vorname'), 'placeholder' => 'Vorname', 'value' => $user['first_name']]) ?> - Form->control('last_name', ['label' => __('Nachname'), 'placeholder' => 'Nachname', 'value' => $user['last_name']]) ?> - Form->control('profile_img', ['type' => 'file', 'accept' => 'image/*', 'label' => __('Profilbild')]) ?> - - -
    - - Form->control('profile_desc', ['label' => __('Beschreibung'), 'rows' => 4, 'placeholder' => 'Beschreibung', 'value' => $communityProfile['profile_desc']]) ?> - Form->button(__('Daten speichern'), ['name' => 'submit', 'class' => 'form-button']) ?> - Form->end() ?> -
    -
    - -Html->script(['core', 'vendor.addons']); ?> - diff --git a/community_server/src/Template/Profile/index.ctp b/community_server/src/Template/Profile/index.ctp deleted file mode 100644 index b77ff9f70..000000000 --- a/community_server/src/Template/Profile/index.ctp +++ /dev/null @@ -1,82 +0,0 @@ -'; -$header .= '

    '.$user['first_name'] . ' ' . $user['last_name'] . '

    '; -if (!empty($communityProfile['profile_desc'])) { - $header .= "

    ".$communityProfile['profile_desc']."

    "; -} -$header .= '
    '; -if ($communityProfile && $communityProfile['profile_img']) { - $header .= "
    "; -} -$this->assign('title', __('Mein Profil')); -$this->assign('header', $header); -?> - - ms - -
    -

    - - Meine Daten -

    -
    - -
    - -

    - - Passwort ändern -

    -
    - -
    -
    diff --git a/community_server/src/Template/Roles/add.ctp b/community_server/src/Template/Roles/add.ctp deleted file mode 100644 index c671ed011..000000000 --- a/community_server/src/Template/Roles/add.ctp +++ /dev/null @@ -1,23 +0,0 @@ - - -
    - Form->create($role) ?> -
    - - Form->control('title'); - ?> -
    - Form->button(__('Submit')) ?> - Form->end() ?> -
    diff --git a/community_server/src/Template/Roles/edit.ctp b/community_server/src/Template/Roles/edit.ctp deleted file mode 100644 index 8a7cd385f..000000000 --- a/community_server/src/Template/Roles/edit.ctp +++ /dev/null @@ -1,29 +0,0 @@ - - -
    - Form->create($role) ?> -
    - - Form->control('title'); - ?> -
    - Form->button(__('Submit')) ?> - Form->end() ?> -
    diff --git a/community_server/src/Template/Roles/index.ctp b/community_server/src/Template/Roles/index.ctp deleted file mode 100644 index 2637ef958..000000000 --- a/community_server/src/Template/Roles/index.ctp +++ /dev/null @@ -1,47 +0,0 @@ - - -
    -

    - - - - - - - - - - - - - - - - - -
    Paginator->sort('id') ?>Paginator->sort('title') ?>
    Number->format($role->id) ?>title) ?> - Html->link(__('View'), ['action' => 'view', $role->id]) ?> - Html->link(__('Edit'), ['action' => 'edit', $role->id]) ?> - Form->postLink(__('Delete'), ['action' => 'delete', $role->id], ['confirm' => __('Are you sure you want to delete # {0}?', $role->id)]) ?> -
    -
    - -

    Paginator->counter(['format' => __('Page {{page}} of {{pages}}, showing {{current}} record(s) out of {{count}} total')]) ?>

    -
    -
    diff --git a/community_server/src/Template/Roles/view.ctp b/community_server/src/Template/Roles/view.ctp deleted file mode 100644 index 04e1dcec5..000000000 --- a/community_server/src/Template/Roles/view.ctp +++ /dev/null @@ -1,28 +0,0 @@ - - -
    -

    title) ?>

    - - - - - - - - - -
    title) ?>
    Number->format($role->id) ?>
    -
    diff --git a/community_server/src/Template/ServerUsers/add.ctp b/community_server/src/Template/ServerUsers/add.ctp deleted file mode 100644 index 35907282b..000000000 --- a/community_server/src/Template/ServerUsers/add.ctp +++ /dev/null @@ -1,26 +0,0 @@ - - -
    - Form->create($serverUser) ?> -
    - - Form->control('username'); - echo $this->Form->control('password'); - echo $this->Form->control('email'); - echo $this->Form->control('role'); - ?> -
    - Form->button(__('Submit')) ?> - Form->end() ?> -
    diff --git a/community_server/src/Template/ServerUsers/edit.ctp b/community_server/src/Template/ServerUsers/edit.ctp deleted file mode 100644 index df812d032..000000000 --- a/community_server/src/Template/ServerUsers/edit.ctp +++ /dev/null @@ -1,34 +0,0 @@ - - -
    - Form->create($serverUser) ?> -
    - - Form->control('username'); - echo $this->Form->control('password'); - echo $this->Form->control('email'); - echo $this->Form->control('role'); - echo $this->Form->control('activated'); - echo $this->Form->control('last_login', ['empty' => true]); - ?> -
    - Form->button(__('Submit')) ?> - Form->end() ?> -
    diff --git a/community_server/src/Template/ServerUsers/index.ctp b/community_server/src/Template/ServerUsers/index.ctp deleted file mode 100644 index a6e14cedc..000000000 --- a/community_server/src/Template/ServerUsers/index.ctp +++ /dev/null @@ -1,59 +0,0 @@ - - -
    -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Paginator->sort('id') ?>Paginator->sort('username') ?>Paginator->sort('email') ?>Paginator->sort('role') ?>Paginator->sort('activated') ?>Paginator->sort('last_login') ?>Paginator->sort('created') ?>Paginator->sort('modified') ?>
    Number->format($serverUser->id) ?>username) ?>email) ?>role) ?>activated) ?>last_login) ?>created) ?>modified) ?> - Html->link(__('View'), ['action' => 'view', $serverUser->id]) ?> - Html->link(__('Edit'), ['action' => 'edit', $serverUser->id]) ?> - Form->postLink(__('Delete'), ['action' => 'delete', $serverUser->id], ['confirm' => __('Are you sure you want to delete # {0}?', $serverUser->id)]) ?> -
    -
    - -

    Paginator->counter(['format' => __('Page {{page}} of {{pages}}, showing {{current}} record(s) out of {{count}} total')]) ?>

    -
    -
    diff --git a/community_server/src/Template/ServerUsers/login.ctp b/community_server/src/Template/ServerUsers/login.ctp deleted file mode 100644 index 4996d5e7b..000000000 --- a/community_server/src/Template/ServerUsers/login.ctp +++ /dev/null @@ -1,22 +0,0 @@ -loadHelper('Form', [ - 'templates' => 'horizontal_form', -]); -?> -Flash->render() ?> -
    - Form->create() ?> -
    - - Form->control('username') ?> - Form->control('password') ?> -
    - Form->button(__('Login'), ['class' => 'form-button']); ?> - Form->end() ?> -
    diff --git a/community_server/src/Template/ServerUsers/view.ctp b/community_server/src/Template/ServerUsers/view.ctp deleted file mode 100644 index 0d3a9ae21..000000000 --- a/community_server/src/Template/ServerUsers/view.ctp +++ /dev/null @@ -1,56 +0,0 @@ - - -
    -

    id) ?>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    username) ?>
    password) ?>
    email) ?>
    role) ?>
    Number->format($serverUser->id) ?>
    last_login) ?>
    created) ?>
    modified) ?>
    activated ? __('Yes') : __('No'); ?>
    -
    diff --git a/community_server/src/Template/StateBalances/add.ctp b/community_server/src/Template/StateBalances/add.ctp deleted file mode 100644 index 64ef5d576..000000000 --- a/community_server/src/Template/StateBalances/add.ctp +++ /dev/null @@ -1,27 +0,0 @@ - - -
    - Form->create($stateBalance) ?> - add -
    - - Form->control('state_user_id', ['options' => $stateUsers]); - echo $this->Form->control('amount'); - ?> -
    - Form->button(__('Submit')) ?> - Form->end() ?> -
    diff --git a/community_server/src/Template/StateBalances/edit.ctp b/community_server/src/Template/StateBalances/edit.ctp deleted file mode 100644 index c4a6c1e81..000000000 --- a/community_server/src/Template/StateBalances/edit.ctp +++ /dev/null @@ -1,33 +0,0 @@ - - -
    - Form->create($stateBalance) ?> - edit -
    - - Form->control('state_user_id', ['options' => $stateUsers]); - echo $this->Form->control('amount'); - ?> -
    - Form->button(__('Submit')) ?> - Form->end() ?> -
    diff --git a/community_server/src/Template/StateBalances/index.ctp b/community_server/src/Template/StateBalances/index.ctp deleted file mode 100644 index 4b0db06d6..000000000 --- a/community_server/src/Template/StateBalances/index.ctp +++ /dev/null @@ -1,54 +0,0 @@ - - -
    -

    - index - - - - - - - - - - - - - - - - - - - - - -
    Paginator->sort('id') ?>Paginator->sort('state_user_id') ?>Paginator->sort('modified') ?>Paginator->sort('amount') ?>
    Number->format($stateBalance->id) ?>has('state_user') ? $this->Html->link($stateBalance->state_user->id, ['controller' => 'StateUsers', 'action' => 'view', $stateBalance->state_user->id]) : '' ?>modified) ?>Number->format($stateBalance->amount) ?> - Html->link(__('View'), ['action' => 'view', $stateBalance->id]) ?> - Html->link(__('Edit'), ['action' => 'edit', $stateBalance->id]) ?> - Form->postLink(__('Delete'), ['action' => 'delete', $stateBalance->id], ['confirm' => __('Are you sure you want to delete # {0}?', $stateBalance->id)]) ?> -
    -
    - -

    Paginator->counter(['format' => __('Page {{page}} of {{pages}}, showing {{current}} record(s) out of {{count}} total')]) ?>

    -
    -
    diff --git a/community_server/src/Template/StateBalances/overview.ctp b/community_server/src/Template/StateBalances/overview.ctp deleted file mode 100644 index 1f2f4c811..000000000 --- a/community_server/src/Template/StateBalances/overview.ctp +++ /dev/null @@ -1,166 +0,0 @@ -assign('title', __('Kontoübersicht')); - -$header = '

    ' . __('Aktueller Kontostand: ') . '

    ' . - '

    ' . $this->element('printGradido', ['number' => $balance]) . '

    '; - -if($gdtSum > 0) { - $header .= '

    '.$this->Html->link( - $this->element('printGDT', ['number' => $gdtSum]), - ['action' => 'overview_gdt'], - ['escape' => false] - ).'

    '; -} -$this->assign('header', $header); -//var_dump($transactions); -?> - - 0) : ?> -
    - -
    - -
    -

    Überweisungen

    -

    Berechnet (debugging): element('printGradido', ['number' => $calculated_balance]) ?>

    -
    -
    -
    -
    -
    -
    -
    -
    - 30) { - $memoShort = substr($memoShort, 0, 30) . '...'; - } - $cellColorClass = 'success-color'; - if($send) { - $balance = -$balance; - $cellColorClass = 'alert-color'; - } else if($transaction['type'] == 'creation') { - $cellColorClass = 'orange-color'; - } else if($transaction['type'] == 'decay') { - $cellColorClass = 'red-color'; - } - ?> -
    -
    - Html->image('50x50.png', ['class' => 'profile-img', 'alt' => 'profile image']) ?> -
    - - - - - - - - - - -
    - - redeem - - - - arrow_back - - - arrow_forward - - - minus_circle_multiple - - -
    -
    -
    -
    - 30): ?> - - - - -
    -
    - - nice() ?> - - - -
    -
    element('printGradido', ['number' => $balance]) ?>
    -
    - - - -
    -
    - -
    -
    - - - 0) : ?> - - \ No newline at end of file diff --git a/community_server/src/Template/StateBalances/overview_gdt.ctp b/community_server/src/Template/StateBalances/overview_gdt.ctp deleted file mode 100644 index f293b93be..000000000 --- a/community_server/src/Template/StateBalances/overview_gdt.ctp +++ /dev/null @@ -1,123 +0,0 @@ -assign('title', __('GDT Kontoübersicht')); -$header = '

    ' . __('Zur Verfügung: ') . '

    '; - -if($gdtSum > 0){ - $header .= '

    '.$this->element('printGDT', ['number' => $gdtSum*100.0]).'

    '; -} -if($moreEntrysAsShown) { - $header .= ''. __('Nur die letzten 100 Einträge werden angezeigt!') . ''; -} -$this->assign('header', $header); - -?> - 0) :?> -
    -

    -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    - - element('printGDT', ['number' => $entry['amount']*100.0]); ?> - - element('printEuro', ['number' => $entry['amount']*100.0]); ?> - element('printEuro', ['number' => $entry['amount2']*100.0]) ?> - -
    -
    - Number->format($entry['factor']) ?> - x - Number->format($entry['factor2']) ?> - -
    -
    element('printGDT', ['number' => $entry['gdt']*100.0]) ?>
    -
    - -
    -
    - - 0) : ?> -
    -

    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -
    - - -
    -
    - - element('printGDT', ['number' => $gdtEntry['amount']*100.0]); ?> - - element('printEuro', ['number' => $gdtEntry['amount']*100.0]); ?> - element('printEuro', ['number' => $gdtEntry['amount2']*100.0]) ?> - -
    -
    - Number->format($gdtEntry['factor']) ?> - x - Number->format($gdtEntry['factor2']) ?> - -
    -
    element('printGDT', ['number' => $gdtEntry['gdt'] * 100.0]) ?>
    -
    - -
    -
    - -Html->script(['basic', 'popper.min', 'tippy-bundle.umd.min']) ?> - \ No newline at end of file diff --git a/community_server/src/Template/StateBalances/view.ctp b/community_server/src/Template/StateBalances/view.ctp deleted file mode 100644 index e5f8901dd..000000000 --- a/community_server/src/Template/StateBalances/view.ctp +++ /dev/null @@ -1,39 +0,0 @@ - - -
    -

    id) ?>

    - view - - - - - - - - - - - - - - - - - -
    has('state_user') ? $this->Html->link($stateBalance->state_user->id, ['controller' => 'StateUsers', 'action' => 'view', $stateBalance->state_user->id]) : '' ?>
    Number->format($stateBalance->id) ?>
    Number->format($stateBalance->amount) ?>
    modified) ?>
    -
    diff --git a/community_server/src/Template/StateCreated/add.ctp b/community_server/src/Template/StateCreated/add.ctp deleted file mode 100644 index c66cf83f3..000000000 --- a/community_server/src/Template/StateCreated/add.ctp +++ /dev/null @@ -1,31 +0,0 @@ - - -
    - Form->create($stateCreated) ?> -
    - - Form->control('transaction_id', ['options' => $transactions]); - echo $this->Form->control('month'); - echo $this->Form->control('year'); - echo $this->Form->control('state_user_id', ['options' => $stateUsers]); - echo $this->Form->control('short_ident_hash'); - ?> -
    - Form->button(__('Submit')) ?> - Form->end() ?> -
    diff --git a/community_server/src/Template/StateCreated/edit.ctp b/community_server/src/Template/StateCreated/edit.ctp deleted file mode 100644 index be1ef330b..000000000 --- a/community_server/src/Template/StateCreated/edit.ctp +++ /dev/null @@ -1,37 +0,0 @@ - - -
    - Form->create($stateCreated) ?> -
    - - Form->control('transaction_id', ['options' => $transactions]); - echo $this->Form->control('month'); - echo $this->Form->control('year'); - echo $this->Form->control('state_user_id', ['options' => $stateUsers]); - echo $this->Form->control('short_ident_hash'); - ?> -
    - Form->button(__('Submit')) ?> - Form->end() ?> -
    diff --git a/community_server/src/Template/StateCreated/index.ctp b/community_server/src/Template/StateCreated/index.ctp deleted file mode 100644 index 64a514b3b..000000000 --- a/community_server/src/Template/StateCreated/index.ctp +++ /dev/null @@ -1,61 +0,0 @@ - - -
    -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Paginator->sort('id') ?>Paginator->sort('transaction_id') ?>Paginator->sort('month') ?>Paginator->sort('year') ?>Paginator->sort('state_user_id') ?>Paginator->sort('created') ?>Paginator->sort('short_ident_hash') ?>
    Number->format($stateCreated->id) ?>has('transaction') ? $this->Html->link($stateCreated->transaction->id, ['controller' => 'Transactions', 'action' => 'view', $stateCreated->transaction->id]) : '' ?>Number->format($stateCreated->month) ?>Number->format($stateCreated->year) ?>has('state_user') ? $this->Html->link($stateCreated->state_user->id, ['controller' => 'StateUsers', 'action' => 'view', $stateCreated->state_user->id]) : '' ?>created) ?>Number->format($stateCreated->short_ident_hash) ?> - Html->link(__('View'), ['action' => 'view', $stateCreated->id]) ?> - Html->link(__('Edit'), ['action' => 'edit', $stateCreated->id]) ?> - Form->postLink(__('Delete'), ['action' => 'delete', $stateCreated->id], ['confirm' => __('Are you sure you want to delete # {0}?', $stateCreated->id)]) ?> -
    -
    - -

    Paginator->counter(['format' => __('Page {{page}} of {{pages}}, showing {{current}} record(s) out of {{count}} total')]) ?>

    -
    -
    diff --git a/community_server/src/Template/StateCreated/view.ctp b/community_server/src/Template/StateCreated/view.ctp deleted file mode 100644 index e0e9301ec..000000000 --- a/community_server/src/Template/StateCreated/view.ctp +++ /dev/null @@ -1,52 +0,0 @@ - - -
    -

    id) ?>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    has('transaction') ? $this->Html->link($stateCreated->transaction->id, ['controller' => 'Transactions', 'action' => 'view', $stateCreated->transaction->id]) : '' ?>
    has('state_user') ? $this->Html->link($stateCreated->state_user->id, ['controller' => 'StateUsers', 'action' => 'view', $stateCreated->state_user->id]) : '' ?>
    Number->format($stateCreated->id) ?>
    Number->format($stateCreated->month) ?>
    Number->format($stateCreated->year) ?>
    Number->format($stateCreated->short_ident_hash) ?>
    created) ?>
    -
    diff --git a/community_server/src/Template/StateErrors/add.ctp b/community_server/src/Template/StateErrors/add.ctp deleted file mode 100644 index 24d095b90..000000000 --- a/community_server/src/Template/StateErrors/add.ctp +++ /dev/null @@ -1,29 +0,0 @@ - - -
    - Form->create($stateError) ?> -
    - - Form->control('state_user_id', ['options' => $stateUsers]); - echo $this->Form->control('transaction_type_id', ['options' => $transactionTypes]); - echo $this->Form->control('message_json'); - ?> -
    - Form->button(__('Submit')) ?> - Form->end() ?> -
    diff --git a/community_server/src/Template/StateErrors/edit.ctp b/community_server/src/Template/StateErrors/edit.ctp deleted file mode 100644 index 795b6c7dd..000000000 --- a/community_server/src/Template/StateErrors/edit.ctp +++ /dev/null @@ -1,35 +0,0 @@ - - -
    - Form->create($stateError) ?> -
    - - Form->control('state_user_id', ['options' => $stateUsers]); - echo $this->Form->control('transaction_type_id', ['options' => $transactionTypes]); - echo $this->Form->control('message_json'); - ?> -
    - Form->button(__('Submit')) ?> - Form->end() ?> -
    diff --git a/community_server/src/Template/StateErrors/index.ctp b/community_server/src/Template/StateErrors/index.ctp deleted file mode 100644 index 3f34f449b..000000000 --- a/community_server/src/Template/StateErrors/index.ctp +++ /dev/null @@ -1,55 +0,0 @@ - - -
    -

    - - - - - - - - - - - - - - - - - - - - - -
    Paginator->sort('id') ?>Paginator->sort('state_user_id') ?>Paginator->sort('transaction_type_id') ?>Paginator->sort('created') ?>
    Number->format($stateError->id) ?>has('state_user') ? $this->Html->link($stateError->state_user->id, ['controller' => 'StateUsers', 'action' => 'view', $stateError->state_user->id]) : '' ?>has('transaction_type') ? $this->Html->link($stateError->transaction_type->name, ['controller' => 'TransactionTypes', 'action' => 'view', $stateError->transaction_type->id]) : '' ?>created) ?> - Html->link(__('View'), ['action' => 'view', $stateError->id]) ?> - Html->link(__('Edit'), ['action' => 'edit', $stateError->id]) ?> - Form->postLink(__('Delete'), ['action' => 'delete', $stateError->id], ['confirm' => __('Are you sure you want to delete # {0}?', $stateError->id)]) ?> -
    -
    - -

    Paginator->counter(['format' => __('Page {{page}} of {{pages}}, showing {{current}} record(s) out of {{count}} total')]) ?>

    -
    -
    diff --git a/community_server/src/Template/StateErrors/show_for_user.ctp b/community_server/src/Template/StateErrors/show_for_user.ctp deleted file mode 100644 index 2420571a3..000000000 --- a/community_server/src/Template/StateErrors/show_for_user.ctp +++ /dev/null @@ -1,51 +0,0 @@ -assign('title', __('Fehlermeldungen')); -//var_dump($transactionTypes); -/*foreach($transactionTypes as $i => $t) { - echo "$i => "; - var_dump($t); - echo "
    "; -}*/ -?> -
    -

    Fehler

    -
    -
    -
    Transaktion Typ
    -
    Datum
    -
    Fehler
    -
    Aktionen
    -
    - transaction_type_id-1]; - $errorMessage = ""; - $errorArray = json_decode($error->message_json, true); - if(isset($errorArray['details']) && is_array($errorArray['details'])) { - foreach($errorArray['details'][0] as $function => $errorString) { - $errorMessage = '' . $function . '
    ' . $errorString; - } - } else { - $errorMessage = $error->message_json; - } - ?> -
    -
    name ?>
    -
    created ?>
    -
    -
    - Html->link( - __('Delete'), - ['action' => 'deleteForUser', $error->id], - ['class' => 'form-button button-cancel'] - ) ?>
    -
    - -
    -
    diff --git a/community_server/src/Template/StateErrors/view.ctp b/community_server/src/Template/StateErrors/view.ctp deleted file mode 100644 index c2913d306..000000000 --- a/community_server/src/Template/StateErrors/view.ctp +++ /dev/null @@ -1,44 +0,0 @@ - - -
    -

    id) ?>

    - - - - - - - - - - - - - - - - - -
    has('state_user') ? $this->Html->link($stateError->state_user->id, ['controller' => 'StateUsers', 'action' => 'view', $stateError->state_user->id]) : '' ?>
    has('transaction_type') ? $this->Html->link($stateError->transaction_type->name, ['controller' => 'TransactionTypes', 'action' => 'view', $stateError->transaction_type->id]) : '' ?>
    Number->format($stateError->id) ?>
    created) ?>
    -
    -

    - Text->autoParagraph(h($stateError->message_json)); ?> -
    -
    diff --git a/community_server/src/Template/StateGroupAddresses/add.ctp b/community_server/src/Template/StateGroupAddresses/add.ctp deleted file mode 100644 index 43ba76178..000000000 --- a/community_server/src/Template/StateGroupAddresses/add.ctp +++ /dev/null @@ -1,28 +0,0 @@ - - -
    - Form->create($stateGroupAddress) ?> -
    - - Form->control('group_id'); - echo $this->Form->control('address_type_id', ['options' => $addressTypes]); - ?> -
    - Form->button(__('Submit')) ?> - Form->end() ?> -
    diff --git a/community_server/src/Template/StateGroupAddresses/edit.ctp b/community_server/src/Template/StateGroupAddresses/edit.ctp deleted file mode 100644 index d3ad6fe70..000000000 --- a/community_server/src/Template/StateGroupAddresses/edit.ctp +++ /dev/null @@ -1,34 +0,0 @@ - - -
    - Form->create($stateGroupAddress) ?> -
    - - Form->control('group_id'); - echo $this->Form->control('address_type_id', ['options' => $addressTypes]); - ?> -
    - Form->button(__('Submit')) ?> - Form->end() ?> -
    diff --git a/community_server/src/Template/StateGroupAddresses/index.ctp b/community_server/src/Template/StateGroupAddresses/index.ctp deleted file mode 100644 index fb463e5dd..000000000 --- a/community_server/src/Template/StateGroupAddresses/index.ctp +++ /dev/null @@ -1,55 +0,0 @@ - - -
    -

    - - - - - - - - - - - - - - - - - - - - -
    Paginator->sort('id') ?>Paginator->sort('group_id') ?>Paginator->sort('address_type_id') ?>
    Number->format($stateGroupAddress->id) ?>Number->format($stateGroupAddress->group_id) ?>has('address_type') ? $this->Html->link($stateGroupAddress->address_type->name, ['controller' => 'AddressTypes', 'action' => 'view', $stateGroupAddress->address_type->id]) : '' ?>public_key)) ?> - - Html->link(__('View'), ['action' => 'view', $stateGroupAddress->id]) ?> - Html->link(__('Edit'), ['action' => 'edit', $stateGroupAddress->id]) ?> - Form->postLink(__('Delete'), ['action' => 'delete', $stateGroupAddress->id], ['confirm' => __('Are you sure you want to delete # {0}?', $stateGroupAddress->id)]) ?> -
    -
    -
      - Paginator->first('<< ' . __('first')) ?> - Paginator->prev('< ' . __('previous')) ?> - Paginator->numbers() ?> - Paginator->next(__('next') . ' >') ?> - Paginator->last(__('last') . ' >>') ?> -
    -

    Paginator->counter(['format' => __('Page {{page}} of {{pages}}, showing {{current}} record(s) out of {{count}} total')]) ?>

    -
    -
    diff --git a/community_server/src/Template/StateGroupAddresses/view.ctp b/community_server/src/Template/StateGroupAddresses/view.ctp deleted file mode 100644 index 964b12847..000000000 --- a/community_server/src/Template/StateGroupAddresses/view.ctp +++ /dev/null @@ -1,36 +0,0 @@ - - -
    -

    id) ?>

    - - - - - - - - - - - - - -
    has('address_type') ? $this->Html->link($stateGroupAddress->address_type->name, ['controller' => 'AddressTypes', 'action' => 'view', $stateGroupAddress->address_type->id]) : '' ?>
    Number->format($stateGroupAddress->id) ?>
    Number->format($stateGroupAddress->group_id) ?>
    -
    diff --git a/community_server/src/Template/StateGroupRelationships/add.ctp b/community_server/src/Template/StateGroupRelationships/add.ctp deleted file mode 100644 index 39eb550e8..000000000 --- a/community_server/src/Template/StateGroupRelationships/add.ctp +++ /dev/null @@ -1,25 +0,0 @@ - - -
    - Form->create($stateGroupRelationship) ?> -
    - - Form->control('state_group1_id'); - echo $this->Form->control('state_group2_id'); - echo $this->Form->control('state_relationship_id'); - ?> -
    - Form->button(__('Submit')) ?> - Form->end() ?> -
    diff --git a/community_server/src/Template/StateGroupRelationships/edit.ctp b/community_server/src/Template/StateGroupRelationships/edit.ctp deleted file mode 100644 index 55bcc6afe..000000000 --- a/community_server/src/Template/StateGroupRelationships/edit.ctp +++ /dev/null @@ -1,31 +0,0 @@ - - -
    - Form->create($stateGroupRelationship) ?> -
    - - Form->control('state_group1_id'); - echo $this->Form->control('state_group2_id'); - echo $this->Form->control('state_relationship_id'); - ?> -
    - Form->button(__('Submit')) ?> - Form->end() ?> -
    diff --git a/community_server/src/Template/StateGroupRelationships/index.ctp b/community_server/src/Template/StateGroupRelationships/index.ctp deleted file mode 100644 index 57fbc4da5..000000000 --- a/community_server/src/Template/StateGroupRelationships/index.ctp +++ /dev/null @@ -1,51 +0,0 @@ - - -
    -

    - - - - - - - - - - - - - - - - - - - - - -
    Paginator->sort('id') ?>Paginator->sort('state_group1_id') ?>Paginator->sort('state_group2_id') ?>Paginator->sort('state_relationship_id') ?>
    Number->format($stateGroupRelationship->id) ?>Number->format($stateGroupRelationship->state_group1_id) ?>Number->format($stateGroupRelationship->state_group2_id) ?>Number->format($stateGroupRelationship->state_relationship_id) ?> - Html->link(__('View'), ['action' => 'view', $stateGroupRelationship->id]) ?> - Html->link(__('Edit'), ['action' => 'edit', $stateGroupRelationship->id]) ?> - Form->postLink(__('Delete'), ['action' => 'delete', $stateGroupRelationship->id], ['confirm' => __('Are you sure you want to delete # {0}?', $stateGroupRelationship->id)]) ?> -
    -
    - -

    Paginator->counter(['format' => __('Page {{page}} of {{pages}}, showing {{current}} record(s) out of {{count}} total')]) ?>

    -
    -
    diff --git a/community_server/src/Template/StateGroupRelationships/view.ctp b/community_server/src/Template/StateGroupRelationships/view.ctp deleted file mode 100644 index de871dc77..000000000 --- a/community_server/src/Template/StateGroupRelationships/view.ctp +++ /dev/null @@ -1,36 +0,0 @@ - - -
    -

    id) ?>

    - - - - - - - - - - - - - - - - - -
    Number->format($stateGroupRelationship->id) ?>
    Number->format($stateGroupRelationship->state_group1_id) ?>
    Number->format($stateGroupRelationship->state_group2_id) ?>
    Number->format($stateGroupRelationship->state_relationship_id) ?>
    -
    diff --git a/community_server/src/Template/StateGroups/add.ctp b/community_server/src/Template/StateGroups/add.ctp deleted file mode 100644 index e71480593..000000000 --- a/community_server/src/Template/StateGroups/add.ctp +++ /dev/null @@ -1,32 +0,0 @@ - - -
    - Form->create($stateGroup) ?> -
    - - Form->control('name'); - echo $this->Form->control('user_count'); - ?> -
    - Form->button(__('Submit')) ?> - Form->end() ?> -
    diff --git a/community_server/src/Template/StateGroups/edit.ctp b/community_server/src/Template/StateGroups/edit.ctp deleted file mode 100644 index 93b35256b..000000000 --- a/community_server/src/Template/StateGroups/edit.ctp +++ /dev/null @@ -1,38 +0,0 @@ - - -
    - Form->create($stateGroup) ?> -
    - - Form->control('name'); - echo $this->Form->control('user_count'); - ?> -
    - Form->button(__('Submit')) ?> - Form->end() ?> -
    diff --git a/community_server/src/Template/StateGroups/index.ctp b/community_server/src/Template/StateGroups/index.ctp deleted file mode 100644 index a37029ab2..000000000 --- a/community_server/src/Template/StateGroups/index.ctp +++ /dev/null @@ -1,57 +0,0 @@ - - -
    -

    - - - - - - - - - - - - - - - - - - - -
    Paginator->sort('id') ?>Paginator->sort('name') ?>Paginator->sort('user_count') ?>
    Number->format($stateGroup->id) ?>name) ?>Number->format($stateGroup->user_count) ?> - Html->link(__('View'), ['action' => 'view', $stateGroup->id]) ?> - Html->link(__('Edit'), ['action' => 'edit', $stateGroup->id]) ?> - Form->postLink(__('Delete'), ['action' => 'delete', $stateGroup->id], ['confirm' => __('Are you sure you want to delete # {0}?', $stateGroup->id)]) ?> -
    -
    - -

    Paginator->counter(['format' => __('Page {{page}} of {{pages}}, showing {{current}} record(s) out of {{count}} total')]) ?>

    -
    -
    diff --git a/community_server/src/Template/StateGroups/view.ctp b/community_server/src/Template/StateGroups/view.ctp deleted file mode 100644 index 0ecb27009..000000000 --- a/community_server/src/Template/StateGroups/view.ctp +++ /dev/null @@ -1,152 +0,0 @@ - - -
    -

    name) ?>

    - - - - - - - - - - - - - -
    name) ?>
    Number->format($stateGroup->id) ?>
    Number->format($stateGroup->user_count) ?>
    - - - - -
    diff --git a/community_server/src/Template/StateRelationshipTypes/add.ctp b/community_server/src/Template/StateRelationshipTypes/add.ctp deleted file mode 100644 index 5eb7c3b4f..000000000 --- a/community_server/src/Template/StateRelationshipTypes/add.ctp +++ /dev/null @@ -1,24 +0,0 @@ - - -
    - Form->create($stateRelationshipType) ?> -
    - - Form->control('name'); - echo $this->Form->control('text'); - ?> -
    - Form->button(__('Submit')) ?> - Form->end() ?> -
    diff --git a/community_server/src/Template/StateRelationshipTypes/edit.ctp b/community_server/src/Template/StateRelationshipTypes/edit.ctp deleted file mode 100644 index 96ef4ba88..000000000 --- a/community_server/src/Template/StateRelationshipTypes/edit.ctp +++ /dev/null @@ -1,30 +0,0 @@ - - -
    - Form->create($stateRelationshipType) ?> -
    - - Form->control('name'); - echo $this->Form->control('text'); - ?> -
    - Form->button(__('Submit')) ?> - Form->end() ?> -
    diff --git a/community_server/src/Template/StateRelationshipTypes/index.ctp b/community_server/src/Template/StateRelationshipTypes/index.ctp deleted file mode 100644 index 2e44a8d88..000000000 --- a/community_server/src/Template/StateRelationshipTypes/index.ctp +++ /dev/null @@ -1,49 +0,0 @@ - - -
    -

    - - - - - - - - - - - - - - - - - - - -
    Paginator->sort('id') ?>Paginator->sort('name') ?>Paginator->sort('text') ?>
    Number->format($stateRelationshipType->id) ?>name) ?>text) ?> - Html->link(__('View'), ['action' => 'view', $stateRelationshipType->id]) ?> - Html->link(__('Edit'), ['action' => 'edit', $stateRelationshipType->id]) ?> - Form->postLink(__('Delete'), ['action' => 'delete', $stateRelationshipType->id], ['confirm' => __('Are you sure you want to delete # {0}?', $stateRelationshipType->id)]) ?> -
    -
    - -

    Paginator->counter(['format' => __('Page {{page}} of {{pages}}, showing {{current}} record(s) out of {{count}} total')]) ?>

    -
    -
    diff --git a/community_server/src/Template/StateRelationshipTypes/view.ctp b/community_server/src/Template/StateRelationshipTypes/view.ctp deleted file mode 100644 index 5d745a0df..000000000 --- a/community_server/src/Template/StateRelationshipTypes/view.ctp +++ /dev/null @@ -1,32 +0,0 @@ - - -
    -

    name) ?>

    - - - - - - - - - - - - - -
    name) ?>
    text) ?>
    Number->format($stateRelationshipType->id) ?>
    -
    diff --git a/community_server/src/Template/StateUserRoles/assign_role.ctp b/community_server/src/Template/StateUserRoles/assign_role.ctp deleted file mode 100644 index 64d3a1f8b..000000000 --- a/community_server/src/Template/StateUserRoles/assign_role.ctp +++ /dev/null @@ -1,49 +0,0 @@ -assign('title', __('Assign Role')); -// In a View class -$this->loadHelper('Form', [ - 'templates' => 'horizontal_form', -]); -?> -Html->css([ - 'loginServer/style.css', - 'rippleUI/style.css', - 'materialdesignicons.min.css' -]) ?> - -
    -

    Assign Role

    -
    - Form->create($assignRoleForm, []) ?> -
    User:  first_name." ".$stateUser->last_name ?>
    -
    Select Role:
    Form->select('role_id', $roles, ['label' => __('Role'), 'class' => 'form-control', 'id' => 'inlineFormInputGroup', 'placeholder' => __('Role'), "multiple" => "multiple", "value" => $role_ids]) ?>
    - Form->button(' ' . __('Assign Role'), ['class' => 'form-button']) ?> - Form->hidden('public_hex', ['id' => 'input-order-row', 'value' => $public_hex]) ?> -
    -
    diff --git a/community_server/src/Template/StateUserRoles/index.ctp b/community_server/src/Template/StateUserRoles/index.ctp deleted file mode 100644 index 4e6ea8cb1..000000000 --- a/community_server/src/Template/StateUserRoles/index.ctp +++ /dev/null @@ -1,69 +0,0 @@ - - -
    -

    - - - - - - - - - - - - - - - - - - - - - - -
    Paginator->sort('id') ?>Paginator->sort('first_name') ?> - Paginator->sort('last_name') ?> - Paginator->sort('username') ?> - Paginator->sort('email') ?> - Paginator->sort('disabled') ?> -
    Number->format($stateUser->id) ?>first_name ?>last_name ?>username ?>email ?>disabled ?> - Html->link(__('View'), ['action' => 'view', $stateUser->id]) ?> - Html->link(__('Edit'), ['action' => 'edit', $stateUser->id]) ?> - Form->postLink(__('Delete'), ['action' => 'delete', $stateUser->id], ['confirm' => __('Are you sure you want to delete # {0}?', $stateUser->id)]) ?> -
    -
    - -

    Paginator->counter(['format' => __('Page {{page}} of {{pages}}, showing {{current}} record(s) out of {{count}} total')]) ?>

    -
    -
    diff --git a/community_server/src/Template/StateUserRoles/search.ctp b/community_server/src/Template/StateUserRoles/search.ctp deleted file mode 100644 index aff7fbbcb..000000000 --- a/community_server/src/Template/StateUserRoles/search.ctp +++ /dev/null @@ -1,53 +0,0 @@ -assign('title', __('Benutzer suchen')); -// In a View class -$this->loadHelper('Form', [ - 'templates' => 'horizontal_form', -]); -?> -
    -

    Benutzer suchen

    -
    - Form->create($searchForm, []) ?> - Form->control('search', ['label' => __('Suchbegriff'), 'class' => 'form-control', 'id' => 'inlineFormInputGroup', 'placeholder' => __('Vorname/Nachname/E-Mail')]) ?> - Form->button('search ' . __('Suchen'), ['class' => 'form-button']) ?> - Form->hidden('order_row', ['id' => 'input-order-row']) ?> -
    -
    -
    -

    - - - - - - - - - - - - - - - - - - - - - -
    Paginator->sort('first_name') ?>Paginator->sort('last_name') ?>Paginator->sort('email') ?>
    - Html->link(__('Assign Role'), ['action' => 'assignRole', $stateUser['pubkeyhex']]) ?> -
    -
    diff --git a/community_server/src/Template/StateUserTransactions/add.ctp b/community_server/src/Template/StateUserTransactions/add.ctp deleted file mode 100644 index b131a43e5..000000000 --- a/community_server/src/Template/StateUserTransactions/add.ctp +++ /dev/null @@ -1,31 +0,0 @@ - - -
    - Form->create($stateUserTransaction) ?> -
    - - Form->control('state_user_id', ['options' => $stateUsers]); - echo $this->Form->control('transaction_id', ['options' => $transactions]); - echo $this->Form->control('transaction_type_id', ['options' => $transactionTypes]); - ?> -
    - Form->button(__('Submit')) ?> - Form->end() ?> -
    diff --git a/community_server/src/Template/StateUserTransactions/edit.ctp b/community_server/src/Template/StateUserTransactions/edit.ctp deleted file mode 100644 index eec26e522..000000000 --- a/community_server/src/Template/StateUserTransactions/edit.ctp +++ /dev/null @@ -1,37 +0,0 @@ - - -
    - Form->create($stateUserTransaction) ?> -
    - - Form->control('state_user_id', ['options' => $stateUsers]); - echo $this->Form->control('transaction_id', ['options' => $transactions]); - echo $this->Form->control('transaction_type_id', ['options' => $transactionTypes]); - ?> -
    - Form->button(__('Submit')) ?> - Form->end() ?> -
    diff --git a/community_server/src/Template/StateUserTransactions/index.ctp b/community_server/src/Template/StateUserTransactions/index.ctp deleted file mode 100644 index 9bdd3d6b3..000000000 --- a/community_server/src/Template/StateUserTransactions/index.ctp +++ /dev/null @@ -1,57 +0,0 @@ - - -
    -

    - - - - - - - - - - - - - - - - - - - - - -
    Paginator->sort('id') ?>Paginator->sort('state_user_id') ?>Paginator->sort('transaction_id') ?>Paginator->sort('transaction_type_id') ?>
    Number->format($stateUserTransaction->id) ?>has('state_user') ? $this->Html->link($stateUserTransaction->state_user->email, ['controller' => 'StateUsers', 'action' => 'view', $stateUserTransaction->state_user->id]) : '' ?>has('transaction') ? $this->Html->link($stateUserTransaction->transaction->id, ['controller' => 'Transactions', 'action' => 'view', $stateUserTransaction->transaction->id]) : '' ?>has('transaction_type') ? $this->Html->link($stateUserTransaction->transaction_type->name, ['controller' => 'TransactionTypes', 'action' => 'view', $stateUserTransaction->transaction_type->id]) : '' ?> - Html->link(__('View'), ['action' => 'view', $stateUserTransaction->id]) ?> - Html->link(__('Edit'), ['action' => 'edit', $stateUserTransaction->id]) ?> - Form->postLink(__('Delete'), ['action' => 'delete', $stateUserTransaction->id], ['confirm' => __('Are you sure you want to delete # {0}?', $stateUserTransaction->id)]) ?> -
    -
    -
      - Paginator->first('<< ' . __('first')) ?> - Paginator->prev('< ' . __('previous')) ?> - Paginator->numbers() ?> - Paginator->next(__('next') . ' >') ?> - Paginator->last(__('last') . ' >>') ?> -
    -

    Paginator->counter(['format' => __('Page {{page}} of {{pages}}, showing {{current}} record(s) out of {{count}} total')]) ?>

    -
    -
    diff --git a/community_server/src/Template/StateUserTransactions/view.ctp b/community_server/src/Template/StateUserTransactions/view.ctp deleted file mode 100644 index 13c05347b..000000000 --- a/community_server/src/Template/StateUserTransactions/view.ctp +++ /dev/null @@ -1,42 +0,0 @@ - - -
    -

    id) ?>

    - - - - - - - - - - - - - - - - - -
    has('state_user') ? $this->Html->link($stateUserTransaction->state_user->email, ['controller' => 'StateUsers', 'action' => 'view', $stateUserTransaction->state_user->id]) : '' ?>
    has('transaction') ? $this->Html->link($stateUserTransaction->transaction->id, ['controller' => 'Transactions', 'action' => 'view', $stateUserTransaction->transaction->id]) : '' ?>
    has('transaction_type') ? $this->Html->link($stateUserTransaction->transaction_type->name, ['controller' => 'TransactionTypes', 'action' => 'view', $stateUserTransaction->transaction_type->id]) : '' ?>
    Number->format($stateUserTransaction->id) ?>
    -
    diff --git a/community_server/src/Template/StateUsers/add.ctp b/community_server/src/Template/StateUsers/add.ctp deleted file mode 100644 index a810bc9d5..000000000 --- a/community_server/src/Template/StateUsers/add.ctp +++ /dev/null @@ -1,34 +0,0 @@ - - -
    - Form->create($stateUser) ?> -
    - - Form->control('index_id'); - echo $this->Form->control('state_group_id', ['options' => $stateGroups]); - ?> -
    - Form->button(__('Submit')) ?> - Form->end() ?> -
    diff --git a/community_server/src/Template/StateUsers/edit.ctp b/community_server/src/Template/StateUsers/edit.ctp deleted file mode 100644 index 473f1d845..000000000 --- a/community_server/src/Template/StateUsers/edit.ctp +++ /dev/null @@ -1,39 +0,0 @@ - - -
    - Form->create($stateUser) ?> -
    - - Form->control('disabled'); - ?> -
    - Form->button(__('Submit')) ?> - Form->end() ?> -
    diff --git a/community_server/src/Template/StateUsers/index.ctp b/community_server/src/Template/StateUsers/index.ctp deleted file mode 100644 index 4e6ea8cb1..000000000 --- a/community_server/src/Template/StateUsers/index.ctp +++ /dev/null @@ -1,69 +0,0 @@ - - -
    -

    - - - - - - - - - - - - - - - - - - - - - - -
    Paginator->sort('id') ?>Paginator->sort('first_name') ?> - Paginator->sort('last_name') ?> - Paginator->sort('username') ?> - Paginator->sort('email') ?> - Paginator->sort('disabled') ?> -
    Number->format($stateUser->id) ?>first_name ?>last_name ?>username ?>email ?>disabled ?> - Html->link(__('View'), ['action' => 'view', $stateUser->id]) ?> - Html->link(__('Edit'), ['action' => 'edit', $stateUser->id]) ?> - Form->postLink(__('Delete'), ['action' => 'delete', $stateUser->id], ['confirm' => __('Are you sure you want to delete # {0}?', $stateUser->id)]) ?> -
    -
    - -

    Paginator->counter(['format' => __('Page {{page}} of {{pages}}, showing {{current}} record(s) out of {{count}} total')]) ?>

    -
    -
    diff --git a/community_server/src/Template/StateUsers/list_ident_hashes.ctp b/community_server/src/Template/StateUsers/list_ident_hashes.ctp deleted file mode 100644 index 777a32c99..000000000 --- a/community_server/src/Template/StateUsers/list_ident_hashes.ctp +++ /dev/null @@ -1,29 +0,0 @@ - -
    - - - - - - - - - - - - - - - - - -
    first namelast nameemailidentHashPublic key hex -
    first_name ?>last_name ?>email ?>identHash ?>public_key)) ?>
    -
    diff --git a/community_server/src/Template/StateUsers/search.ctp b/community_server/src/Template/StateUsers/search.ctp deleted file mode 100644 index 626cb7313..000000000 --- a/community_server/src/Template/StateUsers/search.ctp +++ /dev/null @@ -1,79 +0,0 @@ -assign('title', __('Benutzer suchen')); -// In a View class -$this->loadHelper('Form', [ - 'templates' => 'horizontal_form', -]); - -$stateOptions = [ - 'all' => __('Alle'), - //'account created'=>__('Konto angelegt'), - //'account not on login-server' => __('Konto nicht auf Login-Server'), - //'email activated' => __('Konto aktiviert'), - //'account copied to community' => __('Konto auf Gemeinschafts-Server'), - 'email not activated' => __('Konto nicht aktiviert'), - //'account multiple times on login-server' => __('Konto mehrfach vorhanden'), - //'account not on community server' => __('Konto nicht auf Gemeinschafts-Server'), - //'no keys' => __('Keine Schlüssel generiert') -]; - -?> -Html->css([ - 'loginServer/style.css', - 'rippleUI/style.css', - 'materialdesignicons.min.css' -]) ?> - -
    -

    Benutzer suchen

    -
    - Form->create($searchForm, []) ?> - Form->control('search', ['label' => __('Suchbegriff'), 'class' => 'form-control', 'id' => 'inlineFormInputGroup', 'placeholder' => __('Vorname/Nachname/E-Mail'), 'required' => false]) ?> - Form->control('account_state', ['label' => __('Konto Status'), 'class' => 'form-control', 'type' => 'select', 'options' => $stateOptions]) ?> - Form->button('search ' . __('Suchen'), ['class' => 'form-button']) ?> - Form->hidden('order_row', ['id' => 'input-order-row']) ?> -
    -
    -
    - -
    - - -Html->script('userSearch.min') ?> - - - diff --git a/community_server/src/Template/StateUsers/view.ctp b/community_server/src/Template/StateUsers/view.ctp deleted file mode 100644 index c2bb33c2b..000000000 --- a/community_server/src/Template/StateUsers/view.ctp +++ /dev/null @@ -1,143 +0,0 @@ - - -
    -

    first_name) ?> last_name) ?> <email) ?>>

    - Konto-Adresse: public_key))) ?> - - - - - -
    diff --git a/community_server/src/Template/TransactionCreations/add.ctp b/community_server/src/Template/TransactionCreations/add.ctp deleted file mode 100644 index dfe34be56..000000000 --- a/community_server/src/Template/TransactionCreations/add.ctp +++ /dev/null @@ -1,29 +0,0 @@ - - -
    - Form->create($transactionCreation) ?> -
    - - Form->control('transaction_id', ['options' => $transactions]); - echo $this->Form->control('state_user_id', ['options' => $stateUsers]); - echo $this->Form->control('amount'); - ?> -
    - Form->button(__('Submit')) ?> - Form->end() ?> -
    diff --git a/community_server/src/Template/TransactionCreations/create.ctp b/community_server/src/Template/TransactionCreations/create.ctp deleted file mode 100644 index d5c9ee2c5..000000000 --- a/community_server/src/Template/TransactionCreations/create.ctp +++ /dev/null @@ -1,31 +0,0 @@ - $receiver) { - //var_dump($receiver); - array_push($address_options, [ - 'text' => $receiver['name'], - 'value' => $i+1, - 'title' => $receiver['key'] - ]); -} -$this->assign('title', __('Schöpfungstransaktion')); -?> -
    - - Form->create($creationForm) ?> -
    - Form->control('memo'); ?> - Form->control('amount'); ?> - Form->control('receiver', ['options' => $address_options]); ?> - -
    - Form->button(__('Transaktion(en) abschließen'), ['name' => 'next', 'class' => 'grd-form-bn grd-form-bn-succeed grd_clickable grd-width-200']) ?> - Form->button(__('Weitere Transaktion erstellen'), ['name' => 'add', 'class' => 'grd-form-bn grd_clickable grd-width-200']) ?> - Form->end() ?> -
    diff --git a/community_server/src/Template/TransactionCreations/create_multi.ctp b/community_server/src/Template/TransactionCreations/create_multi.ctp deleted file mode 100644 index d4d130b9c..000000000 --- a/community_server/src/Template/TransactionCreations/create_multi.ctp +++ /dev/null @@ -1,229 +0,0 @@ - $receiver) { - //var_dump($receiver); - array_push($address_options, [ - 'text' => $receiver['name'], - 'value' => $i+1, - 'title' => $receiver['key'] - ]); -}*/ -$this->assign('title', __('Schöpfungstransaktion')); -$this->loadHelper('Form', [ - 'templates' => 'horizontal_form', -]); - -use Cake\I18n\FrozenTime; - -?> -
    -

    Schöpfen

    -
    - Form->create($creationForm) ?> - 0) : ?> -
    - -
    -
    - Form->control('searchText', ['label' => __('Suche'), 'placeholder' => 'Email/Name']); ?> - Form->button(__('Suchen'), ['name' => 'searchButton', 'class' => 'form-button']) ?> -
    -
    - Form->control('memo', ['label' => __('Memo'), 'placeholder' => 'Memo']); ?> - Form->control('amount', ['label' => __('Betrag in GDD'), 'required' => false]); ?> - day(1)->subMonth(1); - ?> - -
    -
    - - -
    -
    - 30000000) { - //$disable = 'disabled'; - } - ?> -
    - - Form->hidden('user_pending[' . $possibleReceiver['id'] . ']', ['value' => $possibleReceiver['pending']] ) ?> - -
    -
    - Form->checkbox('user[' .$possibleReceiver['id'] . ']', ['value' => $possibleReceiver['id'], 'hiddenField' => false, $disable]); ?> -
    -
    - - - - - - - <> - - -
    -
    - Form->text('user_amount[' . $possibleReceiver['id'] . ']', ['placeholder' => __('Für benutzerdefinierten Betrag'), 'class' => 'user_amount', 'type' => 'number', 'step' => '0.01', $disable]); ?> GDD -
    -
    - Form->date('user_target_date[' . $possibleReceiver['id'] . ']', ['value' => $firstDayLastMonth]) ?> -
    -
    -
    - - - Bereits als Transaktion angelegt: element('printGradido', ['number' => $possibleReceiver['pending']]);?> - - - - - In diesen und den letzten 2 Monaten bereits geschöpft (alte Berechnung): element('printGradido', ['number' => $possibleReceiver['amount']]);?> - - - 0) : ?> - - Im letzten Monat geschöpft (neue Berechnung): element('printGradido', ['number' => $possibleReceiver['amount2']]) ?> - - -
    -
    - - -
    - $limit) : ?> -

    Benutzer insgesamt

    -

    Seiten: - 0) echo ', '; - if($i != $page) { - echo $this->Html->link($i, ['action' => 'create_multi', $i]); - } else { - echo $i; - } - } - ?> -

    - -
    -
    -
    - Form->button(__('Transaktion(en) abschließen'), ['name' => 'next', 'class' => 'form-button' ]) ?> - Form->button(__('Weitere Transaktion erstellen'), ['name' => 'add', 'class' => 'form-button']) ?> -
    -
    - Form->end() ?> -
    -
    -Html->script('basic'); ?> - - 0) : ?> - - \ No newline at end of file diff --git a/community_server/src/Template/TransactionCreations/edit.ctp b/community_server/src/Template/TransactionCreations/edit.ctp deleted file mode 100644 index 85b7704be..000000000 --- a/community_server/src/Template/TransactionCreations/edit.ctp +++ /dev/null @@ -1,35 +0,0 @@ - - -
    - Form->create($transactionCreation) ?> -
    - - Form->control('transaction_id', ['options' => $transactions]); - echo $this->Form->control('state_user_id', ['options' => $stateUsers]); - echo $this->Form->control('amount'); - ?> -
    - Form->button(__('Submit')) ?> - Form->end() ?> -
    diff --git a/community_server/src/Template/TransactionCreations/index.ctp b/community_server/src/Template/TransactionCreations/index.ctp deleted file mode 100644 index 4eb7b2471..000000000 --- a/community_server/src/Template/TransactionCreations/index.ctp +++ /dev/null @@ -1,58 +0,0 @@ - - -
    -

    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Paginator->sort('id') ?>Paginator->sort('transaction_id') ?>Paginator->sort('state_user_id') ?>Paginator->sort('target_date') ?>Paginator->sort('received') ?>Paginator->sort('amount') ?>
    Number->format($transactionCreation->id) ?>has('transaction') ? $this->Html->link($transactionCreation->transaction->id, ['controller' => 'Transactions', 'action' => 'view', $transactionCreation->transaction->id]) : '' ?>has('state_user') ? $this->Html->link($transactionCreation->state_user->getEmailWithName(), ['controller' => 'StateUsers', 'action' => 'view', $transactionCreation->state_user->id]) : '' ?>target_date) ?>transaction->received) ?>element('printGradido', ['number' => $transactionCreation->amount]) ?>ident_hash) ?> - Html->link(__('View'), ['action' => 'view', $transactionCreation->id]) ?> -
    -
    - -

    Paginator->counter(['format' => __('Page {{page}} of {{pages}}, showing {{current}} record(s) out of {{count}} total')]) ?>

    -
    -
    diff --git a/community_server/src/Template/TransactionCreations/view.ctp b/community_server/src/Template/TransactionCreations/view.ctp deleted file mode 100644 index a51312674..000000000 --- a/community_server/src/Template/TransactionCreations/view.ctp +++ /dev/null @@ -1,40 +0,0 @@ - - -
    -

    id) ?>

    - - - - - - - - - - - - - - - - - -
    has('transaction') ? $this->Html->link($transactionCreation->transaction->id, ['controller' => 'Transactions', 'action' => 'view', $transactionCreation->transaction->id]) : '' ?>
    has('state_user') ? $this->Html->link($transactionCreation->state_user->id, ['controller' => 'StateUsers', 'action' => 'view', $transactionCreation->state_user->id]) : '' ?>
    Number->format($transactionCreation->id) ?>
    Number->format($transactionCreation->amount) ?>
    -
    diff --git a/community_server/src/Template/TransactionGroupAddaddress/add.ctp b/community_server/src/Template/TransactionGroupAddaddress/add.ctp deleted file mode 100644 index 21fa1bea7..000000000 --- a/community_server/src/Template/TransactionGroupAddaddress/add.ctp +++ /dev/null @@ -1,28 +0,0 @@ - - -
    - Form->create($transactionGroupAddaddres) ?> -
    - - Form->control('transaction_id', ['options' => $transactions]); - echo $this->Form->control('address_type_id', ['options' => $addressTypes]); - ?> -
    - Form->button(__('Submit')) ?> - Form->end() ?> -
    diff --git a/community_server/src/Template/TransactionGroupAddaddress/edit.ctp b/community_server/src/Template/TransactionGroupAddaddress/edit.ctp deleted file mode 100644 index e9d7c318a..000000000 --- a/community_server/src/Template/TransactionGroupAddaddress/edit.ctp +++ /dev/null @@ -1,34 +0,0 @@ - - -
    - Form->create($transactionGroupAddaddres) ?> -
    - - Form->control('transaction_id', ['options' => $transactions]); - echo $this->Form->control('address_type_id', ['options' => $addressTypes]); - ?> -
    - Form->button(__('Submit')) ?> - Form->end() ?> -
    diff --git a/community_server/src/Template/TransactionGroupAddaddress/index.ctp b/community_server/src/Template/TransactionGroupAddaddress/index.ctp deleted file mode 100644 index 404115d69..000000000 --- a/community_server/src/Template/TransactionGroupAddaddress/index.ctp +++ /dev/null @@ -1,55 +0,0 @@ - - -
    -

    - - - - - - - - - - - - - - - - - - - - -
    Paginator->sort('id') ?>Paginator->sort('transaction_id') ?>Paginator->sort('address_type_id') ?>
    Number->format($transactionGroupAddaddres->id) ?>has('transaction') ? $this->Html->link($transactionGroupAddaddres->transaction->id, ['controller' => 'Transactions', 'action' => 'view', $transactionGroupAddaddres->transaction->id]) : '' ?>has('address_type') ? $this->Html->link($transactionGroupAddaddres->address_type->name, ['controller' => 'AddressTypes', 'action' => 'view', $transactionGroupAddaddres->address_type->id]) : '' ?>public_key)) ?> - - Html->link(__('View'), ['action' => 'view', $transactionGroupAddaddres->id]) ?> - Html->link(__('Edit'), ['action' => 'edit', $transactionGroupAddaddres->id]) ?> - Form->postLink(__('Delete'), ['action' => 'delete', $transactionGroupAddaddres->id], ['confirm' => __('Are you sure you want to delete # {0}?', $transactionGroupAddaddres->id)]) ?> -
    -
    - -

    Paginator->counter(['format' => __('Page {{page}} of {{pages}}, showing {{current}} record(s) out of {{count}} total')]) ?>

    -
    -
    diff --git a/community_server/src/Template/TransactionGroupAddaddress/view.ctp b/community_server/src/Template/TransactionGroupAddaddress/view.ctp deleted file mode 100644 index 8401780e7..000000000 --- a/community_server/src/Template/TransactionGroupAddaddress/view.ctp +++ /dev/null @@ -1,36 +0,0 @@ - - -
    -

    id) ?>

    - - - - - - - - - - - - - -
    has('transaction') ? $this->Html->link($transactionGroupAddaddres->transaction->id, ['controller' => 'Transactions', 'action' => 'view', $transactionGroupAddaddres->transaction->id]) : '' ?>
    has('address_type') ? $this->Html->link($transactionGroupAddaddres->address_type->name, ['controller' => 'AddressTypes', 'action' => 'view', $transactionGroupAddaddres->address_type->id]) : '' ?>
    Number->format($transactionGroupAddaddres->id) ?>
    -
    diff --git a/community_server/src/Template/TransactionGroupAllowtrades/add.ctp b/community_server/src/Template/TransactionGroupAllowtrades/add.ctp deleted file mode 100644 index 7e29efc24..000000000 --- a/community_server/src/Template/TransactionGroupAllowtrades/add.ctp +++ /dev/null @@ -1,27 +0,0 @@ - - -
    - Form->create($transactionGroupAllowtrade) ?> -
    - - Form->control('transaction_id', ['options' => $transactions]); - echo $this->Form->control('group_id'); - echo $this->Form->control('allow'); - ?> -
    - Form->button(__('Submit')) ?> - Form->end() ?> -
    diff --git a/community_server/src/Template/TransactionGroupAllowtrades/edit.ctp b/community_server/src/Template/TransactionGroupAllowtrades/edit.ctp deleted file mode 100644 index 500241331..000000000 --- a/community_server/src/Template/TransactionGroupAllowtrades/edit.ctp +++ /dev/null @@ -1,33 +0,0 @@ - - -
    - Form->create($transactionGroupAllowtrade) ?> -
    - - Form->control('transaction_id', ['options' => $transactions]); - echo $this->Form->control('group_id'); - echo $this->Form->control('allow'); - ?> -
    - Form->button(__('Submit')) ?> - Form->end() ?> -
    diff --git a/community_server/src/Template/TransactionGroupAllowtrades/index.ctp b/community_server/src/Template/TransactionGroupAllowtrades/index.ctp deleted file mode 100644 index 07386ccb2..000000000 --- a/community_server/src/Template/TransactionGroupAllowtrades/index.ctp +++ /dev/null @@ -1,53 +0,0 @@ - - -
    -

    - - - - - - - - - - - - - - - - - - - - - -
    Paginator->sort('id') ?>Paginator->sort('transaction_id') ?>Paginator->sort('group_id') ?>Paginator->sort('allow') ?>
    Number->format($transactionGroupAllowtrade->id) ?>has('transaction') ? $this->Html->link($transactionGroupAllowtrade->transaction->id, ['controller' => 'Transactions', 'action' => 'view', $transactionGroupAllowtrade->transaction->id]) : '' ?>Number->format($transactionGroupAllowtrade->group_id) ?>allow) ?> - Html->link(__('View'), ['action' => 'view', $transactionGroupAllowtrade->id]) ?> - Html->link(__('Edit'), ['action' => 'edit', $transactionGroupAllowtrade->id]) ?> - Form->postLink(__('Delete'), ['action' => 'delete', $transactionGroupAllowtrade->id], ['confirm' => __('Are you sure you want to delete # {0}?', $transactionGroupAllowtrade->id)]) ?> -
    -
    - -

    Paginator->counter(['format' => __('Page {{page}} of {{pages}}, showing {{current}} record(s) out of {{count}} total')]) ?>

    -
    -
    diff --git a/community_server/src/Template/TransactionGroupAllowtrades/view.ctp b/community_server/src/Template/TransactionGroupAllowtrades/view.ctp deleted file mode 100644 index 7a6a36f5a..000000000 --- a/community_server/src/Template/TransactionGroupAllowtrades/view.ctp +++ /dev/null @@ -1,38 +0,0 @@ - - -
    -

    id) ?>

    - - - - - - - - - - - - - - - - - -
    has('transaction') ? $this->Html->link($transactionGroupAllowtrade->transaction->id, ['controller' => 'Transactions', 'action' => 'view', $transactionGroupAllowtrade->transaction->id]) : '' ?>
    Number->format($transactionGroupAllowtrade->id) ?>
    Number->format($transactionGroupAllowtrade->group_id) ?>
    allow ? __('Yes') : __('No'); ?>
    -
    diff --git a/community_server/src/Template/TransactionGroupCreates/add.ctp b/community_server/src/Template/TransactionGroupCreates/add.ctp deleted file mode 100644 index 6e6174eb4..000000000 --- a/community_server/src/Template/TransactionGroupCreates/add.ctp +++ /dev/null @@ -1,29 +0,0 @@ - - -
    - Form->create($transactionGroupCreate) ?> -
    - - Form->control('transaction_id', ['options' => $transactions]); - echo $this->Form->control('state_group_id', ['options' => $stateGroups]); - echo $this->Form->control('name'); - ?> -
    - Form->button(__('Submit')) ?> - Form->end() ?> -
    diff --git a/community_server/src/Template/TransactionGroupCreates/edit.ctp b/community_server/src/Template/TransactionGroupCreates/edit.ctp deleted file mode 100644 index d1890afca..000000000 --- a/community_server/src/Template/TransactionGroupCreates/edit.ctp +++ /dev/null @@ -1,35 +0,0 @@ - - -
    - Form->create($transactionGroupCreate) ?> -
    - - Form->control('transaction_id', ['options' => $transactions]); - echo $this->Form->control('state_group_id', ['options' => $stateGroups]); - echo $this->Form->control('name'); - ?> -
    - Form->button(__('Submit')) ?> - Form->end() ?> -
    diff --git a/community_server/src/Template/TransactionGroupCreates/index.ctp b/community_server/src/Template/TransactionGroupCreates/index.ctp deleted file mode 100644 index 13aeabf83..000000000 --- a/community_server/src/Template/TransactionGroupCreates/index.ctp +++ /dev/null @@ -1,55 +0,0 @@ - - -
    -

    - - - - - - - - - - - - - - - - - - - - - -
    Paginator->sort('id') ?>Paginator->sort('transaction_id') ?>Paginator->sort('state_group_id') ?>Paginator->sort('name') ?>
    Number->format($transactionGroupCreate->id) ?>has('transaction') ? $this->Html->link($transactionGroupCreate->transaction->id, ['controller' => 'Transactions', 'action' => 'view', $transactionGroupCreate->transaction->id]) : '' ?>has('state_group') ? $this->Html->link($transactionGroupCreate->state_group->name, ['controller' => 'StateGroups', 'action' => 'view', $transactionGroupCreate->state_group->id]) : '' ?>name) ?> - Html->link(__('View'), ['action' => 'view', $transactionGroupCreate->id]) ?> - Html->link(__('Edit'), ['action' => 'edit', $transactionGroupCreate->id]) ?> - Form->postLink(__('Delete'), ['action' => 'delete', $transactionGroupCreate->id], ['confirm' => __('Are you sure you want to delete # {0}?', $transactionGroupCreate->id)]) ?> -
    -
    - -

    Paginator->counter(['format' => __('Page {{page}} of {{pages}}, showing {{current}} record(s) out of {{count}} total')]) ?>

    -
    -
    diff --git a/community_server/src/Template/TransactionGroupCreates/view.ctp b/community_server/src/Template/TransactionGroupCreates/view.ctp deleted file mode 100644 index c774f8bc3..000000000 --- a/community_server/src/Template/TransactionGroupCreates/view.ctp +++ /dev/null @@ -1,40 +0,0 @@ - - -
    -

    name) ?>

    - - - - - - - - - - - - - - - - - -
    has('transaction') ? $this->Html->link($transactionGroupCreate->transaction->id, ['controller' => 'Transactions', 'action' => 'view', $transactionGroupCreate->transaction->id]) : '' ?>
    has('state_group') ? $this->Html->link($transactionGroupCreate->state_group->name, ['controller' => 'StateGroups', 'action' => 'view', $transactionGroupCreate->state_group->id]) : '' ?>
    name) ?>
    Number->format($transactionGroupCreate->id) ?>
    -
    diff --git a/community_server/src/Template/TransactionSendCoins/add.ctp b/community_server/src/Template/TransactionSendCoins/add.ctp deleted file mode 100644 index 8b5a757c4..000000000 --- a/community_server/src/Template/TransactionSendCoins/add.ctp +++ /dev/null @@ -1,30 +0,0 @@ - - -
    - Form->create($transactionSendCoin) ?> -
    - - Form->control('transaction_id', ['options' => $transactions]); - echo $this->Form->control('state_user_id', ['options' => $stateUsers]); - echo $this->Form->control('amount'); - echo $this->Form->control('sender_final_balance'); - ?> -
    - Form->button(__('Submit')) ?> - Form->end() ?> -
    diff --git a/community_server/src/Template/TransactionSendCoins/create.ctp b/community_server/src/Template/TransactionSendCoins/create.ctp deleted file mode 100644 index 91e7678e0..000000000 --- a/community_server/src/Template/TransactionSendCoins/create.ctp +++ /dev/null @@ -1,40 +0,0 @@ -assign('title', __('Überweisung')); -// In a View class -$this->loadHelper('Form', [ - 'templates' => 'horizontal_form', -]); -?> -
    -

    Überweisen

    -
    - Form->create($transferForm) ?> - Form->control('email', ['label' => __('Empfänger'), 'placeholder' => 'E-Mail']) ?> - Form->control('group', ['label' => __('Community Alias'), 'options' => $groups, 'default' => $user['group_alias']]) ?> - Form->control('memo', ['label' => __('Verwendungszweck'), 'rows' => 3]) ?> - Form->control('amount', ['label' => __('Betrag in GDD')]) ?> - Form->button(__('Transaktion abschließen'), ['name' => 'next', 'class' => 'form-button']) ?> - - Form->end() ?> -
    -
    - -Html->script(['core', 'vendor.addons']); ?> - diff --git a/community_server/src/Template/TransactionSendCoins/create_raw.ctp b/community_server/src/Template/TransactionSendCoins/create_raw.ctp deleted file mode 100644 index 0b3d74e1f..000000000 --- a/community_server/src/Template/TransactionSendCoins/create_raw.ctp +++ /dev/null @@ -1,55 +0,0 @@ -assign('title', __('Überweisung')); -// In a View class -$this->loadHelper('Form', [ - 'templates' => 'horizontal_form', -]); -?> - -
    -
    -
    -

    Überweisen

    -
    -
    -
    -
    - Form->create($transferRawForm) ?> - Form->control('sender_privkey_hex', ['label' => __('Sender Private Key')]) ?> - Form->control('sender_pubkey_hex', ['label' => __('Sender Public Key')]) ?> - Form->control('receiver_pubkey_hex', ['label' => __('Empfänger Public Key')]) ?> - Form->control('memo', ['label' => __('Verwendungszweck'), 'rows' => 3]) ?> - Form->control('amount', ['label' => __('Betrag in GDD')]) ?> - Form->button(__('Transaktion abschließen'), ['name' => 'next', 'class' => 'btn btn-sm btn-primary']) ?> - Form->end() ?> -
    -
    -
    -
    -
    -
    -
    - -Html->script(['core', 'vendor.addons']); ?> - diff --git a/community_server/src/Template/TransactionSendCoins/edit.ctp b/community_server/src/Template/TransactionSendCoins/edit.ctp deleted file mode 100644 index 61a6841fe..000000000 --- a/community_server/src/Template/TransactionSendCoins/edit.ctp +++ /dev/null @@ -1,36 +0,0 @@ - - -
    - Form->create($transactionSendCoin) ?> -
    - - Form->control('transaction_id', ['options' => $transactions]); - echo $this->Form->control('state_user_id', ['options' => $stateUsers]); - echo $this->Form->control('amount'); - echo $this->Form->control('sender_final_balance'); - ?> -
    - Form->button(__('Submit')) ?> - Form->end() ?> -
    diff --git a/community_server/src/Template/TransactionSendCoins/index.ctp b/community_server/src/Template/TransactionSendCoins/index.ctp deleted file mode 100644 index c98f675a5..000000000 --- a/community_server/src/Template/TransactionSendCoins/index.ctp +++ /dev/null @@ -1,57 +0,0 @@ - - -
    -

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    Paginator->sort('id') ?>Paginator->sort('transaction_id') ?>Paginator->sort('state_user_id') ?>Paginator->sort('receiver_user_id') ?>Paginator->sort('amount') ?>Paginator->sort('sender_final_balance') ?>
    Number->format($transactionSendCoin->id) ?>has('transaction') ? $this->Html->link($transactionSendCoin->transaction->id, ['controller' => 'Transactions', 'action' => 'view', $transactionSendCoin->transaction->id]) : '' ?>has('state_user') ? $this->Html->link($transactionSendCoin->state_user->getEmailWithName(), ['controller' => 'StateUsers', 'action' => 'view', $transactionSendCoin->state_user->id]) : '' ?>has('receiver_user') ? $this->Html->link($transactionSendCoin->receiver_user->getEmailWithName(), ['controller' => 'StateUsers', 'action' => 'view', $transactionSendCoin->receiver_user->id]) : ''?>element('printGradido', ['number' => $transactionSendCoin->amount]) ?>Number->format($transactionSendCoin->sender_final_balance) ?> - Html->link(__('View'), ['action' => 'view', $transactionSendCoin->id]) ?> -
    -
    - -

    Paginator->counter(['format' => __('Page {{page}} of {{pages}}, showing {{current}} record(s) out of {{count}} total')]) ?>

    -
    -
    diff --git a/community_server/src/Template/TransactionSendCoins/view.ctp b/community_server/src/Template/TransactionSendCoins/view.ctp deleted file mode 100644 index 322621942..000000000 --- a/community_server/src/Template/TransactionSendCoins/view.ctp +++ /dev/null @@ -1,44 +0,0 @@ - - -
    -

    id) ?>

    - - - - - - - - - - - - - - - - - - - - - -
    has('transaction') ? $this->Html->link($transactionSendCoin->transaction->id, ['controller' => 'Transactions', 'action' => 'view', $transactionSendCoin->transaction->id]) : '' ?>
    has('state_user') ? $this->Html->link($transactionSendCoin->state_user->id, ['controller' => 'StateUsers', 'action' => 'view', $transactionSendCoin->state_user->id]) : '' ?>
    Number->format($transactionSendCoin->id) ?>
    Number->format($transactionSendCoin->amount) ?>
    Number->format($transactionSendCoin->sender_final_balance) ?>
    -
    diff --git a/community_server/src/Template/TransactionSignatures/add.ctp b/community_server/src/Template/TransactionSignatures/add.ctp deleted file mode 100644 index 752389cd7..000000000 --- a/community_server/src/Template/TransactionSignatures/add.ctp +++ /dev/null @@ -1,25 +0,0 @@ - - -
    - Form->create($transactionSignature) ?> -
    - - Form->control('transaction_id', ['options' => $transactions]); - ?> -
    - Form->button(__('Submit')) ?> - Form->end() ?> -
    diff --git a/community_server/src/Template/TransactionSignatures/edit.ctp b/community_server/src/Template/TransactionSignatures/edit.ctp deleted file mode 100644 index 68143712b..000000000 --- a/community_server/src/Template/TransactionSignatures/edit.ctp +++ /dev/null @@ -1,31 +0,0 @@ - - -
    - Form->create($transactionSignature) ?> -
    - - Form->control('transaction_id', ['options' => $transactions]); - ?> -
    - Form->button(__('Submit')) ?> - Form->end() ?> -
    diff --git a/community_server/src/Template/TransactionSignatures/index.ctp b/community_server/src/Template/TransactionSignatures/index.ctp deleted file mode 100644 index 9b8bc2826..000000000 --- a/community_server/src/Template/TransactionSignatures/index.ctp +++ /dev/null @@ -1,49 +0,0 @@ - - -
    -

    - - - - - - - - - - - - - - - - - -
    Paginator->sort('id') ?>Paginator->sort('transaction_id') ?>
    Number->format($transactionSignature->id) ?>has('transaction') ? $this->Html->link($transactionSignature->transaction->id, ['controller' => 'Transactions', 'action' => 'view', $transactionSignature->transaction->id]) : '' ?> - Html->link(__('View'), ['action' => 'view', $transactionSignature->id]) ?> - Html->link(__('Edit'), ['action' => 'edit', $transactionSignature->id]) ?> - Form->postLink(__('Delete'), ['action' => 'delete', $transactionSignature->id], ['confirm' => __('Are you sure you want to delete # {0}?', $transactionSignature->id)]) ?> -
    -
    - -

    Paginator->counter(['format' => __('Page {{page}} of {{pages}}, showing {{current}} record(s) out of {{count}} total')]) ?>

    -
    -
    diff --git a/community_server/src/Template/TransactionSignatures/view.ctp b/community_server/src/Template/TransactionSignatures/view.ctp deleted file mode 100644 index 681198125..000000000 --- a/community_server/src/Template/TransactionSignatures/view.ctp +++ /dev/null @@ -1,30 +0,0 @@ - - -
    -

    id) ?>

    - - - - - - - - - -
    has('transaction') ? $this->Html->link($transactionSignature->transaction->id, ['controller' => 'Transactions', 'action' => 'view', $transactionSignature->transaction->id]) : '' ?>
    Number->format($transactionSignature->id) ?>
    -
    diff --git a/community_server/src/Template/TransactionTypes/add.ctp b/community_server/src/Template/TransactionTypes/add.ctp deleted file mode 100644 index 97de82122..000000000 --- a/community_server/src/Template/TransactionTypes/add.ctp +++ /dev/null @@ -1,26 +0,0 @@ - - -
    - Form->create($transactionType) ?> -
    - - Form->control('name'); - echo $this->Form->control('text'); - ?> -
    - Form->button(__('Submit')) ?> - Form->end() ?> -
    diff --git a/community_server/src/Template/TransactionTypes/edit.ctp b/community_server/src/Template/TransactionTypes/edit.ctp deleted file mode 100644 index 421184b55..000000000 --- a/community_server/src/Template/TransactionTypes/edit.ctp +++ /dev/null @@ -1,32 +0,0 @@ - - -
    - Form->create($transactionType) ?> -
    - - Form->control('name'); - echo $this->Form->control('text'); - ?> -
    - Form->button(__('Submit')) ?> - Form->end() ?> -
    diff --git a/community_server/src/Template/TransactionTypes/index.ctp b/community_server/src/Template/TransactionTypes/index.ctp deleted file mode 100644 index b2248ae4b..000000000 --- a/community_server/src/Template/TransactionTypes/index.ctp +++ /dev/null @@ -1,51 +0,0 @@ - - -
    -

    - - - - - - - - - - - - - - - - - - - -
    Paginator->sort('id') ?>Paginator->sort('name') ?>Paginator->sort('text') ?>
    Number->format($transactionType->id) ?>name) ?>text) ?> - Html->link(__('View'), ['action' => 'view', $transactionType->id]) ?> - Html->link(__('Edit'), ['action' => 'edit', $transactionType->id]) ?> - Form->postLink(__('Delete'), ['action' => 'delete', $transactionType->id], ['confirm' => __('Are you sure you want to delete # {0}?', $transactionType->id)]) ?> -
    -
    - -

    Paginator->counter(['format' => __('Page {{page}} of {{pages}}, showing {{current}} record(s) out of {{count}} total')]) ?>

    -
    -
    diff --git a/community_server/src/Template/TransactionTypes/view.ctp b/community_server/src/Template/TransactionTypes/view.ctp deleted file mode 100644 index 3da64f7e3..000000000 --- a/community_server/src/Template/TransactionTypes/view.ctp +++ /dev/null @@ -1,63 +0,0 @@ - - -
    -

    name) ?>

    - - - - - - - - - - - - - -
    name) ?>
    text) ?>
    Number->format($transactionType->id) ?>
    - -
    diff --git a/community_server/src/Template/Transactions/add.ctp b/community_server/src/Template/Transactions/add.ctp deleted file mode 100644 index 012d82027..000000000 --- a/community_server/src/Template/Transactions/add.ctp +++ /dev/null @@ -1,44 +0,0 @@ - - -
    - Form->create($transaction) ?> -
    - - Form->control('state_group_id', ['options' => $stateGroups]); - echo $this->Form->control('transaction_type_id', ['options' => $transactionTypes]); - echo $this->Form->control('memo', ['type' => 'textarea']); - echo $this->Form->control('blockchain_type_id', ['options' => $blockchainTypes]); - ?> -
    - Form->button(__('Submit')) ?> - Form->end() ?> -
    diff --git a/community_server/src/Template/Transactions/decode.ctp b/community_server/src/Template/Transactions/decode.ctp deleted file mode 100644 index dddde1cb8..000000000 --- a/community_server/src/Template/Transactions/decode.ctp +++ /dev/null @@ -1,36 +0,0 @@ - - 0) : ?> -
    -
      - -
    • - -
    • - -
    -
    - - -Form->create() ?> -Form->control('base64', ['type'=> 'textarea', 'rows' => '5', 'cols' => 40]) ?> -Form->submit(); ?> -Form->end() ?> - - -getTransactionBody(); -?> - - - getMemo() ?> -
    TypegetTransactionTypeName() ?>
    Memo
    - - diff --git a/community_server/src/Template/Transactions/edit.ctp b/community_server/src/Template/Transactions/edit.ctp deleted file mode 100644 index 4085a60c4..000000000 --- a/community_server/src/Template/Transactions/edit.ctp +++ /dev/null @@ -1,49 +0,0 @@ - - -
    - Form->create($transaction) ?> -
    - - Form->control('state_group_id', ['options' => $stateGroups]); - echo $this->Form->control('transaction_type_id', ['options' => $transactionTypes]); - echo $this->Form->control('received'); - ?> -
    - Form->button(__('Submit')) ?> - Form->end() ?> -
    diff --git a/community_server/src/Template/Transactions/index.ctp b/community_server/src/Template/Transactions/index.ctp deleted file mode 100644 index 9f97dc0c8..000000000 --- a/community_server/src/Template/Transactions/index.ctp +++ /dev/null @@ -1,58 +0,0 @@ - - -
    -
    -
    -
    Paginator->sort('id') ?>
    -
    Paginator->sort('memo') ?>
    -
    Paginator->sort('transaction_type_id') ?>
    -
    Paginator->sort('received') ?>
    -
    - -
    -
    Number->format($transaction->id) ?>
    -
    memo) ?>
    -
    has('transaction_type') ? $this->Html->link(__($transaction->transaction_type->name), ['controller' => 'TransactionTypes', 'action' => 'view', $transaction->transaction_type->id]) : '' ?>
    -
    received) ?>
    -
    - -
    -
    - -

    Paginator->counter(['format' => __('Page {{page}} of {{pages}}, showing {{current}} record(s) out of {{count}} total')]) ?>

    -
    -
    diff --git a/community_server/src/Template/Transactions/manual_transaction.ctp b/community_server/src/Template/Transactions/manual_transaction.ctp deleted file mode 100644 index 30bda1175..000000000 --- a/community_server/src/Template/Transactions/manual_transaction.ctp +++ /dev/null @@ -1,63 +0,0 @@ -loadHelper('Form', [ - 'templates' => 'horizontal_form', -]); -$now = new \DateTime; -?> - 0) : ?> -
    -
      - -
    • - -
    • - -
    -
    - - -
    -

    -
    - Form->create() ?> - Form->control('type', ['type' => 'hidden', 'value' => 'creation']) ?> - Form->control('target_public_key', ['type'=> 'text']) ?> - Form->control('target_date', ['type'=> 'text', 'placeholder' => 'yyyy-mm-dd hh:ii:ss', 'default' => $now->format('Y-m-d H:i:s')]) ?> - Form->control('amount', ['type'=> 'number']) ?> - Form->control('memo', ['type'=> 'textarea', 'rows' => '8', 'cols' => 40]) ?> - Form->control('signer_public_key', ['type' => 'text']) ?> - Form->control('signer_private_key', ['type'=> 'text']) ?> - Form->submit(); ?> - Form->end() ?> -
    -
    -
    -

    -
    - Form->create() ?> - Form->control('type', ['type' => 'hidden', 'value' => 'transfer']) ?> - Form->control('sender_public_key', ['type'=> 'text']) ?> - Form->control('receiver_public_key', ['type'=> 'text']) ?> - Form->control('amount', ['type'=> 'number']) ?> - Form->control('memo', ['type'=> 'textarea', 'rows' => '8', 'cols' => 40]) ?> - Form->control('signer_public_key', ['type' => 'text']) ?> - Form->control('signer_private_key', ['type'=> 'text']) ?> - Form->submit(); ?> - Form->end() ?> -
    -
    - -
    -
      - $value) : ?> -
    • :
    • - -
    -
    - \ No newline at end of file diff --git a/community_server/src/Template/Transactions/send_to_node.ctp b/community_server/src/Template/Transactions/send_to_node.ctp deleted file mode 100644 index 0bb652feb..000000000 --- a/community_server/src/Template/Transactions/send_to_node.ctp +++ /dev/null @@ -1,106 +0,0 @@ -assign('title', __('Transaktionen an Gradido-Node senden')); -?> - - -

    - -Bisher keine Transaktionen eingereicht - -Letzte eingereichte Transaktion - -

    -
      - $id) : ?> -
    • - : - - - Wird verarbeitet - - in Warteschlange - - - -
    • -
    -Html->script(['core']); ?> - diff --git a/community_server/src/Template/Transactions/synchronize_with_state_user_transactions.ctp b/community_server/src/Template/Transactions/synchronize_with_state_user_transactions.ctp deleted file mode 100644 index 8ac1ecb2d..000000000 --- a/community_server/src/Template/Transactions/synchronize_with_state_user_transactions.ctp +++ /dev/null @@ -1,46 +0,0 @@ - -
    -

    Synchronize state_user_transactions with transactions

    -

    transactions count:

    -

    state_user_transaction count:

    -

    Missing count:

    -

    First 10 Missing ids:

    -

    $id) { - if($i > 10) break; - if($i > 0) echo ', '; - echo $id['id']; -} ?>

    - - -

    Synchronize errors:

    -
      - $result) : - if(false != $result) { - $succeed++; - continue; - } - ?> -
    • Error saving entity: with error: getErrors()) ?>
    • - - -
    • Succeed:
    • -
    - - - Form->create() ?> - Form->button(__('Synchronize')) ?> - Form->end() ?> -
    diff --git a/community_server/src/Template/Transactions/view.ctp b/community_server/src/Template/Transactions/view.ctp deleted file mode 100644 index e15b9dbe3..000000000 --- a/community_server/src/Template/Transactions/view.ctp +++ /dev/null @@ -1,259 +0,0 @@ - - -
    -

    id) ?>

    - - - - - - - - - - - - - - - - - -
    has('state_group') ? $this->Html->link($transaction->state_group->name, ['controller' => 'StateGroups', 'action' => 'view', $transaction->state_group->id]) : '' ?>
    has('transaction_type') ? $this->Html->link($transaction->transaction_type->name, ['controller' => 'TransactionTypes', 'action' => 'view', $transaction->transaction_type->id]) : '' ?>
    Number->format($transaction->id) ?>
    received) ?>
    - - - - - - - -
    diff --git a/community_server/src/Template/Users/add.ctp b/community_server/src/Template/Users/add.ctp deleted file mode 100644 index 6f67f02e6..000000000 --- a/community_server/src/Template/Users/add.ctp +++ /dev/null @@ -1,28 +0,0 @@ - - -
    - Form->create($user) ?> -
    - - Form->control('email'); - echo $this->Form->control('first_name'); - echo $this->Form->control('last_name'); - echo $this->Form->control('password'); - echo $this->Form->control('email_checked'); - echo $this->Form->control('language'); - ?> -
    - Form->button(__('Submit')) ?> - Form->end() ?> -
    diff --git a/community_server/src/Template/Users/edit.ctp b/community_server/src/Template/Users/edit.ctp deleted file mode 100644 index 681eacd36..000000000 --- a/community_server/src/Template/Users/edit.ctp +++ /dev/null @@ -1,34 +0,0 @@ - - -
    - Form->create($user) ?> -
    - - Form->control('email'); - echo $this->Form->control('first_name'); - echo $this->Form->control('last_name'); - echo $this->Form->control('password'); - echo $this->Form->control('email_checked'); - echo $this->Form->control('language'); - ?> -
    - Form->button(__('Submit')) ?> - Form->end() ?> -
    diff --git a/community_server/src/Template/Users/index.ctp b/community_server/src/Template/Users/index.ctp deleted file mode 100644 index 14566ea26..000000000 --- a/community_server/src/Template/Users/index.ctp +++ /dev/null @@ -1,59 +0,0 @@ - - -
    -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Paginator->sort('id') ?>Paginator->sort('email') ?>Paginator->sort('first_name') ?>Paginator->sort('last_name') ?>Paginator->sort('password') ?>Paginator->sort('created') ?>Paginator->sort('email_checked') ?>Paginator->sort('language') ?>
    Number->format($user->id) ?>email) ?>first_name) ?>last_name) ?>Number->format($user->password) ?>created) ?>email_checked) ?>language) ?> - Html->link(__('View'), ['action' => 'view', $user->id]) ?> - Html->link(__('Edit'), ['action' => 'edit', $user->id]) ?> - Form->postLink(__('Delete'), ['action' => 'delete', $user->id], ['confirm' => __('Are you sure you want to delete # {0}?', $user->id)]) ?> -
    -
    - -

    Paginator->counter(['format' => __('Page {{page}} of {{pages}}, showing {{current}} record(s) out of {{count}} total')]) ?>

    -
    -
    diff --git a/community_server/src/Template/Users/statistics.ctp b/community_server/src/Template/Users/statistics.ctp deleted file mode 100644 index 76532faa8..000000000 --- a/community_server/src/Template/Users/statistics.ctp +++ /dev/null @@ -1,98 +0,0 @@ -assign('title', __('Benutzer Statistiken')); - -//mdi mdi-account-multiple-plus -//$newUserPercent = (1 - (b / a)) * 100 -$newUserPercent = 0; -$percentColor = 'info'; -if($users->count() > 0 && $newUsersLastMonth->count()) { - $newUserPercent = round((1 - ($users->count() / $newUsersLastMonth->count())) * 100.0, 2); - if($newUserPercent > 0 ) { - $percentColor = 'success'; - } else if($newUserPercent <= 0) { - $percentColor = 'alert'; - } -} - -$userColor = 'info'; -if($users->count() > 0) { - if($users->count() > 0 ) { - $userColor = 'success'; - } else if($users->count() <= 0) { - $userColor = 'alert'; - } -} -?> -
    -
    -
    - people -
    -

    count()?>

    -
     
    - -   - -
    -
    -
    - group_add -
    -

    count() ?>

    -
     
    - - - arrow_drop_down - 0) : ?> - arrow_drop_up - - % - -
    -
    -
    -

    -
    -
    -
    -
    -
    -
    - -
    -
    first_name . ' ' . $user->last_name ?>
    -
    email ?>
    -
    created ?>
    -
    - - toArray()); ?> -
    -
    -
    -

    -
    -
    -
    -
    -
    -
    - $yearEntrys) : ?> - $monthEntrys): ?> -
    -
    -
    -
    -
    - - -
    -
    -Html->script(['core', 'vendor.addons']); ?> -Html->script('userSearch') ?> \ No newline at end of file diff --git a/community_server/src/Template/Users/view.ctp b/community_server/src/Template/Users/view.ctp deleted file mode 100644 index d3a1e67cd..000000000 --- a/community_server/src/Template/Users/view.ctp +++ /dev/null @@ -1,52 +0,0 @@ - - -
    -

    id) ?>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    email) ?>
    first_name) ?>
    last_name) ?>
    language) ?>
    Number->format($user->id) ?>
    Number->format($user->password) ?>
    created) ?>
    email_checked ? __('Yes') : __('No'); ?>
    -
    diff --git a/community_server/src/View/AjaxView.php b/community_server/src/View/AjaxView.php deleted file mode 100644 index 3cb786926..000000000 --- a/community_server/src/View/AjaxView.php +++ /dev/null @@ -1,49 +0,0 @@ -response = $this->response->withType('ajax'); - } -} diff --git a/community_server/src/View/AppView.php b/community_server/src/View/AppView.php deleted file mode 100644 index 242ab6bde..000000000 --- a/community_server/src/View/AppView.php +++ /dev/null @@ -1,40 +0,0 @@ -loadHelper('Html');` - * - * @return void - */ - public function initialize() - { - } -} diff --git a/community_server/src/View/Cell/empty b/community_server/src/View/Cell/empty deleted file mode 100644 index e69de29bb..000000000 diff --git a/community_server/src/View/Helper/empty b/community_server/src/View/Helper/empty deleted file mode 100644 index e69de29bb..000000000 diff --git a/community_server/testJson.sh b/community_server/testJson.sh deleted file mode 100755 index b66cf8d18..000000000 --- a/community_server/testJson.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -#sudo -u www-data ./vendor/bin/phpunit --filter testIndex tests/TestCase/Controller/TransactionJsonRequestHandlerControllerTest - -sudo -u www-data ./vendor/bin/phpunit --testdox tests/TestCase/Controller/JsonRequestHandlerControllerTest - diff --git a/community_server/tests/Fixture/AddressTypesFixture.php b/community_server/tests/Fixture/AddressTypesFixture.php deleted file mode 100644 index 1e06a0ec9..000000000 --- a/community_server/tests/Fixture/AddressTypesFixture.php +++ /dev/null @@ -1,46 +0,0 @@ - ['type' => 'integer', 'length' => 10, 'unsigned' => true, 'null' => false, 'default' => null, 'comment' => '', 'autoIncrement' => true, 'precision' => null], - 'name' => ['type' => 'string', 'length' => 45, 'null' => false, 'default' => null, 'collate' => 'utf8mb4_unicode_ci', 'comment' => '', 'precision' => null, 'fixed' => null], - 'text' => ['type' => 'string', 'length' => 255, 'null' => false, 'default' => null, 'collate' => 'utf8mb4_unicode_ci', 'comment' => '', 'precision' => null, 'fixed' => null], - '_constraints' => [ - 'primary' => ['type' => 'primary', 'columns' => ['id'], 'length' => []], - ], - '_options' => [ - 'engine' => 'InnoDB', - 'collation' => 'utf8mb4_unicode_ci' - ], - ]; - // @codingStandardsIgnoreEnd - /** - * Init method - * - * @return void - */ - public function init() - { - $this->records = [ - [ - 'id' => 1, - 'name' => 'Lorem ipsum dolor sit amet', - 'text' => 'Lorem ipsum dolor sit amet', - ], - ]; - parent::init(); - } -} diff --git a/community_server/tests/Fixture/AdminErrorsFixture.php b/community_server/tests/Fixture/AdminErrorsFixture.php deleted file mode 100644 index 0fbc3a067..000000000 --- a/community_server/tests/Fixture/AdminErrorsFixture.php +++ /dev/null @@ -1,56 +0,0 @@ - ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => false, 'default' => null, 'comment' => '', 'autoIncrement' => true, 'precision' => null], - 'state_user_id' => ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], - 'controller' => ['type' => 'string', 'length' => 255, 'null' => false, 'default' => null, 'collate' => 'utf8mb4_general_ci', 'comment' => '', 'precision' => null, 'fixed' => null], - 'action' => ['type' => 'string', 'length' => 255, 'null' => false, 'default' => null, 'collate' => 'utf8mb4_general_ci', 'comment' => '', 'precision' => null, 'fixed' => null], - 'state' => ['type' => 'string', 'length' => 255, 'null' => false, 'default' => null, 'collate' => 'utf8mb4_general_ci', 'comment' => '', 'precision' => null, 'fixed' => null], - 'msg' => ['type' => 'string', 'length' => 255, 'null' => false, 'default' => null, 'collate' => 'utf8mb4_general_ci', 'comment' => '', 'precision' => null, 'fixed' => null], - 'details' => ['type' => 'string', 'length' => 255, 'null' => false, 'default' => null, 'collate' => 'utf8mb4_general_ci', 'comment' => '', 'precision' => null, 'fixed' => null], - 'created' => ['type' => 'datetime', 'length' => null, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null], - '_constraints' => [ - 'primary' => ['type' => 'primary', 'columns' => ['id'], 'length' => []], - ], - '_options' => [ - 'engine' => 'InnoDB', - 'collation' => 'utf8mb4_general_ci' - ], - ]; - // @codingStandardsIgnoreEnd - /** - * Init method - * - * @return void - */ - public function init() - { - $this->records = [ - [ - 'id' => 1, - 'state_user_id' => 1, - 'controller' => 'Lorem ipsum dolor sit amet', - 'action' => 'Lorem ipsum dolor sit amet', - 'state' => 'Lorem ipsum dolor sit amet', - 'msg' => 'Lorem ipsum dolor sit amet', - 'details' => 'Lorem ipsum dolor sit amet', - 'created' => '2019-12-16 15:08:19' - ], - ]; - parent::init(); - } -} diff --git a/community_server/tests/Fixture/BaseTestFixture.php b/community_server/tests/Fixture/BaseTestFixture.php deleted file mode 100644 index 1f63aa55e..000000000 --- a/community_server/tests/Fixture/BaseTestFixture.php +++ /dev/null @@ -1,36 +0,0 @@ - '$1' - protected function sqlEntrysToRecords($sql_entries, $fields) { - $field_array_keys = array_keys($fields); - $records = []; - foreach($sql_entries as $sql_entry) { - $record = []; - foreach($sql_entry as $i => $value) { - $field = $field_array_keys[$i]; - if($fields[$field]['type'] == 'binary') { - if(is_string($value)) { - $record[$field] = hex2bin($value); - } - } else { - $record[$field] = $value; - } - } - $records[] = $record; - } - return $records; - } -} \ No newline at end of file diff --git a/community_server/tests/Fixture/CommunityProfilesFixture.php b/community_server/tests/Fixture/CommunityProfilesFixture.php deleted file mode 100644 index 0fa7ed764..000000000 --- a/community_server/tests/Fixture/CommunityProfilesFixture.php +++ /dev/null @@ -1,51 +0,0 @@ - ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => false, 'default' => null, 'comment' => '', 'autoIncrement' => true, 'precision' => null], - 'state_user_id' => ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], - 'profile_img' => ['type' => 'binary', 'length' => 4294967295, 'null' => true, 'default' => null, 'comment' => '', 'precision' => null], - 'profile_desc' => ['type' => 'string', 'length' => 2000, 'null' => true, 'default' => null, 'collate' => 'utf8mb4_general_ci', 'comment' => '', 'precision' => null, 'fixed' => null], - '_indexes' => [ - 'state_user_id' => ['type' => 'index', 'columns' => ['state_user_id'], 'length' => []], - ], - '_constraints' => [ - 'primary' => ['type' => 'primary', 'columns' => ['id'], 'length' => []] - ], - '_options' => [ - 'engine' => 'InnoDB', - 'collation' => 'utf8mb4_general_ci' - ], - ]; - // @codingStandardsIgnoreEnd - /** - * Init method - * - * @return void - */ - public function init() - { - $this->records = [ - [ - 'id' => 1, - 'state_user_id' => 1, - 'profile_img' => 'Lorem ipsum dolor sit amet', - 'profile_desc' => 'Lorem ipsum dolor sit amet', - ], - ]; - parent::init(); - } -} diff --git a/community_server/tests/Fixture/ElopageBuysFixture.php b/community_server/tests/Fixture/ElopageBuysFixture.php deleted file mode 100644 index 20be0f4e3..000000000 --- a/community_server/tests/Fixture/ElopageBuysFixture.php +++ /dev/null @@ -1,64 +0,0 @@ - ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => false, 'default' => null, 'comment' => '', 'autoIncrement' => true, 'precision' => null], - 'elopage_user_id' => ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], - 'affiliate_program_id' => ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], - 'publisher_id' => ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], - 'order_id' => ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], - 'product_id' => ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], - 'product_price' => ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], - 'payer_email' => ['type' => 'string', 'length' => 255, 'null' => false, 'default' => null, 'collate' => 'utf8_bin', 'comment' => '', 'precision' => null, 'fixed' => null], - 'publisher_email' => ['type' => 'string', 'length' => 255, 'null' => false, 'default' => null, 'collate' => 'utf8_bin', 'comment' => '', 'precision' => null, 'fixed' => null], - 'payed' => ['type' => 'boolean', 'length' => null, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null], - 'success_date' => ['type' => 'datetime', 'length' => null, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null], - 'event' => ['type' => 'string', 'length' => 255, 'null' => false, 'default' => null, 'collate' => 'utf8mb4_general_ci', 'comment' => '', 'precision' => null, 'fixed' => null], - '_constraints' => [ - 'primary' => ['type' => 'primary', 'columns' => ['id'], 'length' => []], - ], - '_options' => [ - 'engine' => 'InnoDB', - 'collation' => 'utf8_bin' - ], - ]; - // @codingStandardsIgnoreEnd - /** - * Init method - * - * @return void - */ - public function init() - { - $this->records = [ - [ - 'id' => 1, - 'elopage_user_id' => 1, - 'affiliate_program_id' => 1, - 'publisher_id' => 1, - 'order_id' => 1, - 'product_id' => 1, - 'product_price' => 1, - 'payer_email' => 'Lorem ipsum dolor sit amet', - 'publisher_email' => 'Lorem ipsum dolor sit amet', - 'payed' => 1, - 'success_date' => '2020-02-13 09:49:46', - 'event' => 'Lorem ipsum dolor sit amet', - ], - ]; - parent::init(); - } -} diff --git a/community_server/tests/Fixture/OperatorTypesFixture.php b/community_server/tests/Fixture/OperatorTypesFixture.php deleted file mode 100644 index dfc589034..000000000 --- a/community_server/tests/Fixture/OperatorTypesFixture.php +++ /dev/null @@ -1,46 +0,0 @@ - ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], - 'name' => ['type' => 'string', 'length' => 25, 'null' => false, 'default' => null, 'collate' => 'utf8_bin', 'comment' => '', 'precision' => null, 'fixed' => null], - 'text' => ['type' => 'string', 'length' => 255, 'null' => false, 'default' => null, 'collate' => 'utf8_bin', 'comment' => '', 'precision' => null, 'fixed' => null], - '_constraints' => [ - 'primary' => ['type' => 'primary', 'columns' => ['id'], 'length' => []], - ], - '_options' => [ - 'engine' => 'InnoDB', - 'collation' => 'utf8_bin' - ], - ]; - // @codingStandardsIgnoreEnd - /** - * Init method - * - * @return void - */ - public function init() - { - $this->records = [ - [ - 'id' => 1, - 'name' => 'Lorem ipsum dolor sit a', - 'text' => 'Lorem ipsum dolor sit amet' - ], - ]; - parent::init(); - } -} diff --git a/community_server/tests/Fixture/OperatorsFixture.php b/community_server/tests/Fixture/OperatorsFixture.php deleted file mode 100644 index 2cb852efc..000000000 --- a/community_server/tests/Fixture/OperatorsFixture.php +++ /dev/null @@ -1,49 +0,0 @@ - ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => false, 'default' => null, 'comment' => '', 'autoIncrement' => true, 'precision' => null], - 'username' => ['type' => 'string', 'length' => 128, 'null' => false, 'default' => null, 'collate' => 'utf8_bin', 'comment' => '', 'precision' => null, 'fixed' => null], - 'operator_type_id' => ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], - 'data_base64' => ['type' => 'string', 'length' => 255, 'null' => false, 'default' => null, 'collate' => 'utf8_bin', 'comment' => '', 'precision' => null, 'fixed' => null], - '_constraints' => [ - 'primary' => ['type' => 'primary', 'columns' => ['id'], 'length' => []], - 'username' => ['type' => 'unique', 'columns' => ['username'], 'length' => []], - ], - '_options' => [ - 'engine' => 'InnoDB', - 'collation' => 'utf8_bin' - ], - ]; - // @codingStandardsIgnoreEnd - /** - * Init method - * - * @return void - */ - public function init() - { - $this->records = [ - [ - 'id' => 1, - 'username' => 'Lorem ipsum dolor sit amet', - 'operator_type_id' => 1, - 'data_base64' => 'Lorem ipsum dolor sit amet' - ], - ]; - parent::init(); - } -} diff --git a/community_server/tests/Fixture/RolesFixture.php b/community_server/tests/Fixture/RolesFixture.php deleted file mode 100644 index db2c7640f..000000000 --- a/community_server/tests/Fixture/RolesFixture.php +++ /dev/null @@ -1,45 +0,0 @@ - ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => false, 'default' => null, 'comment' => '', 'autoIncrement' => true, 'precision' => null], - 'title' => ['type' => 'string', 'length' => 255, 'null' => true, 'default' => null, 'collate' => 'utf8mb4_unicode_ci', 'comment' => '', 'precision' => null, 'fixed' => null], - '_constraints' => [ - 'primary' => ['type' => 'primary', 'columns' => ['id'], 'length' => []], - 'roles_id_IDX' => ['type' => 'unique', 'columns' => ['id'], 'length' => []], - ], - '_options' => [ - 'engine' => 'InnoDB', - 'collation' => 'utf8mb4_unicode_ci' - ], - ]; - // @codingStandardsIgnoreEnd - /** - * Init method - * - * @return void - */ - public function init() - { - $this->records = [ - [ - 'id' => 1, - 'title' => 'Lorem ipsum dolor sit amet', - ], - ]; - parent::init(); - } -} diff --git a/community_server/tests/Fixture/ServerUsersFixture.php b/community_server/tests/Fixture/ServerUsersFixture.php deleted file mode 100644 index 3aeedab12..000000000 --- a/community_server/tests/Fixture/ServerUsersFixture.php +++ /dev/null @@ -1,58 +0,0 @@ - ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], - 'username' => ['type' => 'string', 'length' => 50, 'null' => false, 'default' => null, 'collate' => 'utf8_bin', 'comment' => '', 'precision' => null, 'fixed' => null], - 'password' => ['type' => 'string', 'length' => 255, 'null' => false, 'default' => null, 'collate' => 'utf8_bin', 'comment' => '', 'precision' => null, 'fixed' => null], - 'email' => ['type' => 'string', 'length' => 50, 'null' => false, 'default' => null, 'collate' => 'utf8_bin', 'comment' => '', 'precision' => null, 'fixed' => null], - 'role' => ['type' => 'string', 'length' => 20, 'null' => false, 'default' => 'admin', 'collate' => 'utf8_bin', 'comment' => '', 'precision' => null, 'fixed' => null], - 'activated' => ['type' => 'boolean', 'length' => null, 'null' => false, 'default' => '0', 'comment' => '', 'precision' => null], - 'last_login' => ['type' => 'datetime', 'length' => null, 'null' => true, 'default' => null, 'comment' => '', 'precision' => null], - 'created' => ['type' => 'datetime', 'length' => null, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null], - 'modified' => ['type' => 'datetime', 'length' => null, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null], - '_constraints' => [ - 'primary' => ['type' => 'primary', 'columns' => ['id'], 'length' => []], - ], - '_options' => [ - 'engine' => 'InnoDB', - 'collation' => 'utf8_bin' - ], - ]; - // @codingStandardsIgnoreEnd - /** - * Init method - * - * @return void - */ - public function init() - { - $this->records = [ - [ - 'id' => 1, - 'username' => 'Lorem ipsum dolor sit amet', - 'password' => 'Lorem ipsum dolor sit amet', - 'email' => 'Lorem ipsum dolor sit amet', - 'role' => 'Lorem ipsum dolor ', - 'activated' => 1, - 'last_login' => '2019-09-13 10:30:09', - 'created' => '2019-09-13 10:30:09', - 'modified' => '2019-09-13 10:30:09' - ], - ]; - parent::init(); - } -} diff --git a/community_server/tests/Fixture/StateBalancesFixture.php b/community_server/tests/Fixture/StateBalancesFixture.php deleted file mode 100644 index 015366c80..000000000 --- a/community_server/tests/Fixture/StateBalancesFixture.php +++ /dev/null @@ -1,46 +0,0 @@ - ['type' => 'integer', 'length' => 10, 'unsigned' => true, 'null' => false, 'default' => null, 'comment' => '', 'autoIncrement' => true, 'precision' => null], - 'state_user_id' => ['type' => 'integer', 'length' => 10, 'unsigned' => true, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], - 'modified' => ['type' => 'datetime', 'length' => null, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null], - 'record_date' => ['type' => 'datetime', 'length' => null, 'null' => true, 'default' => null, 'comment' => '', 'precision' => null], - 'amount' => ['type' => 'biginteger', 'length' => 20, 'unsigned' => false, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], - '_constraints' => [ - 'primary' => ['type' => 'primary', 'columns' => ['id'], 'length' => []], - ], - '_options' => [ - 'engine' => 'InnoDB', - 'collation' => 'utf8mb4_unicode_ci' - ], - ]; - // @codingStandardsIgnoreEnd - /** - * Init method - * - * @return void - */ - public function init() - { - $sql = [ - [4, 4, '2021-05-27 17:47:50', '2021-05-27 17:47:50', 28808497], - [5, 1, '2021-05-27 17:47:51', '2021-05-27 17:47:50', 9823963] - ]; - $this->records = $this->sqlEntrysToRecords($sql, $this->fields); - parent::init(); - } -} diff --git a/community_server/tests/Fixture/StateCreatedFixture.php b/community_server/tests/Fixture/StateCreatedFixture.php deleted file mode 100644 index 2f1abd155..000000000 --- a/community_server/tests/Fixture/StateCreatedFixture.php +++ /dev/null @@ -1,63 +0,0 @@ - ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], - 'transaction_id' => ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], - 'month' => ['type' => 'tinyinteger', 'length' => 4, 'unsigned' => false, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null], - 'year' => ['type' => 'smallinteger', 'length' => 6, 'unsigned' => false, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null], - 'state_user_id' => ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], - 'created' => ['type' => 'datetime', 'length' => null, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null], - 'short_ident_hash' => ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], - '_indexes' => [ - 'short_ident_hash' => ['type' => 'index', 'columns' => ['short_ident_hash'], 'length' => []], - ], - '_constraints' => [ - 'primary' => ['type' => 'primary', 'columns' => ['id'], 'length' => []], - ], - '_options' => [ - 'engine' => 'InnoDB', - 'collation' => 'utf8_bin' - ], - ]; - // @codingStandardsIgnoreEnd - /** - * Init method - * - * @return void - */ - public function init() - { - $this->records = [ - [ - 'id' => 1, - 'transaction_id' => 1, - 'month' => 1, - 'year' => 1, - 'state_user_id' => 1, - 'created' => '2019-09-12 11:14:51', - 'short_ident_hash' => 1 - ], - ]; - parent::init(); - } -} diff --git a/community_server/tests/Fixture/StateErrorsFixture.php b/community_server/tests/Fixture/StateErrorsFixture.php deleted file mode 100644 index 6f0d95e26..000000000 --- a/community_server/tests/Fixture/StateErrorsFixture.php +++ /dev/null @@ -1,50 +0,0 @@ - ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => false, 'default' => null, 'comment' => '', 'autoIncrement' => true, 'precision' => null], - 'state_user_id' => ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], - 'transaction_type_id' => ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], - 'created' => ['type' => 'datetime', 'length' => null, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null], - 'message_json' => ['type' => 'text', 'length' => null, 'null' => false, 'default' => null, 'collate' => 'utf8mb4_general_ci', 'comment' => '', 'precision' => null], - '_constraints' => [ - 'primary' => ['type' => 'primary', 'columns' => ['id'], 'length' => []], - ], - '_options' => [ - 'engine' => 'InnoDB', - 'collation' => 'utf8mb4_general_ci' - ], - ]; - // @codingStandardsIgnoreEnd - /** - * Init method - * - * @return void - */ - public function init() - { - $this->records = [ - [ - 'id' => 1, - 'state_user_id' => 1, - 'transaction_type_id' => 1, - 'created' => '2019-11-07 13:13:12', - 'message_json' => 'Lorem ipsum dolor sit amet, aliquet feugiat. Convallis morbi fringilla gravida, phasellus feugiat dapibus velit nunc, pulvinar eget sollicitudin venenatis cum nullam, vivamus ut a sed, mollitia lectus. Nulla vestibulum massa neque ut et, id hendrerit sit, feugiat in taciti enim proin nibh, tempor dignissim, rhoncus duis vestibulum nunc mattis convallis.' - ], - ]; - parent::init(); - } -} diff --git a/community_server/tests/Fixture/StateGroupAddressesFixture.php b/community_server/tests/Fixture/StateGroupAddressesFixture.php deleted file mode 100644 index 2ae5581c8..000000000 --- a/community_server/tests/Fixture/StateGroupAddressesFixture.php +++ /dev/null @@ -1,49 +0,0 @@ - ['type' => 'integer', 'length' => 10, 'unsigned' => true, 'null' => false, 'default' => null, 'comment' => '', 'autoIncrement' => true, 'precision' => null], - 'group_id' => ['type' => 'integer', 'length' => 10, 'unsigned' => true, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], - 'public_key' => ['type' => 'binary', 'length' => 32, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null], - 'address_type_id' => ['type' => 'integer', 'length' => 10, 'unsigned' => true, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], - '_constraints' => [ - 'primary' => ['type' => 'primary', 'columns' => ['id'], 'length' => []], - 'public_key' => ['type' => 'unique', 'columns' => ['public_key'], 'length' => []], - ], - '_options' => [ - 'engine' => 'InnoDB', - 'collation' => 'utf8mb4_unicode_ci' - ], - ]; - // @codingStandardsIgnoreEnd - /** - * Init method - * - * @return void - */ - public function init() - { - $this->records = [ - [ - 'id' => 1, - 'group_id' => 1, - 'public_key' => 'Lorem ipsum dolor sit amet', - 'address_type_id' => 1, - ], - ]; - parent::init(); - } -} diff --git a/community_server/tests/Fixture/StateGroupRelationshipsFixture.php b/community_server/tests/Fixture/StateGroupRelationshipsFixture.php deleted file mode 100644 index e50d76f5d..000000000 --- a/community_server/tests/Fixture/StateGroupRelationshipsFixture.php +++ /dev/null @@ -1,48 +0,0 @@ - ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], - 'state_group1_id' => ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], - 'state_group2_id' => ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], - 'state_relationship_id' => ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], - '_constraints' => [ - 'primary' => ['type' => 'primary', 'columns' => ['id'], 'length' => []], - ], - '_options' => [ - 'engine' => 'InnoDB', - 'collation' => 'utf8_bin' - ], - ]; - // @codingStandardsIgnoreEnd - /** - * Init method - * - * @return void - */ - public function init() - { - $this->records = [ - [ - 'id' => 1, - 'state_group1_id' => 1, - 'state_group2_id' => 1, - 'state_relationship_id' => 1 - ], - ]; - parent::init(); - } -} diff --git a/community_server/tests/Fixture/StateGroupsFixture.php b/community_server/tests/Fixture/StateGroupsFixture.php deleted file mode 100644 index 57cde2350..000000000 --- a/community_server/tests/Fixture/StateGroupsFixture.php +++ /dev/null @@ -1,50 +0,0 @@ - ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => false, 'default' => null, 'comment' => '', 'autoIncrement' => true, 'precision' => null], - 'index_id' => ['type' => 'binary', 'length' => 64, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null], - 'name' => ['type' => 'string', 'length' => 50, 'null' => false, 'default' => null, 'collate' => 'utf8_bin', 'comment' => '', 'precision' => null, 'fixed' => null], - 'root_public_key' => ['type' => 'binary', 'length' => 32, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null], - 'user_count' => ['type' => 'smallinteger', 'length' => 6, 'unsigned' => false, 'null' => false, 'default' => '0', 'comment' => '', 'precision' => null], - '_constraints' => [ - 'primary' => ['type' => 'primary', 'columns' => ['id'], 'length' => []], - ], - '_options' => [ - 'engine' => 'InnoDB', - 'collation' => 'utf8_bin' - ], - ]; - // @codingStandardsIgnoreEnd - /** - * Init method - * - * @return void - */ - public function init() - { - $this->records = [ - [ - 'id' => 1, - 'index_id' => 'Lorem ipsum dolor sit amet', - 'name' => 'Lorem ipsum dolor sit amet', - 'root_public_key' => 'Lorem ipsum dolor sit amet', - 'user_count' => 1 - ], - ]; - parent::init(); - } -} diff --git a/community_server/tests/Fixture/StateRelationshipTypesFixture.php b/community_server/tests/Fixture/StateRelationshipTypesFixture.php deleted file mode 100644 index c461e0ce3..000000000 --- a/community_server/tests/Fixture/StateRelationshipTypesFixture.php +++ /dev/null @@ -1,46 +0,0 @@ - ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], - 'name' => ['type' => 'string', 'length' => 25, 'null' => false, 'default' => null, 'collate' => 'utf8_bin', 'comment' => '', 'precision' => null, 'fixed' => null], - 'text' => ['type' => 'string', 'length' => 255, 'null' => true, 'default' => null, 'collate' => 'utf8_bin', 'comment' => '', 'precision' => null, 'fixed' => null], - '_constraints' => [ - 'primary' => ['type' => 'primary', 'columns' => ['id'], 'length' => []], - ], - '_options' => [ - 'engine' => 'InnoDB', - 'collation' => 'utf8_bin' - ], - ]; - // @codingStandardsIgnoreEnd - /** - * Init method - * - * @return void - */ - public function init() - { - $this->records = [ - [ - 'id' => 1, - 'name' => 'Lorem ipsum dolor sit a', - 'text' => 'Lorem ipsum dolor sit amet' - ], - ]; - parent::init(); - } -} diff --git a/community_server/tests/Fixture/StateUserTransactionsFixture.php b/community_server/tests/Fixture/StateUserTransactionsFixture.php deleted file mode 100644 index 605e10e5b..000000000 --- a/community_server/tests/Fixture/StateUserTransactionsFixture.php +++ /dev/null @@ -1,59 +0,0 @@ - ['type' => 'integer', 'length' => 10, 'unsigned' => true, 'null' => false, 'default' => null, 'comment' => '', 'autoIncrement' => true, 'precision' => null], - 'state_user_id' => ['type' => 'integer', 'length' => 10, 'unsigned' => true, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], - 'transaction_id' => ['type' => 'integer', 'length' => 10, 'unsigned' => true, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], - 'transaction_type_id' => ['type' => 'integer', 'length' => 10, 'unsigned' => true, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], - 'balance' => ['type' => 'biginteger', 'length' => 20, 'unsigned' => false, 'null' => true, 'default' => '0', 'comment' => '', 'precision' => null, 'autoIncrement' => null], - 'balance_date' => ['type' => 'timestamp', 'length' => null, 'null' => false, 'default' => 'CURRENT_TIMESTAMP', 'comment' => '', 'precision' => null], - '_constraints' => [ - 'primary' => ['type' => 'primary', 'columns' => ['id'], 'length' => []], - ], - '_options' => [ - 'engine' => 'InnoDB', - 'collation' => 'utf8mb4_unicode_ci' - ], - ]; - // @codingStandardsIgnoreEnd - /** - * Init method - * - * @return void - */ - public function init() - { - $sql = [ - [1, 4, 1, 1, 0, '2021-04-09 00:00:00'], - [2, 1, 2, 1, 0, '2021-04-12 00:00:00'], - [5, 1, 3, 2, 0, '2021-04-12 00:00:00'], - [6, 4, 3, 2, 0, '2021-04-12 00:00:00'], - [7, 1, 4, 2, 0, '2021-04-14 00:00:00'], - [8, 4, 4, 2, 0, '2021-04-14 00:00:00'], - [23, 1, 5, 2, 0, '2021-04-14 09:01:07'], - [24, 4, 5, 2, 0, '2021-04-14 09:01:07'], - [25, 4, 7, 2, 0, '2021-04-14 09:02:28'], - [26, 1, 7, 2, 0, '2021-04-14 09:02:28'], - [27, 4, 8, 2, 0, '2021-04-14 09:28:46'], - [28, 1, 8, 2, 0, '2021-04-14 09:28:46'], - [29, 4, 9, 2, 0, '2021-04-14 09:31:28'], - [30, 1, 9, 2, 0, '2021-04-14 09:31:28'] - ]; - $this->records = $this->sqlEntrysToRecords($sql, $this->fields); - parent::init(); - } -} diff --git a/community_server/tests/Fixture/StateUsersFixture.php b/community_server/tests/Fixture/StateUsersFixture.php deleted file mode 100644 index a9b033bf7..000000000 --- a/community_server/tests/Fixture/StateUsersFixture.php +++ /dev/null @@ -1,54 +0,0 @@ - ['type' => 'integer', 'length' => 10, 'unsigned' => true, 'null' => false, 'default' => null, 'comment' => '', 'autoIncrement' => true, 'precision' => null], - 'index_id' => ['type' => 'smallinteger', 'length' => 6, 'unsigned' => false, 'null' => false, 'default' => '0', 'comment' => '', 'precision' => null], - 'group_id' => ['type' => 'integer', 'length' => 10, 'unsigned' => true, 'null' => false, 'default' => '0', 'comment' => '', 'precision' => null, 'autoIncrement' => null], - 'public_key' => ['type' => 'binary', 'length' => 32, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null], - 'email' => ['type' => 'string', 'length' => 255, 'null' => true, 'default' => null, 'collate' => 'utf8mb4_unicode_ci', 'comment' => '', 'precision' => null, 'fixed' => null], - 'first_name' => ['type' => 'string', 'length' => 255, 'null' => true, 'default' => null, 'collate' => 'utf8mb4_unicode_ci', 'comment' => '', 'precision' => null, 'fixed' => null], - 'last_name' => ['type' => 'string', 'length' => 255, 'null' => true, 'default' => null, 'collate' => 'utf8mb4_unicode_ci', 'comment' => '', 'precision' => null, 'fixed' => null], - 'username' => ['type' => 'string', 'length' => 255, 'null' => true, 'default' => null, 'collate' => 'utf8mb4_unicode_ci', 'comment' => '', 'precision' => null, 'fixed' => null], - 'disabled' => ['type' => 'tinyinteger', 'length' => 4, 'unsigned' => false, 'null' => true, 'default' => '0', 'comment' => '', 'precision' => null], - '_constraints' => [ - 'primary' => ['type' => 'primary', 'columns' => ['id'], 'length' => []], - 'public_key' => ['type' => 'unique', 'columns' => ['public_key'], 'length' => []], - ], - '_options' => [ - 'engine' => 'InnoDB', - 'collation' => 'utf8mb4_unicode_ci' - ], - ]; - - - // @codingStandardsIgnoreEnd - /** - * Init method - * - * @return void - */ - public function init() - { - $sql_entrys = [ - [1, 0, 0, 'f7f4a49a4ac10379f8b9ddcb731c4d9ec495e6edd16075f52672cd25e3179f0f', 'test1.gmail.de', 'Max', 'Mustermann', NULL, 0], - [3, 0, 0, '131c7f68dd94b2be4c913400ff7ff4cdc03ac2bda99c2d29edcacb3b065c67e6', 'test2.gmail.com', 'Ines', 'Mustermann', NULL, 0], - [4, 0, 0, 'e3369de3623ce8446d0424c4013e7a1d71a2671ae3d7bf1e798ebf0665d145f2', 'test3.yahoo.com', 'Samuel', 'Schmied', NULL, 0] - ]; - $this->records = $this->sqlEntrysToRecords($sql_entrys, $this->fields); - parent::init(); - } -} diff --git a/community_server/tests/Fixture/TransactionCreationsFixture.php b/community_server/tests/Fixture/TransactionCreationsFixture.php deleted file mode 100644 index 4221e8729..000000000 --- a/community_server/tests/Fixture/TransactionCreationsFixture.php +++ /dev/null @@ -1,44 +0,0 @@ - ['type' => 'integer', 'length' => 10, 'unsigned' => true, 'null' => false, 'default' => null, 'comment' => '', 'autoIncrement' => true, 'precision' => null], - 'transaction_id' => ['type' => 'integer', 'length' => 10, 'unsigned' => true, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], - 'state_user_id' => ['type' => 'integer', 'length' => 10, 'unsigned' => true, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], - 'amount' => ['type' => 'biginteger', 'length' => 20, 'unsigned' => false, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], - 'target_date' => ['type' => 'timestamp', 'length' => null, 'null' => true, 'default' => null, 'comment' => '', 'precision' => null], - '_constraints' => [ - 'primary' => ['type' => 'primary', 'columns' => ['id'], 'length' => []], - ], - '_options' => [ - 'engine' => 'InnoDB', - 'collation' => 'utf8mb4_unicode_ci' - ], - ]; - // @codingStandardsIgnoreEnd - /** - * Init method - * - * @return void - */ - public function init() - { - $sql = [ - [2, 1, 4, 10000000, '2021-01-01 00:00:00'], - [3, 2, 1, 10000000, '2021-01-01 00:00:00'] - ]; - $this->records = $this->sqlEntrysToRecords($sql, $this->fields); - parent::init(); - } -} diff --git a/community_server/tests/Fixture/TransactionGroupAddaddressFixture.php b/community_server/tests/Fixture/TransactionGroupAddaddressFixture.php deleted file mode 100644 index 7b659386c..000000000 --- a/community_server/tests/Fixture/TransactionGroupAddaddressFixture.php +++ /dev/null @@ -1,54 +0,0 @@ - ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], - 'transaction_id' => ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], - 'address_type_id' => ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], - 'public_key' => ['type' => 'binary', 'length' => 32, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null], - '_constraints' => [ - 'primary' => ['type' => 'primary', 'columns' => ['id'], 'length' => []], - ], - '_options' => [ - 'engine' => 'InnoDB', - 'collation' => 'utf8_bin' - ], - ]; - // @codingStandardsIgnoreEnd - /** - * Init method - * - * @return void - */ - public function init() - { - $this->records = [ - [ - 'id' => 1, - 'transaction_id' => 1, - 'address_type_id' => 1, - 'public_key' => 'Lorem ipsum dolor sit amet' - ], - ]; - parent::init(); - } -} diff --git a/community_server/tests/Fixture/TransactionGroupAllowtradesFixture.php b/community_server/tests/Fixture/TransactionGroupAllowtradesFixture.php deleted file mode 100644 index edb745441..000000000 --- a/community_server/tests/Fixture/TransactionGroupAllowtradesFixture.php +++ /dev/null @@ -1,48 +0,0 @@ - ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], - 'transaction_id' => ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], - 'group_id' => ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], - 'allow' => ['type' => 'boolean', 'length' => null, 'null' => false, 'default' => '0', 'comment' => '', 'precision' => null], - '_constraints' => [ - 'primary' => ['type' => 'primary', 'columns' => ['id'], 'length' => []], - ], - '_options' => [ - 'engine' => 'InnoDB', - 'collation' => 'utf8_bin' - ], - ]; - // @codingStandardsIgnoreEnd - /** - * Init method - * - * @return void - */ - public function init() - { - $this->records = [ - [ - 'id' => 1, - 'transaction_id' => 1, - 'group_id' => 1, - 'allow' => 1 - ], - ]; - parent::init(); - } -} diff --git a/community_server/tests/Fixture/TransactionGroupCreatesFixture.php b/community_server/tests/Fixture/TransactionGroupCreatesFixture.php deleted file mode 100644 index 73db1c751..000000000 --- a/community_server/tests/Fixture/TransactionGroupCreatesFixture.php +++ /dev/null @@ -1,50 +0,0 @@ - ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], - 'transaction_id' => ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], - 'group_public_key' => ['type' => 'binary', 'length' => 32, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null], - 'state_group_id' => ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], - 'name' => ['type' => 'string', 'length' => 64, 'null' => false, 'default' => null, 'collate' => 'utf8_bin', 'comment' => '', 'precision' => null, 'fixed' => null], - '_constraints' => [ - 'primary' => ['type' => 'primary', 'columns' => ['id'], 'length' => []], - ], - '_options' => [ - 'engine' => 'InnoDB', - 'collation' => 'utf8_bin' - ], - ]; - // @codingStandardsIgnoreEnd - /** - * Init method - * - * @return void - */ - public function init() - { - $this->records = [ - [ - 'id' => 1, - 'transaction_id' => 1, - 'group_public_key' => 'Lorem ipsum dolor sit amet', - 'state_group_id' => 1, - 'name' => 'Lorem ipsum dolor sit amet' - ], - ]; - parent::init(); - } -} diff --git a/community_server/tests/Fixture/TransactionSendCoinsFixture.php b/community_server/tests/Fixture/TransactionSendCoinsFixture.php deleted file mode 100644 index c186ccf8e..000000000 --- a/community_server/tests/Fixture/TransactionSendCoinsFixture.php +++ /dev/null @@ -1,54 +0,0 @@ - ['type' => 'integer', 'length' => 10, 'unsigned' => true, 'null' => false, 'default' => null, 'comment' => '', 'autoIncrement' => true, 'precision' => null], - 'transaction_id' => ['type' => 'integer', 'length' => 10, 'unsigned' => true, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], - 'sender_public_key' => ['type' => 'binary', 'length' => 32, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null], - 'state_user_id' => ['type' => 'integer', 'length' => 10, 'unsigned' => true, 'null' => true, 'default' => '0', 'comment' => '', 'precision' => null, 'autoIncrement' => null], - 'receiver_public_key' => ['type' => 'binary', 'length' => 32, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null], - 'receiver_user_id' => ['type' => 'integer', 'length' => 10, 'unsigned' => true, 'null' => true, 'default' => '0', 'comment' => '', 'precision' => null, 'autoIncrement' => null], - 'amount' => ['type' => 'biginteger', 'length' => 20, 'unsigned' => false, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], - 'sender_final_balance' => ['type' => 'biginteger', 'length' => 20, 'unsigned' => false, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], - '_constraints' => [ - 'primary' => ['type' => 'primary', 'columns' => ['id'], 'length' => []], - ], - '_options' => [ - 'engine' => 'InnoDB', - 'collation' => 'utf8mb4_unicode_ci' - ], - ]; - // @codingStandardsIgnoreEnd - /** - * Init method - * - * @return void - */ - public function init() - { - $sql = [ - [2, 3, '0000000000000000000000000000000000000000000000000000000000000000', 1, 'e3369de3623ce8446d0424c4013e7a1d71a2671ae3d7bf1e798ebf0665d145f2', 4, 1000000, 6254699], - [3, 4, '0000000000000000000000000000000000000000000000000000000000000000', 1, 'e3369de3623ce8446d0424c4013e7a1d71a2671ae3d7bf1e798ebf0665d145f2', 4, 100000, 7027197], - [11, 5, '0000000000000000000000000000000000000000000000000000000000000000', 1, 'e3369de3623ce8446d0424c4013e7a1d71a2671ae3d7bf1e798ebf0665d145f2', 4, 100000, 6922113], - [12, 7, '0000000000000000000000000000000000000000000000000000000000000000', 4, 'f7f4a49a4ac10379f8b9ddcb731c4d9ec495e6edd16075f52672cd25e3179f0f', 1, 100000, 9212951], - [13, 8, '0000000000000000000000000000000000000000000000000000000000000000', 4, 'f7f4a49a4ac10379f8b9ddcb731c4d9ec495e6edd16075f52672cd25e3179f0f', 1, 100000, 9112627], - [14, 9, '0000000000000000000000000000000000000000000000000000000000000000', 4, 'f7f4a49a4ac10379f8b9ddcb731c4d9ec495e6edd16075f52672cd25e3179f0f', 1, 100000, 8912594] - ]; - - $this->records = $this->sqlEntrysToRecords($sql, $this->fields); - parent::init(); - } -} diff --git a/community_server/tests/Fixture/TransactionSignaturesFixture.php b/community_server/tests/Fixture/TransactionSignaturesFixture.php deleted file mode 100644 index 9a5bbecee..000000000 --- a/community_server/tests/Fixture/TransactionSignaturesFixture.php +++ /dev/null @@ -1,51 +0,0 @@ - ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], - 'transaction_id' => ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], - 'signature' => ['type' => 'binary', 'length' => 64, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null], - 'pubkey' => ['type' => 'binary', 'length' => 32, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null], - '_constraints' => [ - 'primary' => ['type' => 'primary', 'columns' => ['id'], 'length' => []], - ], - '_options' => [ - 'engine' => 'InnoDB', - 'collation' => 'utf8_bin' - ], - ]; - // @codingStandardsIgnoreEnd - /** - * Init method - * - * @return void - */ - public function init() - { - $sql = [ - [1, 1, '1c5357f9438f700a5378abadd0dbd74d90e335c6b9691bb9e126520813f3218573b19226382efb89aa8444a9ca98c2e8933463335baac37baf2f4eecd990600a', 'f7f4a49a4ac10379f8b9ddcb731c4d9ec495e6edd16075f52672cd25e3179f0f'], - [2, 2, '5215376ae7fb989993e3466961636519d4ade77b3bde066149ade028ad54a1a88ca8a206fcf09f52839ae0ed37b99df08ec9af12f3f37197979a206489e3ff0f', 'e3369de3623ce8446d0424c4013e7a1d71a2671ae3d7bf1e798ebf0665d145f2'], - [3, 3, 'c70f124feaaea02194d22a5f597963ed3e430343122a0952877854766fe37a709f92b39510de2aae494ef11abe743cd59f08f971b1e0e36f4c333990453d8b0d', 'f7f4a49a4ac10379f8b9ddcb731c4d9ec495e6edd16075f52672cd25e3179f0f'], - [4, 4, 'a65b39e51ab6191c51d5629bbcefd30f85f801efbb14e1c635c519e97abe217a248820fa1fc6aef56227c9d888c1919bc92471d5d7ae3522c9c50fba9f0d8402', 'f7f4a49a4ac10379f8b9ddcb731c4d9ec495e6edd16075f52672cd25e3179f0f'], - [5, 5, 'a65b39e51ab6191c51d5629bbcefd30f85f801efbb14e1c635c519e97abe217a248820fa1fc6aef56227c9d888c1919bc92471d5d7ae3522c9c50fba9f0d8402', 'f7f4a49a4ac10379f8b9ddcb731c4d9ec495e6edd16075f52672cd25e3179f0f'], - [6, 7, 'c233726674bff9bfb8ccb98bf358c6bc701825d971ece915d3c3a3de98886d1d13ee2f773cd9fc4ccbe543ac17be0d780ebead23a0dbf4ec814f7bae2efb9c0e', 'e3369de3623ce8446d0424c4013e7a1d71a2671ae3d7bf1e798ebf0665d145f2'], - [7, 8, '83ab780535883ec53ee76d0f68db0e1596418c9e100c806a4d4655d4dedf589d54a6319a2795dabab301e212b52f0dafb2725b7583447f19e47cb417d188a107', 'e3369de3623ce8446d0424c4013e7a1d71a2671ae3d7bf1e798ebf0665d145f2'], - [8, 9, '83ab780535883ec53ee76d0f68db0e1596418c9e100c806a4d4655d4dedf589d54a6319a2795dabab301e212b52f0dafb2725b7583447f19e47cb417d188a107', 'e3369de3623ce8446d0424c4013e7a1d71a2671ae3d7bf1e798ebf0665d145f2'] - ]; - $this->records = $this->sqlEntrysToRecords($sql, $this->fields); - parent::init(); - } -} diff --git a/community_server/tests/Fixture/TransactionTypesFixture.php b/community_server/tests/Fixture/TransactionTypesFixture.php deleted file mode 100644 index 48e00e0ec..000000000 --- a/community_server/tests/Fixture/TransactionTypesFixture.php +++ /dev/null @@ -1,51 +0,0 @@ - ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => false, 'default' => null, 'comment' => '', 'autoIncrement' => true, 'precision' => null], - 'name' => ['type' => 'string', 'length' => 24, 'null' => false, 'default' => null, 'collate' => 'utf8_bin', 'comment' => '', 'precision' => null, 'fixed' => null], - 'text' => ['type' => 'string', 'length' => 255, 'null' => true, 'default' => null, 'collate' => 'utf8_bin', 'comment' => '', 'precision' => null, 'fixed' => null], - '_constraints' => [ - 'primary' => ['type' => 'primary', 'columns' => ['id'], 'length' => []], - ], - '_options' => [ - 'engine' => 'InnoDB', - 'collation' => 'utf8_bin' - ], - ]; - // @codingStandardsIgnoreEnd - /** - * Init method - * - * @return void - */ - public function init() - { - $this->records = [ - [ - 'id' => 1, - 'name' => 'creation', - 'text' => 'Aktives oder Bedingsungsloses Grundeinkommen' - ], - [ - 'id' => 2, - 'name' => 'transfer', - 'text' => 'Einfache Überweisung' - ] - ]; - parent::init(); - } -} diff --git a/community_server/tests/Fixture/TransactionsFixture.php b/community_server/tests/Fixture/TransactionsFixture.php deleted file mode 100644 index 8c38f0657..000000000 --- a/community_server/tests/Fixture/TransactionsFixture.php +++ /dev/null @@ -1,55 +0,0 @@ - ['type' => 'biginteger', 'length' => 20, 'unsigned' => true, 'null' => false, 'default' => null, 'comment' => '', 'autoIncrement' => true, 'precision' => null], - 'state_group_id' => ['type' => 'integer', 'length' => 10, 'unsigned' => true, 'null' => true, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], - 'transaction_type_id' => ['type' => 'integer', 'length' => 10, 'unsigned' => true, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], - 'tx_hash' => ['type' => 'binary', 'length' => 48, 'null' => true, 'default' => null, 'comment' => '', 'precision' => null], - 'memo' => ['type' => 'string', 'length' => 255, 'null' => false, 'default' => null, 'collate' => 'utf8mb4_unicode_ci', 'comment' => '', 'precision' => null, 'fixed' => null], - 'received' => ['type' => 'timestamp', 'length' => null, 'null' => false, 'default' => 'CURRENT_TIMESTAMP', 'comment' => '', 'precision' => null], - 'blockchain_type_id' => ['type' => 'biginteger', 'length' => 20, 'unsigned' => true, 'null' => false, 'default' => '1', 'comment' => '', 'precision' => null, 'autoIncrement' => null], - '_constraints' => [ - 'primary' => ['type' => 'primary', 'columns' => ['id'], 'length' => []], - ], - '_options' => [ - 'engine' => 'InnoDB', - 'collation' => 'utf8mb4_unicode_ci' - ], - ]; - // @codingStandardsIgnoreEnd - /** - * Init method - * - * @return void - */ - public function init() - { - $sql = [ - [1, NULL, 1, '15f242a7bb92a7db82678e0baf5ec1734c038ac0dc7b19e6d1ebbcf92a6cf3ad00000000000000000000000000000000', 'AGE Januar 2021', '2021-04-09 00:00:00', 1], - [2, NULL, 1, 'f932eca7686802d1697773fea713a3c6a3e3dace8b5aa552dd8503d50ce349f500000000000000000000000000000000', 'AGE Januar 2021', '2021-04-12 00:00:00', 1], - [3, NULL, 2, '4e2235f208edaf5cbb285955732022a625cf1e100eb629c56896d2fbfb8b34e800000000000000000000000000000000', 'test', '2021-04-12 00:00:00', 1], - [4, NULL, 2, 'fc6e69696beb7c56ad7c511fc3999f954411427bec810184b70c092911deae1900000000000000000000000000000000', 'test time', '2021-04-14 00:00:00', 1], - [5, NULL, 2, 'a7149ebc0d6cd8c061906dafe05e13689b51642a41100d0ec7bb6cd2dcafdc1800000000000000000000000000000000', 'test time', '2021-04-14 09:01:07', 1], - [6, NULL, 9, '', '', '2021-04-14 09:02:00', 1], - [7, NULL, 2, '2e3c3ab3e42c06f2ecb12f61c970712467d8ad9ddfa16fa58dd76492e5924b7d00000000000000000000000000000000', 'test time 3', '2021-04-14 09:02:28', 1], - [8, NULL, 2, 'c2c6354d77ff371daeee25fce9c947748b53d3d6b8398a92bd681923cfd2057100000000000000000000000000000000', 'test login crash', '2021-04-14 09:28:46', 1], - [9, NULL, 2, '5a8cbf1aaac06b00b2951ff39983cb2ca9a1e6710d72c8e5067278dc679a823100000000000000000000000000000000', 'test login crash', '2021-04-14 09:31:28', 1] - ]; - $this->records = $this->sqlEntrysToRecords($sql, $this->fields); - parent::init(); - } -} diff --git a/community_server/tests/Fixture/UsersFixture.php b/community_server/tests/Fixture/UsersFixture.php deleted file mode 100644 index fc1a9e620..000000000 --- a/community_server/tests/Fixture/UsersFixture.php +++ /dev/null @@ -1,61 +0,0 @@ - ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => false, 'default' => null, 'comment' => '', 'autoIncrement' => true, 'precision' => null], - 'email' => ['type' => 'string', 'length' => 255, 'null' => false, 'default' => null, 'collate' => 'utf8_bin', 'comment' => '', 'precision' => null, 'fixed' => null], - 'first_name' => ['type' => 'string', 'length' => 150, 'null' => false, 'default' => null, 'collate' => 'utf8_bin', 'comment' => '', 'precision' => null, 'fixed' => null], - 'last_name' => ['type' => 'string', 'length' => 255, 'null' => true, 'default' => '', 'collate' => 'utf8_bin', 'comment' => '', 'precision' => null, 'fixed' => null], - 'password' => ['type' => 'biginteger', 'length' => 25, 'unsigned' => true, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], - 'pubkey' => ['type' => 'binary', 'length' => 32, 'null' => true, 'default' => null, 'comment' => '', 'precision' => null], - 'privkey' => ['type' => 'binary', 'length' => 80, 'null' => true, 'default' => null, 'comment' => '', 'precision' => null], - 'created' => ['type' => 'datetime', 'length' => null, 'null' => false, 'default' => 'CURRENT_TIMESTAMP', 'comment' => '', 'precision' => null], - 'email_checked' => ['type' => 'boolean', 'length' => null, 'null' => false, 'default' => '0', 'comment' => '', 'precision' => null], - 'language' => ['type' => 'string', 'length' => 4, 'null' => false, 'default' => 'de', 'collate' => 'utf8_bin', 'comment' => '', 'precision' => null, 'fixed' => null], - '_constraints' => [ - 'primary' => ['type' => 'primary', 'columns' => ['id'], 'length' => []], - 'email' => ['type' => 'unique', 'columns' => ['email'], 'length' => []], - ], - '_options' => [ - 'engine' => 'InnoDB', - 'collation' => 'utf8_general_ci' - ], - ]; - // @codingStandardsIgnoreEnd - /** - * Init method - * - * @return void - */ - public function init() - { - $this->records = [ - [ - 'id' => 1, - 'email' => 'Lorem ipsum dolor sit amet', - 'first_name' => 'Lorem ipsum dolor sit amet', - 'last_name' => 'Lorem ipsum dolor sit amet', - 'password' => 1, - 'pubkey' => 'Lorem ipsum dolor sit amet', - 'privkey' => 'Lorem ipsum dolor sit amet', - 'created' => '2020-02-13 10:54:19', - 'email_checked' => 1, - 'language' => 'Lo', - ], - ]; - parent::init(); - } -} diff --git a/community_server/tests/TestCase/ApplicationTest.php b/community_server/tests/TestCase/ApplicationTest.php deleted file mode 100644 index 1d183729d..000000000 --- a/community_server/tests/TestCase/ApplicationTest.php +++ /dev/null @@ -1,83 +0,0 @@ -bootstrap(); - $plugins = $app->getPlugins(); - - $this->assertCount(2, $plugins); - $this->assertSame('Bake', $plugins->get('Bake')->getName()); - $this->assertSame('DebugKit', $plugins->get('DebugKit')->getName()); - } - - /** - * testBootstrapPluginWitoutHalt - * - * @return void - */ - public function testBootstrapPluginWithoutHalt() - { - $this->expectException(InvalidArgumentException::class); - - $app = $this->getMockBuilder(Application::class) - ->setConstructorArgs([dirname(dirname(__DIR__)) . '/config']) - ->setMethods(['addPlugin']) - ->getMock(); - - $app->method('addPlugin') - ->will($this->throwException(new InvalidArgumentException('test exception.'))); - - $app->bootstrap(); - } - - /** - * testMiddleware - * - * @return void - */ - public function testMiddleware() - { - $app = new Application(dirname(dirname(__DIR__)) . '/config'); - $middleware = new MiddlewareQueue(); - - $middleware = $app->middleware($middleware); - - $this->assertInstanceOf(ErrorHandlerMiddleware::class, $middleware->get(0)); - $this->assertInstanceOf(AssetMiddleware::class, $middleware->get(1)); - $this->assertInstanceOf(RoutingMiddleware::class, $middleware->get(2)); - } -} diff --git a/community_server/tests/TestCase/Controller/AddressTypesControllerTest.php b/community_server/tests/TestCase/Controller/AddressTypesControllerTest.php deleted file mode 100644 index 835fc8d08..000000000 --- a/community_server/tests/TestCase/Controller/AddressTypesControllerTest.php +++ /dev/null @@ -1,77 +0,0 @@ -markTestIncomplete('Not implemented yet.'); - } - - /** - * Test view method - * - * @return void - */ - public function testView() - { - $this->markTestIncomplete('Not implemented yet.'); - } - - /** - * Test add method - * - * @return void - */ - public function testAdd() - { - $this->markTestIncomplete('Not implemented yet.'); - } - - /** - * Test edit method - * - * @return void - */ - public function testEdit() - { - $this->markTestIncomplete('Not implemented yet.'); - } - - /** - * Test delete method - * - * @return void - */ - public function testDelete() - { - $this->markTestIncomplete('Not implemented yet.'); - } -} diff --git a/community_server/tests/TestCase/Controller/AdminErrorsControllerTest.php b/community_server/tests/TestCase/Controller/AdminErrorsControllerTest.php deleted file mode 100644 index a9044b4ae..000000000 --- a/community_server/tests/TestCase/Controller/AdminErrorsControllerTest.php +++ /dev/null @@ -1,76 +0,0 @@ -markTestIncomplete('Not implemented yet.'); - } - - /** - * Test view method - * - * @return void - */ - public function testView() - { - $this->markTestIncomplete('Not implemented yet.'); - } - - /** - * Test add method - * - * @return void - */ - public function testAdd() - { - $this->markTestIncomplete('Not implemented yet.'); - } - - /** - * Test edit method - * - * @return void - */ - public function testEdit() - { - $this->markTestIncomplete('Not implemented yet.'); - } - - /** - * Test delete method - * - * @return void - */ - public function testDelete() - { - $this->markTestIncomplete('Not implemented yet.'); - } -} diff --git a/community_server/tests/TestCase/Controller/AppRequestControllerTest.php.old b/community_server/tests/TestCase/Controller/AppRequestControllerTest.php.old deleted file mode 100644 index 321ed5ac1..000000000 --- a/community_server/tests/TestCase/Controller/AppRequestControllerTest.php.old +++ /dev/null @@ -1,345 +0,0 @@ -session([ - 'session_id' => $session_id, - 'Transaction' => ['pending' => 0, 'executing' => 0], - 'StateUser' => [ - 'id' => 1, - 'email_checked' => 1, - 'public_hex' => 'f7f4a49a4ac10379f8b9ddcb731c4d9ec495e6edd16075f52672cd25e3179f0f' - ] - ]); - - $response = $this->getAndParseWithoutCompare('/api/get-balance/' . $session_id); - $this->assertEquals('success', $response->state); - $this->assertEquals(9099652, $response->balance); - $this->assertLessThan(9099652, $response->decay); - - } - - public function testGetBalance2() - { - $session_id = rand(); - $this->session([ - 'session_id' => $session_id, - 'Transaction' => ['pending' => 0, 'executing' => 0], - 'StateUser' => [ - 'id' => 3, - 'email_checked' => 1, - 'public_hex' => '131c7f68dd94b2be4c913400ff7ff4cdc03ac2bda99c2d29edcacb3b065c67e6' - ] - ]); - - $response = $this->getAndParseWithoutCompare('/api/get-balance/' . $session_id); - $this->assertEquals('success', $response->state); - $this->assertEquals(0, $response->balance); - } - public function testGetBalance3() - { - $session_id = rand(); - $this->session([ - 'session_id' => $session_id, - 'Transaction' => ['pending' => 0, 'executing' => 0], - 'StateUser' => [ - 'id' => 4, - 'email_checked' => 1, - 'public_hex' => 'e3369de3623ce8446d0424c4013e7a1d71a2671ae3d7bf1e798ebf0665d145f2' - ] - ]); - - $response = $this->getAndParseWithoutCompare('/api/get-balance/' . $session_id); - $this->assertEquals('success', $response->state); - $this->assertEquals(10899568, $response->balance); - $this->assertLessThan(10899568, $response->decay); - } - - public function testGetBalanceInvalidSession() - { - $session_id = rand(); - $this->session([ - 'session_id' => $session_id, - 'Transaction' => ['pending' => 0, 'executing' => 0], - 'StateUser' => [ - 'email_checked' => 1, - 'public_hex' => '8190bda585ee5f1d9fbf7d06e81e69ec18e13376104cff54b7457eb7d3ef710d' - ] - ]); - - $this->getAndParse('/api/get-balance/' . 1211, - ['state' => 'not found', 'msg' => 'invalid session', - 'details' => ['msg' => 'session not found', 'state' => 'not found'] - ] - ); - } - - public function testGetBalanceInvalidSessionId() - { - $session_id = rand(); - $this->session([ - 'session_id' => $session_id, - 'Transaction' => ['pending' => 0, 'executing' => 0], - 'StateUser' => [ - 'email_checked' => 1, - 'public_hex' => '8190bda585ee5f1d9fbf7d06e81e69ec18e13376104cff54b7457eb7d3ef710d' - ] - ]); - - $this->getAndParse('/api/get-balance/' , - ['state' => 'not found', 'msg' => 'invalid session', - 'details' => ['msg' => 'session not found', 'state' => 'not found'] - ] - ); - } - - /** - * Test ajaxListTransactions method - * - * @return void - */ - public function testListTransactions() - { - //ajaxListTransactions - $session_id = rand(); - $this->session([ - 'session_id' => $session_id, - 'Transactions' => ['pending' => 0, 'executing' => 0], - 'StateUser' => [ - 'id' => 1, - 'first_name' => 'Dario', - 'last_name' => 'Frodo', - 'email_checked' => 1, - 'email' => 'fördertest@gradido.org', - 'public_hex' => '94ae135b93cd9f33752b4e55c41903a3faa13a75bb90bfd411ea1d4a1a5e711f' - ] - ]); - //echo "balance: $balance"; - $expectedResult = '{ - "state": "success", - "transactions": [ - { - "transaction_id": 2, - "date": "2021-04-12T00:00:00+00:00", - "memo": "AGE Januar 2021", - "name": "Gradido Akademie", - "type": "creation", - "target_date": "2021-01-01T00:00:00+00:00", - "balance": 10000000 - }, - { - "transaction_id": 3, - "date": "2021-04-12T00:00:00+00:00", - "memo": "test", - "balance": 1000000, - "type": "send", - "pubkey": "e3369de3623ce8446d0424c4013e7a1d71a2671ae3d7bf1e798ebf0665d145f2", - "name": "Samuel Schmied", - "email": "test3.yahoo.com" - }, - { - "transaction_id": 4, - "date": "2021-04-14T00:00:00+00:00", - "memo": "test time", - "balance": 100000, - "type": "send", - "pubkey": "e3369de3623ce8446d0424c4013e7a1d71a2671ae3d7bf1e798ebf0665d145f2", - "name": "Samuel Schmied", - "email": "test3.yahoo.com" - }, - { - "transaction_id": 5, - "date": "2021-04-14T09:01:07+00:00", - "memo": "test time", - "balance": 100000, - "type": "send", - "pubkey": "e3369de3623ce8446d0424c4013e7a1d71a2671ae3d7bf1e798ebf0665d145f2", - "name": "Samuel Schmied", - "email": "test3.yahoo.com" - }, - { - "transaction_id": 7, - "date": "2021-04-14T09:02:28+00:00", - "memo": "test time 3", - "decay": { - "balance": 6, - "decay_duration": "0 days, 00 hours, 00 minutes, 28 seconds", - "decay_start": 1618390920, - "decay_end": 1618390948, - "decay_start_block": 1618390920 - }, - "balance": 100000, - "type": "receive", - "pubkey": "0000000000000000000000000000000000000000000000000000000000000000", - "name": "Samuel Schmied", - "email": "test3.yahoo.com" - }, - { - "transaction_id": 8, - "date": "2021-04-14T09:28:46+00:00", - "memo": "test login crash", - "decay": { - "balance": 309, - "decay_duration": "0 days, 00 hours, 26 minutes, 18 seconds", - "decay_start": 1618390948, - "decay_end": 1618392526 - }, - "balance": 100000, - "type": "receive", - "pubkey": "0000000000000000000000000000000000000000000000000000000000000000", - "name": "Samuel Schmied", - "email": "test3.yahoo.com" - }, - { - "transaction_id": 9, - "date": "2021-04-14T09:31:28+00:00", - "memo": "test login crash", - "decay": { - "balance": 33, - "decay_duration": "0 days, 00 hours, 02 minutes, 42 seconds", - "decay_start": 1618392526, - "decay_end": 1618392688 - }, - "balance": 100000, - "type": "receive", - "pubkey": "0000000000000000000000000000000000000000000000000000000000000000", - "name": "Samuel Schmied", - "email": "test3.yahoo.com" - }, - { - "type": "decay", - "balance": 1345726, - "decay_duration": "on 14.04.21", - "decay_start": 1618392688, - "decay_end": 1625673853, - "memo": "" - } - ], - "transactionExecutingCount": 0, - "count": 7, - "gdtSum": 180000, - "timeUsed": 0.44154810905456545, - "decay_date": "2021-07-07T16:04:13+00:00", - "balance": 9099652, - "decay": 7753926 -}'; - $this->getAndParse('/api/list-transactions/', json_decode($expectedResult, true)); - } - - - private function getAndParse($path, $expected) - { - $this->configRequest([ - 'headers' => ['Accept' => 'application/json'] - ]); - - $this->disableErrorHandlerMiddleware(); - $this->get($path); - - // Check that the response was in 2xx - 3xx - $this->assertResponseSuccess(); - $json = (object)$this->viewVariable('body'); - - if(!$json) { - // Check that the response was a 200 - $this->assertResponseOk(); - - $responseBodyString = (string)$this->_response->getBody(); - $json = json_decode($responseBodyString); - $this->assertNotFalse($json); - } else { - $responseBodyString = json_encode($json); - } - - if(is_array($expected)) { - $dynamic_fields = ['timeUsed', 'decay_date', 'decay', 'gdtSum']; - // copy timeUsed because this value will be variy always - foreach($dynamic_fields as $field) { - if(isset($expected[$field]) && isset($json->$field)) { - $expected[$field] = $json->$field; - } - } - // decay balance variy always - if(isset($expected['transactions'])) { - $dynamic_transaction_fields = ['decay_duration', 'balance', 'decay_end']; - foreach($expected['transactions'] as $i => $transaction) { - if(isset($transaction['type']) && $transaction['type'] == 'decay') { - foreach($dynamic_transaction_fields as $field) { - if(isset($transaction[$field])) { - $expected['transactions'][$i][$field] = $json->transactions[$i][$field]; - } - } - } - } - } - $expected = json_encode($expected); - } - - $this->assertEquals($expected, $responseBodyString); - } - private function getAndParseWithoutCompare($path) - { - $this->configRequest([ - 'headers' => ['Accept' => 'application/json'] - ]); - - $this->disableErrorHandlerMiddleware(); - $this->get($path); - - // Check that the response was in 2xx - 3xx - $this->assertResponseSuccess(); - $view_body = $this->viewVariable('body'); - if($view_body) { - return (object)$view_body; - } - // Check that the response was a 200 - $this->assertResponseOk(); - $responseBodyString = (string)$this->_response->getBody(); - $json = json_decode($responseBodyString, true); - $this->assertNotFalse($json); - - return $json; - } -} diff --git a/community_server/tests/TestCase/Controller/CommunityProfilesControllerTest.php b/community_server/tests/TestCase/Controller/CommunityProfilesControllerTest.php deleted file mode 100644 index 35f439dd7..000000000 --- a/community_server/tests/TestCase/Controller/CommunityProfilesControllerTest.php +++ /dev/null @@ -1,75 +0,0 @@ -markTestIncomplete('Not implemented yet.'); - } - - /** - * Test view method - * - * @return void - */ - public function testView() - { - $this->markTestIncomplete('Not implemented yet.'); - } - - /** - * Test add method - * - * @return void - */ - public function testAdd() - { - $this->markTestIncomplete('Not implemented yet.'); - } - - /** - * Test edit method - * - * @return void - */ - public function testEdit() - { - $this->markTestIncomplete('Not implemented yet.'); - } - - /** - * Test delete method - * - * @return void - */ - public function testDelete() - { - $this->markTestIncomplete('Not implemented yet.'); - } -} diff --git a/community_server/tests/TestCase/Controller/Component/GradidoNumberComponentTest.php b/community_server/tests/TestCase/Controller/Component/GradidoNumberComponentTest.php deleted file mode 100644 index be6167155..000000000 --- a/community_server/tests/TestCase/Controller/Component/GradidoNumberComponentTest.php +++ /dev/null @@ -1,95 +0,0 @@ -GradidoNumberComponent = new GradidoNumberComponent($registry); - } - - /** - * tearDown method - * - * @return void - */ - public function tearDown() - { - unset($this->GradidoNumberComponent); - - parent::tearDown(); - } - - /** - * Test parseInputNumberToCentNumber method - * - * @return void - */ - /* public function testParseInputNumberToCentNumber() - { - $this->markTestIncomplete('Not implemented yet.'); - }*/ - - public function test100() - { - $result = $this->GradidoNumberComponent->parseInputNumberToCentNumber(100); - $this->assertEquals(1000000, $result); - } - - public function test1000() - { - $result = $this->GradidoNumberComponent->parseInputNumberToCentNumber(1000); - $this->assertEquals(10000000, $result); - } - - public function test100Comma() - { - $result = $this->GradidoNumberComponent->parseInputNumberToCentNumber('100,12'); - $this->assertEquals(1001200, $result); - } - - public function test100Point() - { - $result = $this->GradidoNumberComponent->parseInputNumberToCentNumber('100.12'); - $this->assertEquals(1001200, $result); - } - - public function test100Decimal() - { - $result = $this->GradidoNumberComponent->parseInputNumberToCentNumber(100.12); - $this->assertEquals(1001200, $result); - } - - public function test1000Point() - { - $result = $this->GradidoNumberComponent->parseInputNumberToCentNumber('1000.12'); - $this->assertEquals(10001200, $result); - } - - public function test1000Comma() - { - $result = $this->GradidoNumberComponent->parseInputNumberToCentNumber('1000,12'); - $this->assertEquals(10001200, $result); - } -} diff --git a/community_server/tests/TestCase/Controller/Component/JsonRequestClientComponentTest.php b/community_server/tests/TestCase/Controller/Component/JsonRequestClientComponentTest.php deleted file mode 100644 index c1ba84ee3..000000000 --- a/community_server/tests/TestCase/Controller/Component/JsonRequestClientComponentTest.php +++ /dev/null @@ -1,72 +0,0 @@ -JsonRequestClientComponent = new JsonRequestClientComponent($registry); - } - - /** - * tearDown method - * - * @return void - */ - public function tearDown() - { - unset($this->JsonRequestClientComponent); - - parent::tearDown(); - } - - /** - * Test sendTransaction method - * - * @return void - */ - public function testSendTransaction() - { - $this->markTestIncomplete('Not implemented yet.'); - } - - /** - * Test is_base64 method - * - * @return void - */ - public function testIsBase64Valid() - { - $result = $this->JsonRequestClientComponent->is_base64('CgpIYWxsbyBXZWx0EgYIr6fe7wVKLwonCiDWDyYU4+zldTQdQMIzGpsL20W+vV44JuNVA5hwczIELRDgg5sBELmhkoIE'); - - $this->assertEquals($result, true); - } - - public function testIsBase64Invalid() - { - $result = $this->JsonRequestClientComponent->is_base64('CgpIYWxsbyBXZWx0EgYIr6fe7wVKLwonCiDWDyYU4-zldTQdQMIzGpsL20W+vV44JuNVA5hwczIELRDgg5sBELmhkoIE'); - - $this->assertEquals($result, false); - } -} diff --git a/community_server/tests/TestCase/Controller/DashboardControllerTest.php b/community_server/tests/TestCase/Controller/DashboardControllerTest.php deleted file mode 100644 index cddf0b7ef..000000000 --- a/community_server/tests/TestCase/Controller/DashboardControllerTest.php +++ /dev/null @@ -1,45 +0,0 @@ -markTestIncomplete('Not implemented yet.'); - } - - /** - * Test index method - * - * @return void - */ - public function testIndex() - { - $this->markTestIncomplete('Not implemented yet.'); - } -} diff --git a/community_server/tests/TestCase/Controller/JsonRequestHandlerControllerTest.php b/community_server/tests/TestCase/Controller/JsonRequestHandlerControllerTest.php deleted file mode 100644 index f990b3e57..000000000 --- a/community_server/tests/TestCase/Controller/JsonRequestHandlerControllerTest.php +++ /dev/null @@ -1,176 +0,0 @@ - 'CmYKZAog4zad42I86ERtBCTEAT56HXGiZxrj178eeY6_BmXRRfISQDnatUMvitiiP0-sY93JStYPhPKKPU4Vosv_EGrh77BVs48xhPgPj2QHWC3oyuuMh6nN8YNjBQZx20rKvdQ4uwMSRwoMQUdFIE1haSAyMDIxEgYI_c3ChQY6LwolCiD39KSaSsEDefi53ctzHE2exJXm7dFgdfUmcs0l4xefDxDQDxoGCPqbtIQG', - 'validCreation900' => 'CmYKZAog9_SkmkrBA3n4ud3LcxxNnsSV5u3RYHX1JnLNJeMXnw8SQCaZHmvmvJOt336E3qst3rn1pptdAR5ZPzePaUT10x0_Yky8FnEiQtMGNy1yT94QErzwQudJZjJwDY2uyK4cTgkSOxIGCKb1vYUGOjEKJwog4zad42I86ERtBCTEAT56HXGiZxrj178eeY6_BmXRRfIQgNHKCBoGCIDMuf8F', - 'validCreation1200' => 'CmYKZAog9_SkmkrBA3n4ud3LcxxNnsSV5u3RYHX1JnLNJeMXnw8SQF8jptIrosEyVmCf3WEIGVOK0NR8YCcO0j-s8v2yUyR5BKus0ciT6B7IA5LDtn7eQX6zHjg1v5WlsTiZuOpuNgwSRAoHVG8gbXVjaBIGCL3Jv4UGOjEKJwog4zad42I86ERtBCTEAT56HXGiZxrj178eeY6_BmXRRfIQgOy4CxoGCOG5toQG', - 'notBase64' => 'CgpIYWxsbyBXZW-0EgYIyfSG7gV_LwonCiCboKikqwjZfes9xuqgthFH3', - 'validTransfer' => 'CmYKZAog9_SkmkrBA3n4ud3LcxxNnsSV5u3RYHX1JnLNJeMXnw8SQA0ZVQ9T1qBabzmgDO1NAWNy2J6mlv0YjMP99CiV7bSR0zemt5XoM-kTviR1aTqKggzpSYSyTN5T6gIx2xa-hgkSYwoLTXkgQmlydGhkYXkSBgie0L-FBjJMCkoKJgog9_SkmkrBA3n4ud3LcxxNnsSV5u3RYHX1JnLNJeMXnw8QgIl6EiDjNp3jYjzoRG0EJMQBPnodcaJnGuPXvx55jr8GZdFF8g', - 'errornusTransfer' => 'ClxGcm9oZXMgTmV1ZXMgSmFociB1bmQgREFOS0UsIGRhc3MgZHUgZGljaCBzbyBlaW5zZXR6dCBmw7xyIEdyYWRpZG8hIEhlcnpsaWNoZSBHcsO8w59lIFRlcmVzYRIGCPjjgvEFQlAKJgogUQwFYeVlGlfWDrkXNN7rHwejoCDJKt+YkYJfbJVyj3EQwIQ9EiYKIPXIRnUhVJ/zCs5+y/VaTBjTIoYizJNwS+JC//xsbQrHEMCEPQ==' - ]; - - /*public function setUp() { - parent::setUp(); - } -*/ - public function testWrongMethod() - { - $this->configRequest([ - 'headers' => ['Accept' => 'application/json'] - ]); - $this->get('/JsonRequestHandler'); - $this->assertResponseOk(); - - $expected = json_encode(['state' => 'error', 'msg' => 'unknown method for get', 'details' => null]); - $this->assertEquals($expected, (string)$this->_response->getBody()); - } - - public function testInvalidJson() - { - $this->configRequest([ - 'headers' => ['Accept' => 'application/json'] - ]); - $this->post('/JsonRequestHandler', '{This isn\'t valid json}'); - $this->assertResponseOk(); - - $expected = json_encode(['state' => 'error', 'msg' => 'parameter error']); - $this->assertEquals($expected, (string)$this->_response->getBody()); - } - - public function testNotSetTransaction() - { - $this->postAndParse( - ['method' => 'putTransaction'], - ['state' => 'error', 'msg' => 'parameter error'] - ); - } - public function testNotSetMethod() - { - $this->postAndParse( - ['transaction' => $this->transactions['validCreation']], - ['state' => 'error', 'msg' => 'parameter error'] - ); - } - - public function testUnknownMethod() - { - //$this->post('/TransactionJsonRequestHandler', ['method' => 'putTransaction', 'transaction' => 'CgpIYWxsbyBXZWx0EgYIyfSG7gVKLwonCiCboKikqwjZfes9xuqgthFH3/cHHaWchkUhWiGhQjB23xCg2pMBELWJ7ZYK']); - $this->postAndParse( - ['method' => 'foobar', 'transaction' => $this->transactions['validCreation']], - ['state' => 'error', 'msg' => 'unknown method for post', 'details' => 'foobar'] - ); - - } - - public function testInvalidEncodedTransaction() { - //"msg":"error parsing transaction","details":[{"Transaction":"base64 decode error"}] - $this->postAndParse( - ['method' => 'putTransaction', 'transaction' => $this->transactions['notBase64']], - ['state' => 'error', 'msg' => 'error parsing transaction', 'details' => [ - ['Transaction' => 'invalid base64 string'], - ['base64' => 'CgpIYWxsbyBXZW-0EgYIyfSG7gV_LwonCiCboKikqwjZfes9xuqgthFH3'] - ]] - ); - } - - public function testInvalidTransaction() { - - $this->postAndParse( - ['method' => 'putTransaction', 'transaction' => base64_encode('Hallo Miau Welt')], - ['state' => 'error', 'msg' => 'error parsing transaction', 'details' => [ - ['Transaction' => 'Error occurred during parsing: Unexpected wire type.'] - ]] - ); - } - - public function testToLargeCreationSum() - { - - $this->postAndParse( - ['method' => 'putTransaction', 'transaction' => $this->transactions['validCreation900']], - '{"state":"error","msg":"error validate transaction","details":[{"TransactionCreation::validate":"Creation more than 1.000 GDD per Month for in target_date not allowed"}]}' - ); - } - - public function testToLargeCreation() - { - $this->postAndParse( - ['method' => 'putTransaction', 'transaction' => $this->transactions['validCreation1200']], - '{"state":"error","msg":"error validate transaction","details":[{"TransactionCreation::validate":"Creation more than 1.000 GDD per Month for in target_date not allowed"}]}' - ); - } - - public function testValidTransfer() - { - $this->postAndParse( - ['method' => 'putTransaction', 'transaction' => $this->transactions['validTransfer']], - ['state' => 'success'] - ); - } - - public function testValidCreation() - { - $this->postAndParse( - ['method' => 'putTransaction', 'transaction' => $this->transactions['validCreation']], - ['state' => 'success'] - ); - } - - private function postAndParse($params, $expected) - { - $this->enableCsrfToken(); - //$this->enableSecurityToken(); - - //$token = 'my-csrf-token'; - //$this->cookie('csrfToken', $token); - - $this->configRequest([ - 'headers' => ['Accept' => 'application/json']//, 'X-CSRF-Token' => $token] - ]); - - $this->disableErrorHandlerMiddleware(); - $this->post('/JsonRequestHandler', json_encode($params)); - - // Check that the response was a 200 - $this->assertResponseOk(); - - $responseBodyString = (string)$this->_response->getBody(); - $json = json_decode($responseBodyString); - $this->assertNotFalse($json); - - if(is_array($expected)) { - $expected = json_encode($expected); - } - $this->assertEquals($expected, $responseBodyString); - } -} diff --git a/community_server/tests/TestCase/Controller/PagesControllerTest.php b/community_server/tests/TestCase/Controller/PagesControllerTest.php deleted file mode 100644 index a8fd65233..000000000 --- a/community_server/tests/TestCase/Controller/PagesControllerTest.php +++ /dev/null @@ -1,101 +0,0 @@ -get('/'); - $locations = $this->_response->getHeader('Location'); - $this->assertRegExp('%.*/account/$%', $locations[0]); - - $this->get('/'); - $locations = $this->_response->getHeader('Location'); - $this->assertRegExp('%.*/account/$%', $locations[0]); - } - - /** - * testDisplay method - * - * @return void - */ - public function testDisplay() - { - $this->get('/pages/home'); - $this->assertResponseOk(); - $this->assertResponseContains('CakePHP'); - $this->assertResponseContains(''); - } - - /** - * Test that missing template renders 404 page in production - * - * @return void - */ - public function testMissingTemplate() - { - Configure::write('debug', false); - $this->get('/pages/not_existing'); - - $this->assertResponseError(); - $this->assertResponseContains('Not Found'); - } - - /** - * Test that missing template in debug mode renders missing_template error page - * - * @return void - */ - public function testMissingTemplateInDebug() - { - Configure::write('debug', true); - $this->get('/pages/not_existing'); - - $this->assertResponseFailure(); - $this->assertResponseContains('Template file \u0022Pages\/not_existing.ctp\u0022 is missing.'); - $this->assertResponseContains('not_existing.ctp'); - } - - /** - * Test directory traversal protection - * - * @return void - */ - public function testDirectoryTraversalProtection() - { - $this->get('/pages/../Layout/ajax'); - $this->assertResponseCode(403); - $this->assertResponseContains('Forbidden'); - } -} diff --git a/community_server/tests/TestCase/Controller/ProfilesControllerTest.php b/community_server/tests/TestCase/Controller/ProfilesControllerTest.php deleted file mode 100644 index d87558e55..000000000 --- a/community_server/tests/TestCase/Controller/ProfilesControllerTest.php +++ /dev/null @@ -1,76 +0,0 @@ -markTestIncomplete('Not implemented yet.'); - } - - /** - * Test view method - * - * @return void - */ - public function testView() - { - $this->markTestIncomplete('Not implemented yet.'); - } - - /** - * Test add method - * - * @return void - */ - public function testAdd() - { - $this->markTestIncomplete('Not implemented yet.'); - } - - /** - * Test edit method - * - * @return void - */ - public function testEdit() - { - $this->markTestIncomplete('Not implemented yet.'); - } - - /** - * Test delete method - * - * @return void - */ - public function testDelete() - { - $this->markTestIncomplete('Not implemented yet.'); - } -} diff --git a/community_server/tests/TestCase/Controller/RolesControllerTest.php b/community_server/tests/TestCase/Controller/RolesControllerTest.php deleted file mode 100644 index 12b2868a2..000000000 --- a/community_server/tests/TestCase/Controller/RolesControllerTest.php +++ /dev/null @@ -1,75 +0,0 @@ -markTestIncomplete('Not implemented yet.'); - } - - /** - * Test view method - * - * @return void - */ - public function testView() - { - $this->markTestIncomplete('Not implemented yet.'); - } - - /** - * Test add method - * - * @return void - */ - public function testAdd() - { - $this->markTestIncomplete('Not implemented yet.'); - } - - /** - * Test edit method - * - * @return void - */ - public function testEdit() - { - $this->markTestIncomplete('Not implemented yet.'); - } - - /** - * Test delete method - * - * @return void - */ - public function testDelete() - { - $this->markTestIncomplete('Not implemented yet.'); - } -} diff --git a/community_server/tests/TestCase/Controller/StateBalancesControllerTest.php b/community_server/tests/TestCase/Controller/StateBalancesControllerTest.php deleted file mode 100644 index 9ef8d28e9..000000000 --- a/community_server/tests/TestCase/Controller/StateBalancesControllerTest.php +++ /dev/null @@ -1,179 +0,0 @@ -StateBalances = TableRegistry::getTableLocator()->get('StateBalances'); - } - - /** - * Test initialize method - * - * @return void - */ - public function testInitialize() - { - $this->markTestIncomplete('Not implemented yet.'); - } - - /** - * Test index method - * - * @return void - */ - public function testIndex() - { - $this->markTestIncomplete('Not implemented yet.'); - } - - /** - * Test overview method - * - * @return void - */ - public function testOverview() - { - $this->markTestIncomplete('Not implemented yet.'); - } - - - - /** - * Test overviewGdt method - * - * @return void - */ - public function testOverviewGdt() - { - $this->markTestIncomplete('Not implemented yet.'); - } - - /** - * Test sortTransactions method - * - * @return void - */ - public function testSortTransactions() - { - $this->markTestIncomplete('Not implemented yet.'); - } - - /** - * Test view method - * - * @return void - */ - public function testView() - { - $this->markTestIncomplete('Not implemented yet.'); - } - - /** - * Test add method - * - * @return void - */ - public function testAdd() - { - $this->markTestIncomplete('Not implemented yet.'); - } - - /** - * Test edit method - * - * @return void - */ - public function testEdit() - { - $this->markTestIncomplete('Not implemented yet.'); - } - - /** - * Test delete method - * - * @return void - */ - public function testDelete() - { - $this->markTestIncomplete('Not implemented yet.'); - } - - - private function getAndParse($path, $expected) - { - $this->configRequest([ - 'headers' => ['Accept' => 'application/json'] - ]); - - $this->disableErrorHandlerMiddleware(); - $this->get($path); - - // Check that the response was a 200 - $this->assertResponseOk(); - - $responseBodyString = (string)$this->_response->getBody(); - $json = json_decode($responseBodyString); - $this->assertNotFalse($json); - - if(is_array($expected)) { - // copy timeUsed because this value will be variy always - if(isset($expected['timeUsed']) && isset($json->timeUsed)) { - $expected['timeUsed'] = $json->timeUsed; - } - $expected = json_encode($expected); - } - - $this->assertEquals($expected, $responseBodyString); - } - private function getAndParseWithoutCompare($path) - { - $this->configRequest([ - 'headers' => ['Accept' => 'application/json'] - ]); - - $this->disableErrorHandlerMiddleware(); - $this->get($path); - - // Check that the response was a 200 - $this->assertResponseOk(); - - $responseBodyString = (string)$this->_response->getBody(); - $json = json_decode($responseBodyString); - $this->assertNotFalse($json); - - return $json; - } -} diff --git a/community_server/tests/TestCase/Controller/StateErrorsControllerTest.php b/community_server/tests/TestCase/Controller/StateErrorsControllerTest.php deleted file mode 100644 index 452af54fc..000000000 --- a/community_server/tests/TestCase/Controller/StateErrorsControllerTest.php +++ /dev/null @@ -1,77 +0,0 @@ -markTestIncomplete('Not implemented yet.'); - } - - /** - * Test view method - * - * @return void - */ - public function testView() - { - $this->markTestIncomplete('Not implemented yet.'); - } - - /** - * Test add method - * - * @return void - */ - public function testAdd() - { - $this->markTestIncomplete('Not implemented yet.'); - } - - /** - * Test edit method - * - * @return void - */ - public function testEdit() - { - $this->markTestIncomplete('Not implemented yet.'); - } - - /** - * Test delete method - * - * @return void - */ - public function testDelete() - { - $this->markTestIncomplete('Not implemented yet.'); - } -} diff --git a/community_server/tests/TestCase/Controller/StateUserTransactionsControllerTest.php b/community_server/tests/TestCase/Controller/StateUserTransactionsControllerTest.php deleted file mode 100644 index 0c9e0a513..000000000 --- a/community_server/tests/TestCase/Controller/StateUserTransactionsControllerTest.php +++ /dev/null @@ -1,78 +0,0 @@ -markTestIncomplete('Not implemented yet.'); - } - - /** - * Test view method - * - * @return void - */ - public function testView() - { - $this->markTestIncomplete('Not implemented yet.'); - } - - /** - * Test add method - * - * @return void - */ - public function testAdd() - { - $this->markTestIncomplete('Not implemented yet.'); - } - - /** - * Test edit method - * - * @return void - */ - public function testEdit() - { - $this->markTestIncomplete('Not implemented yet.'); - } - - /** - * Test delete method - * - * @return void - */ - public function testDelete() - { - $this->markTestIncomplete('Not implemented yet.'); - } -} diff --git a/community_server/tests/TestCase/Controller/TransactionCreationsControllerTest.php b/community_server/tests/TestCase/Controller/TransactionCreationsControllerTest.php deleted file mode 100644 index 74c0e4b1e..000000000 --- a/community_server/tests/TestCase/Controller/TransactionCreationsControllerTest.php +++ /dev/null @@ -1,97 +0,0 @@ -markTestIncomplete('Not implemented yet.'); - } - - /** - * Test index method - * - * @return void - */ - public function testIndex() - { - $this->markTestIncomplete('Not implemented yet.'); - } - - /** - * Test view method - * - * @return void - */ - public function testView() - { - $this->markTestIncomplete('Not implemented yet.'); - } - - /** - * Test create method - * - * @return void - */ - public function testCreate() - { - $this->markTestIncomplete('Not implemented yet.'); - } - - /** - * Test add method - * - * @return void - */ - public function testAdd() - { - $this->markTestIncomplete('Not implemented yet.'); - } - - /** - * Test edit method - * - * @return void - */ - public function testEdit() - { - $this->markTestIncomplete('Not implemented yet.'); - } - - /** - * Test delete method - * - * @return void - */ - public function testDelete() - { - $this->markTestIncomplete('Not implemented yet.'); - } -} diff --git a/community_server/tests/TestCase/Model/Behavior/empty b/community_server/tests/TestCase/Model/Behavior/empty deleted file mode 100644 index e69de29bb..000000000 diff --git a/community_server/tests/TestCase/Model/Table/AddressTypesTableTest.php b/community_server/tests/TestCase/Model/Table/AddressTypesTableTest.php deleted file mode 100644 index 8f145215c..000000000 --- a/community_server/tests/TestCase/Model/Table/AddressTypesTableTest.php +++ /dev/null @@ -1,74 +0,0 @@ -exists('AddressTypes') ? [] : ['className' => AddressTypesTable::class]; - $this->AddressTypes = TableRegistry::getTableLocator()->get('AddressTypes', $config); - } - - /** - * tearDown method - * - * @return void - */ - public function tearDown() - { - unset($this->AddressTypes); - - parent::tearDown(); - } - - /** - * Test initialize method - * - * @return void - */ - public function testInitialize() - { - $this->markTestIncomplete('Not implemented yet.'); - } - - /** - * Test validationDefault method - * - * @return void - */ - public function testValidationDefault() - { - $this->markTestIncomplete('Not implemented yet.'); - } -} diff --git a/community_server/tests/TestCase/Model/Table/AdminErrorsTableTest.php b/community_server/tests/TestCase/Model/Table/AdminErrorsTableTest.php deleted file mode 100644 index 09d7a35fb..000000000 --- a/community_server/tests/TestCase/Model/Table/AdminErrorsTableTest.php +++ /dev/null @@ -1,83 +0,0 @@ -exists('AdminErrors') ? [] : ['className' => AdminErrorsTable::class]; - $this->AdminErrors = TableRegistry::getTableLocator()->get('AdminErrors', $config); - } - - /** - * tearDown method - * - * @return void - */ - public function tearDown() - { - unset($this->AdminErrors); - - parent::tearDown(); - } - - /** - * Test initialize method - * - * @return void - */ - public function testInitialize() - { - $this->markTestIncomplete('Not implemented yet.'); - } - - /** - * Test validationDefault method - * - * @return void - */ - public function testValidationDefault() - { - $this->markTestIncomplete('Not implemented yet.'); - } - - /** - * Test buildRules method - * - * @return void - */ - public function testBuildRules() - { - $this->markTestIncomplete('Not implemented yet.'); - } -} diff --git a/community_server/tests/TestCase/Model/Table/CommunityProfilesTableTest.php b/community_server/tests/TestCase/Model/Table/CommunityProfilesTableTest.php deleted file mode 100644 index 0d7e5fba2..000000000 --- a/community_server/tests/TestCase/Model/Table/CommunityProfilesTableTest.php +++ /dev/null @@ -1,72 +0,0 @@ -exists('CommunityProfiles') ? [] : ['className' => CommunityProfilesTable::class]; - $this->CommunityProfiles = TableRegistry::getTableLocator()->get('CommunityProfiles', $config); - } - - /** - * tearDown method - * - * @return void - */ - public function tearDown() - { - unset($this->CommunityProfiles); - - parent::tearDown(); - } - - /** - * Test initialize method - * - * @return void - */ - public function testInitialize() - { - $this->markTestIncomplete('Not implemented yet.'); - } - - /** - * Test validationDefault method - * - * @return void - */ - public function testValidationDefault() - { - $this->markTestIncomplete('Not implemented yet.'); - } -} diff --git a/community_server/tests/TestCase/Model/Table/RolesTableTest.php b/community_server/tests/TestCase/Model/Table/RolesTableTest.php deleted file mode 100644 index b40a0ca9b..000000000 --- a/community_server/tests/TestCase/Model/Table/RolesTableTest.php +++ /dev/null @@ -1,82 +0,0 @@ -exists('Roles') ? [] : ['className' => RolesTable::class]; - $this->Roles = TableRegistry::getTableLocator()->get('Roles', $config); - } - - /** - * tearDown method - * - * @return void - */ - public function tearDown() - { - unset($this->Roles); - - parent::tearDown(); - } - - /** - * Test initialize method - * - * @return void - */ - public function testInitialize() - { - $this->markTestIncomplete('Not implemented yet.'); - } - - /** - * Test validationDefault method - * - * @return void - */ - public function testValidationDefault() - { - $this->markTestIncomplete('Not implemented yet.'); - } - - /** - * Test buildRules method - * - * @return void - */ - public function testBuildRules() - { - $this->markTestIncomplete('Not implemented yet.'); - } -} diff --git a/community_server/tests/TestCase/Model/Table/StateBalancesTableTest.php b/community_server/tests/TestCase/Model/Table/StateBalancesTableTest.php deleted file mode 100644 index 68049de34..000000000 --- a/community_server/tests/TestCase/Model/Table/StateBalancesTableTest.php +++ /dev/null @@ -1,124 +0,0 @@ -exists('StateBalances') ? [] : ['className' => StateBalancesTable::class]; - $this->StateBalancesTable = TableRegistry::getTableLocator()->get('StateBalances', $config); - } - - /** - * tearDown method - * - * @return void - */ - public function tearDown() - { - unset($this->StateBalancesTable); - - parent::tearDown(); - } - - /** - * Test initialize method - * - * @return void - */ - public function testInitialize() - { - $this->markTestIncomplete('Not implemented yet.'); - } - - /** - * Test validationDefault method - * - * @return void - */ - public function testValidationDefault() - { - $this->markTestIncomplete('Not implemented yet.'); - } - - /** - * Test buildRules method - * - * @return void - */ - public function testBuildRules() - { - $this->markTestIncomplete('Not implemented yet.'); - } - - /** - * Test sortTransactions method - * - * @return void - */ - public function testSortTransactions() - { - $this->markTestIncomplete('Not implemented yet.'); - } - - /** - * Test updateLastStateBalanceOfMonth method - * - * @return void - */ - public function testUpdateLastStateBalanceOfMonth() - { - $this->markTestIncomplete('Not implemented yet.'); - } - - /** - * Test chooseForMonthAndUser method - * - * @return void - */ - public function testChooseForMonthAndUser() - { - $this->markTestIncomplete('Not implemented yet.'); - } - - /** - * Test updateBalanceWithTransaction method - * - * @return void - */ - public function testUpdateBalanceWithTransaction() - { - $this->markTestIncomplete('Not implemented yet.'); - } - -} diff --git a/community_server/tests/TestCase/Model/Table/StateErrorsTableTest.php b/community_server/tests/TestCase/Model/Table/StateErrorsTableTest.php deleted file mode 100644 index 21cbe6128..000000000 --- a/community_server/tests/TestCase/Model/Table/StateErrorsTableTest.php +++ /dev/null @@ -1,84 +0,0 @@ -exists('StateErrors') ? [] : ['className' => StateErrorsTable::class]; - $this->StateErrors = TableRegistry::getTableLocator()->get('StateErrors', $config); - } - - /** - * tearDown method - * - * @return void - */ - public function tearDown() - { - unset($this->StateErrors); - - parent::tearDown(); - } - - /** - * Test initialize method - * - * @return void - */ - public function testInitialize() - { - $this->markTestIncomplete('Not implemented yet.'); - } - - /** - * Test validationDefault method - * - * @return void - */ - public function testValidationDefault() - { - $this->markTestIncomplete('Not implemented yet.'); - } - - /** - * Test buildRules method - * - * @return void - */ - public function testBuildRules() - { - $this->markTestIncomplete('Not implemented yet.'); - } -} diff --git a/community_server/tests/TestCase/Model/Table/StateUserTransactionsTableTest.php b/community_server/tests/TestCase/Model/Table/StateUserTransactionsTableTest.php deleted file mode 100644 index 173ad8e12..000000000 --- a/community_server/tests/TestCase/Model/Table/StateUserTransactionsTableTest.php +++ /dev/null @@ -1,85 +0,0 @@ -exists('StateUserTransactions') ? [] : ['className' => StateUserTransactionsTable::class]; - $this->StateUserTransactions = TableRegistry::getTableLocator()->get('StateUserTransactions', $config); - } - - /** - * tearDown method - * - * @return void - */ - public function tearDown() - { - unset($this->StateUserTransactions); - - parent::tearDown(); - } - - /** - * Test initialize method - * - * @return void - */ - public function testInitialize() - { - $this->markTestIncomplete('Not implemented yet.'); - } - - /** - * Test validationDefault method - * - * @return void - */ - public function testValidationDefault() - { - $this->markTestIncomplete('Not implemented yet.'); - } - - /** - * Test buildRules method - * - * @return void - */ - public function testBuildRules() - { - $this->markTestIncomplete('Not implemented yet.'); - } -} diff --git a/community_server/tests/TestCase/Model/Table/StateUsersTableTest.php b/community_server/tests/TestCase/Model/Table/StateUsersTableTest.php deleted file mode 100644 index 49deb1166..000000000 --- a/community_server/tests/TestCase/Model/Table/StateUsersTableTest.php +++ /dev/null @@ -1,97 +0,0 @@ -exists('StateUsers') ? [] : ['className' => StateUsersTable::class]; - $this->StateUsersTable = TableRegistry::getTableLocator()->get('StateUsers', $config); - } - - /** - * tearDown method - * - * @return void - */ - public function tearDown() - { - unset($this->StateUsersTable); - - parent::tearDown(); - } - - /** - * Test initialize method - * - * @return void - */ - public function testInitialize() - { - $this->markTestIncomplete('Not implemented yet.'); - } - - /** - * Test validationDefault method - * - * @return void - */ - public function testValidationDefault() - { - $this->markTestIncomplete('Not implemented yet.'); - } - - /** - * Test buildRules method - * - * @return void - */ - public function testBuildRules() - { - $this->markTestIncomplete('Not implemented yet.'); - } - - /** - * Test getReceiverProposal method - * - * @return void - */ - public function testGetReceiverProposal() - { - $this->markTestIncomplete('Not implemented yet.'); - } -} diff --git a/community_server/tests/TestCase/Model/Transactions/TransactionCreationTest.php b/community_server/tests/TestCase/Model/Transactions/TransactionCreationTest.php deleted file mode 100644 index e53549a42..000000000 --- a/community_server/tests/TestCase/Model/Transactions/TransactionCreationTest.php +++ /dev/null @@ -1,41 +0,0 @@ -assertEquals(true, true); - } - - - - -} diff --git a/community_server/tests/TestCase/View/Helper/empty b/community_server/tests/TestCase/View/Helper/empty deleted file mode 100644 index e69de29bb..000000000 diff --git a/community_server/tests/bootstrap.php b/community_server/tests/bootstrap.php deleted file mode 100644 index 0ca191e4a..000000000 --- a/community_server/tests/bootstrap.php +++ /dev/null @@ -1,12 +0,0 @@ - - RewriteEngine On - RewriteCond %{REQUEST_FILENAME} !-f - RewriteRule ^ index.php [L] - diff --git a/community_server/webroot/css/fonts_local.css b/community_server/webroot/css/fonts_local.css deleted file mode 100644 index 99dac0484..000000000 --- a/community_server/webroot/css/fonts_local.css +++ /dev/null @@ -1,79 +0,0 @@ -/* -To change this license header, choose License Headers in Project Properties. -To change this template file, choose Tools | Templates -and open the template in the editor. -*/ -/* - Created on : 21.01.2021, 12:32:20 - Author : einhornimmond -*/ - -/* open-sans-300 - latin */ -@font-face { - font-family: 'Open Sans'; - font-style: normal; - font-weight: 300; - src: url('../fonts/open-sans-v18-latin-300.eot'); /* IE9 Compat Modes */ - src: local(''), - url('../fonts/open-sans-v18-latin-300.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ - url('../fonts/open-sans-v18-latin-300.woff2') format('woff2'), /* Super Modern Browsers */ - url('../fonts/open-sans-v18-latin-300.woff') format('woff'), /* Modern Browsers */ - url('../fonts/open-sans-v18-latin-300.ttf') format('truetype'), /* Safari, Android, iOS */ - url('../fonts/open-sans-v18-latin-300.svg#OpenSans') format('svg'); /* Legacy iOS */ -} - -/* open-sans-regular - latin */ -@font-face { - font-family: 'Open Sans'; - font-style: normal; - font-weight: 400; - src: url('../fonts/open-sans-v18-latin-regular.eot'); /* IE9 Compat Modes */ - src: local(''), - url('../fonts/open-sans-v18-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ - url('../fonts/open-sans-v18-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */ - url('../fonts/open-sans-v18-latin-regular.woff') format('woff'), /* Modern Browsers */ - url('../fonts/open-sans-v18-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */ - url('../fonts/open-sans-v18-latin-regular.svg#OpenSans') format('svg'); /* Legacy iOS */ -} - -/* open-sans-600 - latin */ -@font-face { - font-family: 'Open Sans'; - font-style: normal; - font-weight: 600; - src: url('../fonts/open-sans-v18-latin-600.eot'); /* IE9 Compat Modes */ - src: local(''), - url('../fonts/open-sans-v18-latin-600.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ - url('../fonts/open-sans-v18-latin-600.woff2') format('woff2'), /* Super Modern Browsers */ - url('../fonts/open-sans-v18-latin-600.woff') format('woff'), /* Modern Browsers */ - url('../fonts/open-sans-v18-latin-600.ttf') format('truetype'), /* Safari, Android, iOS */ - url('../fonts/open-sans-v18-latin-600.svg#OpenSans') format('svg'); /* Legacy iOS */ -} - -/* open-sans-700 - latin */ -@font-face { - font-family: 'Open Sans'; - font-style: normal; - font-weight: 700; - src: url('../fonts/open-sans-v18-latin-700.eot'); /* IE9 Compat Modes */ - src: local(''), - url('../fonts/open-sans-v18-latin-700.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ - url('../fonts/open-sans-v18-latin-700.woff2') format('woff2'), /* Super Modern Browsers */ - url('../fonts/open-sans-v18-latin-700.woff') format('woff'), /* Modern Browsers */ - url('../fonts/open-sans-v18-latin-700.ttf') format('truetype'), /* Safari, Android, iOS */ - url('../fonts/open-sans-v18-latin-700.svg#OpenSans') format('svg'); /* Legacy iOS */ -} - -/* open-sans-800 - latin */ -@font-face { - font-family: 'Open Sans'; - font-style: normal; - font-weight: 800; - src: url('../fonts/open-sans-v18-latin-800.eot'); /* IE9 Compat Modes */ - src: local(''), - url('../fonts/open-sans-v18-latin-800.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ - url('../fonts/open-sans-v18-latin-800.woff2') format('woff2'), /* Super Modern Browsers */ - url('../fonts/open-sans-v18-latin-800.woff') format('woff'), /* Modern Browsers */ - url('../fonts/open-sans-v18-latin-800.ttf') format('truetype'), /* Safari, Android, iOS */ - url('../fonts/open-sans-v18-latin-800.svg#OpenSans') format('svg'); /* Legacy iOS */ -} diff --git a/community_server/webroot/css/grd_styles.css b/community_server/webroot/css/grd_styles.css deleted file mode 100644 index e745ea55e..000000000 --- a/community_server/webroot/css/grd_styles.css +++ /dev/null @@ -1,1821 +0,0 @@ -/* ============================================================ - - Grid Layout Page - - Datei : layout.less - Datum : 2020-04-30 - Autor : Christine Slotty - Copyright : Gradio - - ============================================================*/ -/*==================================== -= BREAK POINTS = -====================================*/ -/* https://scotch.io/courses/getting-started-with-less/responsive-and-media-queries */ -/* GRID */ -.layout { - display: grid; - grid-template-rows: [top] 8vh [line2] 86vh [footer1] 3vh [footer2] 5vh [end]; - grid-template-columns: [left1] auto [left2] 1fr [left3] 12fr [right3] 1fr [right2] auto [right1]; - grid-template-areas: "header header header header header" "left . center center ." "footer footer footer footer footer" "bottom bottom bottom bottom bottom"; - margin: 0; - padding: 0; -} -@media (max-width:1199px) { - .layout { - grid-template-areas: "header header header header header" "left . center center center" "footer footer footer footer footer" "bottom bottom bottom bottom bottom"; - } -} -@media (max-width:767px) { - .layout { - position: relative; - display: grid; - grid-template-rows: [top] 12vh [line2] 80vh [footer1] 3vh [footer2] 8vh [end]; - grid-template-columns: [left1] 100vw [right1]; - grid-template-areas: "header" "center" "footer" "bottom"; - margin: 0; - padding: 0; - } -} -.header-notify { - grid-area: header; - grid-column-start: right3; - grid-column-end: right2; -} -.header-user { - grid-area: header; - grid-column-start: right2; - grid-column-end: right1; -} -.sidebar1 { - grid-area: left; - grid-row-start: top; - grid-row-end: end; -} -@media (max-width:767px) { - .sidebar1 { - position: relative; - grid-area: header; - z-index: 2; - top: -300px; - right: 0px; - } - .header-user, - .header-notify { - grid-area: header; - } -} -.center-form-single, -.content { - grid-area: center; - grid-row-start: line2; - grid-row-end: footer1; -} -.footer { - grid-area: footer; - grid-row-start: footer1; - grid-row-end: footer2; -} -.nav-bottom { - grid-area: bottom; - grid-row-start: footer2; - grid-row-end: end; -} -/* ============================================================ - - Generic Color Definitions - - Vars and some generic CSS rules. - - Datei : colors.less - Datum : 2020-05-26 - Autor : Christine Slotty - Copyright : Gradio - - ============================================================*/ -/* MAIN */ -/* MENU */ -/* CONTENT */ -/* CONTENT-NAV */ -/* CONTENT-ITEMS */ -/* CONTENT-TABLE */ -/* FORMS */ -/* VARIOUS INDIVIDUAL */ -/* XXX TODO XXX */ -/*rgba(0, 0, 0, 0.5) ??? */ -/* NOTIFICATION */ -/* https://www.w3schools.com/colors/colors_shades.asp */ -.info-color { - color: grey; -} -.success-color { - color: #047006; -} -.alert-color { - color: #ff5f66; -} -.orange-color { - color: #ffa600; -} -.blue-color { - color: blue; -} -.unobtrusive { - color: grey; -} -.info-icon { - color: grey; - background-color: #80808026; -} -.success-icon { - color: #047006; - background-color: rgba(4, 112, 6, 0.2); -} -.alert-icon { - color: #ff5f66; - background-color: #ff5f662e; -} -/* ======================= - Gradido - =======================*/ -/* Gradido */ -.grd-negative-currency { - color: red; -} -/* Gradido Transform */ -.gdt-text-color { - color: #a27824; -} -.grd_clickable { - cursor: pointer; -} -/* ============================================================ - - Typography Definitions - - Datei : typography.less - Datum : 2020-05-26 - Autor : Christine Slotty - Copyright : Gradio - - ============================================================*/ -.small-font { - font-size: 0.75em; - font-weight: 300; -} -/* ============================================================ - - Basic screen styles. - - Datei : screen.less - Datum : 2020-04-30 - Autor : Christine Slotty - Copyright : Gradio - - ============================================================*/ -@font-face { - font-family: 'Material Icons Outlined'; - font-style: normal; - font-weight: 400; - src: url(../fonts/MaterialIconsOutlined/Material-Icons-Outline.eot); - /* For IE6-8 */ - src: local('Material Icons Outlined'), local('Material-Icons-Outlined'), url(../fonts/MaterialIconsOutlined/Material-Icons-Outline.woff2) format('woff2'), url(../fonts/MaterialIconsOutlined/Material-Icons-Outline.woff) format('woff'), url(../fonts/MaterialIconsOutlined/Material-Icons-Outline.ttf) format('truetype'); -} -.material-icons-outlined { - font-family: 'Material Icons Outlined'; - font-weight: normal; - font-style: normal; - font-size: 24px; - line-height: 1; - letter-spacing: normal; - text-transform: none; - vertical-align: middle; - display: inline-block; - white-space: nowrap; - word-wrap: normal; - direction: ltr; - -webkit-font-feature-settings: 'liga'; - -webkit-font-smoothing: antialiased; -} -@media screen { - /* ======================= - Basis - =======================*/ - html, - body { - font-family: 'Roboto', sans-serif; - font-size: 100%; - line-height: 27px; - color: #212529; - background-color: #f9fafb; - margin: 0; - overflow: auto; - } - div { - border-collapse: collapse; - box-sizing: border-box; - } - /* ======================= - Kopfbereich - =======================*/ - .header { - display: flex; - justify-content: space-between; - align-items: center; - flex: flex-grow; - width: 100%; - padding: 1em; - background-color: #fff; - } - /* ======================= - Fußbereich - =======================*/ - .footer { - display: flex; - flex-direction: column; - justify-content: flex-start; - align-items: center; - font-size: 70%; - font-style: italic; - line-height: 0; - } - .bottomright { - position: fixed; - bottom: 0; - right: 0; - color: grey; - font-size: smaller; - line-height: 0.125em; - padding-right: 0.25em; - text-align: right; - } - .bottomleft { - position: fixed; - bottom: 0; - left: 0; - color: grey; - font-size: smaller; - line-height: 1.125em; - padding-left: 0.25em; - } - /* ======================= - Sonstige - =======================*/ - /* Hyperlinks */ - a { - text-decoration: none; - color: inherit; - } - main a { - text-decoration: underline; - font-style: italic; - } - a:link, - a:visited { - color: inherit; - } - a:hover, - a:focus { - text-decoration: underline; - } - a:active { - background-color: #fff; - color: #000; - } - a:focus, - a:active { - outline: none; - } - a.grd_invisible_link { - color: #000; - text-decoration: none; - } - a.grd_invisible_link:hover { - color: grey; - } - [type=button]:not(:disabled), - [type=reset]:not(:disabled), - [type=submit]:not(:disabled), - button:not(:disabled) { - cursor: pointer; - } -} -@media screen and (max-width:767px) { - .bottomright { - font-size: 0.7em; - font-weight: 300; - line-height: 1em; - width: 100px; - } - .bottomright p { - margin-block-start: 0; - margin-block-end: 2px; - margin-inline-start: 0; - margin-inline-end: 0; - } -} -/* Ende @media screen */ -/* -To change this license header, choose License Headers in Project Properties. -To change this template file, choose Tools | Templates -and open the template in the editor. -*/ -/* ============================================================ - - Screen styles for flash messages. - - Datei : messages.css - Datum : 30.10.2019, 16:04:16 - Autor : einhornimmond, Christine Slotty - Copyright : Gradio - - ============================================================*/ -@media screen { - .flash-messages { - width: 30%; - position: absolute; - top: 57px; - left: 241px; - text-align: center; - } - .flash-messages .alert { - margin: 0; - padding: 1em; - vertical-align: middle; - border-radius: 5px; - } - .flash-messages .alert-success { - color: #1A1A1A !important; - background-color: #06c50a; - border: 1px solid #04700675; - } - .flash-messages .alert-error { - color: #fff !important; - background-color: red; - border: 1px solid rgba(255, 0, 0, 0.5); - } - .flash-messages .message { - padding: 5px; - } - .flash-messages .success { - color: #047006; - } - .flash-messages .error { - color: red; - } - .flash-messages.hidden { - display: none; - } - /* messages, update flash */ - .grd-error { - color: red; - border: 1px solid rgba(255, 0, 0, 0.5); - padding: 5px; - } - .grd-info { - border: 1px dotted gray; - padding: 5px; - } - .grd-success { - padding: 5px; - color: #047006; - } -} -@media screen and (max-width:767px) { - .flash-messages { - width: 90%; - top: 0; - left: 0; - text-align: center; - } -} -/* ============================================================ - - User Menu - - Datei : user.less - Datum : 2020-07-03 - Autor : Christine Slotty - Copyright : Gradido - - ============================================================*/ -@media screen { - .header-user { - display: flex; - flex-direction: column; - justify-content: flex-start; - align-items: flex-end; - align-content: flex-end; - position: relative; - width: 100%; - min-width: 12em; - height: 40px; - background-color: #fff; - border: 1px solid #f2f4f5; - border-radius: 0 0 0 18px; - } - .user-menu-container { - display: flex; - justify-content: flex-end; - align-items: center; - font-size: 0.8em; - font-weight: 300; - padding: 0.25em 0.5em; - z-index: 20; - height: 40px; - } - .user-name, - .user-icon { - display: inline-block; - vertical-align: middle; - cursor: pointer; - } - .user-name { - padding-right: 0.25em; - } - .nav-vertical.user-menu { - display: none; - background-color: #fff; - border-left: 1px solid #f2f4f5; - border-bottom: 1px solid #f2f4f5; - border-radius: 0 0 16px 16px; - z-index: 15; - font-size: 0.9em; - margin-top: 0 !important; - position: fixed; - top: 39px; - right: 0; - } - .nav-vertical.user-menu.visible { - display: inherit; - } - .nav-vertical.user-menu > ul { - padding: 2em; - padding-top: 0.5em; - padding-bottom: 1em; - margin-block-end: 0; - margin-block-start: 0; - } - .nav-vertical.user-menu li { - padding: 0.0125em; - } - .nav-top > ul { - padding: 0; - padding-right: 2em; - } - .material-icons-outlined.user-info { - color: grey; - } - .material-icons-outlined.user-info.success { - color: #047006; - } -} -@media screen and (max-width:767px) { - .header-user { - position: relative; - min-width: 3em; - background-color: transparent; - justify-content: center; - height: 100%; - margin-top: -13px; - margin-left: -16px; - color: #047006; - } - .user-menu-container { - margin: 0; - padding: 0; - } - .user-name { - display: none; - } - .nav-vertical { - margin-top: 55px; - } - .nav-vertical.user-menu { - position: fixed; - top: 1px; - right: 0; - margin-top: 0; - } - .nav-vertical.user-menu > ul { - padding: 1em 1em; - padding-top: 3em; - } -} -/* ============================================================ - - Navigation - - Datei : navi.less - Datum : 2020-04-30 - Autor : einhornimmond / Christine Slotty - Copyright : Gradido - - ============================================================*/ -@media screen { - .logo { - display: none; - vertical-align: middle; - height: 30px; - padding: 0.5em; - } - .logo.big.visible, - .logo.small.visible { - display: block !important; - } - .logo.mobile { - display: none; - } - .logo.small.visible { - padding-left: 41px; - } - /* - SIDEBARS - */ - .sidebar1 { - background-color: #fff; - font-size: 0.8em; - font-weight: 500; - line-height: 2.5em; - padding: 0; - border-right: 1px solid #f2f4f5; - } - .sidebar2 { - padding: 1em; - background-color: #f9fafb; - } - .sidebar1-header { - font-size: 0.75em; - font-style: italic; - color: grey; - } - /* set general icons size here! */ - .nav-icon { - font-size: 18px !important; - color: #4F4F4F; - vertical-align: middle; - padding-right: 1em; - } - /* important! order matters! we need to overwrite the main button's size here */ - .nav-main-button { - font-size: 32px !important; - color: grey; - margin: 0.3em; - } - /* Hide mobile menu button! */ - .nav-main-button.mobile { - display: none; - } - .nav-menu.nav-menu-maximized { - width: 280px; - height: 100%; - } - .nav-menu.nav-menu-minimized { - width: 120px; - height: 100%; - } - .nav-menu-maximized { - -webkit-animation: slide-out 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94) both; - animation: slide-out 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94) both; - } - .nav-menu-minimized { - -webkit-animation: slide-in 0.1s cubic-bezier(0.25, 0.46, 0.45, 0.94) both; - animation: slide-in 0.1s cubic-bezier(0.25, 0.46, 0.45, 0.94) both; - } - .nav-menu-minimized .link-title { - display: none; - } - .nav-menu-minimized .nav-icon, - .nav-menu-minimized .nav-main-button { - padding-left: 72px; - } - /** - * ---------------------------------------- - * animations slide-in / slide-out - * ---------------------------------------- - */ - /* slide-in */ - @-webkit-keyframes slide-in { - 0% { - -webkit-transform: translateX(0); - transform: translateX(0); - opacity: 0; - } - 100% { - -webkit-transform: translateX(-74px); - transform: translateX(-74px); - opacity: 1; - } - } - @keyframes slide-in { - 0% { - -webkit-transform: translateX(0); - transform: translateX(0); - opacity: 0; - } - 100% { - -webkit-transform: translateX(-74px); - transform: translateX(-74px); - opacity: 1; - } - } - /* slide-out */ - @-webkit-keyframes slide-out { - 0% { - -webkit-transform: translateX(-74px); - transform: translateX(-74px); - } - 100% { - -webkit-transform: translateX(0); - transform: translateX(0); - } - } - @keyframes slide-out { - 0% { - -webkit-transform: translateX(-74px); - transform: translateX(-74px); - } - 100% { - -webkit-transform: translateX(0); - transform: translateX(0); - } - } - /* - NAVI MOBILE - */ - /* END navi mobile base */ - .selected { - color: #047006; - } - .link-title { - vertical-align: middle; - line-height: normal; - background-color: transparent; - } - .nav-horizontal { - display: flex; - flex-direction: row; - flex-wrap: wrap; - justify-content: center; - align-items: flex-end; - list-style-type: none; - gap: 5%; - padding: 1em; - } - .footer .nav-horizontal { - gap: 0; - padding: 0 1em; - padding-inline-start: 0 !important; - } - .nav-top-smaller { - margin: 0; - padding: 0; - } - .nav-smaller { - justify-content: left; - align-items: flex-start; - gap: 0; - padding: 0; - } - .nav-smaller li { - padding: 0 !important; - padding: 0.2em 0.5em !important; - border: 1px solid #047006; - margin: 0.1em 0.3em; - border-radius: 12px; - } - .nav-smaller .heading { - font-weight: bold; - } - .nav-vertical { - margin-top: -2em; - } - .nav-horizontal li { - padding: 0.5em; - } - .nav-vertical > ul { - display: flex; - flex-direction: column; - list-style-type: none; - gap: 5%; - padding: 1em; - } - .nav-vertical li { - padding: 0.5em; - } - .nav-top > ul { - padding: 0; - padding-right: 2em; - } - .nav-bottom { - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - list-style-type: none; - margin-bottom: 20px; - } - .nav-bottom p { - font-size: 0.9em; - color: grey; - margin: 0; - } - nav.grd-left-bar { - position: fixed; - top: 80.5px; - } - nav .grd-nav-bn { - width: 100px; - } - nav ul { - margin-top: 0; - padding-left: 0; - } - /* buttons */ - .grd-nav-bn:hover, - .grd-active { - background-color: lightgray; - border-color: #000; - } - .grd-nav-bn { - padding: 10px; - border: 1px solid grey; - display: table-cell; - text-align: center; - vertical-align: middle; - color: grey; - } - .grd-nav-bn-large { - width: 40vw; - height: 18vh; - font-size: 35px; - } - a.grd-nav-bn, - a.grd-nav-bn:visited { - color: #000; - text-decoration: none; - } -} -@media screen and (max-width:767px) { - .logo.big, - .logo.small { - display: none; - } - .logo.visible { - padding: 0 !important; - } - .logo, - .logo.mobile, - .logo.mobile.visible { - display: block; - position: fixed; - top: 12px; - left: 12px; - } - .logo.big, - .logo.big.visible { - display: none !important; - } - .nav-main-button { - display: none; - } - .nav-main-button.mobile { - display: block; - position: fixed; - top: 2px; - right: 46px; - z-index: 3; - } - .nav-menu.nav-menu-minimized, - .nav-menu.nav-menu-maximized { - width: 280px; - height: 300px; - } - .nav-menu-minimized .nav-icon, - .nav-menu-minimized .nav-main-button { - padding-left: 0; - } - .nav-menu-maximized { - -webkit-animation: slide-down 0.1s cubic-bezier(0.25, 0.46, 0.45, 0.94) both; - animation: slide-down 0.1s cubic-bezier(0.25, 0.46, 0.45, 0.94) both; - } - .nav-menu-minimized { - -webkit-animation: slide-up 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94) both; - animation: slide-up 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94) both; - } - @-webkit-keyframes slide-down { - 0% { - -webkit-transform: translateY(0); - transform: translateY(0); - opacity: 0; - } - 100% { - -webkit-transform: translateY(300px); - transform: translateX(300px); - opacity: 1; - } - } - @keyframes slide-down { - 0% { - -webkit-transform: translateY(0); - transform: translateY(0); - opacity: 0; - } - 100% { - -webkit-transform: translateY(300px); - transform: translateY(300px); - opacity: 1; - } - } - @-webkit-keyframes slide-up { - 0% { - -webkit-transform: translateY(0); - transform: translateY(0); - } - 100% { - -webkit-transform: translateY(-300px); - transform: translateY(-300px); - } - } - @keyframes slide-up { - 0% { - -webkit-transform: translateY(0); - transform: translateY(0); - } - 100% { - -webkit-transform: translateY(-300px); - transform: translateY(-300px); - } - } -} -@media screen and (max-width:767px) { - .nav-vertical { - margin-top: 55px; - } -} -@media screen and (max-width:767px) { - .nav-bottom p { - font-size: 0.8em; - margin-top: -10px; - } -} -/* ============================================================ - - Notification - - Datei : notification.css - Datum : 2020-06-10 - Autor : Christine Slotty - Copyright : Gradido - - ============================================================*/ -@media screen { - .header-notify { - display: flex; - flex-wrap: wrap; - padding-left: 0; - margin-bottom: 0; - list-style: none; - z-index: 10; - } - .notify { - display: block; - padding: 0.5rem 0.3rem; - color: #525c5d; - animation: blinkingNotifySymbol 1.2s infinite; - } - .notify-alert { - color: #ff5f66; - animation: blinkingAlertSymbol 1.2s infinite; - } - @keyframes blinkingNotifySymbol { - 0% { - color: #525c5d; - } - 49% { - color: #525c5d; - } - 60% { - color: #525c5d82; - } - 99% { - color: #525c5d82; - } - 100% { - color: #525c5d; - } - } - @keyframes blinkingAlertSymbol { - 0% { - color: #ff5f66; - } - 49% { - color: #ff5f66; - } - 60% { - color: #ff5f669e; - } - 99% { - color: #ff5f669e; - } - 100% { - color: #ff5f66; - } - } - /* - .notification-indicator-primary { - background: #047006; - } - - .notification-indicator-warning { - background: #f0825f - } - .notification-indicator-secondary { - background: grey - } - - .notification-indicator-secondary:before { - content: ""; - background: rgba(128, 128, 128, .5) - } - - .notification-indicator-success { - background: #00e093 - } - - .notification-indicator-success:before { - content: ""; - background: rgba(0, 224, 147, .5) - } - - .notification-indicator-info { - background: #6c61f6 - } - - .notification-indicator-info:before { - content: ""; - background: rgba(108, 97, 246, .5) - } - - - .notification-indicator-danger { - background: #ff5f66 - } - - .notification-indicator-danger:before { - content: ""; - background: rgba(255, 95, 102, .5) - } - - .notification-indicator-light { - background: #dfdfdf - } - - .notification-indicator-light:before { - content: ""; - background: rgba(223, 223, 223, .5) - } - - .notification-indicator-dark { - background: #74767b - } - - .notification-indicator-dark:before { - content: ""; - background: rgba(116, 118, 123, .5) - } - - .notification-indicator-white { - background: #fff - } - - .notification-indicator-white:before { - content: ""; - background: rgba(255, 255, 255, .5) - } - */ -} -@media screen and (max-width:767px) { - .header-notify { - justify-content: flex-end; - margin-right: 93px; - margin-top: 8px; - } -} -/* ============================================================ - - Screen styles for the regular center part. - - Datei : center.css - Datum : 2020-04-30 - Autor : Christine Slotty - Copyright : Gradio - - ============================================================*/ -@media screen { - /* ========= - CONTENT - =========*/ - .content-default { - display: flex; - justify-content: center; - max-width: 90%; - } - .content { - display: flex; - justify-content: flex-start; - flex-direction: column; - overflow: auto; - width: 100%; - background-color: #f9fafb; - line-height: 1.75em; - letter-spacing: 0.03rem; - font-family: Roboto, sans-serif; - font-weight: 500; - font-size: 1rem; - padding-right: 5em; - } - /* Center Navigation Top */ - .nav-content { - position: relative; - color: #565656; - margin: 0 0.25em; - } - .nav-content-list { - display: flex; - list-style-type: none; - padding: 0; - margin-left: 0.25em; - } - .nav-content-separator { - margin: 0 1em; - } - /* Center Content Container */ - .content-container { - background-color: #fff; - color: #212529; - border-radius: 0.5em; - box-shadow: 0 0 10px 0 rgba(183, 192, 206, 0.2); - border: 1px solid rgba(238, 238, 238, 0.75); - margin: 1em 0.25em; - } - /* Block Container Above Main */ - .block-container { - width: 100%; - display: flex; - } - /* Top Info Above Main */ - .info-container { - display: flex; - justify-content: space-between; - align-items: center; - max-width: 70%; - padding: 1em 25px; - } - /* Main Container */ - .main-container { - width: 100%; - } - .default-container { - width: 90%; - margin: auto; - padding: 1em; - } - /* Content Block */ - .content-block { - width: 170px; - padding: 20px 25px 20px; - border: 1px dashed grey; - border-radius: 16px; - margin: 1em; - display: flex; - flex-direction: column; - justify-content: center; - justify-items: center; - align-items: center; - } - .block-img { - width: 40px; - height: 40px; - line-height: 20px; - font-size: 24px; - padding: 8px; - border-radius: 20px; - box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.2); - overflow: hidden; - border-style: none; - box-sizing: border-box; - } - /* Generic Content */ - .content-region h3 { - color: #21252969; - } - .content-region { - border-bottom: 1px dashed #F5F5F5; - padding: 0 25px; - padding-bottom: 2em; - margin: 1em 0.25em; - } - .content-collection { - display: flex; - } - .content-item { - margin: 0.5em 0; - margin-right: 5em; - width: 220px; - padding: 1em 2em; - } - .action-button { - background: #f9fafb; - border-left: 3px solid #047006; - } - .info-item { - border-left: 2px solid grey; - } - .inline-header { - display: inline; - } - .show-profile-img { - display: block; - height: 100px; - vertical-align: middle; - border-radius: 10px; - border: 2px dotted #80808026; - } - /* OTHER */ - .info-item i, - .info-item-link, - .action-button i, - .action-button-link { - vertical-align: middle; - } -} -@media screen and (max-width:767px) { - .content { - padding-right: 0; - } -} -@media screen and (max-width:767px) { - .nav-content-list { - display: flex; - font-size: small; - margin-bottom: 0; - justify-content: center; - } -} -@media screen and (max-width:1199px) { - .info-container { - flex-direction: column; - max-width: 90%; - line-height: 0.25em; - } -} -@media screen and (max-width:767px) { - .main-container { - max-width: 97%; - } -} -@media screen and (max-width:767px) { - .content-region { - padding-left: 5px; - } - .content-collection { - flex-direction: column; - align-items: center; - } - .content-item { - margin: 0.5em 0; - margin-right: 0; - width: 160px; - padding: 1em 2em; - } -} -/* Ende @media screen */ -/* ============================================================ - - Screen styles for the simple center form. (login etc) - - Datei : center-form-single.css - Datum : 2020-07-10 - Autor : Christine Slotty - Copyright : Gradio - - ============================================================*/ -@media screen { - .center-form-single { - width: 50%; - margin: auto; - } - .center-form-header { - margin-bottom: 50px; - } - .center-logo { - display: block; - margin: 0 auto; - width: 280px; - } - .center-logo img { - width: 100%; - vertical-align: middle; - border-style: none; - } - .center-form-container { - display: flex; - flex-direction: column; - padding: 2em 8em; - background-color: #fff; - border-radius: 6px; - box-shadow: 0 0 10px 0 rgba(183, 192, 206, 0.2); - margin-bottom: 1.5rem; - border: 1px solid rgba(238, 238, 238, 0.75); - } - .center-form-title h1 { - margin-block-start: 0; - } - .center-form-selectors { - display: flex; - justify-content: flex-end; - align-items: center; - height: 38px; - padding: 5px 0; - margin-bottom: 2em; - } - .center-form-form, - .center-form-form form { - display: flex; - flex-direction: column; - } - .center-form-form .form-label { - text-align: left; - } - .center-form-form .form-control { - width: 100%; - margin: auto; - box-sizing: border-box; - margin-bottom: 0.5em; - } - .center-form-submit { - width: 100%; - margin: 1em 0; - } - .reset-pwd-link, - .signup-link { - padding: 0 20px; - } - .reset-pwd-link a, - .signup-link a { - color: #047006; - } - .reset-pwd-link p, - .signup-link p { - display: inline-block; - margin-block-start: 0; - margin-block-end: 0; - } - .center-bottom { - color: grey; - text-align: center; - padding-top: 30px; - } - .flag-btn { - text-align: center; - vertical-align: middle; - padding: 3px 11px; - } - .flag { - display: block; - } - .flag-germany { - background: red; - border-top: 9px solid #000; - border-bottom: 9px solid #fc0; - width: 40px; - height: 10px; - } - .flag-england { - background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJmbGFnLWljb24tY3NzLWdiIiB2aWV3Qm94PSIwIDAgNjQwIDQ4MCI+CiAgPHBhdGggZmlsbD0iIzAxMjE2OSIgZD0iTTAgMGg2NDB2NDgwSDB6Ii8+CiAgPHBhdGggZmlsbD0iI0ZGRiIgZD0iTTc1IDBsMjQ0IDE4MUw1NjIgMGg3OHY2Mkw0MDAgMjQxbDI0MCAxNzh2NjFoLTgwTDMyMCAzMDEgODEgNDgwSDB2LTYwbDIzOS0xNzhMMCA2NFYwaDc1eiIvPgogIDxwYXRoIGZpbGw9IiNDODEwMkUiIGQ9Ik00MjQgMjgxbDIxNiAxNTl2NDBMMzY5IDI4MWg1NXptLTE4NCAyMGw2IDM1TDU0IDQ4MEgwbDI0MC0xNzl6TTY0MCAwdjNMMzkxIDE5MWwyLTQ0TDU5MCAwaDUwek0wIDBsMjM5IDE3NmgtNjBMMCA0MlYweiIvPgogIDxwYXRoIGZpbGw9IiNGRkYiIGQ9Ik0yNDEgMHY0ODBoMTYwVjBIMjQxek0wIDE2MHYxNjBoNjQwVjE2MEgweiIvPgogIDxwYXRoIGZpbGw9IiNDODEwMkUiIGQ9Ik0wIDE5M3Y5Nmg2NDB2LTk2SDB6TTI3MyAwdjQ4MGg5NlYwaC05NnoiLz4KPC9zdmc+Cg==); - background-size: cover; - width: 40px; - height: 28px; - } - .group { - padding-left: 10px; - padding-top: 10px; - padding-bottom: 10px; - } - .group-is-invalid { - background-color: rgba(240, 130, 95, 0.2); - border-color: #dc3545; - padding-right: calc(1.5em + 0.75rem); - background-image: url("data:image/svg+xml,%3csvg xmlns=!string!fill=!string!viewBox=!string!%3e%3cpath stroke=!string!d=!string!/%3e%3ccircle r=!string!/%3e%3ccircle cx=!string!r=!string!/%3e%3ccircle cy=!string!r=!string!/%3e%3ccircle cx=!string!cy=!string!r=!string!/%3e%3c/svg%3E"); - background-repeat: no-repeat; - background-position: center right calc(0.375em + 0.1875rem); - background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); - } - .group-is-invalid .radio label .input-frame::before { - border-color: red; - } -} -@media screen and (max-width:767px) { - .center-form-header { - margin-bottom: 30px; - margin-top: -50px; - } - .center-form-single { - width: 97%; - margin: auto; - } - .center-form-container { - padding: 1em 0.5em; - } -} -/* Ende @media screen */ -/* -To change this license header, choose License Headers in Project Properties. -To change this template file, choose Tools | Templates -and open the template in the editor. -*/ -/* ============================================================ - - Screen styles for plain facts. - - Datei : facts.css - Datum : 08.07.2020 - Autor : Christine Slotty - Copyright : Gradio - - ============================================================*/ -@media screen { - .fact-list { - display: flex; - flex-direction: column; - list-style-type: none; - width: 100%; - padding-inline-start: 0; - font-weight: 300; - } - .fact { - display: inline-block; - padding-left: 1em; - } - .label { - width: 150px; - text-align: right; - font-weight: bold; - } -} -@media screen and (max-width:767px) { - .fact-list { - margin-block-start: 0; - margin-block-end: 0; - } - li.fact { - display: flex; - flex-direction: column; - } - .fact { - padding-left: 0.5em; - } - .label { - width: 250px; - text-align: left; - font-size: 0.9em; - font-weight: normal; - } -} -/* ============================================================ - - Screen styles for lists. - - Datei : list.css - Datum : 2020-06-09 - Autor : Christine Slotty - Copyright : Gradio - - ============================================================*/ -@media screen { - /* ========= - LISTS - =========*/ - /* List Content */ - .content-list { - width: 100%; - } - .content-list-title { - font-size: 1rem; - margin: 0; - padding: 20px 25px; - color: #313131; - } - .content-list-table { - display: flex; - flex-direction: column; - width: 100%; - overflow: auto; - font-size: 16px; - color: #212529; - } - .row { - display: flex; - width: 100%; - border-top: 1px solid #f2f4f9; - -webkit-transition-duration: 0.5s; - transition-duration: 0.5s; - } - .row:hover { - background-color: #f6f7f9; - } - .cell { - display: flex; - flex-wrap: wrap; - align-items: center; - padding: 1em 1.5em; - } - .cell-dense { - padding: 0.1em 0.5em; - } - .centered { - justify-content: center; - } - .c0 { - flex-grow: 5; - min-width: 20%; - } - .c1 { - min-width: 40px; - flex: 0 0 40px; - } - .c2 { - min-width: 80px; - flex: 0 0 80px; - } - .c3 { - min-width: 160px; - flex: 0 0 160px; - } - .c4 { - min-width: 240px; - flex: 0 0 240px; - } - .c5 { - min-width: 320px; - flex: 0 0 320px; - } - .c6 { - min-width: 400px; - flex: 0 0 400px; - } - .header-cell { - border-top: 1px solid #f2f4f9; - background-color: #fafafa; - color: #101010; - } - .content-list-table img, - .content-list-table i { - vertical-align: middle; - } - .content-list-table > span { - font-size: 0.8em; - padding: 0.5em 2em; - vertical-align: middle; - } - /* Individual Tables XXX rm!! */ - .error-list { - grid-template-columns: 2fr 2fr 5fr 1fr; - } - .transactions { - grid-template-columns: 1fr 4fr 2fr 2fr; - } - .profile-img { - width: 30px; - height: 30px; - border-radius: 6px; - box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.2); - overflow: hidden; - border-style: none; - box-sizing: border-box; - margin-right: 40px; - } - .tx-email { - cursor: pointer; - display: block; - color: #101010; - font-weight: 400; - } - .small { - font-size: 80%; - font-weight: 400; - } - /*, - .cell-icon .material-icons-outlined */ - .cell-icon { - /*noch ungeklärt - icon ist nicht aligned */ - /*font-size: 1.25em;*/ - vertical-align: middle; - } - /* ===================================== - FORM TOP CONTENT (checkTransaction) - =====================================*/ - .form-content { - padding: 35px; - padding-top: 20px; - max-width: 80%; - margin: auto; - } - .content-table { - border: 1px solid #f2f4f9; - border-top: none; - margin-bottom: 1.5rem; - } - .content-row { - display: flex; - justify-content: space-between; - font-weight: 400; - border-top: 1px solid #f2f4f9; - } - .content-row-header { - font-weight: 500; - color: #101010; - } - .content-row-bg { - background-color: #f0f2f5; - } - .content-cell { - display: block; - border-collapse: collapse; - padding: 10px 15px; - } - .form-button .material-icons-outlined { - font-size: 1.25em; - } -} -@media screen and (max-width:767px) { - .row { - flex-direction: column; - } -} -@media screen and (max-width:767px) { - .cell { - padding: 0.25em 1.5em; - } - .c1 { - flex-basis: auto; - } - .c2 { - flex-basis: auto; - } - .c3 { - flex-basis: auto; - } - .c4 { - flex-basis: auto; - } - .c5 { - flex-basis: auto; - } - .c6 { - flex-basis: auto; - } -} -/* -To change this license header, choose License Headers in Project Properties. -To change this template file, choose Tools | Templates -and open the template in the editor. -*/ -/* - Created on : 23.11.2020, 14:04:28 - Author : einhornimmond -*/ -/* Style the tab */ -.tab { - overflow: hidden; - border: 1px solid #ccc; - background-color: #f1f1f1; -} -/* Style the buttons that are used to open the tab content */ -.tab button { - background-color: inherit; - float: left; - border: none; - outline: none; - cursor: pointer; - padding: 14px 16px; - transition: 0.3s; -} -/* Change background color of buttons on hover */ -.tab button:hover { - background-color: #ddd; -} -/* Create an active/current tablink class */ -.tab button.active { - background-color: #ccc; -} -/* Style the tab content */ -.tabcontent { - display: none; - padding: 6px 12px; - border: 1px solid #ccc; - border-top: none; -} -/* -To change this license header, choose License Headers in Project Properties. -To change this template file, choose Tools | Templates -and open the template in the editor. -*/ -/* ============================================================ - - Screen styles for forms. - - Datei : form.css - Datum : 2020-06-07 - Autor : Christine Slotty - Copyright : Gradio - - ============================================================*/ -@media screen { - /* ========= - FORMS - =========*/ - /* Form Content */ - .action-form { - width: 100%; - } - .form-header { - border-left: 3px solid #047006; - background: #f9fafb; - padding: 15px 20px; - margin: 0; - margin-bottom: 15px; - border-radius: 0 6px 0 0; - } - .form-label { - grid-column: 0.5; - font-weight: 400; - text-align: right; - padding-right: 0.5em; - } - .form-control { - grid-column: 0.66666667; - padding: 0.4em 0.75em; - padding-left: 20px; - padding-right: 20px; - margin: 0; - margin-right: 0.5em; - color: rgba(16, 16, 16, 0.8); - display: block; - font-size: 1rem; - font-weight: 400; - line-height: 1.5; - color: #6c757d; - background-color: #f6f7f9; - background-clip: padding-box; - border: 1px solid #f0f2f5; - border-radius: 0.25rem; - -webkit-transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; - transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; - } - .form-control:focus { - color: #495057; - background-color: #f6f7f9; - border-color: #d7dee5; - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); - } - textarea { - resize: vertical; - } - .badge { - display: inline-block; - padding: 0.45rem 1rem; - font-size: 80%; - font-weight: 700; - line-height: 1; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - border-radius: 0.25rem; - -webkit-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; - transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; - } - .badge-warning { - color: #fff; - background-color: #00e093; - } - .badge-error { - color: #fff; - background-color: #ff5f66; - } - .form-full-width { - grid-column-start: 1; - grid-column-end: 3; - display: flex; - flex-direction: column; - } - .form-button { - cursor: pointer; - font: 600 13.3333px Arial; - font-size: 0.875rem; - line-height: 1.5; - text-align: center; - vertical-align: middle; - color: #fff; - background-color: #047006; - border-color: #047006; - border: 1px solid transparent; - border-radius: 0.2rem; - height: 35px; - max-height: 35px; - padding: 4px 15px; - margin-right: 0.5em; - box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.2); - } - .form-button:hover { - background-color: #034b04; - border-color: #023f03; - } - .button-cancel { - color: #fff !important; - background-color: #f0825f; - border-color: #f0825f; - } - .button-cancel:hover { - background-color: #ec5e30; - border-color: #eb5425; - } - .link-button { - display: inline-block; - background: #f9fafb; - color: #fff; - height: 17px; - padding: 1em 2em; - line-height: 1em; - border-radius: 6px; - text-align: center; - vertical-align: middle; - } - .action-link { - color: #047006 !important; - } - .action-link-button { - background-color: #047006 !important; - color: #fff !important; - margin-top: 1em; - padding: 0.5em 1em; - } - .edit-profile-img { - width: 100px; - } - .note-smaller { - font-size: smaller; - } - .form-row, - .grid-row { - display: flex; - justify-content: flex-start; - align-items: center; - align-content: center; - width: 100%; - -webkit-transition-duration: 0.5s; - transition-duration: 0.5s; - } - .justify-end { - justify-content: flex-end; - } - .form-row { - border-top: 1px solid #f2f4f9; - } - .form-row:hover { - background-color: #f6f7f9; - } - /* CENTER FORM SPECIFICS */ - .form-body form { - display: grid; - grid-template-columns: 220px 1fr; - margin: 36px 75px; - grid-gap: 1em; - } - .center-form { - width: 450px; - } - .center-form .form-control { - width: 90%; - } - .center-form fieldset { - margin-bottom: 1em; - } -} -@media screen and (max-width:767px) { - .grid-row { - flex-direction: column; - } -} -@media screen and (max-width:767px) { - .form-body form { - grid-template-columns: 1fr; - margin: 20px; - grid-gap: 0.25em; - } - .form-label { - text-align: left; - } -} diff --git a/community_server/webroot/css/loginServer/style.css b/community_server/webroot/css/loginServer/style.css deleted file mode 100644 index bf5f617a7..000000000 --- a/community_server/webroot/css/loginServer/style.css +++ /dev/null @@ -1,14488 +0,0 @@ -.bg-inverse-primary { - background: rgba(4, 112, 6, .2) -} - -.bg-inverse-secondary { - background: rgba(128, 128, 128, .2) -} - -.bg-inverse-success { - background: rgba(0, 224, 147, .2) -} - -.bg-inverse-info { - background: rgba(108, 97, 246, .2) -} - -.bg-inverse-warning { - background: rgba(240, 130, 95, .2) -} - -.bg-inverse-danger { - background: rgba(255, 95, 102, .2) -} - -.bg-inverse-light { - background: rgba(223, 223, 223, .2) -} - -.bg-inverse-dark { - background: rgba(116, 118, 123, .2) -} - -.bg-inverse-white { - background: rgba(255, 255, 255, .2) -} - -.bg-inverse-orange { - background: rgba(255, 166, 0, .2) -} - -.animated { - -webkit-animation-duration: 1s; - animation-duration: 1s; - -webkit-animation-fill-mode: both; - animation-fill-mode: both -} - -.animated.infinite { - -webkit-animation-iteration-count: infinite; - animation-iteration-count: infinite -} - -@-webkit-keyframes fadeIn { - from { - opacity: 0 - } - - to { - opacity: 1 - } - -} - -@keyframes fadeIn { - from { - opacity: 0 - } - - to { - opacity: 1 - } - -} - -.fadeIn { - -webkit-animation-name: fadeIn; - animation-name: fadeIn -} - -@-webkit-keyframes fadeInDown { - from { - opacity: 0; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0) - } - - to { - opacity: 1; - -webkit-transform: none; - transform: none - } - -} - -@keyframes fadeInDown { - from { - opacity: 0; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0) - } - - to { - opacity: 1; - -webkit-transform: none; - transform: none - } - -} - -.fadeInDown { - -webkit-animation-name: fadeInDown; - animation-name: fadeInDown -} - -@-webkit-keyframes fadeInUp { - from { - opacity: 0; - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0) - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0) - } - -} - -@keyframes fadeInUp { - from { - opacity: 0; - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0) - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0) - } - -} - -.fadeInUp { - -webkit-animation-name: fadeInUp; - animation-name: fadeInUp -} - -@-webkit-keyframes zoomIn { - from { - opacity: 0; - -webkit-transform: scale3d(.3, .3, .3); - transform: scale3d(.3, .3, .3) - } - - 50% { - opacity: 1 - } - -} - -@keyframes zoomIn { - from { - opacity: 0; - -webkit-transform: scale3d(.3, .3, .3); - transform: scale3d(.3, .3, .3) - } - - 50% { - opacity: 1 - } - -} - -.zoomIn { - -webkit-animation-name: zoomIn; - animation-name: zoomIn -} - -@keyframes bounceIn { - 20%, - 40%, - 60%, - 80%, - from, - 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: scale3d(.3, .3, .3); - transform: scale3d(.3, .3, .3) - } - - 20% { - -webkit-transform: scale3d(1.4, 1.4, 1.4); - transform: scale3d(1.4, 1.4, 1.4) - } - - 40% { - -webkit-transform: scale3d(.9, .9, .9); - transform: scale3d(.9, .9, .9) - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(1.03, 1.03, 1.03); - transform: scale3d(1.03, 1.03, 1.03) - } - - 80% { - -webkit-transform: scale3d(.97, .97, .97); - transform: scale3d(.97, .97, .97) - } - - to { - opacity: 1; - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1) - } - -} - -@-webkit-keyframes rotate360 { - to { - -webkit-transform: rotate(360deg); - transform: rotate(360deg); - -webkit-transform-origin: center; - transform-origin: center - } - -} - -@keyframes rotate360 { - to { - -webkit-transform: rotate(360deg); - transform: rotate(360deg); - -webkit-transform-origin: center; - transform-origin: center - } - -} - -@-webkit-keyframes bounceIn { - 20%, - 40%, - 60%, - 80%, - from, - 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: scale3d(.3, .3, .3); - transform: scale3d(.3, .3, .3) - } - - 20% { - -webkit-transform: scale3d(1.4, 1.4, 1.4); - transform: scale3d(1.4, 1.4, 1.4) - } - - 40% { - -webkit-transform: scale3d(.9, .9, .9); - transform: scale3d(.9, .9, .9) - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(1.03, 1.03, 1.03); - transform: scale3d(1.03, 1.03, 1.03) - } - - 80% { - -webkit-transform: scale3d(.97, .97, .97); - transform: scale3d(.97, .97, .97) - } - - to { - opacity: 1; - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1) - } - -} - -@-webkit-keyframes ripple { - 0%, - 35% { - -webkit-transform: scale(0); - transform: scale(0); - opacity: 1 - } - - 50% { - -webkit-transform: scale(.6); - transform: scale(.6); - opacity: .8 - } - - 100% { - opacity: 0; - -webkit-transform: scale(1.2); - transform: scale(1.2) - } - -} - -@keyframes ripple { - 0%, - 35% { - -webkit-transform: scale(0); - transform: scale(0); - opacity: 1 - } - - 50% { - -webkit-transform: scale(.6); - transform: scale(.6); - opacity: .8 - } - - 100% { - opacity: 0; - -webkit-transform: scale(1.2); - transform: scale(1.2) - } - -} - -body, -html { - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - letter-spacing: .03rem; - font-family: Roboto, sans-serif; - font-weight: 400; - font-size: 14px -} - -@media (min-width:768px) and (max-width:991px) { - body, - html { - font-size: calc(14px + 1 * ((100vw - 768px)/ 223)) - } - -} - -@media (min-width:991px) and (max-width:1200px) { - body, - html { - font-size: calc(15px + -1 * ((100vw - 991px)/ 209)) - } - -} - -@media (min-width:1200px) { - body, - html { - font-size: 14px - } - -} - -h1, -h2, -h3, -h4, -h5, -h6, -label { - font-family: Roboto, sans-serif; - font-weight: 500 -} - -label, -p { - font-family: Roboto, sans-serif; - font-weight: 400; - letter-spacing: .03rem -} - -a { - font-family: Roboto, sans-serif; - font-weight: 400 -} - -a:hover { - text-decoration: none -} - -pre { - font-size: 15px -} - -@media (min-width:768px) and (max-width:991px) { - pre { - font-size: calc(15px + 1 * ((100vw - 768px)/ 223)) - } - -} - -@media (min-width:991px) and (max-width:1200px) { - pre { - font-size: calc(16px + 0 * ((100vw - 991px)/ 209)) - } - -} - -@media (min-width:1200px) { - pre { - font-size: 16px - } - -} - -.checkbox label, -.radio label, -label { - font-family: Roboto, sans-serif; - font-weight: 400 -} - -b { - font-weight: 700 -} - -small { - font-size: 14px; - font-family: Roboto, sans-serif; - font-weight: 400; - display: inline-block; - line-height: 1.4 -} - -@media (min-width:768px) and (max-width:991px) { - small { - font-size: calc(14px + 0 * ((100vw - 768px)/ 223)) - } - -} - -@media (min-width:991px) and (max-width:1200px) { - small { - font-size: calc(14px + -1 * ((100vw - 991px)/ 209)) - } - -} - -@media (min-width:1200px) { - small { - font-size: 13px - } - -} - -h1 { - font-size: 20px -} - -@media (min-width:768px) and (max-width:991px) { - h1 { - font-size: calc(20px + 4 * ((100vw - 768px)/ 223)) - } - -} - -@media (min-width:991px) and (max-width:1200px) { - h1 { - font-size: calc(24px + 8 * ((100vw - 991px)/ 209)) - } - -} - -@media (min-width:1200px) { - h1 { - font-size: 32px - } - -} - -h2 { - font-size: 19px -} - -@media (min-width:768px) and (max-width:991px) { - h2 { - font-size: calc(19px + 3 * ((100vw - 768px)/ 223)) - } - -} - -@media (min-width:991px) and (max-width:1200px) { - h2 { - font-size: calc(22px + 7 * ((100vw - 991px)/ 209)) - } - -} - -@media (min-width:1200px) { - h2 { - font-size: 29px - } - -} - -h3 { - font-size: 18px -} - -@media (min-width:768px) and (max-width:991px) { - h3 { - font-size: calc(18px + 3 * ((100vw - 768px)/ 223)) - } - -} - -@media (min-width:991px) and (max-width:1200px) { - h3 { - font-size: calc(21px + 5 * ((100vw - 991px)/ 209)) - } - -} - -@media (min-width:1200px) { - h3 { - font-size: 26px - } - -} - -h4 { - font-size: 17px -} - -@media (min-width:768px) and (max-width:991px) { - h4 { - font-size: calc(17px + 2 * ((100vw - 768px)/ 223)) - } - -} - -@media (min-width:991px) and (max-width:1200px) { - h4 { - font-size: calc(19px + 4 * ((100vw - 991px)/ 209)) - } - -} - -@media (min-width:1200px) { - h4 { - font-size: 23px - } - -} - -h5 { - font-size: 17px -} - -@media (min-width:768px) and (max-width:991px) { - h5 { - font-size: calc(17px + 1 * ((100vw - 768px)/ 223)) - } - -} - -@media (min-width:991px) and (max-width:1200px) { - h5 { - font-size: calc(18px + 2 * ((100vw - 991px)/ 209)) - } - -} - -@media (min-width:1200px) { - h5 { - font-size: 20px - } - -} - -h6 { - font-size: 16px -} - -@media (min-width:768px) and (max-width:991px) { - h6 { - font-size: calc(16px + 1 * ((100vw - 768px)/ 223)) - } - -} - -@media (min-width:991px) and (max-width:1200px) { - h6 { - font-size: calc(17px + 1 * ((100vw - 991px)/ 209)) - } - -} - -@media (min-width:1200px) { - h6 { - font-size: 18px - } - -} - -.display-1 { - font-size: 26px -} - -@media (min-width:768px) and (max-width:991px) { - .display-1 { - font-size: calc(26px + 7 * ((100vw - 768px)/ 223)) - } - -} - -@media (min-width:991px) and (max-width:1200px) { - .display-1 { - font-size: calc(33px + 25 * ((100vw - 991px)/ 209)) - } - -} - -@media (min-width:1200px) { - .display-1 { - font-size: 58px - } - -} - -.display-2 { - font-size: 24px -} - -@media (min-width:768px) and (max-width:991px) { - .display-2 { - font-size: calc(24px + 7 * ((100vw - 768px)/ 223)) - } - -} - -@media (min-width:991px) and (max-width:1200px) { - .display-2 { - font-size: calc(31px + 21 * ((100vw - 991px)/ 209)) - } - -} - -@media (min-width:1200px) { - .display-2 { - font-size: 52px - } - -} - -.display-3 { - font-size: 23px -} - -@media (min-width:768px) and (max-width:991px) { - .display-3 { - font-size: calc(23px + 6 * ((100vw - 768px)/ 223)) - } - -} - -@media (min-width:991px) and (max-width:1200px) { - .display-3 { - font-size: calc(29px + 17 * ((100vw - 991px)/ 209)) - } - -} - -@media (min-width:1200px) { - .display-3 { - font-size: 46px - } - -} - -.display-4 { - font-size: 22px -} - -@media (min-width:768px) and (max-width:991px) { - .display-4 { - font-size: calc(22px + 5 * ((100vw - 768px)/ 223)) - } - -} - -@media (min-width:991px) and (max-width:1200px) { - .display-4 { - font-size: calc(27px + 14 * ((100vw - 991px)/ 209)) - } - -} - -@media (min-width:1200px) { - .display-4 { - font-size: 41px - } - -} - -.display-5 { - font-size: 21px -} - -@media (min-width:768px) and (max-width:991px) { - .display-5 { - font-size: calc(21px + 4 * ((100vw - 768px)/ 223)) - } - -} - -@media (min-width:991px) and (max-width:1200px) { - .display-5 { - font-size: calc(25px + 11 * ((100vw - 991px)/ 209)) - } - -} - -@media (min-width:1200px) { - .display-5 { - font-size: 36px - } - -} - -.form-control, -input[type=email], -input[type=name], -input[type=number], -input[type=password], -input[type=text], -textarea { - font-family: Roboto, sans-serif; - font-weight: 500; - font-size: 14px -} - -@media (min-width:768px) and (max-width:991px) { - .form-control, - input[type=email], - input[type=name], - input[type=number], - input[type=password], - input[type=text], - textarea { - font-size: calc(14px + 0 * ((100vw - 768px)/ 223)) - } - -} - -@media (min-width:991px) and (max-width:1200px) { - .form-control, - input[type=email], - input[type=name], - input[type=number], - input[type=password], - input[type=text], - textarea { - font-size: calc(14px + -1 * ((100vw - 991px)/ 209)) - } - -} - -@media (min-width:1200px) { - .form-control, - input[type=email], - input[type=name], - input[type=number], - input[type=password], - input[type=text], - textarea { - font-size: 13px - } - -} - -.form-control.placeholder, -input[type=email].placeholder, -input[type=name].placeholder, -input[type=number].placeholder, -input[type=password].placeholder, -input[type=text].placeholder, -textarea.placeholder { - font-family: inherit; - font-size: inherit; - color: #afb5ba; - font-weight: inherit -} - -.form-control:-moz-placeholder, -input[type=email]:-moz-placeholder, -input[type=name]:-moz-placeholder, -input[type=number]:-moz-placeholder, -input[type=password]:-moz-placeholder, -input[type=text]:-moz-placeholder, -textarea:-moz-placeholder { - font-family: inherit; - font-size: inherit; - color: #afb5ba; - font-weight: inherit -} - -.form-control::-moz-placeholder, -input[type=email]::-moz-placeholder, -input[type=name]::-moz-placeholder, -input[type=number]::-moz-placeholder, -input[type=password]::-moz-placeholder, -input[type=text]::-moz-placeholder, -textarea::-moz-placeholder { - font-family: inherit; - font-size: inherit; - color: #afb5ba; - font-weight: inherit -} - -.form-control:-ms-input-placeholder, -input[type=email]:-ms-input-placeholder, -input[type=name]:-ms-input-placeholder, -input[type=number]:-ms-input-placeholder, -input[type=password]:-ms-input-placeholder, -input[type=text]:-ms-input-placeholder, -textarea:-ms-input-placeholder { - font-family: inherit; - font-size: inherit; - color: #afb5ba; - font-weight: inherit -} - -.form-control::-webkit-input-placeholder, -input[type=email]::-webkit-input-placeholder, -input[type=name]::-webkit-input-placeholder, -input[type=number]::-webkit-input-placeholder, -input[type=password]::-webkit-input-placeholder, -input[type=text]::-webkit-input-placeholder, -textarea::-webkit-input-placeholder { - font-family: inherit; - font-size: inherit; - color: #afb5ba; - font-weight: inherit -} - -.grid-title { - font-size: 14px; - font-family: Roboto, sans-serif; - font-weight: 500 -} - -@media (min-width:768px) and (max-width:991px) { - .grid-title { - font-size: calc(14px + 1 * ((100vw - 768px)/ 223)) - } - -} - -@media (min-width:991px) and (max-width:1200px) { - .grid-title { - font-size: calc(15px + -1 * ((100vw - 991px)/ 209)) - } - -} - -@media (min-width:1200px) { - .grid-title { - font-size: 14px - } - -} - -.bootstrap-tagsinput .tag { - font-size: 14px; - font-family: Roboto, sans-serif; - font-weight: 500 -} - -@media (min-width:768px) and (max-width:991px) { - .bootstrap-tagsinput .tag { - font-size: calc(14px + 0 * ((100vw - 768px)/ 223)) - } - -} - -@media (min-width:991px) and (max-width:1200px) { - .bootstrap-tagsinput .tag { - font-size: calc(14px + -1 * ((100vw - 991px)/ 209)) - } - -} - -@media (min-width:1200px) { - .bootstrap-tagsinput .tag { - font-size: 13px - } - -} - -.font-weight-medium { - font-weight: 500 !important -} - -.font-weight-bold, -.font-weight-bolder, -.font-weight-medium { - letter-spacing: 1px -} - -/*! - * Bootstrap v4.3.1 (https://getbootstrap.com/) - * Copyright 2011-2019 The Bootstrap Authors - * Copyright 2011-2019 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/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: #047006; - --secondary: grey; - --success: #00e093; - --info: #6c61f6; - --warning: #f0825f; - --danger: #ff5f66; - --light: #dfdfdf; - --dark: #74767b; - --white: #fff; - --orange: #ffa600; - --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.7; - color: #212529; - text-align: left; - background-color: #fff -} - -[tabindex="-1"]:focus { - outline: 0 !important -} - -hr { - box-sizing: content-box; - 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; - text-decoration-skip-ink: none -} - -address { - margin-bottom: 1rem; - font-style: normal; - line-height: inherit -} - -dl, -ol, -ul { - margin-top: 0; - margin-bottom: 1rem -} - -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: baseline -} - -sub { - bottom: -.25em -} - -sup { - top: -.5em -} - -a { - color: #047006; - text-decoration: none; - background-color: transparent -} - -a:hover { - color: #012602; - text-decoration: underline -} - -a:not([href]):not([tabindex]) { - color: inherit; - text-decoration: none -} - -a:not([href]):not([tabindex]):focus, -a:not([href]):not([tabindex]):hover { - color: inherit; - text-decoration: none -} - -a:not([href]):not([tabindex]):focus { - outline: 0 -} - -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 -} - -figure { - margin: 0 0 1rem -} - -img { - vertical-align: middle; - border-style: none -} - -svg { - overflow: hidden; - vertical-align: middle -} - -table { - border-collapse: collapse -} - -caption { - padding-top: 10px 15px; - padding-bottom: 10px 15px; - 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 -} - -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 -} - -input[type=date], -input[type=datetime-local], -input[type=month], -input[type=time] { - -webkit-appearance: listbox -} - -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: baseline -} - -[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; - font-weight: 300; - line-height: 1.2 -} - -.display-2 { - font-size: 5.5rem; - font-weight: 300; - line-height: 1.2 -} - -.display-3 { - font-size: 4.5rem; - font-weight: 300; - line-height: 1.2 -} - -.display-4 { - font-size: 3.5rem; - font-weight: 300; - line-height: 1.2 -} - -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-unstyled { - padding-left: 0; - list-style: none -} - -.list-inline { - padding-left: 0; - list-style: none -} - -.list-inline-item { - display: inline-block -} - -.list-inline-item:not(:last-child) { - margin-right: .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 { - max-width: 100%; - height: auto -} - -.img-thumbnail { - padding: .25rem; - background-color: #fff; - border: 1px solid #dee2e6; - border-radius: .25rem; - max-width: 100%; - height: auto -} - -.figure { - display: inline-block -} - -.figure-img { - margin-bottom: .5rem; - line-height: 1 -} - -.figure-caption { - font-size: 90%; - color: #6c757d -} - -code { - font-size: 90%; - color: #bd4147; - word-break: 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: 90%; - color: #212529 -} - -pre code { - font-size: inherit; - color: inherit; - word-break: normal -} - -.pre-scrollable { - max-height: 340px; - overflow-y: scroll -} - -.container { - width: 100%; - padding-right: 10px; - padding-left: 10px; - margin-right: auto; - margin-left: auto -} - -@media (min-width:576px) { - .container { - max-width: 540px - } - -} - -@media (min-width:768px) { - .container { - max-width: 720px - } - -} - -@media (min-width:992px) { - .container { - max-width: 960px - } - -} - -@media (min-width:1200px) { - .container { - max-width: 1140px - } - -} - -.container-fluid { - width: 100%; - padding-right: 10px; - padding-left: 10px; - margin-right: auto; - margin-left: auto -} - -.row { - display: -webkit-box; - display: flex; - flex-wrap: wrap; - margin-right: -10px; - margin-left: -10px -} - -.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-10, -.col-11, -.col-12, -.col-2, -.col-3, -.col-4, -.col-5, -.col-6, -.col-7, -.col-8, -.col-9, -.col-auto, -.col-lg, -.col-lg-1, -.col-lg-10, -.col-lg-11, -.col-lg-12, -.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-auto, -.col-md, -.col-md-1, -.col-md-10, -.col-md-11, -.col-md-12, -.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-auto, -.col-sm, -.col-sm-1, -.col-sm-10, -.col-sm-11, -.col-sm-12, -.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-auto, -.col-xl, -.col-xl-1, -.col-xl-10, -.col-xl-11, -.col-xl-12, -.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-auto { - position: relative; - width: 100%; - padding-right: 10px; - padding-left: 10px -} - -.col { - flex-basis: 0; - -webkit-box-flex: 1; - flex-grow: 1; - max-width: 100% -} - -.col-auto { - -webkit-box-flex: 0; - flex: 0 0 auto; - width: auto; - max-width: 100% -} - -.col-1 { - -webkit-box-flex: 0; - flex: 0 0 8.33333%; - max-width: 8.33333% -} - -.col-2 { - -webkit-box-flex: 0; - flex: 0 0 16.66667%; - max-width: 16.66667% -} - -.col-3 { - -webkit-box-flex: 0; - flex: 0 0 25%; - max-width: 25% -} - -.col-4 { - -webkit-box-flex: 0; - flex: 0 0 33.33333%; - max-width: 33.33333% -} - -.col-5 { - -webkit-box-flex: 0; - flex: 0 0 41.66667%; - max-width: 41.66667% -} - -.col-6 { - -webkit-box-flex: 0; - flex: 0 0 50%; - max-width: 50% -} - -.col-7 { - -webkit-box-flex: 0; - flex: 0 0 58.33333%; - max-width: 58.33333% -} - -.col-8 { - -webkit-box-flex: 0; - flex: 0 0 66.66667%; - max-width: 66.66667% -} - -.col-9 { - -webkit-box-flex: 0; - flex: 0 0 75%; - max-width: 75% -} - -.col-10 { - -webkit-box-flex: 0; - flex: 0 0 83.33333%; - max-width: 83.33333% -} - -.col-11 { - -webkit-box-flex: 0; - flex: 0 0 91.66667%; - max-width: 91.66667% -} - -.col-12 { - -webkit-box-flex: 0; - flex: 0 0 100%; - max-width: 100% -} - -.order-first { - -webkit-box-ordinal-group: 0; - order: -1 -} - -.order-last { - -webkit-box-ordinal-group: 14; - order: 13 -} - -.order-0 { - -webkit-box-ordinal-group: 1; - order: 0 -} - -.order-1 { - -webkit-box-ordinal-group: 2; - order: 1 -} - -.order-2 { - -webkit-box-ordinal-group: 3; - order: 2 -} - -.order-3 { - -webkit-box-ordinal-group: 4; - order: 3 -} - -.order-4 { - -webkit-box-ordinal-group: 5; - order: 4 -} - -.order-5 { - -webkit-box-ordinal-group: 6; - order: 5 -} - -.order-6 { - -webkit-box-ordinal-group: 7; - order: 6 -} - -.order-7 { - -webkit-box-ordinal-group: 8; - order: 7 -} - -.order-8 { - -webkit-box-ordinal-group: 9; - order: 8 -} - -.order-9 { - -webkit-box-ordinal-group: 10; - order: 9 -} - -.order-10 { - -webkit-box-ordinal-group: 11; - order: 10 -} - -.order-11 { - -webkit-box-ordinal-group: 12; - order: 11 -} - -.order-12 { - -webkit-box-ordinal-group: 13; - order: 12 -} - -.offset-1 { - margin-left: 8.33333% -} - -.offset-2 { - margin-left: 16.66667% -} - -.offset-3 { - margin-left: 25% -} - -.offset-4 { - margin-left: 33.33333% -} - -.offset-5 { - margin-left: 41.66667% -} - -.offset-6 { - margin-left: 50% -} - -.offset-7 { - margin-left: 58.33333% -} - -.offset-8 { - margin-left: 66.66667% -} - -.offset-9 { - margin-left: 75% -} - -.offset-10 { - margin-left: 83.33333% -} - -.offset-11 { - margin-left: 91.66667% -} - -@media (min-width:576px) { - .col-sm { - flex-basis: 0; - -webkit-box-flex: 1; - flex-grow: 1; - max-width: 100% - } - - .col-sm-auto { - -webkit-box-flex: 0; - flex: 0 0 auto; - width: auto; - max-width: 100% - } - - .col-sm-1 { - -webkit-box-flex: 0; - flex: 0 0 8.33333%; - max-width: 8.33333% - } - - .col-sm-2 { - -webkit-box-flex: 0; - flex: 0 0 16.66667%; - max-width: 16.66667% - } - - .col-sm-3 { - -webkit-box-flex: 0; - flex: 0 0 25%; - max-width: 25% - } - - .col-sm-4 { - -webkit-box-flex: 0; - flex: 0 0 33.33333%; - max-width: 33.33333% - } - - .col-sm-5 { - -webkit-box-flex: 0; - flex: 0 0 41.66667%; - max-width: 41.66667% - } - - .col-sm-6 { - -webkit-box-flex: 0; - flex: 0 0 50%; - max-width: 50% - } - - .col-sm-7 { - -webkit-box-flex: 0; - flex: 0 0 58.33333%; - max-width: 58.33333% - } - - .col-sm-8 { - -webkit-box-flex: 0; - flex: 0 0 66.66667%; - max-width: 66.66667% - } - - .col-sm-9 { - -webkit-box-flex: 0; - flex: 0 0 75%; - max-width: 75% - } - - .col-sm-10 { - -webkit-box-flex: 0; - flex: 0 0 83.33333%; - max-width: 83.33333% - } - - .col-sm-11 { - -webkit-box-flex: 0; - flex: 0 0 91.66667%; - max-width: 91.66667% - } - - .col-sm-12 { - -webkit-box-flex: 0; - flex: 0 0 100%; - max-width: 100% - } - - .order-sm-first { - -webkit-box-ordinal-group: 0; - order: -1 - } - - .order-sm-last { - -webkit-box-ordinal-group: 14; - order: 13 - } - - .order-sm-0 { - -webkit-box-ordinal-group: 1; - order: 0 - } - - .order-sm-1 { - -webkit-box-ordinal-group: 2; - order: 1 - } - - .order-sm-2 { - -webkit-box-ordinal-group: 3; - order: 2 - } - - .order-sm-3 { - -webkit-box-ordinal-group: 4; - order: 3 - } - - .order-sm-4 { - -webkit-box-ordinal-group: 5; - order: 4 - } - - .order-sm-5 { - -webkit-box-ordinal-group: 6; - order: 5 - } - - .order-sm-6 { - -webkit-box-ordinal-group: 7; - order: 6 - } - - .order-sm-7 { - -webkit-box-ordinal-group: 8; - order: 7 - } - - .order-sm-8 { - -webkit-box-ordinal-group: 9; - order: 8 - } - - .order-sm-9 { - -webkit-box-ordinal-group: 10; - order: 9 - } - - .order-sm-10 { - -webkit-box-ordinal-group: 11; - order: 10 - } - - .order-sm-11 { - -webkit-box-ordinal-group: 12; - order: 11 - } - - .order-sm-12 { - -webkit-box-ordinal-group: 13; - order: 12 - } - - .offset-sm-0 { - margin-left: 0 - } - - .offset-sm-1 { - margin-left: 8.33333% - } - - .offset-sm-2 { - margin-left: 16.66667% - } - - .offset-sm-3 { - margin-left: 25% - } - - .offset-sm-4 { - margin-left: 33.33333% - } - - .offset-sm-5 { - margin-left: 41.66667% - } - - .offset-sm-6 { - margin-left: 50% - } - - .offset-sm-7 { - margin-left: 58.33333% - } - - .offset-sm-8 { - margin-left: 66.66667% - } - - .offset-sm-9 { - margin-left: 75% - } - - .offset-sm-10 { - margin-left: 83.33333% - } - - .offset-sm-11 { - margin-left: 91.66667% - } - -} - -@media (min-width:768px) { - .col-md { - flex-basis: 0; - -webkit-box-flex: 1; - flex-grow: 1; - max-width: 100% - } - - .col-md-auto { - -webkit-box-flex: 0; - flex: 0 0 auto; - width: auto; - max-width: 100% - } - - .col-md-1 { - -webkit-box-flex: 0; - flex: 0 0 8.33333%; - max-width: 8.33333% - } - - .col-md-2 { - -webkit-box-flex: 0; - flex: 0 0 16.66667%; - max-width: 16.66667% - } - - .col-md-3 { - -webkit-box-flex: 0; - flex: 0 0 25%; - max-width: 25% - } - - .col-md-4 { - -webkit-box-flex: 0; - flex: 0 0 33.33333%; - max-width: 33.33333% - } - - .col-md-5 { - -webkit-box-flex: 0; - flex: 0 0 41.66667%; - max-width: 41.66667% - } - - .col-md-6 { - -webkit-box-flex: 0; - flex: 0 0 50%; - max-width: 50% - } - - .col-md-7 { - -webkit-box-flex: 0; - flex: 0 0 58.33333%; - max-width: 58.33333% - } - - .col-md-8 { - -webkit-box-flex: 0; - flex: 0 0 66.66667%; - max-width: 66.66667% - } - - .col-md-9 { - -webkit-box-flex: 0; - flex: 0 0 75%; - max-width: 75% - } - - .col-md-10 { - -webkit-box-flex: 0; - flex: 0 0 83.33333%; - max-width: 83.33333% - } - - .col-md-11 { - -webkit-box-flex: 0; - flex: 0 0 91.66667%; - max-width: 91.66667% - } - - .col-md-12 { - -webkit-box-flex: 0; - flex: 0 0 100%; - max-width: 100% - } - - .order-md-first { - -webkit-box-ordinal-group: 0; - order: -1 - } - - .order-md-last { - -webkit-box-ordinal-group: 14; - order: 13 - } - - .order-md-0 { - -webkit-box-ordinal-group: 1; - order: 0 - } - - .order-md-1 { - -webkit-box-ordinal-group: 2; - order: 1 - } - - .order-md-2 { - -webkit-box-ordinal-group: 3; - order: 2 - } - - .order-md-3 { - -webkit-box-ordinal-group: 4; - order: 3 - } - - .order-md-4 { - -webkit-box-ordinal-group: 5; - order: 4 - } - - .order-md-5 { - -webkit-box-ordinal-group: 6; - order: 5 - } - - .order-md-6 { - -webkit-box-ordinal-group: 7; - order: 6 - } - - .order-md-7 { - -webkit-box-ordinal-group: 8; - order: 7 - } - - .order-md-8 { - -webkit-box-ordinal-group: 9; - order: 8 - } - - .order-md-9 { - -webkit-box-ordinal-group: 10; - order: 9 - } - - .order-md-10 { - -webkit-box-ordinal-group: 11; - order: 10 - } - - .order-md-11 { - -webkit-box-ordinal-group: 12; - order: 11 - } - - .order-md-12 { - -webkit-box-ordinal-group: 13; - order: 12 - } - - .offset-md-0 { - margin-left: 0 - } - - .offset-md-1 { - margin-left: 8.33333% - } - - .offset-md-2 { - margin-left: 16.66667% - } - - .offset-md-3 { - margin-left: 25% - } - - .offset-md-4 { - margin-left: 33.33333% - } - - .offset-md-5 { - margin-left: 41.66667% - } - - .offset-md-6 { - margin-left: 50% - } - - .offset-md-7 { - margin-left: 58.33333% - } - - .offset-md-8 { - margin-left: 66.66667% - } - - .offset-md-9 { - margin-left: 75% - } - - .offset-md-10 { - margin-left: 83.33333% - } - - .offset-md-11 { - margin-left: 91.66667% - } - -} - -@media (min-width:992px) { - .col-lg { - flex-basis: 0; - -webkit-box-flex: 1; - flex-grow: 1; - max-width: 100% - } - - .col-lg-auto { - -webkit-box-flex: 0; - flex: 0 0 auto; - width: auto; - max-width: 100% - } - - .col-lg-1 { - -webkit-box-flex: 0; - flex: 0 0 8.33333%; - max-width: 8.33333% - } - - .col-lg-2 { - -webkit-box-flex: 0; - flex: 0 0 16.66667%; - max-width: 16.66667% - } - - .col-lg-3 { - -webkit-box-flex: 0; - flex: 0 0 25%; - max-width: 25% - } - - .col-lg-4 { - -webkit-box-flex: 0; - flex: 0 0 33.33333%; - max-width: 33.33333% - } - - .col-lg-5 { - -webkit-box-flex: 0; - flex: 0 0 41.66667%; - max-width: 41.66667% - } - - .col-lg-6 { - -webkit-box-flex: 0; - flex: 0 0 50%; - max-width: 50% - } - - .col-lg-7 { - -webkit-box-flex: 0; - flex: 0 0 58.33333%; - max-width: 58.33333% - } - - .col-lg-8 { - -webkit-box-flex: 0; - flex: 0 0 66.66667%; - max-width: 66.66667% - } - - .col-lg-9 { - -webkit-box-flex: 0; - flex: 0 0 75%; - max-width: 75% - } - - .col-lg-10 { - -webkit-box-flex: 0; - flex: 0 0 83.33333%; - max-width: 83.33333% - } - - .col-lg-11 { - -webkit-box-flex: 0; - flex: 0 0 91.66667%; - max-width: 91.66667% - } - - .col-lg-12 { - -webkit-box-flex: 0; - flex: 0 0 100%; - max-width: 100% - } - - .order-lg-first { - -webkit-box-ordinal-group: 0; - order: -1 - } - - .order-lg-last { - -webkit-box-ordinal-group: 14; - order: 13 - } - - .order-lg-0 { - -webkit-box-ordinal-group: 1; - order: 0 - } - - .order-lg-1 { - -webkit-box-ordinal-group: 2; - order: 1 - } - - .order-lg-2 { - -webkit-box-ordinal-group: 3; - order: 2 - } - - .order-lg-3 { - -webkit-box-ordinal-group: 4; - order: 3 - } - - .order-lg-4 { - -webkit-box-ordinal-group: 5; - order: 4 - } - - .order-lg-5 { - -webkit-box-ordinal-group: 6; - order: 5 - } - - .order-lg-6 { - -webkit-box-ordinal-group: 7; - order: 6 - } - - .order-lg-7 { - -webkit-box-ordinal-group: 8; - order: 7 - } - - .order-lg-8 { - -webkit-box-ordinal-group: 9; - order: 8 - } - - .order-lg-9 { - -webkit-box-ordinal-group: 10; - order: 9 - } - - .order-lg-10 { - -webkit-box-ordinal-group: 11; - order: 10 - } - - .order-lg-11 { - -webkit-box-ordinal-group: 12; - order: 11 - } - - .order-lg-12 { - -webkit-box-ordinal-group: 13; - order: 12 - } - - .offset-lg-0 { - margin-left: 0 - } - - .offset-lg-1 { - margin-left: 8.33333% - } - - .offset-lg-2 { - margin-left: 16.66667% - } - - .offset-lg-3 { - margin-left: 25% - } - - .offset-lg-4 { - margin-left: 33.33333% - } - - .offset-lg-5 { - margin-left: 41.66667% - } - - .offset-lg-6 { - margin-left: 50% - } - - .offset-lg-7 { - margin-left: 58.33333% - } - - .offset-lg-8 { - margin-left: 66.66667% - } - - .offset-lg-9 { - margin-left: 75% - } - - .offset-lg-10 { - margin-left: 83.33333% - } - - .offset-lg-11 { - margin-left: 91.66667% - } - -} - -@media (min-width:1200px) { - .col-xl { - flex-basis: 0; - -webkit-box-flex: 1; - flex-grow: 1; - max-width: 100% - } - - .col-xl-auto { - -webkit-box-flex: 0; - flex: 0 0 auto; - width: auto; - max-width: 100% - } - - .col-xl-1 { - -webkit-box-flex: 0; - flex: 0 0 8.33333%; - max-width: 8.33333% - } - - .col-xl-2 { - -webkit-box-flex: 0; - flex: 0 0 16.66667%; - max-width: 16.66667% - } - - .col-xl-3 { - -webkit-box-flex: 0; - flex: 0 0 25%; - max-width: 25% - } - - .col-xl-4 { - -webkit-box-flex: 0; - flex: 0 0 33.33333%; - max-width: 33.33333% - } - - .col-xl-5 { - -webkit-box-flex: 0; - flex: 0 0 41.66667%; - max-width: 41.66667% - } - - .col-xl-6 { - -webkit-box-flex: 0; - flex: 0 0 50%; - max-width: 50% - } - - .col-xl-7 { - -webkit-box-flex: 0; - flex: 0 0 58.33333%; - max-width: 58.33333% - } - - .col-xl-8 { - -webkit-box-flex: 0; - flex: 0 0 66.66667%; - max-width: 66.66667% - } - - .col-xl-9 { - -webkit-box-flex: 0; - flex: 0 0 75%; - max-width: 75% - } - - .col-xl-10 { - -webkit-box-flex: 0; - flex: 0 0 83.33333%; - max-width: 83.33333% - } - - .col-xl-11 { - -webkit-box-flex: 0; - flex: 0 0 91.66667%; - max-width: 91.66667% - } - - .col-xl-12 { - -webkit-box-flex: 0; - flex: 0 0 100%; - max-width: 100% - } - - .order-xl-first { - -webkit-box-ordinal-group: 0; - order: -1 - } - - .order-xl-last { - -webkit-box-ordinal-group: 14; - order: 13 - } - - .order-xl-0 { - -webkit-box-ordinal-group: 1; - order: 0 - } - - .order-xl-1 { - -webkit-box-ordinal-group: 2; - order: 1 - } - - .order-xl-2 { - -webkit-box-ordinal-group: 3; - order: 2 - } - - .order-xl-3 { - -webkit-box-ordinal-group: 4; - order: 3 - } - - .order-xl-4 { - -webkit-box-ordinal-group: 5; - order: 4 - } - - .order-xl-5 { - -webkit-box-ordinal-group: 6; - order: 5 - } - - .order-xl-6 { - -webkit-box-ordinal-group: 7; - order: 6 - } - - .order-xl-7 { - -webkit-box-ordinal-group: 8; - order: 7 - } - - .order-xl-8 { - -webkit-box-ordinal-group: 9; - order: 8 - } - - .order-xl-9 { - -webkit-box-ordinal-group: 10; - order: 9 - } - - .order-xl-10 { - -webkit-box-ordinal-group: 11; - order: 10 - } - - .order-xl-11 { - -webkit-box-ordinal-group: 12; - order: 11 - } - - .order-xl-12 { - -webkit-box-ordinal-group: 13; - order: 12 - } - - .offset-xl-0 { - margin-left: 0 - } - - .offset-xl-1 { - margin-left: 8.33333% - } - - .offset-xl-2 { - margin-left: 16.66667% - } - - .offset-xl-3 { - margin-left: 25% - } - - .offset-xl-4 { - margin-left: 33.33333% - } - - .offset-xl-5 { - margin-left: 41.66667% - } - - .offset-xl-6 { - margin-left: 50% - } - - .offset-xl-7 { - margin-left: 58.33333% - } - - .offset-xl-8 { - margin-left: 66.66667% - } - - .offset-xl-9 { - margin-left: 75% - } - - .offset-xl-10 { - margin-left: 83.33333% - } - - .offset-xl-11 { - margin-left: 91.66667% - } - -} - -.table { - width: 100%; - margin-bottom: 1rem; - color: #212529 -} - -.table td, -.table th { - padding: 10px 15px; - vertical-align: top; - border-top: 1px solid #f2f4f9 -} - -.table thead th { - vertical-align: bottom; - border-bottom: 2px solid #f2f4f9 -} - -.table tbody+tbody { - border-top: 2px solid #f2f4f9 -} - -.table-sm td, -.table-sm th { - padding: 10px 15px -} - -.table-bordered { - border: 1px solid #f2f4f9 -} - -.table-bordered td, -.table-bordered th { - border: 1px solid #f2f4f9 -} - -.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: #f6f7f9 -} - -.table-hover tbody tr:hover { - color: #212529; - background-color: #f6f7f9 -} - -.table-primary, -.table-primary>td, -.table-primary>th { - background-color: #b9d7b9 -} - -.table-primary tbody+tbody, -.table-primary td, -.table-primary th, -.table-primary thead th { - border-color: #7cb57e -} - -.table-hover .table-primary:hover { - background-color: #a9cea9 -} - -.table-hover .table-primary:hover>td, -.table-hover .table-primary:hover>th { - background-color: #a9cea9 -} - -.table-secondary, -.table-secondary>td, -.table-secondary>th { - background-color: #dbdbdb -} - -.table-secondary tbody+tbody, -.table-secondary td, -.table-secondary th, -.table-secondary thead th { - border-color: #bdbdbd -} - -.table-hover .table-secondary:hover { - background-color: #cecece -} - -.table-hover .table-secondary:hover>td, -.table-hover .table-secondary:hover>th { - background-color: #cecece -} - -.table-success, -.table-success>td, -.table-success>th { - background-color: #b8f6e1 -} - -.table-success tbody+tbody, -.table-success td, -.table-success th, -.table-success thead th { - border-color: #7aefc7 -} - -.table-hover .table-success:hover { - background-color: #a1f3d7 -} - -.table-hover .table-success:hover>td, -.table-hover .table-success:hover>th { - background-color: #a1f3d7 -} - -.table-info, -.table-info>td, -.table-info>th { - background-color: #d6d3fc -} - -.table-info tbody+tbody, -.table-info td, -.table-info th, -.table-info thead th { - border-color: #b3adfa -} - -.table-hover .table-info:hover { - background-color: #c0bbfa -} - -.table-hover .table-info:hover>td, -.table-hover .table-info:hover>th { - background-color: #c0bbfa -} - -.table-warning, -.table-warning>td, -.table-warning>th { - background-color: #fbdcd2 -} - -.table-warning tbody+tbody, -.table-warning td, -.table-warning th, -.table-warning thead th { - border-color: #f7beac -} - -.table-hover .table-warning:hover { - background-color: #f9cabb -} - -.table-hover .table-warning:hover>td, -.table-hover .table-warning:hover>th { - background-color: #f9cabb -} - -.table-danger, -.table-danger>td, -.table-danger>th { - background-color: #ffd2d4 -} - -.table-danger tbody+tbody, -.table-danger td, -.table-danger th, -.table-danger thead th { - border-color: #ffacaf -} - -.table-hover .table-danger:hover { - background-color: #ffb9bc -} - -.table-hover .table-danger:hover>td, -.table-hover .table-danger:hover>th { - background-color: #ffb9bc -} - -.table-light, -.table-light>td, -.table-light>th { - background-color: #f6f6f6 -} - -.table-light tbody+tbody, -.table-light td, -.table-light th, -.table-light thead th { - border-color: #eee -} - -.table-hover .table-light:hover { - background-color: #e9e9e9 -} - -.table-hover .table-light:hover>td, -.table-hover .table-light:hover>th { - background-color: #e9e9e9 -} - -.table-dark, -.table-dark>td, -.table-dark>th { - background-color: #d8d9da -} - -.table-dark tbody+tbody, -.table-dark td, -.table-dark th, -.table-dark thead th { - border-color: #b7b8ba -} - -.table-hover .table-dark:hover { - background-color: #cbccce -} - -.table-hover .table-dark:hover>td, -.table-hover .table-dark:hover>th { - background-color: #cbccce -} - -.table-white, -.table-white>td, -.table-white>th { - background-color: #fff -} - -.table-white tbody+tbody, -.table-white td, -.table-white th, -.table-white thead th { - border-color: #fff -} - -.table-hover .table-white:hover { - background-color: #f2f2f2 -} - -.table-hover .table-white:hover>td, -.table-hover .table-white:hover>th { - background-color: #f2f2f2 -} - -.table-orange, -.table-orange>td, -.table-orange>th { - background-color: #ffe6b8 -} - -.table-orange tbody+tbody, -.table-orange td, -.table-orange th, -.table-orange thead th { - border-color: #ffd17a -} - -.table-hover .table-orange:hover { - background-color: #ffdd9f -} - -.table-hover .table-orange:hover>td, -.table-hover .table-orange:hover>th { - background-color: #ffdd9f -} - -.table-active, -.table-active>td, -.table-active>th { - background-color: rgba(0, 0, 0, .075) -} - -.table-hover .table-active:hover { - background-color: rgba(0, 0, 0, .075) -} - -.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: #e1e4e6; - border-color: #f2f4f9 -} - -.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: rgba(255, 255, 255, .05) -} - -.table-dark.table-hover tbody tr:hover { - color: #fff; - background-color: rgba(255, 255, 255, .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: #6c757d; - background-color: #f6f7f9; - background-clip: padding-box; - border: 1px solid #f0f2f5; - border-radius: .25rem; - -webkit-transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out; - transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out -} - -@media (prefers-reduced-motion:reduce) { - .form-control { - -webkit-transition: none; - transition: none - } - -} - -.form-control::-ms-expand { - background-color: transparent; - border: 0 -} - -.form-control:focus { - color: #495057; - background-color: #f6f7f9; - border-color: #d7dee5; - outline: 0; - box-shadow: 0 0 0 .2rem rgba(0, 123, 255, .25) -} - -.form-control::-webkit-input-placeholder { - color: #6c757d; - opacity: 1 -} - -.form-control::-moz-placeholder { - color: #6c757d; - opacity: 1 -} - -.form-control::-ms-input-placeholder { - color: #6c757d; - opacity: 1 -} - -.form-control::placeholder { - color: #6c757d; - opacity: 1 -} - -.form-control:disabled, -.form-control[readonly] { - background-color: #f8f9fa; - opacity: 1 -} - -select.form-control:focus::-ms-value { - color: #6c757d; - background-color: #f6f7f9 -} - -.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-top: .375rem; - padding-bottom: .375rem; - margin-bottom: 0; - line-height: 1.5; - color: #212529; - background-color: transparent; - 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] { - height: auto -} - -textarea.form-control { - height: auto -} - -.form-group { - margin-bottom: 1rem -} - -.form-text { - display: block; - margin-top: .25rem -} - -.form-row { - display: -webkit-box; - 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 { - color: #adb5bd -} - -.form-check-label { - margin-bottom: 0 -} - -.form-check-inline { - display: -webkit-inline-box; - display: inline-flex; - -webkit-box-align: center; - 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%; - 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 -} - -.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,%3csvg xmlns=!string!viewBox=!string!%3e%3cpath fill=!string!d=!string!/%3e%3c/svg%3e"); - background-repeat: no-repeat; - background-position: center right calc(.375em + .1875rem); - 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) -} - -.form-control.is-valid~.valid-feedback, -.form-control.is-valid~.valid-tooltip, -.was-validated .form-control:valid~.valid-feedback, -.was-validated .form-control:valid~.valid-tooltip { - display: block -} - -.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((1em + .75rem) * 3 / 4 + 1.75rem); - background: url("data:image/svg+xml,%3csvg xmlns=!string!viewBox=!string!%3e%3cpath fill=!string!d=!string!/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns=!string!viewBox=!string!%3e%3cpath fill=!string!d=!string!/%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) -} - -.custom-select.is-valid~.valid-feedback, -.custom-select.is-valid~.valid-tooltip, -.was-validated .custom-select:valid~.valid-feedback, -.was-validated .custom-select:valid~.valid-tooltip { - display: block -} - -.form-control-file.is-valid~.valid-feedback, -.form-control-file.is-valid~.valid-tooltip, -.was-validated .form-control-file:valid~.valid-feedback, -.was-validated .form-control-file:valid~.valid-tooltip { - display: block -} - -.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~.valid-feedback, -.custom-control-input.is-valid~.valid-tooltip, -.was-validated .custom-control-input:valid~.valid-feedback, -.was-validated .custom-control-input:valid~.valid-tooltip { - display: block -} - -.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, -.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label::before { - border-color: #28a745 -} - -.custom-file-input.is-valid~.custom-file-label, -.was-validated .custom-file-input:valid~.custom-file-label { - border-color: #28a745 -} - -.custom-file-input.is-valid~.valid-feedback, -.custom-file-input.is-valid~.valid-tooltip, -.was-validated .custom-file-input:valid~.valid-feedback, -.was-validated .custom-file-input:valid~.valid-tooltip { - display: block -} - -.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%; - 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 -} - -.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,%3csvg xmlns=!string!fill=!string!viewBox=!string!%3e%3cpath stroke=!string!d=!string!/%3e%3ccircle r=!string!/%3e%3ccircle cx=!string!r=!string!/%3e%3ccircle cy=!string!r=!string!/%3e%3ccircle cx=!string!cy=!string!r=!string!/%3e%3c/svg%3E"); - background-repeat: no-repeat; - background-position: center right calc(.375em + .1875rem); - 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) -} - -.form-control.is-invalid~.invalid-feedback, -.form-control.is-invalid~.invalid-tooltip, -.was-validated .form-control:invalid~.invalid-feedback, -.was-validated .form-control:invalid~.invalid-tooltip { - display: block -} - -.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((1em + .75rem) * 3 / 4 + 1.75rem); - background: url("data:image/svg+xml,%3csvg xmlns=!string!viewBox=!string!%3e%3cpath fill=!string!d=!string!/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns=!string!fill=!string!viewBox=!string!%3e%3cpath stroke=!string!d=!string!/%3e%3ccircle r=!string!/%3e%3ccircle cx=!string!r=!string!/%3e%3ccircle cy=!string!r=!string!/%3e%3ccircle cx=!string!cy=!string!r=!string!/%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) -} - -.custom-select.is-invalid~.invalid-feedback, -.custom-select.is-invalid~.invalid-tooltip, -.was-validated .custom-select:invalid~.invalid-feedback, -.was-validated .custom-select:invalid~.invalid-tooltip { - display: block -} - -.form-control-file.is-invalid~.invalid-feedback, -.form-control-file.is-invalid~.invalid-tooltip, -.was-validated .form-control-file:invalid~.invalid-feedback, -.was-validated .form-control-file:invalid~.invalid-tooltip { - display: block -} - -.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~.invalid-feedback, -.custom-control-input.is-invalid~.invalid-tooltip, -.was-validated .custom-control-input:invalid~.invalid-feedback, -.was-validated .custom-control-input:invalid~.invalid-tooltip { - display: block -} - -.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, -.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label::before { - border-color: #dc3545 -} - -.custom-file-input.is-invalid~.custom-file-label, -.was-validated .custom-file-input:invalid~.custom-file-label { - border-color: #dc3545 -} - -.custom-file-input.is-invalid~.invalid-feedback, -.custom-file-input.is-invalid~.invalid-tooltip, -.was-validated .custom-file-input:invalid~.invalid-feedback, -.was-validated .custom-file-input:invalid~.invalid-tooltip { - display: block -} - -.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: -webkit-box; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - flex-flow: row wrap; - -webkit-box-align: center; - align-items: center -} - -.form-inline .form-check { - width: 100% -} - -@media (min-width:576px) { - .form-inline label { - display: -webkit-box; - display: flex; - -webkit-box-align: center; - align-items: center; - -webkit-box-pack: center; - justify-content: center; - margin-bottom: 0 - } - - .form-inline .form-group { - display: -webkit-box; - display: flex; - -webkit-box-flex: 0; - flex: 0 0 auto; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - flex-flow: row wrap; - -webkit-box-align: center; - align-items: center; - margin-bottom: 0 - } - - .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: -webkit-box; - display: flex; - -webkit-box-align: center; - align-items: center; - -webkit-box-pack: 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 { - -webkit-box-align: center; - align-items: center; - -webkit-box-pack: 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; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - background-color: transparent; - border: 1px solid transparent; - padding: .375rem .75rem; - font-size: 1rem; - line-height: 1.5; - border-radius: .25rem; - -webkit-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out; - 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 { - -webkit-transition: none; - 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 -} - -a.btn.disabled, -fieldset:disabled a.btn { - pointer-events: none -} - -.btn-primary { - color: #fff; - background-color: #047006; - border-color: #047006 -} - -.btn-primary:hover { - color: #fff; - background-color: #034b04; - border-color: #023f03 -} - -.btn-primary.focus, -.btn-primary:focus { - box-shadow: 0 0 0 .2rem rgba(42, 133, 43, .5) -} - -.btn-primary.disabled, -.btn-primary:disabled { - color: #fff; - background-color: #047006; - border-color: #047006 -} - -.btn-primary:not(:disabled):not(.disabled).active, -.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle { - color: #fff; - background-color: #023f03; - border-color: #023203 -} - -.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(42, 133, 43, .5) -} - -.btn-secondary { - color: #fff; - background-color: grey; - border-color: grey -} - -.btn-secondary:hover { - color: #fff; - background-color: #6d6d6d; - border-color: #676767 -} - -.btn-secondary.focus, -.btn-secondary:focus { - box-shadow: 0 0 0 .2rem rgba(147, 147, 147, .5) -} - -.btn-secondary.disabled, -.btn-secondary:disabled { - color: #fff; - background-color: grey; - border-color: grey -} - -.btn-secondary:not(:disabled):not(.disabled).active, -.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle { - color: #fff; - background-color: #676767; - border-color: #606060 -} - -.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(147, 147, 147, .5) -} - -.btn-success { - color: #fff; - background-color: #00e093; - border-color: #00e093 -} - -.btn-success:hover { - color: #fff; - background-color: #00ba7a; - border-color: #00ad72 -} - -.btn-success.focus, -.btn-success:focus { - box-shadow: 0 0 0 .2rem rgba(38, 229, 163, .5) -} - -.btn-success.disabled, -.btn-success:disabled { - color: #fff; - background-color: #00e093; - border-color: #00e093 -} - -.btn-success:not(:disabled):not(.disabled).active, -.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle { - color: #fff; - background-color: #00ad72; - border-color: #00a069 -} - -.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(38, 229, 163, .5) -} - -.btn-info { - color: #fff; - background-color: #6c61f6; - border-color: #6c61f6 -} - -.btn-info:hover { - color: #fff; - background-color: #4a3df4; - border-color: #3f31f3 -} - -.btn-info.focus, -.btn-info:focus { - box-shadow: 0 0 0 .2rem rgba(130, 121, 247, .5) -} - -.btn-info.disabled, -.btn-info:disabled { - color: #fff; - background-color: #6c61f6; - border-color: #6c61f6 -} - -.btn-info:not(:disabled):not(.disabled).active, -.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle { - color: #fff; - background-color: #3f31f3; - border-color: #3425f3 -} - -.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(130, 121, 247, .5) -} - -.btn-warning { - color: #212529; - background-color: #f0825f; - border-color: #f0825f -} - -.btn-warning:hover { - color: #fff; - background-color: #ed673c; - border-color: #ec5e30 -} - -.btn-warning.focus, -.btn-warning:focus { - box-shadow: 0 0 0 .2rem rgba(209, 116, 87, .5) -} - -.btn-warning.disabled, -.btn-warning:disabled { - color: #212529; - background-color: #f0825f; - border-color: #f0825f -} - -.btn-warning:not(:disabled):not(.disabled).active, -.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle { - color: #fff; - background-color: #ec5e30; - border-color: #eb5425 -} - -.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(209, 116, 87, .5) -} - -.btn-danger { - color: #fff; - background-color: #ff5f66; - border-color: #ff5f66 -} - -.btn-danger:hover { - color: #fff; - background-color: #ff3941; - border-color: #ff2c35 -} - -.btn-danger.focus, -.btn-danger:focus { - box-shadow: 0 0 0 .2rem rgba(255, 119, 125, .5) -} - -.btn-danger.disabled, -.btn-danger:disabled { - color: #fff; - background-color: #ff5f66; - border-color: #ff5f66 -} - -.btn-danger:not(:disabled):not(.disabled).active, -.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle { - color: #fff; - background-color: #ff2c35; - border-color: #ff1f29 -} - -.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(255, 119, 125, .5) -} - -.btn-light { - color: #212529; - background-color: #dfdfdf; - border-color: #dfdfdf -} - -.btn-light:hover { - color: #212529; - background-color: #ccc; - border-color: #c6c6c6 -} - -.btn-light.focus, -.btn-light:focus { - box-shadow: 0 0 0 .2rem rgba(195, 195, 196, .5) -} - -.btn-light.disabled, -.btn-light:disabled { - color: #212529; - background-color: #dfdfdf; - border-color: #dfdfdf -} - -.btn-light:not(:disabled):not(.disabled).active, -.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle { - color: #212529; - background-color: #c6c6c6; - border-color: #bfbfbf -} - -.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(195, 195, 196, .5) -} - -.btn-dark { - color: #fff; - background-color: #74767b; - border-color: #74767b -} - -.btn-dark:hover { - color: #fff; - background-color: #616367; - border-color: #5b5d61 -} - -.btn-dark.focus, -.btn-dark:focus { - box-shadow: 0 0 0 .2rem rgba(137, 139, 143, .5) -} - -.btn-dark.disabled, -.btn-dark:disabled { - color: #fff; - background-color: #74767b; - border-color: #74767b -} - -.btn-dark:not(:disabled):not(.disabled).active, -.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle { - color: #fff; - background-color: #5b5d61; - border-color: #55575a -} - -.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(137, 139, 143, .5) -} - -.btn-white { - color: #212529; - background-color: #fff; - border-color: #fff -} - -.btn-white:hover { - color: #212529; - background-color: #ececec; - border-color: #e6e6e6 -} - -.btn-white.focus, -.btn-white:focus { - box-shadow: 0 0 0 .2rem rgba(222, 222, 223, .5) -} - -.btn-white.disabled, -.btn-white:disabled { - color: #212529; - background-color: #fff; - border-color: #fff -} - -.btn-white:not(:disabled):not(.disabled).active, -.btn-white:not(:disabled):not(.disabled):active,.show>.btn-white.dropdown-toggle { - color: #212529; - background-color: #e6e6e6; - border-color: #dfdfdf -} - -.btn-white:not(:disabled):not(.disabled).active:focus, -.btn-white:not(:disabled):not(.disabled):active:focus,.show>.btn-white.dropdown-toggle:focus { - box-shadow: 0 0 0 .2rem rgba(222, 222, 223, .5) -} - -.btn-orange { - color: #212529; - background-color: #ffa600; - border-color: #ffa600 -} - -.btn-orange:hover { - color: #fff; - background-color: #d98d00; - border-color: #cc8500 -} - -.btn-orange.focus, -.btn-orange:focus { - box-shadow: 0 0 0 .2rem rgba(222, 147, 6, .5) -} - -.btn-orange.disabled, -.btn-orange:disabled { - color: #212529; - background-color: #ffa600; - border-color: #ffa600 -} - -.btn-orange:not(:disabled):not(.disabled).active, -.btn-orange:not(:disabled):not(.disabled):active,.show>.btn-orange.dropdown-toggle { - color: #fff; - background-color: #cc8500; - border-color: #bf7d00 -} - -.btn-orange:not(:disabled):not(.disabled).active:focus, -.btn-orange:not(:disabled):not(.disabled):active:focus,.show>.btn-orange.dropdown-toggle:focus { - box-shadow: 0 0 0 .2rem rgba(222, 147, 6, .5) -} - -.btn-outline-primary { - color: #047006; - border-color: #047006 -} - -.btn-outline-primary:hover { - color: #fff; - background-color: #047006; - border-color: #047006 -} - -.btn-outline-primary.focus, -.btn-outline-primary:focus { - box-shadow: 0 0 0 .2rem rgba(4, 112, 6, .5) -} - -.btn-outline-primary.disabled, -.btn-outline-primary:disabled { - color: #047006; - background-color: transparent -} - -.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: #047006; - border-color: #047006 -} - -.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(4, 112, 6, .5) -} - -.btn-outline-secondary { - color: grey; - border-color: grey -} - -.btn-outline-secondary:hover { - color: #fff; - background-color: grey; - border-color: grey -} - -.btn-outline-secondary.focus, -.btn-outline-secondary:focus { - box-shadow: 0 0 0 .2rem rgba(128, 128, 128, .5) -} - -.btn-outline-secondary.disabled, -.btn-outline-secondary:disabled { - color: grey; - background-color: transparent -} - -.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: grey; - border-color: grey -} - -.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(128, 128, 128, .5) -} - -.btn-outline-success { - color: #00e093; - border-color: #00e093 -} - -.btn-outline-success:hover { - color: #fff; - background-color: #00e093; - border-color: #00e093 -} - -.btn-outline-success.focus, -.btn-outline-success:focus { - box-shadow: 0 0 0 .2rem rgba(0, 224, 147, .5) -} - -.btn-outline-success.disabled, -.btn-outline-success:disabled { - color: #00e093; - background-color: transparent -} - -.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: #00e093; - border-color: #00e093 -} - -.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(0, 224, 147, .5) -} - -.btn-outline-info { - color: #6c61f6; - border-color: #6c61f6 -} - -.btn-outline-info:hover { - color: #fff; - background-color: #6c61f6; - border-color: #6c61f6 -} - -.btn-outline-info.focus, -.btn-outline-info:focus { - box-shadow: 0 0 0 .2rem rgba(108, 97, 246, .5) -} - -.btn-outline-info.disabled, -.btn-outline-info:disabled { - color: #6c61f6; - background-color: transparent -} - -.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: #6c61f6; - border-color: #6c61f6 -} - -.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(108, 97, 246, .5) -} - -.btn-outline-warning { - color: #f0825f; - border-color: #f0825f -} - -.btn-outline-warning:hover { - color: #212529; - background-color: #f0825f; - border-color: #f0825f -} - -.btn-outline-warning.focus, -.btn-outline-warning:focus { - box-shadow: 0 0 0 .2rem rgba(240, 130, 95, .5) -} - -.btn-outline-warning.disabled, -.btn-outline-warning:disabled { - color: #f0825f; - background-color: transparent -} - -.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: #f0825f; - border-color: #f0825f -} - -.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(240, 130, 95, .5) -} - -.btn-outline-danger { - color: #ff5f66; - border-color: #ff5f66 -} - -.btn-outline-danger:hover { - color: #fff; - background-color: #ff5f66; - border-color: #ff5f66 -} - -.btn-outline-danger.focus, -.btn-outline-danger:focus { - box-shadow: 0 0 0 .2rem rgba(255, 95, 102, .5) -} - -.btn-outline-danger.disabled, -.btn-outline-danger:disabled { - color: #ff5f66; - background-color: transparent -} - -.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: #ff5f66; - border-color: #ff5f66 -} - -.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(255, 95, 102, .5) -} - -.btn-outline-light { - color: #dfdfdf; - border-color: #dfdfdf -} - -.btn-outline-light:hover { - color: #212529; - background-color: #dfdfdf; - border-color: #dfdfdf -} - -.btn-outline-light.focus, -.btn-outline-light:focus { - box-shadow: 0 0 0 .2rem rgba(223, 223, 223, .5) -} - -.btn-outline-light.disabled, -.btn-outline-light:disabled { - color: #dfdfdf; - background-color: transparent -} - -.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: #dfdfdf; - border-color: #dfdfdf -} - -.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(223, 223, 223, .5) -} - -.btn-outline-dark { - color: #74767b; - border-color: #74767b -} - -.btn-outline-dark:hover { - color: #fff; - background-color: #74767b; - border-color: #74767b -} - -.btn-outline-dark.focus, -.btn-outline-dark:focus { - box-shadow: 0 0 0 .2rem rgba(116, 118, 123, .5) -} - -.btn-outline-dark.disabled, -.btn-outline-dark:disabled { - color: #74767b; - background-color: transparent -} - -.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: #74767b; - border-color: #74767b -} - -.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(116, 118, 123, .5) -} - -.btn-outline-white { - color: #fff; - border-color: #fff -} - -.btn-outline-white:hover { - color: #212529; - background-color: #fff; - border-color: #fff -} - -.btn-outline-white.focus, -.btn-outline-white:focus { - box-shadow: 0 0 0 .2rem rgba(255, 255, 255, .5) -} - -.btn-outline-white.disabled, -.btn-outline-white:disabled { - color: #fff; - background-color: transparent -} - -.btn-outline-white:not(:disabled):not(.disabled).active, -.btn-outline-white:not(:disabled):not(.disabled):active,.show>.btn-outline-white.dropdown-toggle { - color: #212529; - background-color: #fff; - border-color: #fff -} - -.btn-outline-white:not(:disabled):not(.disabled).active:focus, -.btn-outline-white:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-white.dropdown-toggle:focus { - box-shadow: 0 0 0 .2rem rgba(255, 255, 255, .5) -} - -.btn-outline-orange { - color: #ffa600; - border-color: #ffa600 -} - -.btn-outline-orange:hover { - color: #212529; - background-color: #ffa600; - border-color: #ffa600 -} - -.btn-outline-orange.focus, -.btn-outline-orange:focus { - box-shadow: 0 0 0 .2rem rgba(255, 166, 0, .5) -} - -.btn-outline-orange.disabled, -.btn-outline-orange:disabled { - color: #ffa600; - background-color: transparent -} - -.btn-outline-orange:not(:disabled):not(.disabled).active, -.btn-outline-orange:not(:disabled):not(.disabled):active,.show>.btn-outline-orange.dropdown-toggle { - color: #212529; - background-color: #ffa600; - border-color: #ffa600 -} - -.btn-outline-orange:not(:disabled):not(.disabled).active:focus, -.btn-outline-orange:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-orange.dropdown-toggle:focus { - box-shadow: 0 0 0 .2rem rgba(255, 166, 0, .5) -} - -.btn-link { - font-weight: 400; - color: #047006; - text-decoration: none -} - -.btn-link:hover { - color: #012602; - text-decoration: underline -} - -.btn-link.focus, -.btn-link:focus { - text-decoration: underline; - box-shadow: none -} - -.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 { - -webkit-transition: opacity .15s linear; - transition: opacity .15s linear -} - -@media (prefers-reduced-motion:reduce) { - .fade { - -webkit-transition: none; - transition: none - } - -} - -.fade:not(.show) { - opacity: 0 -} - -.collapse:not(.show) { - display: none -} - -.collapsing { - position: relative; - height: 0; - overflow: hidden; - -webkit-transition: height .35s ease; - transition: height .35s ease -} - -@media (prefers-reduced-motion:reduce) { - .collapsing { - -webkit-transition: none; - 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: 'http://www.w3.org/2000/svg'; - 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: '0 0 8 8'; - 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: '%2328a745'; - 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: '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' -} - -.dropleft .dropdown-toggle::after { - display: none -} - -.dropleft .dropdown-toggle::before { - display: inline-block; - margin-right: .255em; - vertical-align: .255em; - content: 'http://www.w3.org/2000/svg'; - 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: transparent; - 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: transparent -} - -.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: -webkit-inline-box; - display: inline-flex; - vertical-align: middle -} - -.btn-group-vertical>.btn, -.btn-group>.btn { - position: relative; - -webkit-box-flex: 1; - flex: 1 1 auto -} - -.btn-group-vertical>.btn:hover, -.btn-group>.btn:hover { - z-index: 1 -} - -.btn-group-vertical>.btn.active, -.btn-group-vertical>.btn:active, -.btn-group-vertical>.btn:focus, -.btn-group>.btn.active, -.btn-group>.btn:active, -.btn-group>.btn:focus { - z-index: 1 -} - -.btn-toolbar { - display: -webkit-box; - display: flex; - flex-wrap: wrap; - -webkit-box-pack: start; - 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 { - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - flex-direction: column; - -webkit-box-align: start; - align-items: flex-start; - -webkit-box-pack: center; - 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 input[type=checkbox], -.btn-group-toggle>.btn input[type=radio], -.btn-group-toggle>.btn-group>.btn input[type=checkbox], -.btn-group-toggle>.btn-group>.btn input[type=radio] { - position: absolute; - clip: rect(0, 0, 0, 0); - pointer-events: none -} - -.input-group { - position: relative; - display: -webkit-box; - display: flex; - flex-wrap: wrap; - -webkit-box-align: stretch; - align-items: stretch; - width: 100% -} - -.input-group>.custom-file, -.input-group>.custom-select, -.input-group>.form-control, -.input-group>.form-control-plaintext { - position: relative; - -webkit-box-flex: 1; - flex: 1 1 auto; - width: 1%; - 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: -webkit-box; - display: flex; - -webkit-box-align: center; - 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: -webkit-box; - 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: -webkit-box; - display: flex; - -webkit-box-align: center; - align-items: center; - padding: .375rem .75rem; - margin-bottom: 0; - font-size: 1rem; - font-weight: 400; - line-height: 1.5; - color: #6c757d; - text-align: center; - white-space: nowrap; - background-color: #e9ecef; - border: 1px solid #f0f2f5; - 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; - display: block; - min-height: 1.7rem; - padding-left: 1.9rem -} - -.custom-control-inline { - display: -webkit-inline-box; - display: inline-flex; - margin-right: 1rem -} - -.custom-control-input { - position: absolute; - z-index: -1; - opacity: 0 -} - -.custom-control-input:checked~.custom-control-label::before { - color: #fff; - border-color: #00e093; - background-color: #00e093 -} - -.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 { - color: #6c757d -} - -.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 { - position: absolute; - top: .15rem; - left: -1.9rem; - display: block; - width: 1.4rem; - height: 1.4rem; - pointer-events: none; - content: '0 0 4 5'; - background-color: #fff; - border: #e1e5f1 solid 1px -} - -.custom-control-label::after { - position: absolute; - top: .15rem; - left: -1.9rem; - display: block; - width: 1.4rem; - height: 1.4rem; - content: '%23343a40'; - 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,%3csvg xmlns=!string!viewBox=!string!%3e%3cpath fill=!string!d=!string!/%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,%3csvg xmlns=!string!viewBox=!string!%3e%3cpath stroke=!string!d=!string!/%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,%3csvg xmlns=!string!viewBox=!string!%3e%3ccircle r=!string!fill=!string!/%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.8rem -} - -.custom-switch .custom-control-label::before { - left: -2.8rem; - width: 2.3rem; - pointer-events: all; - border-radius: 25px -} - -.custom-switch .custom-control-label::after { - top: calc(.15rem + 2px); - left: calc(-2.8rem + 2px); - width: 1.1rem; - height: 1.1rem; - background-color: #e1e5f1; - border-radius: 25px; - -webkit-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: 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 { - -webkit-transition: none; - transition: none - } - -} - -.custom-switch .custom-control-input:checked~.custom-control-label::after { - background-color: #fff; - -webkit-transform: translateX(.9rem); - transform: translateX(.9rem) -} - -.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: url("data:image/svg+xml,%3csvg xmlns=!string!viewBox=!string!%3e%3cpath fill=!string!d=!string!/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px; - background-color: #fff; - border: 1px solid #ced4da; - border-radius: .25rem; - -webkit-appearance: none; - -moz-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: #6c757d; - background-color: #f6f7f9 -} - -.custom-select[multiple], -.custom-select[size]:not([size='M2 0L0 2h4zm0 5L0 3h4z']) { - height: auto; - padding-right: .75rem; - background-image: none -} - -.custom-select:disabled { - color: #6c757d; - background-color: #e9ecef -} - -.custom-select::-ms-expand { - display: none -} - -.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 { - position: relative; - display: inline-block; - width: 100%; - height: calc(1.5em + .75rem + 2px); - margin-bottom: 0 -} - -.custom-file-input { - position: relative; - z-index: 2; - width: 100%; - height: calc(1.5em + .75rem + 2px); - 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 { - background-color: #e9ecef -} - -.custom-file-input:lang(en)~.custom-file-label::after { - content: 'http://www.w3.org/2000/svg' -} - -.custom-file-input~.custom-file-label[data-browse]::after { - content: attr(data-browse) -} - -.custom-file-label { - position: absolute; - top: 0; - right: 0; - left: 0; - z-index: 1; - height: calc(1.5em + .75rem + 2px); - padding: .375rem .75rem; - font-weight: 400; - line-height: 1.5; - color: #6c757d; - background-color: #f6f7f9; - border: 1px solid #f0f2f5; - border-radius: .25rem -} - -.custom-file-label::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - z-index: 3; - display: block; - height: calc(1.5em + .75rem); - padding: .375rem .75rem; - line-height: 1.5; - color: #495057; - content: '0 0 8 8'; - background-color: #e9ecef; - border-left: inherit; - border-radius: 0 .25rem .25rem 0 -} - -.custom-range { - width: 100%; - height: calc(1rem + .4rem); - padding: 0; - background-color: transparent; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none -} - -.custom-range:focus { - outline: 0 -} - -.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; - -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; - -moz-appearance: none; - appearance: none -} - -@media (prefers-reduced-motion:reduce) { - .custom-range::-moz-range-thumb { - -webkit-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; - -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; - appearance: none -} - -@media (prefers-reduced-motion:reduce) { - .custom-range::-ms-thumb { - -webkit-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: transparent; - border-color: transparent; - border-width: .5rem -} - -.custom-range::-ms-fill-lower { - background-color: #dee2e6; - border-radius: 1rem -} - -.custom-range::-ms-fill-upper { - margin-right: 15px; - background-color: #dee2e6; - border-radius: 1rem -} - -.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 { - -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 -} - -@media (prefers-reduced-motion:reduce) { - .custom-control-label::before, - .custom-file-label, - .custom-select { - -webkit-transition: none; - transition: none - } - -} - -.nav { - display: -webkit-box; - 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: 2px; - border-top-right-radius: 2px -} - -.nav-tabs .nav-link:focus, -.nav-tabs .nav-link:hover { - border-color: #e9ecef #e9ecef #dee2e6 -} - -.nav-tabs .nav-link.disabled { - color: #6c757d; - background-color: transparent; - 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: 2px -} - -.nav-pills .nav-link.active, -.nav-pills .show>.nav-link { - color: #fff; - background-color: #007bff -} - -.nav-fill .nav-item { - -webkit-box-flex: 1; - flex: 1 1 auto; - text-align: center -} - -.nav-justified .nav-item { - flex-basis: 0; - -webkit-box-flex: 1; - flex-grow: 1; - text-align: center -} - -.tab-content>.tab-pane { - display: none -} - -.tab-content>.active { - display: block -} - -.navbar { - position: relative; - display: -webkit-box; - display: flex; - flex-wrap: wrap; - -webkit-box-align: center; - align-items: center; - -webkit-box-pack: justify; - justify-content: space-between; - padding: .5rem 1rem -} - -.navbar>.container, -.navbar>.container-fluid { - display: -webkit-box; - display: flex; - flex-wrap: wrap; - -webkit-box-align: center; - align-items: center; - -webkit-box-pack: justify; - 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: -webkit-box; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - 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%; - -webkit-box-flex: 1; - flex-grow: 1; - -webkit-box-align: center; - align-items: center -} - -.navbar-toggler { - padding: .25rem .75rem; - font-size: 1.25rem; - line-height: 1; - background-color: transparent; - 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: '%2328a745'; - background: no-repeat center center; - background-size: 100% 100% -} - -@media (max-width:575.98px) { - .navbar-expand-sm>.container, - .navbar-expand-sm>.container-fluid { - padding-right: 0; - padding-left: 0 - } - -} - -@media (min-width:576px) { - .navbar-expand-sm { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - flex-flow: row nowrap; - -webkit-box-pack: start; - justify-content: flex-start - } - - .navbar-expand-sm .navbar-nav { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - 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 { - flex-wrap: nowrap - } - - .navbar-expand-sm .navbar-collapse { - display: -webkit-box !important; - 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 { - padding-right: 0; - padding-left: 0 - } - -} - -@media (min-width:768px) { - .navbar-expand-md { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - flex-flow: row nowrap; - -webkit-box-pack: start; - justify-content: flex-start - } - - .navbar-expand-md .navbar-nav { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - 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 { - flex-wrap: nowrap - } - - .navbar-expand-md .navbar-collapse { - display: -webkit-box !important; - 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 { - padding-right: 0; - padding-left: 0 - } - -} - -@media (min-width:992px) { - .navbar-expand-lg { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - flex-flow: row nowrap; - -webkit-box-pack: start; - justify-content: flex-start - } - - .navbar-expand-lg .navbar-nav { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - 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 { - flex-wrap: nowrap - } - - .navbar-expand-lg .navbar-collapse { - display: -webkit-box !important; - 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 { - padding-right: 0; - padding-left: 0 - } - -} - -@media (min-width:1200px) { - .navbar-expand-xl { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - flex-flow: row nowrap; - -webkit-box-pack: start; - justify-content: flex-start - } - - .navbar-expand-xl .navbar-nav { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - 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 { - flex-wrap: nowrap - } - - .navbar-expand-xl .navbar-collapse { - display: -webkit-box !important; - display: flex !important; - flex-basis: auto - } - - .navbar-expand-xl .navbar-toggler { - display: none - } - -} - -.navbar-expand { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - flex-flow: row nowrap; - -webkit-box-pack: start; - justify-content: flex-start -} - -.navbar-expand>.container, -.navbar-expand>.container-fluid { - padding-right: 0; - padding-left: 0 -} - -.navbar-expand .navbar-nav { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - 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 { - flex-wrap: nowrap -} - -.navbar-expand .navbar-collapse { - display: -webkit-box !important; - display: flex !important; - flex-basis: auto -} - -.navbar-expand .navbar-toggler { - display: none -} - -.navbar-light .navbar-brand { - color: rgba(0, 0, 0, .9) -} - -.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,%3csvg viewBox=!string!xmlns=!string!%3e%3cpath stroke=!string!stroke-width=!string!stroke-linecap=!string!stroke-miterlimit=!string!d=!string!/%3e%3c/svg%3e") -} - -.navbar-light .navbar-text { - color: rgba(0, 0, 0, .5) -} - -.navbar-light .navbar-text a { - color: rgba(0, 0, 0, .9) -} - -.navbar-light .navbar-text a:focus, -.navbar-light .navbar-text a:hover { - color: rgba(0, 0, 0, .9) -} - -.navbar-dark .navbar-brand { - color: #fff -} - -.navbar-dark .navbar-brand:focus, -.navbar-dark .navbar-brand:hover { - color: #fff -} - -.navbar-dark .navbar-nav .nav-link { - color: rgba(255, 255, 255, .5) -} - -.navbar-dark .navbar-nav .nav-link:focus, -.navbar-dark .navbar-nav .nav-link:hover { - color: rgba(255, 255, 255, .75) -} - -.navbar-dark .navbar-nav .nav-link.disabled { - color: rgba(255, 255, 255, .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: rgba(255, 255, 255, .5); - border-color: rgba(255, 255, 255, .1) -} - -.navbar-dark .navbar-toggler-icon { - background-image: url("data:image/svg+xml,%3csvg viewBox=!string!xmlns=!string!%3e%3cpath stroke=!string!stroke-width=!string!stroke-linecap=!string!stroke-miterlimit=!string!d=!string!/%3e%3c/svg%3e") -} - -.navbar-dark .navbar-text { - color: rgba(255, 255, 255, .5) -} - -.navbar-dark .navbar-text a { - color: #fff -} - -.navbar-dark .navbar-text a:focus, -.navbar-dark .navbar-text a:hover { - color: #fff -} - -.card { - position: relative; - display: -webkit-box; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - flex-direction: column; - min-width: 0; - word-wrap: break-word; - background-color: #fff; - background-clip: border-box; - border: 1px solid rgba(238, 238, 238, .75); - border-radius: .25rem -} - -.card>hr { - margin-right: 0; - margin-left: 0 -} - -.card>.list-group:first-child .list-group-item:first-child { - border-top-left-radius: .25rem; - border-top-right-radius: .25rem -} - -.card>.list-group:last-child .list-group-item:last-child { - border-bottom-right-radius: .25rem; - border-bottom-left-radius: .25rem -} - -.card-body { - -webkit-box-flex: 1; - flex: 1 1 auto; - padding: 1.25rem -} - -.card-title { - margin-bottom: .75rem -} - -.card-subtitle { - margin-top: -.375rem; - margin-bottom: 0 -} - -.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(238, 238, 238, .75) -} - -.card-header:first-child { - border-radius: calc(.25rem - 1px) calc(.25rem - 1px) 0 0 -} - -.card-header+.list-group .list-group-item:first-child { - border-top: 0 -} - -.card-footer { - padding: .75rem 1.25rem; - background-color: rgba(0, 0, 0, .03); - border-top: 1px solid rgba(238, 238, 238, .75) -} - -.card-footer:last-child { - border-radius: 0 0 calc(.25rem - 1px) calc(.25rem - 1px) -} - -.card-header-tabs { - margin-right: -.625rem; - margin-bottom: -.75rem; - margin-left: -.625rem; - border-bottom: 0 -} - -.card-header-pills { - margin-right: -.625rem; - margin-left: -.625rem -} - -.card-img-overlay { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - padding: 1.25rem -} - -.card-img { - width: 100%; - border-radius: calc(.25rem - 1px) -} - -.card-img-top { - width: 100%; - border-top-left-radius: calc(.25rem - 1px); - border-top-right-radius: calc(.25rem - 1px) -} - -.card-img-bottom { - width: 100%; - border-bottom-right-radius: calc(.25rem - 1px); - border-bottom-left-radius: calc(.25rem - 1px) -} - -.card-deck { - display: -webkit-box; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - flex-direction: column -} - -.card-deck .card { - margin-bottom: 15px -} - -@media (min-width:576px) { - .card-deck { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - flex-flow: row wrap; - margin-right: -15px; - margin-left: -15px - } - - .card-deck .card { - display: -webkit-box; - display: flex; - -webkit-box-flex: 1; - flex: 1 0 0%; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - flex-direction: column; - margin-right: 15px; - margin-bottom: 0; - margin-left: 15px - } - -} - -.card-group { - display: -webkit-box; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - flex-direction: column -} - -.card-group>.card { - margin-bottom: 15px -} - -@media (min-width:576px) { - .card-group { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - flex-flow: row wrap - } - - .card-group>.card { - -webkit-box-flex: 1; - flex: 1 0 0%; - margin-bottom: 0 - } - - .card-group>.card+.card { - margin-left: 0; - border-left: 0 - } - - .card-group>.card:not(:last-child) { - border-top-right-radius: 0; - border-bottom-right-radius: 0 - } - - .card-group>.card:not(:last-child) .card-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; - -moz-column-count: 3; - column-count: 3; - -webkit-column-gap: 1.25rem; - -moz-column-gap: 1.25rem; - column-gap: 1.25rem; - orphans: 1; - widows: 1 - } - - .card-columns .card { - display: inline-block; - width: 100% - } - -} - -.accordion>.card { - overflow: hidden -} - -.accordion>.card:not(:first-of-type) .card-header:first-child { - border-radius: 0 -} - -.accordion>.card:not(:first-of-type):not(:last-of-type) { - border-bottom: 0; - border-radius: 0 -} - -.accordion>.card:first-of-type { - border-bottom: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0 -} - -.accordion>.card:last-of-type { - border-top-left-radius: 0; - border-top-right-radius: 0 -} - -.accordion>.card .card-header { - margin-bottom: -1px -} - -.breadcrumb { - display: -webkit-box; - display: flex; - flex-wrap: wrap; - padding: .75rem 1rem; - margin-bottom: 1rem; - list-style: none; - background-color: #f7f9fa; - border-radius: .25rem -} - -.breadcrumb-item+.breadcrumb-item { - padding-left: .5rem -} - -.breadcrumb-item+.breadcrumb-item::before { - display: inline-block; - padding-right: .5rem; - color: #a8a9ad; - content: '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' -} - -.breadcrumb-item+.breadcrumb-item:hover::before { - text-decoration: underline -} - -.breadcrumb-item+.breadcrumb-item:hover::before { - text-decoration: none -} - -.breadcrumb-item.active { - color: #6c757d -} - -.pagination { - display: -webkit-box; - display: flex; - padding-left: 0; - list-style: none; - border-radius: 2px -} - -.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: 2; - 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: 2px; - border-bottom-left-radius: 2px -} - -.page-item:last-child .page-link { - border-top-right-radius: 2px; - border-bottom-right-radius: 2px -} - -.page-item.active .page-link { - z-index: 1; - 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: 6px; - border-bottom-left-radius: 6px -} - -.pagination-lg .page-item:last-child .page-link { - border-top-right-radius: 6px; - border-bottom-right-radius: 6px -} - -.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: .45rem 1rem; - font-size: 80%; - font-weight: 700; - line-height: 1; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - border-radius: .25rem; - -webkit-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out; - 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 { - -webkit-transition: none; - 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: .5rem; - padding-left: .5rem; - border-radius: 10rem -} - -.badge-primary { - color: #fff; - background-color: #047006 -} - -a.badge-primary:focus, -a.badge-primary:hover { - color: #fff; - background-color: #023f03 -} - -a.badge-primary.focus, -a.badge-primary:focus { - outline: 0; - box-shadow: 0 0 0 .2rem rgba(4, 112, 6, .5) -} - -.badge-secondary { - color: #fff; - background-color: grey -} - -a.badge-secondary:focus, -a.badge-secondary:hover { - color: #fff; - background-color: #676767 -} - -a.badge-secondary.focus, -a.badge-secondary:focus { - outline: 0; - box-shadow: 0 0 0 .2rem rgba(128, 128, 128, .5) -} - -.badge-success { - color: #fff; - background-color: #00e093 -} - -a.badge-success:focus, -a.badge-success:hover { - color: #fff; - background-color: #00ad72 -} - -a.badge-success.focus, -a.badge-success:focus { - outline: 0; - box-shadow: 0 0 0 .2rem rgba(0, 224, 147, .5) -} - -.badge-info { - color: #fff; - background-color: #6c61f6 -} - -a.badge-info:focus, -a.badge-info:hover { - color: #fff; - background-color: #3f31f3 -} - -a.badge-info.focus, -a.badge-info:focus { - outline: 0; - box-shadow: 0 0 0 .2rem rgba(108, 97, 246, .5) -} - -.badge-warning { - color: #212529; - background-color: #f0825f -} - -a.badge-warning:focus, -a.badge-warning:hover { - color: #212529; - background-color: #ec5e30 -} - -a.badge-warning.focus, -a.badge-warning:focus { - outline: 0; - box-shadow: 0 0 0 .2rem rgba(240, 130, 95, .5) -} - -.badge-danger { - color: #fff; - background-color: #ff5f66 -} - -a.badge-danger:focus, -a.badge-danger:hover { - color: #fff; - background-color: #ff2c35 -} - -a.badge-danger.focus, -a.badge-danger:focus { - outline: 0; - box-shadow: 0 0 0 .2rem rgba(255, 95, 102, .5) -} - -.badge-light { - color: #212529; - background-color: #dfdfdf -} - -a.badge-light:focus, -a.badge-light:hover { - color: #212529; - background-color: #c6c6c6 -} - -a.badge-light.focus, -a.badge-light:focus { - outline: 0; - box-shadow: 0 0 0 .2rem rgba(223, 223, 223, .5) -} - -.badge-dark { - color: #fff; - background-color: #74767b -} - -a.badge-dark:focus, -a.badge-dark:hover { - color: #fff; - background-color: #5b5d61 -} - -a.badge-dark.focus, -a.badge-dark:focus { - outline: 0; - box-shadow: 0 0 0 .2rem rgba(116, 118, 123, .5) -} - -.badge-white { - color: #212529; - background-color: #fff -} - -a.badge-white:focus, -a.badge-white:hover { - color: #212529; - background-color: #e6e6e6 -} - -a.badge-white.focus, -a.badge-white:focus { - outline: 0; - box-shadow: 0 0 0 .2rem rgba(255, 255, 255, .5) -} - -.badge-orange { - color: #212529; - background-color: #ffa600 -} - -a.badge-orange:focus, -a.badge-orange:hover { - color: #212529; - background-color: #cc8500 -} - -a.badge-orange.focus, -a.badge-orange:focus { - outline: 0; - box-shadow: 0 0 0 .2rem rgba(255, 166, 0, .5) -} - -.jumbotron { - padding: 2rem 1rem; - margin-bottom: 2rem; - background-color: #e9ecef; - border-radius: 6px -} - -@media (min-width:576px) { - .jumbotron { - padding: 4rem 2rem - } - -} - -.jumbotron-fluid { - padding-right: 0; - padding-left: 0; - border-radius: 0 -} - -.alert { - position: relative; - padding: 1.15rem 1.15rem; - margin-bottom: 1rem; - border: 1px solid transparent; - border-radius: 2px -} - -.alert-heading { - color: inherit -} - -.alert-link { - font-weight: 700 -} - -.alert-dismissible { - padding-right: 3.8rem -} - -.alert-dismissible .close { - position: absolute; - top: 0; - right: 0; - padding: 1.15rem 1.15rem; - color: inherit -} - -.alert-primary { - color: #023a03; - background-color: #cde2cd; - border-color: #b9d7b9 -} - -.alert-primary hr { - border-top-color: #a9cea9 -} - -.alert-primary .alert-link { - color: #000900 -} - -.alert-secondary { - color: #434343; - background-color: #e6e6e6; - border-color: #dbdbdb -} - -.alert-secondary hr { - border-top-color: #cecece -} - -.alert-secondary .alert-link { - color: #2a2a2a -} - -.alert-success { - color: #00744c; - background-color: #ccf9e9; - border-color: #b8f6e1 -} - -.alert-success hr { - border-top-color: #a1f3d7 -} - -.alert-success .alert-link { - color: #00412b -} - -.alert-info { - color: #383280; - background-color: #e2dffd; - border-color: #d6d3fc -} - -.alert-info hr { - border-top-color: #c0bbfa -} - -.alert-info .alert-link { - color: #28245b -} - -.alert-warning { - color: #7d4431; - background-color: #fce6df; - border-color: #fbdcd2 -} - -.alert-warning hr { - border-top-color: #f9cabb -} - -.alert-warning .alert-link { - color: #583023 -} - -.alert-danger { - color: #853135; - background-color: #ffdfe0; - border-color: #ffd2d4 -} - -.alert-danger hr { - border-top-color: #ffb9bc -} - -.alert-danger .alert-link { - color: #602326 -} - -.alert-light { - color: #747474; - background-color: #f9f9f9; - border-color: #f6f6f6 -} - -.alert-light hr { - border-top-color: #e9e9e9 -} - -.alert-light .alert-link { - color: #5b5b5b -} - -.alert-dark { - color: #3c3d40; - background-color: #e3e4e5; - border-color: #d8d9da -} - -.alert-dark hr { - border-top-color: #cbccce -} - -.alert-dark .alert-link { - color: #232426 -} - -.alert-white { - color: #858585; - background-color: #fff; - border-color: #fff -} - -.alert-white hr { - border-top-color: #f2f2f2 -} - -.alert-white .alert-link { - color: #6c6c6c -} - -.alert-orange { - color: #855600; - background-color: #ffedcc; - border-color: #ffe6b8 -} - -.alert-orange hr { - border-top-color: #ffdd9f -} - -.alert-orange .alert-link { - color: #523500 -} - -@-webkit-keyframes progress-bar-stripes { - from { - background-position: 1rem 0 - } - - to { - background-position: 0 0 - } - -} - -@keyframes progress-bar-stripes { - from { - background-position: 1rem 0 - } - - to { - background-position: 0 0 - } - -} - -.progress { - display: -webkit-box; - display: flex; - height: 1rem; - overflow: hidden; - font-size: .75rem; - background-color: #f3f5f7; - border-radius: 2px -} - -.progress-bar { - display: -webkit-box; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - flex-direction: column; - -webkit-box-pack: center; - justify-content: center; - color: #fff; - text-align: center; - white-space: nowrap; - background-color: #007bff; - -webkit-transition: width .6s ease; - transition: width .6s ease -} - -@media (prefers-reduced-motion:reduce) { - .progress-bar { - -webkit-transition: none; - transition: none - } - -} - -.progress-bar-striped { - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, 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: -webkit-box; - display: flex; - -webkit-box-align: start; - align-items: flex-start -} - -.media-body { - -webkit-box-flex: 1; - flex: 1 -} - -.list-group { - display: -webkit-box; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - flex-direction: column; - padding-left: 0; - margin-bottom: 0 -} - -.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; - margin-bottom: -1px; - background-color: #fff; - border: 1px solid rgba(0, 0, 0, .125) -} - -.list-group-item:first-child { - border-top-left-radius: .25rem; - border-top-right-radius: .25rem -} - -.list-group-item:last-child { - margin-bottom: 0; - border-bottom-right-radius: .25rem; - border-bottom-left-radius: .25rem -} - -.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-horizontal { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - flex-direction: row -} - -.list-group-horizontal .list-group-item { - margin-right: -1px; - margin-bottom: 0 -} - -.list-group-horizontal .list-group-item:first-child { - border-top-left-radius: .25rem; - border-bottom-left-radius: .25rem; - border-top-right-radius: 0 -} - -.list-group-horizontal .list-group-item:last-child { - margin-right: 0; - border-top-right-radius: .25rem; - border-bottom-right-radius: .25rem; - border-bottom-left-radius: 0 -} - -@media (min-width:576px) { - .list-group-horizontal-sm { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - flex-direction: row - } - - .list-group-horizontal-sm .list-group-item { - margin-right: -1px; - margin-bottom: 0 - } - - .list-group-horizontal-sm .list-group-item:first-child { - border-top-left-radius: .25rem; - border-bottom-left-radius: .25rem; - border-top-right-radius: 0 - } - - .list-group-horizontal-sm .list-group-item:last-child { - margin-right: 0; - border-top-right-radius: .25rem; - border-bottom-right-radius: .25rem; - border-bottom-left-radius: 0 - } - -} - -@media (min-width:768px) { - .list-group-horizontal-md { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - flex-direction: row - } - - .list-group-horizontal-md .list-group-item { - margin-right: -1px; - margin-bottom: 0 - } - - .list-group-horizontal-md .list-group-item:first-child { - border-top-left-radius: .25rem; - border-bottom-left-radius: .25rem; - border-top-right-radius: 0 - } - - .list-group-horizontal-md .list-group-item:last-child { - margin-right: 0; - border-top-right-radius: .25rem; - border-bottom-right-radius: .25rem; - border-bottom-left-radius: 0 - } - -} - -@media (min-width:992px) { - .list-group-horizontal-lg { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - flex-direction: row - } - - .list-group-horizontal-lg .list-group-item { - margin-right: -1px; - margin-bottom: 0 - } - - .list-group-horizontal-lg .list-group-item:first-child { - border-top-left-radius: .25rem; - border-bottom-left-radius: .25rem; - border-top-right-radius: 0 - } - - .list-group-horizontal-lg .list-group-item:last-child { - margin-right: 0; - border-top-right-radius: .25rem; - border-bottom-right-radius: .25rem; - border-bottom-left-radius: 0 - } - -} - -@media (min-width:1200px) { - .list-group-horizontal-xl { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - flex-direction: row - } - - .list-group-horizontal-xl .list-group-item { - margin-right: -1px; - margin-bottom: 0 - } - - .list-group-horizontal-xl .list-group-item:first-child { - border-top-left-radius: .25rem; - border-bottom-left-radius: .25rem; - border-top-right-radius: 0 - } - - .list-group-horizontal-xl .list-group-item:last-child { - margin-right: 0; - border-top-right-radius: .25rem; - border-bottom-right-radius: .25rem; - border-bottom-left-radius: 0 - } - -} - -.list-group-flush .list-group-item { - border-right: 0; - border-left: 0; - border-radius: 0 -} - -.list-group-flush .list-group-item:last-child { - margin-bottom: -1px -} - -.list-group-flush:first-child .list-group-item:first-child { - border-top: 0 -} - -.list-group-flush:last-child .list-group-item:last-child { - margin-bottom: 0; - border-bottom: 0 -} - -.list-group-item-primary { - color: #023a03; - background-color: #b9d7b9 -} - -.list-group-item-primary.list-group-item-action:focus, -.list-group-item-primary.list-group-item-action:hover { - color: #023a03; - background-color: #a9cea9 -} - -.list-group-item-primary.list-group-item-action.active { - color: #fff; - background-color: #023a03; - border-color: #023a03 -} - -.list-group-item-secondary { - color: #434343; - background-color: #dbdbdb -} - -.list-group-item-secondary.list-group-item-action:focus, -.list-group-item-secondary.list-group-item-action:hover { - color: #434343; - background-color: #cecece -} - -.list-group-item-secondary.list-group-item-action.active { - color: #fff; - background-color: #434343; - border-color: #434343 -} - -.list-group-item-success { - color: #00744c; - background-color: #b8f6e1 -} - -.list-group-item-success.list-group-item-action:focus, -.list-group-item-success.list-group-item-action:hover { - color: #00744c; - background-color: #a1f3d7 -} - -.list-group-item-success.list-group-item-action.active { - color: #fff; - background-color: #00744c; - border-color: #00744c -} - -.list-group-item-info { - color: #383280; - background-color: #d6d3fc -} - -.list-group-item-info.list-group-item-action:focus, -.list-group-item-info.list-group-item-action:hover { - color: #383280; - background-color: #c0bbfa -} - -.list-group-item-info.list-group-item-action.active { - color: #fff; - background-color: #383280; - border-color: #383280 -} - -.list-group-item-warning { - color: #7d4431; - background-color: #fbdcd2 -} - -.list-group-item-warning.list-group-item-action:focus, -.list-group-item-warning.list-group-item-action:hover { - color: #7d4431; - background-color: #f9cabb -} - -.list-group-item-warning.list-group-item-action.active { - color: #fff; - background-color: #7d4431; - border-color: #7d4431 -} - -.list-group-item-danger { - color: #853135; - background-color: #ffd2d4 -} - -.list-group-item-danger.list-group-item-action:focus, -.list-group-item-danger.list-group-item-action:hover { - color: #853135; - background-color: #ffb9bc -} - -.list-group-item-danger.list-group-item-action.active { - color: #fff; - background-color: #853135; - border-color: #853135 -} - -.list-group-item-light { - color: #747474; - background-color: #f6f6f6 -} - -.list-group-item-light.list-group-item-action:focus, -.list-group-item-light.list-group-item-action:hover { - color: #747474; - background-color: #e9e9e9 -} - -.list-group-item-light.list-group-item-action.active { - color: #fff; - background-color: #747474; - border-color: #747474 -} - -.list-group-item-dark { - color: #3c3d40; - background-color: #d8d9da -} - -.list-group-item-dark.list-group-item-action:focus, -.list-group-item-dark.list-group-item-action:hover { - color: #3c3d40; - background-color: #cbccce -} - -.list-group-item-dark.list-group-item-action.active { - color: #fff; - background-color: #3c3d40; - border-color: #3c3d40 -} - -.list-group-item-white { - color: #858585; - background-color: #fff -} - -.list-group-item-white.list-group-item-action:focus, -.list-group-item-white.list-group-item-action:hover { - color: #858585; - background-color: #f2f2f2 -} - -.list-group-item-white.list-group-item-action.active { - color: #fff; - background-color: #858585; - border-color: #858585 -} - -.list-group-item-orange { - color: #855600; - background-color: #ffe6b8 -} - -.list-group-item-orange.list-group-item-action:focus, -.list-group-item-orange.list-group-item-action:hover { - color: #855600; - background-color: #ffdd9f -} - -.list-group-item-orange.list-group-item-action.active { - color: #fff; - background-color: #855600; - border-color: #855600 -} - -.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: transparent; - border: 0; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none -} - -a.close.disabled { - pointer-events: none -} - -.toast { - max-width: 350px; - overflow: hidden; - font-size: .875rem; - background-color: rgba(255, 255, 255, .85); - background-clip: padding-box; - border: 1px solid rgba(0, 0, 0, .1); - box-shadow: 0 .25rem .75rem rgba(0, 0, 0, .1); - -webkit-backdrop-filter: blur(10px); - backdrop-filter: blur(10px); - 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: -webkit-box; - display: flex; - -webkit-box-align: center; - align-items: center; - padding: .25rem .75rem; - color: #6c757d; - background-color: rgba(255, 255, 255, .85); - background-clip: padding-box; - border-bottom: 1px solid rgba(0, 0, 0, .05) -} - -.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 { - -webkit-transition: -webkit-transform .3s ease-out; - transition: -webkit-transform .3s ease-out; - transition: transform .3s ease-out; - transition: transform .3s ease-out, -webkit-transform .3s ease-out; - -webkit-transform: translate(0, -50px); - transform: translate(0, -50px) -} - -@media (prefers-reduced-motion:reduce) { - .modal.fade .modal-dialog { - -webkit-transition: none; - transition: none - } - -} - -.modal.show .modal-dialog { - -webkit-transform: none; - transform: none -} - -.modal-dialog-scrollable { - display: -webkit-box; - 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: -webkit-box; - display: flex; - -webkit-box-align: center; - align-items: center; - min-height: calc(100% - 1rem) -} - -.modal-dialog-centered::before { - display: block; - height: calc(100vh - 1rem); - content: 'http://www.w3.org/2000/svg' -} - -.modal-dialog-centered.modal-dialog-scrollable { - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - flex-direction: column; - -webkit-box-pack: center; - 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: -webkit-box; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - 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: .8 -} - -.modal-header { - display: -webkit-box; - display: flex; - -webkit-box-align: start; - align-items: flex-start; - -webkit-box-pack: justify; - justify-content: space-between; - padding: 1rem 1rem; - border-bottom: 1px solid #dee2e6; - border-top-left-radius: .3rem; - border-top-right-radius: .3rem -} - -.modal-header .close { - padding: 1rem 1rem; - margin: -1rem -1rem -1rem auto -} - -.modal-title { - margin-bottom: 0; - line-height: 1.5 -} - -.modal-body { - position: relative; - -webkit-box-flex: 1; - flex: 1 1 auto; - padding: 1rem -} - -.modal-footer { - display: -webkit-box; - display: flex; - -webkit-box-align: center; - align-items: center; - -webkit-box-pack: end; - justify-content: flex-end; - padding: 1rem; - border-top: 1px solid #dee2e6; - border-bottom-right-radius: .3rem; - border-bottom-left-radius: .3rem -} - -.modal-footer>:not(:first-child) { - margin-left: .25rem -} - -.modal-footer>:not(:last-child) { - margin-right: .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) - } - - .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.7; - 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: '%23dc3545'; - 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 { - position: absolute; - top: 0; - left: 0; - z-index: 1060; - display: block; - 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.7; - 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 .arrow { - position: absolute; - display: block; - width: 1rem; - height: .5rem; - margin: 0 6px -} - -.popover .arrow::after, -.popover .arrow::before { - position: absolute; - display: block; - content: '-2 -2 7 7'; - 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) * -1) -} - -.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) * -1); - width: .5rem; - height: 1rem; - margin: 6px 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) * -1) -} - -.bs-popover-auto[x-placement^=bottom]>.arrow::before, -.bs-popover-bottom>.arrow::before { - top: 0; - border-width: 0 .5rem .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 .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: '%23dc3545'; - 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) * -1); - width: .5rem; - height: 1rem; - margin: 6px 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(6px - 1px); - border-top-right-radius: calc(6px - 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: 'M0 0l3 3m0-3L0 3' -} - -.carousel-item { - position: relative; - display: none; - float: left; - width: 100%; - margin-right: -100%; - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -webkit-transition: -webkit-transform .6s ease-in-out; - 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 { - -webkit-transition: none; - 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; - -webkit-transition-property: opacity; - 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; - -webkit-transition: 0s .6s opacity; - transition: 0s .6s opacity -} - -@media (prefers-reduced-motion:reduce) { - .carousel-fade .active.carousel-item-left, - .carousel-fade .active.carousel-item-right { - -webkit-transition: none; - transition: none - } - -} - -.carousel-control-next, -.carousel-control-prev { - position: absolute; - top: 0; - bottom: 0; - z-index: 1; - display: -webkit-box; - display: flex; - -webkit-box-align: center; - align-items: center; - -webkit-box-pack: center; - justify-content: center; - width: 15%; - color: #fff; - text-align: center; - opacity: .5; - -webkit-transition: opacity .15s ease; - transition: opacity .15s ease -} - -@media (prefers-reduced-motion:reduce) { - .carousel-control-next, - .carousel-control-prev { - -webkit-transition: none; - 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,%3csvg xmlns=!string!fill=!string!viewBox=!string!%3e%3cpath d=!string!/%3e%3c/svg%3e") -} - -.carousel-control-next-icon { - background-image: url("data:image/svg+xml,%3csvg xmlns=!string!fill=!string!viewBox=!string!%3e%3cpath d=!string!/%3e%3c/svg%3e") -} - -.carousel-indicators { - position: absolute; - right: 0; - bottom: 0; - left: 0; - z-index: 15; - display: -webkit-box; - display: flex; - -webkit-box-pack: center; - justify-content: center; - padding-left: 0; - margin-right: 15%; - margin-left: 15%; - list-style: none -} - -.carousel-indicators li { - box-sizing: content-box; - -webkit-box-flex: 0; - 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; - -webkit-transition: opacity .6s ease; - transition: opacity .6s ease -} - -@media (prefers-reduced-motion:reduce) { - .carousel-indicators li { - -webkit-transition: none; - 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(360deg); - transform: rotate(360deg) - } - -} - -@keyframes spinner-border { - to { - -webkit-transform: rotate(360deg); - transform: rotate(360deg) - } - -} - -.spinner-border { - display: inline-block; - width: 2rem; - height: 2rem; - vertical-align: text-bottom; - border: .25em solid currentColor; - border-right-color: 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 - } - -} - -@keyframes spinner-grow { - 0% { - -webkit-transform: scale(0); - transform: scale(0) - } - - 50% { - opacity: 1 - } - -} - -.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: baseline !important -} - -.align-top { - vertical-align: top !important -} - -.align-middle { - vertical-align: middle !important -} - -.align-bottom { - vertical-align: bottom !important -} - -.align-text-bottom { - vertical-align: text-bottom !important -} - -.align-text-top { - vertical-align: text-top !important -} - -.bg-primary { - background-color: #047006 !important -} - -a.bg-primary:focus, -a.bg-primary:hover, -button.bg-primary:focus, -button.bg-primary:hover { - background-color: #023f03 !important -} - -.bg-secondary { - background-color: grey !important -} - -a.bg-secondary:focus, -a.bg-secondary:hover, -button.bg-secondary:focus, -button.bg-secondary:hover { - background-color: #676767 !important -} - -.bg-success { - background-color: #00e093 !important -} - -a.bg-success:focus, -a.bg-success:hover, -button.bg-success:focus, -button.bg-success:hover { - background-color: #00ad72 !important -} - -.bg-info { - background-color: #6c61f6 !important -} - -a.bg-info:focus, -a.bg-info:hover, -button.bg-info:focus, -button.bg-info:hover { - background-color: #3f31f3 !important -} - -.bg-warning { - background-color: #f0825f !important -} - -a.bg-warning:focus, -a.bg-warning:hover, -button.bg-warning:focus, -button.bg-warning:hover { - background-color: #ec5e30 !important -} - -.bg-danger { - background-color: #ff5f66 !important -} - -a.bg-danger:focus, -a.bg-danger:hover, -button.bg-danger:focus, -button.bg-danger:hover { - background-color: #ff2c35 !important -} - -.bg-light { - background-color: #dfdfdf !important -} - -a.bg-light:focus, -a.bg-light:hover, -button.bg-light:focus, -button.bg-light:hover { - background-color: #c6c6c6 !important -} - -.bg-dark { - background-color: #74767b !important -} - -a.bg-dark:focus, -a.bg-dark:hover, -button.bg-dark:focus, -button.bg-dark:hover { - background-color: #5b5d61 !important -} - -.bg-white { - background-color: #fff !important -} - -a.bg-white:focus, -a.bg-white:hover, -button.bg-white:focus, -button.bg-white:hover { - background-color: #e6e6e6 !important -} - -.bg-orange { - background-color: #ffa600 !important -} - -a.bg-orange:focus, -a.bg-orange:hover, -button.bg-orange:focus, -button.bg-orange:hover { - background-color: #cc8500 !important -} - -.bg-white { - background-color: #fff !important -} - -.bg-transparent { - background-color: transparent !important -} - -.border { - border: 1px solid #f2f4f9 !important -} - -.border-top { - border-top: 1px solid #f2f4f9 !important -} - -.border-right { - border-right: 1px solid #f2f4f9 !important -} - -.border-bottom { - border-bottom: 1px solid #f2f4f9 !important -} - -.border-left { - border-left: 1px solid #f2f4f9 !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: #047006 !important -} - -.border-secondary { - border-color: grey !important -} - -.border-success { - border-color: #00e093 !important -} - -.border-info { - border-color: #6c61f6 !important -} - -.border-warning { - border-color: #f0825f !important -} - -.border-danger { - border-color: #ff5f66 !important -} - -.border-light { - border-color: #dfdfdf !important -} - -.border-dark { - border-color: #74767b !important -} - -.border-white { - border-color: #fff !important -} - -.border-orange { - border-color: #ffa600 !important -} - -.border-white { - border-color: #fff !important -} - -.rounded-sm { - border-radius: .2rem !important -} - -.rounded { - border-radius: 2px !important -} - -.rounded-top { - border-top-left-radius: 2px !important; - border-top-right-radius: 2px !important -} - -.rounded-right { - border-top-right-radius: 2px !important; - border-bottom-right-radius: 2px !important -} - -.rounded-bottom { - border-bottom-right-radius: 2px !important; - border-bottom-left-radius: 2px !important -} - -.rounded-left { - border-top-left-radius: 2px !important; - border-bottom-left-radius: 2px !important -} - -.rounded-lg { - border-radius: 6px !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: '.5' -} - -.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: -webkit-box !important; - display: flex !important -} - -.d-inline-flex { - display: -webkit-inline-box !important; - 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: -webkit-box !important; - display: flex !important - } - - .d-sm-inline-flex { - display: -webkit-inline-box !important; - 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: -webkit-box !important; - display: flex !important - } - - .d-md-inline-flex { - display: -webkit-inline-box !important; - 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: -webkit-box !important; - display: flex !important - } - - .d-lg-inline-flex { - display: -webkit-inline-box !important; - 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: -webkit-box !important; - display: flex !important - } - - .d-xl-inline-flex { - display: -webkit-inline-box !important; - 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: -webkit-box !important; - display: flex !important - } - - .d-print-inline-flex { - display: -webkit-inline-box !important; - display: inline-flex !important - } - -} - -.embed-responsive { - position: relative; - display: block; - width: 100%; - padding: 0; - overflow: hidden -} - -.embed-responsive::before { - display: block; - content: '3' -} - -.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.85714% -} - -.embed-responsive-16by9::before { - padding-top: 56.25% -} - -.embed-responsive-4by3::before { - padding-top: 75% -} - -.embed-responsive-1by1::before { - padding-top: 100% -} - -.embed-responsive-21by9::before { - padding-top: 42.85714% -} - -.embed-responsive-16by9::before { - padding-top: 56.25% -} - -.embed-responsive-4by3::before { - padding-top: 75% -} - -.embed-responsive-1by1::before { - padding-top: 100% -} - -.flex-row { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: normal !important; - flex-direction: row !important -} - -.flex-column { - -webkit-box-orient: vertical !important; - -webkit-box-direction: normal !important; - flex-direction: column !important -} - -.flex-row-reverse { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: reverse !important; - flex-direction: row-reverse !important -} - -.flex-column-reverse { - -webkit-box-orient: vertical !important; - -webkit-box-direction: reverse !important; - 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 { - -webkit-box-flex: 1 !important; - flex: 1 1 auto !important -} - -.flex-grow-0 { - -webkit-box-flex: 0 !important; - flex-grow: 0 !important -} - -.flex-grow-1 { - -webkit-box-flex: 1 !important; - flex-grow: 1 !important -} - -.flex-shrink-0 { - flex-shrink: 0 !important -} - -.flex-shrink-1 { - flex-shrink: 1 !important -} - -.justify-content-start { - -webkit-box-pack: start !important; - justify-content: flex-start !important -} - -.justify-content-end { - -webkit-box-pack: end !important; - justify-content: flex-end !important -} - -.justify-content-center { - -webkit-box-pack: center !important; - justify-content: center !important -} - -.justify-content-between { - -webkit-box-pack: justify !important; - justify-content: space-between !important -} - -.justify-content-around { - justify-content: space-around !important -} - -.align-items-start { - -webkit-box-align: start !important; - align-items: flex-start !important -} - -.align-items-end { - -webkit-box-align: end !important; - align-items: flex-end !important -} - -.align-items-center { - -webkit-box-align: center !important; - align-items: center !important -} - -.align-items-baseline { - -webkit-box-align: baseline !important; - align-items: baseline !important -} - -.align-items-stretch { - -webkit-box-align: stretch !important; - 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 { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: normal !important; - flex-direction: row !important - } - - .flex-sm-column { - -webkit-box-orient: vertical !important; - -webkit-box-direction: normal !important; - flex-direction: column !important - } - - .flex-sm-row-reverse { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: reverse !important; - flex-direction: row-reverse !important - } - - .flex-sm-column-reverse { - -webkit-box-orient: vertical !important; - -webkit-box-direction: reverse !important; - 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 { - -webkit-box-flex: 1 !important; - flex: 1 1 auto !important - } - - .flex-sm-grow-0 { - -webkit-box-flex: 0 !important; - flex-grow: 0 !important - } - - .flex-sm-grow-1 { - -webkit-box-flex: 1 !important; - flex-grow: 1 !important - } - - .flex-sm-shrink-0 { - flex-shrink: 0 !important - } - - .flex-sm-shrink-1 { - flex-shrink: 1 !important - } - - .justify-content-sm-start { - -webkit-box-pack: start !important; - justify-content: flex-start !important - } - - .justify-content-sm-end { - -webkit-box-pack: end !important; - justify-content: flex-end !important - } - - .justify-content-sm-center { - -webkit-box-pack: center !important; - justify-content: center !important - } - - .justify-content-sm-between { - -webkit-box-pack: justify !important; - justify-content: space-between !important - } - - .justify-content-sm-around { - justify-content: space-around !important - } - - .align-items-sm-start { - -webkit-box-align: start !important; - align-items: flex-start !important - } - - .align-items-sm-end { - -webkit-box-align: end !important; - align-items: flex-end !important - } - - .align-items-sm-center { - -webkit-box-align: center !important; - align-items: center !important - } - - .align-items-sm-baseline { - -webkit-box-align: baseline !important; - align-items: baseline !important - } - - .align-items-sm-stretch { - -webkit-box-align: stretch !important; - 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 { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: normal !important; - flex-direction: row !important - } - - .flex-md-column { - -webkit-box-orient: vertical !important; - -webkit-box-direction: normal !important; - flex-direction: column !important - } - - .flex-md-row-reverse { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: reverse !important; - flex-direction: row-reverse !important - } - - .flex-md-column-reverse { - -webkit-box-orient: vertical !important; - -webkit-box-direction: reverse !important; - 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 { - -webkit-box-flex: 1 !important; - flex: 1 1 auto !important - } - - .flex-md-grow-0 { - -webkit-box-flex: 0 !important; - flex-grow: 0 !important - } - - .flex-md-grow-1 { - -webkit-box-flex: 1 !important; - flex-grow: 1 !important - } - - .flex-md-shrink-0 { - flex-shrink: 0 !important - } - - .flex-md-shrink-1 { - flex-shrink: 1 !important - } - - .justify-content-md-start { - -webkit-box-pack: start !important; - justify-content: flex-start !important - } - - .justify-content-md-end { - -webkit-box-pack: end !important; - justify-content: flex-end !important - } - - .justify-content-md-center { - -webkit-box-pack: center !important; - justify-content: center !important - } - - .justify-content-md-between { - -webkit-box-pack: justify !important; - justify-content: space-between !important - } - - .justify-content-md-around { - justify-content: space-around !important - } - - .align-items-md-start { - -webkit-box-align: start !important; - align-items: flex-start !important - } - - .align-items-md-end { - -webkit-box-align: end !important; - align-items: flex-end !important - } - - .align-items-md-center { - -webkit-box-align: center !important; - align-items: center !important - } - - .align-items-md-baseline { - -webkit-box-align: baseline !important; - align-items: baseline !important - } - - .align-items-md-stretch { - -webkit-box-align: stretch !important; - 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 { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: normal !important; - flex-direction: row !important - } - - .flex-lg-column { - -webkit-box-orient: vertical !important; - -webkit-box-direction: normal !important; - flex-direction: column !important - } - - .flex-lg-row-reverse { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: reverse !important; - flex-direction: row-reverse !important - } - - .flex-lg-column-reverse { - -webkit-box-orient: vertical !important; - -webkit-box-direction: reverse !important; - 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 { - -webkit-box-flex: 1 !important; - flex: 1 1 auto !important - } - - .flex-lg-grow-0 { - -webkit-box-flex: 0 !important; - flex-grow: 0 !important - } - - .flex-lg-grow-1 { - -webkit-box-flex: 1 !important; - flex-grow: 1 !important - } - - .flex-lg-shrink-0 { - flex-shrink: 0 !important - } - - .flex-lg-shrink-1 { - flex-shrink: 1 !important - } - - .justify-content-lg-start { - -webkit-box-pack: start !important; - justify-content: flex-start !important - } - - .justify-content-lg-end { - -webkit-box-pack: end !important; - justify-content: flex-end !important - } - - .justify-content-lg-center { - -webkit-box-pack: center !important; - justify-content: center !important - } - - .justify-content-lg-between { - -webkit-box-pack: justify !important; - justify-content: space-between !important - } - - .justify-content-lg-around { - justify-content: space-around !important - } - - .align-items-lg-start { - -webkit-box-align: start !important; - align-items: flex-start !important - } - - .align-items-lg-end { - -webkit-box-align: end !important; - align-items: flex-end !important - } - - .align-items-lg-center { - -webkit-box-align: center !important; - align-items: center !important - } - - .align-items-lg-baseline { - -webkit-box-align: baseline !important; - align-items: baseline !important - } - - .align-items-lg-stretch { - -webkit-box-align: stretch !important; - 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 { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: normal !important; - flex-direction: row !important - } - - .flex-xl-column { - -webkit-box-orient: vertical !important; - -webkit-box-direction: normal !important; - flex-direction: column !important - } - - .flex-xl-row-reverse { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: reverse !important; - flex-direction: row-reverse !important - } - - .flex-xl-column-reverse { - -webkit-box-orient: vertical !important; - -webkit-box-direction: reverse !important; - 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 { - -webkit-box-flex: 1 !important; - flex: 1 1 auto !important - } - - .flex-xl-grow-0 { - -webkit-box-flex: 0 !important; - flex-grow: 0 !important - } - - .flex-xl-grow-1 { - -webkit-box-flex: 1 !important; - flex-grow: 1 !important - } - - .flex-xl-shrink-0 { - flex-shrink: 0 !important - } - - .flex-xl-shrink-1 { - flex-shrink: 1 !important - } - - .justify-content-xl-start { - -webkit-box-pack: start !important; - justify-content: flex-start !important - } - - .justify-content-xl-end { - -webkit-box-pack: end !important; - justify-content: flex-end !important - } - - .justify-content-xl-center { - -webkit-box-pack: center !important; - justify-content: center !important - } - - .justify-content-xl-between { - -webkit-box-pack: justify !important; - justify-content: space-between !important - } - - .justify-content-xl-around { - justify-content: space-around !important - } - - .align-items-xl-start { - -webkit-box-align: start !important; - align-items: flex-start !important - } - - .align-items-xl-end { - -webkit-box-align: end !important; - align-items: flex-end !important - } - - .align-items-xl-center { - -webkit-box-align: center !important; - align-items: center !important - } - - .align-items-xl-baseline { - -webkit-box-align: baseline !important; - align-items: baseline !important - } - - .align-items-xl-stretch { - -webkit-box-align: stretch !important; - 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 - } - -} - -.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 { - position: fixed; - top: 0; - right: 0; - left: 0; - z-index: 1030 -} - -.fixed-bottom { - position: fixed; - right: 0; - bottom: 0; - left: 0; - z-index: 1030 -} - -@supports ((position:-webkit-sticky) or (position:sticky)) { - .sticky-top { - position: -webkit-sticky; - position: sticky; - top: 0; - z-index: 1020 - } - -} - -.sr-only { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - overflow: hidden; - clip: rect(0, 0, 0, 0); - white-space: nowrap; - border: 0 -} - -.sr-only-focusable:active, -.sr-only-focusable:focus { - position: static; - width: auto; - height: auto; - overflow: visible; - clip: auto; - 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 -} - -.stretched-link::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1; - pointer-events: auto; - content: '.5'; - background-color: rgba(0, 0, 0, 0) -} - -.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 - } - -} - -.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: #047006 !important -} - -a.text-primary:focus, -a.text-primary:hover { - color: #012602 !important -} - -.text-secondary { - color: grey !important -} - -a.text-secondary:focus, -a.text-secondary:hover { - color: #5a5a5a !important -} - -.text-success { - color: #00e093 !important -} - -a.text-success:focus, -a.text-success:hover { - color: #009461 !important -} - -.text-info { - color: #6c61f6 !important -} - -a.text-info:focus, -a.text-info:hover { - color: #2919f2 !important -} - -.text-warning { - color: #f0825f !important -} - -a.text-warning:focus, -a.text-warning:hover { - color: #e94b19 !important -} - -.text-danger { - color: #ff5f66 !important -} - -a.text-danger:focus, -a.text-danger:hover { - color: #ff131d !important -} - -.text-light { - color: #dfdfdf !important -} - -a.text-light:focus, -a.text-light:hover { - color: #b9b9b9 !important -} - -.text-dark { - color: #74767b !important -} - -a.text-dark:focus, -a.text-dark:hover { - color: #4f5054 !important -} - -.text-white { - color: #fff !important -} - -a.text-white:focus, -a.text-white:hover { - color: #d9d9d9 !important -} - -.text-orange { - color: #ffa600 !important -} - -a.text-orange:focus, -a.text-orange:hover { - color: #b37400 !important -} - -.text-body { - color: #212529 !important -} - -.text-muted { - color: #adb5bd !important -} - -.text-black-50 { - color: rgba(0, 0, 0, .5) !important -} - -.text-white-50 { - color: rgba(255, 255, 255, .5) !important -} - -.text-hide { - font: 0/0 a; - color: transparent; - text-shadow: none; - background-color: transparent; - 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: '3'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 - } - - body { - min-width: 992px !important - } - - .container { - 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: #f2f4f9 - } - - .table .thead-dark th { - color: inherit; - border-color: #f2f4f9 - } - -} - -.dev-info { - position: fixed; - color: grey; - font-size: smaller; - left: 8px; - z-index: 120 -} - -.versionstring { - top: 70px; - right: 8px; - left: auto -} - -.grd-time-used { - bottom: 0 -} - -footer { - position: absolute; - bottom: 0; - left: 0; - right: 0; - padding: 2rem 2.5rem; - max-width: 1140px; - margin-left: auto; - margin-right: auto -} - -@media (max-width:991.98px) { - footer { - padding: 20px 0 30px 0 - } - -} - -footer ul { - margin-left: 0; - padding-left: 0 -} - -footer ul li { - display: inline-block; - padding: 0 10px 0 0; - line-height: 1 -} - -footer ul li:not(:last-child) { - margin-right: 10px; - border-right: 1px solid #f2f4f9 -} - -footer ul li a { - font-size: 14px; - font-family: Roboto, sans-serif; - font-weight: 400; - letter-spacing: .03rem; - color: #565656 -} - -@media (min-width:768px) and (max-width:991px) { - footer ul li a { - font-size: calc(14px + 0 * ((100vw - 768px)/ 223)) - } - -} - -@media (min-width:991px) and (max-width:1200px) { - footer ul li a { - font-size: calc(14px + -1 * ((100vw - 991px)/ 209)) - } - -} - -@media (min-width:1200px) { - footer ul li a { - font-size: 13px - } - -} - -.alert { - border: none; - font-size: 14px; - font-family: Roboto, sans-serif; - font-weight: 400 -} - -@media (min-width:768px) and (max-width:991px) { - .alert { - font-size: calc(14px + 1 * ((100vw - 768px)/ 223)) - } - -} - -@media (min-width:991px) and (max-width:1200px) { - .alert { - font-size: calc(15px + -1 * ((100vw - 991px)/ 209)) - } - -} - -@media (min-width:1200px) { - .alert { - font-size: 14px - } - -} - -.alert .alert-heading { - margin-top: 20px; - margin-bottom: 10px -} - -.alert .btn-dismmiss { - margin-top: 20px -} - -.alert.dismissible-alert { - position: relative; - padding-right: 40px -} - -.alert.dismissible-alert .alert-close { - position: absolute; - top: 0; - right: 0; - bottom: 0; - padding: 10px; - font-size: 18px; - display: -webkit-box; - display: flex; - cursor: pointer; - height: inherit; - -webkit-box-align: center; - align-items: center -} - -.alert-notification-wrapper { - position: fixed; - left: 17rem; - right: 0; - z-index: 999 -} - -@media (max-width:991.98px) { - .alert-notification-wrapper { - left: 0 - } - -} - -.alert-notification-wrapper.top { - top: 70px -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-twitter { - border: 2px solid #55acee; - color: #101010 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-twitter i { - color: #55acee -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-twitter.btn-link { - background: 0 0; - color: #55acee -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-twitter.btn-link:hover { - color: #2795e9 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-facebook { - border: 2px solid #0084ff; - color: #101010 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-facebook i { - color: #0084ff -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-facebook.btn-link { - background: 0 0; - color: #0084ff -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-facebook.btn-link:hover { - color: #006acc -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-google { - border: 2px solid #dd4b39; - color: #101010 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-google i { - color: #dd4b39 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-google.btn-link { - background: 0 0; - color: #dd4b39 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-google.btn-link:hover { - color: #c23321 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-linkedin { - border: 2px solid #0077b5; - color: #101010 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-linkedin i { - color: #0077b5 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-linkedin.btn-link { - background: 0 0; - color: #0077b5 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-linkedin.btn-link:hover { - color: #005582 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-pinterest { - border: 2px solid #bd081c; - color: #101010 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-pinterest i { - color: #bd081c -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-pinterest.btn-link { - background: 0 0; - color: #bd081c -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-pinterest.btn-link:hover { - color: #8c0615 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-youtube { - border: 2px solid #cd201f; - color: #101010 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-youtube i { - color: #cd201f -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-youtube.btn-link { - background: 0 0; - color: #cd201f -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-youtube.btn-link:hover { - color: #a11918 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-github { - border: 2px solid #333; - color: #101010 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-github i { - color: #333 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-github.btn-link { - background: 0 0; - color: #333 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-github.btn-link:hover { - color: #1a1a1a -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-behance { - border: 2px solid #0454f6; - color: #101010 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-behance i { - color: #0454f6 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-behance.btn-link { - background: 0 0; - color: #0454f6 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-behance.btn-link:hover { - color: #0343c4 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-dribbble { - border: 2px solid #ea4c89; - color: #101010 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-dribbble i { - color: #ea4c89 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-dribbble.btn-link { - background: 0 0; - color: #ea4c89 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-dribbble.btn-link:hover { - color: #e51e6b -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-reddit { - border: 2px solid #ed4333; - color: #101010 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-reddit i { - color: #ed4333 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-reddit.btn-link { - background: 0 0; - color: #ed4333 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-reddit.btn-link:hover { - color: #da2413 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-instagram { - border: 2px solid #ff759b; - color: #101010 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-instagram i { - color: #ff759b -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-instagram.btn-link { - background: 0 0; - color: #ff759b -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-instagram.btn-link:hover { - color: #ff4276 -} - -.btn-inverse-primary { - background: rgba(4, 112, 6, .15); - color: #047006 -} - -.btn-inverse-primary i { - color: inherit -} - -.btn-inverse-primary:hover { - background: rgba(4, 112, 6, .8); - color: #fff -} - -.btn-inverse-secondary { - background: rgba(128, 128, 128, .15); - color: grey -} - -.btn-inverse-secondary i { - color: inherit -} - -.btn-inverse-secondary:hover { - background: rgba(128, 128, 128, .8); - color: #fff -} - -.btn-inverse-success { - background: rgba(0, 224, 147, .15); - color: #00e093 -} - -.btn-inverse-success i { - color: inherit -} - -.btn-inverse-success:hover { - background: rgba(0, 224, 147, .8); - color: #fff -} - -.btn-inverse-info { - background: rgba(108, 97, 246, .15); - color: #6c61f6 -} - -.btn-inverse-info i { - color: inherit -} - -.btn-inverse-info:hover { - background: rgba(108, 97, 246, .8); - color: #fff -} - -.btn-inverse-warning { - background: rgba(240, 130, 95, .15); - color: #f0825f -} - -.btn-inverse-warning i { - color: inherit -} - -.btn-inverse-warning:hover { - background: rgba(240, 130, 95, .8); - color: #fff -} - -.btn-inverse-danger { - background: rgba(255, 95, 102, .15); - color: #ff5f66 -} - -.btn-inverse-danger i { - color: inherit -} - -.btn-inverse-danger:hover { - background: rgba(255, 95, 102, .8); - color: #fff -} - -.btn-inverse-light { - background: rgba(223, 223, 223, .15); - color: #dfdfdf -} - -.btn-inverse-light i { - color: inherit -} - -.btn-inverse-light:hover { - background: rgba(223, 223, 223, .8); - color: #fff -} - -.btn-inverse-dark { - background: rgba(116, 118, 123, .15); - color: #74767b -} - -.btn-inverse-dark i { - color: inherit -} - -.btn-inverse-dark:hover { - background: rgba(116, 118, 123, .8); - color: #fff -} - -.btn-inverse-white { - background: rgba(255, 255, 255, .15); - color: #fff -} - -.btn-inverse-white i { - color: inherit -} - -.btn-inverse-white:hover { - background: rgba(255, 255, 255, .8); - color: #fff -} - -.btn-inverse-orange { - background: rgba(255, 166, 0, .15); - color: #ffa600 -} - -.btn-inverse-orange i { - color: inherit -} - -.btn-inverse-orange:hover { - background: rgba(255, 166, 0, .8); - color: #fff -} - -.btn:not(.social-btn-outlined).btn-twitter { - background: #55acee; - border: none; - color: #fff -} - -.btn:not(.social-btn-outlined).btn-twitter:hover { - background: #2795e9 -} - -.btn:not(.social-btn-outlined).btn-twitter.btn-link { - background: 0 0; - color: #55acee -} - -.btn:not(.social-btn-outlined).btn-twitter.btn-link:hover { - color: #2795e9 -} - -.btn:not(.social-btn-outlined).btn-facebook { - background: #0084ff; - border: none; - color: #fff -} - -.btn:not(.social-btn-outlined).btn-facebook:hover { - background: #006acc -} - -.btn:not(.social-btn-outlined).btn-facebook.btn-link { - background: 0 0; - color: #0084ff -} - -.btn:not(.social-btn-outlined).btn-facebook.btn-link:hover { - color: #006acc -} - -.btn:not(.social-btn-outlined).btn-google { - background: #dd4b39; - border: none; - color: #fff -} - -.btn:not(.social-btn-outlined).btn-google:hover { - background: #c23321 -} - -.btn:not(.social-btn-outlined).btn-google.btn-link { - background: 0 0; - color: #dd4b39 -} - -.btn:not(.social-btn-outlined).btn-google.btn-link:hover { - color: #c23321 -} - -.btn:not(.social-btn-outlined).btn-linkedin { - background: #0077b5; - border: none; - color: #fff -} - -.btn:not(.social-btn-outlined).btn-linkedin:hover { - background: #005582 -} - -.btn:not(.social-btn-outlined).btn-linkedin.btn-link { - background: 0 0; - color: #0077b5 -} - -.btn:not(.social-btn-outlined).btn-linkedin.btn-link:hover { - color: #005582 -} - -.btn:not(.social-btn-outlined).btn-pinterest { - background: #bd081c; - border: none; - color: #fff -} - -.btn:not(.social-btn-outlined).btn-pinterest:hover { - background: #8c0615 -} - -.btn:not(.social-btn-outlined).btn-pinterest.btn-link { - background: 0 0; - color: #bd081c -} - -.btn:not(.social-btn-outlined).btn-pinterest.btn-link:hover { - color: #8c0615 -} - -.btn:not(.social-btn-outlined).btn-youtube { - background: #cd201f; - border: none; - color: #fff -} - -.btn:not(.social-btn-outlined).btn-youtube:hover { - background: #a11918 -} - -.btn:not(.social-btn-outlined).btn-youtube.btn-link { - background: 0 0; - color: #cd201f -} - -.btn:not(.social-btn-outlined).btn-youtube.btn-link:hover { - color: #a11918 -} - -.btn:not(.social-btn-outlined).btn-github { - background: #333; - border: none; - color: #fff -} - -.btn:not(.social-btn-outlined).btn-github:hover { - background: #1a1a1a -} - -.btn:not(.social-btn-outlined).btn-github.btn-link { - background: 0 0; - color: #333 -} - -.btn:not(.social-btn-outlined).btn-github.btn-link:hover { - color: #1a1a1a -} - -.btn:not(.social-btn-outlined).btn-behance { - background: #0454f6; - border: none; - color: #fff -} - -.btn:not(.social-btn-outlined).btn-behance:hover { - background: #0343c4 -} - -.btn:not(.social-btn-outlined).btn-behance.btn-link { - background: 0 0; - color: #0454f6 -} - -.btn:not(.social-btn-outlined).btn-behance.btn-link:hover { - color: #0343c4 -} - -.btn:not(.social-btn-outlined).btn-dribbble { - background: #ea4c89; - border: none; - color: #fff -} - -.btn:not(.social-btn-outlined).btn-dribbble:hover { - background: #e51e6b -} - -.btn:not(.social-btn-outlined).btn-dribbble.btn-link { - background: 0 0; - color: #ea4c89 -} - -.btn:not(.social-btn-outlined).btn-dribbble.btn-link:hover { - color: #e51e6b -} - -.btn:not(.social-btn-outlined).btn-reddit { - background: #ed4333; - border: none; - color: #fff -} - -.btn:not(.social-btn-outlined).btn-reddit:hover { - background: #da2413 -} - -.btn:not(.social-btn-outlined).btn-reddit.btn-link { - background: 0 0; - color: #ed4333 -} - -.btn:not(.social-btn-outlined).btn-reddit.btn-link:hover { - color: #da2413 -} - -.btn:not(.social-btn-outlined).btn-instagram { - background: #ff759b; - border: none; - color: #fff -} - -.btn:not(.social-btn-outlined).btn-instagram:hover { - background: #ff4276 -} - -.btn:not(.social-btn-outlined).btn-instagram.btn-link { - background: 0 0; - color: #ff759b -} - -.btn:not(.social-btn-outlined).btn-instagram.btn-link:hover { - color: #ff4276 -} - -.btn-group label.btn.btn-primary:not(:disabled):not(.disabled).active { - background: #000e01 -} - -.btn-group label.btn.btn-secondary:not(:disabled):not(.disabled).active { - background: #4d4d4d -} - -.btn-group label.btn.btn-success:not(:disabled):not(.disabled).active { - background: #007a50 -} - -.btn-group label.btn.btn-info:not(:disabled):not(.disabled).active { - background: #1d0de4 -} - -.btn-group label.btn.btn-warning:not(:disabled):not(.disabled).active { - background: #d54314 -} - -.btn-group label.btn.btn-danger:not(:disabled):not(.disabled).active { - background: #f8000b -} - -.btn-group label.btn.btn-light:not(:disabled):not(.disabled).active { - background: #acacac -} - -.btn-group label.btn.btn-dark:not(:disabled):not(.disabled).active { - background: #424447 -} - -.btn-group label.btn.btn-white:not(:disabled):not(.disabled).active { - background: #ccc -} - -.btn-group label.btn.btn-orange:not(:disabled):not(.disabled).active { - background: #996400 -} - -.btn-outline-primary { - border: 2px solid #047006 -} - -.btn-outline-secondary { - border: 2px solid grey -} - -.btn-outline-success { - border: 2px solid #00e093 -} - -.btn-outline-info { - border: 2px solid #6c61f6 -} - -.btn-outline-warning { - border: 2px solid #f0825f -} - -.btn-outline-danger { - border: 2px solid #ff5f66 -} - -.btn-outline-light { - border: 2px solid #dfdfdf -} - -.btn-outline-dark { - border: 2px solid #74767b -} - -.btn-outline-white { - border: 2px solid #fff -} - -.btn-outline-orange { - border: 2px solid #ffa600 -} - -.btn-group label.btn input { - display: none -} - -.btn { - display: -webkit-inline-box; - display: inline-flex; - -webkit-box-pack: center; - justify-content: center; - -webkit-box-align: center; - align-items: center; - -webkit-transition: .3s ease; - transition: .3s ease; - -webkit-transition-property: background, color; - transition-property: background, color; - font-size: .875rem; - font-family: Roboto, sans-serif; - font-weight: 600; - letter-spacing: .03rem -} - -.btn:not([class*=btn-inverse]):not(.component-flat) { - box-shadow: 0 0 2px 0 rgba(0, 0, 0, .2) -} - -.btn i { - font-size: 1.25rem -} - -.btn-group-lg>.btn, -.btn.btn-lg { - height: 55px; - max-height: 55px; - padding: 15px 30px; - font-size: 1.125rem -} - -.btn-group-sm>.btn, -.btn.btn-sm { - height: 35px; - max-height: 35px; - padding: 4px 15px; - font-size: .875rem -} - -.btn.btn-xs { - height: 25px; - max-height: 25px; - padding: 0 10px; - line-height: 1; - font-size: .75rem -} - -.btn.btn-xs.has-icon i, -.btn.btn-xs.has-icon span { - font-size: .8125rem; - margin-right: 5px -} - -.btn { - height: 40px; - max-height: 40px; - padding: 5px 20px -} - -.btn.active { - box-shadow: none -} - -.btn.social-icon-btn { - height: 40px; - width: 40px -} - -.btn.social-btn i { - margin-right: 10px -} - -.btn.social-btn-outlined i { - margin-right: 10px -} - -.btn.has-icon i, -.btn.has-icon span { - font-size: 1.25rem; - margin-right: 10px; - line-height: 1 -} - -.btn.btn-outline-secondary { - color: #1a1a1a; - border-color: #676767 -} - -.btn.btn-info, -.btn.btn-warning { - color: #fff -} - -.btn.btn-light { - background: #fff; - color: #000 -} - -.btn.dropdown-dotted-list { - background: #fff -} - -.btn.dropdown-toggle-split { - padding: 0 8px -} - -.btn.action-btn { - display: -webkit-inline-box; - display: inline-flex; - -webkit-box-pack: center; - justify-content: center; - -webkit-box-align: center; - align-items: center; - padding: 0; - height: 40px; - width: 40px -} - -.btn.action-btn i { - font-size: 1.25rem; - width: 26px; - display: -webkit-box; - display: flex; - -webkit-box-pack: center; - justify-content: center; - -webkit-box-align: center; - align-items: center; - line-height: 23px; - vertical-align: middle; - font-size: 1.25rem -} - -.btn.action-btn i:before { - width: inherit; - height: inherit; - line-height: inherit; - font-size: inherit -} - -.btn.action-btn.btn-xs { - height: 30px; - width: 30px -} - -.btn-group-sm>.btn.action-btn, -.btn.action-btn.btn-sm { - height: 35px; - width: 35px -} - -.btn-group-lg>.btn.action-btn, -.btn.action-btn.btn-lg { - height: 50px; - width: 50px -} - -.btn-group-lg>.btn.action-btn i, -.btn.action-btn.btn-lg i { - font-size: 1.875rem; - line-height: 24px -} - -.btn.action-btn.btn-refresh.clicked i { - color: #047006; - -webkit-animation: rotate360 .8s linear infinite; - animation: rotate360 .8s linear infinite -} - -.btn.action-btn.btn-like.clicked i { - color: #ff5f66; - -webkit-animation: bounceIn .8s linear 1; - animation: bounceIn .8s linear 1 -} - -.btn.action-btn.btn-like.clicked:hover i { - color: #fff -} - -.btn.btn-rounded { - border-radius: 50px -} - -.flag-germany { - width: 40px; - height: 28px; - background: red; - border-top: 9px solid #000; - border-bottom: 9px solid #fc0; - display: block -} - -.flag-england { - background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJmbGFnLWljb24tY3NzLWdiIiB2aWV3Qm94PSIwIDAgNjQwIDQ4MCI+CiAgPHBhdGggZmlsbD0iIzAxMjE2OSIgZD0iTTAgMGg2NDB2NDgwSDB6Ii8+CiAgPHBhdGggZmlsbD0iI0ZGRiIgZD0iTTc1IDBsMjQ0IDE4MUw1NjIgMGg3OHY2Mkw0MDAgMjQxbDI0MCAxNzh2NjFoLTgwTDMyMCAzMDEgODEgNDgwSDB2LTYwbDIzOS0xNzhMMCA2NFYwaDc1eiIvPgogIDxwYXRoIGZpbGw9IiNDODEwMkUiIGQ9Ik00MjQgMjgxbDIxNiAxNTl2NDBMMzY5IDI4MWg1NXptLTE4NCAyMGw2IDM1TDU0IDQ4MEgwbDI0MC0xNzl6TTY0MCAwdjNMMzkxIDE5MWwyLTQ0TDU5MCAwaDUwek0wIDBsMjM5IDE3NmgtNjBMMCA0MlYweiIvPgogIDxwYXRoIGZpbGw9IiNGRkYiIGQ9Ik0yNDEgMHY0ODBoMTYwVjBIMjQxek0wIDE2MHYxNjBoNjQwVjE2MEgweiIvPgogIDxwYXRoIGZpbGw9IiNDODEwMkUiIGQ9Ik0wIDE5M3Y5Nmg2NDB2LTk2SDB6TTI3MyAwdjQ4MGg5NlYwaC05NnoiLz4KPC9zdmc+Cg==); - background-size: cover; - width: 40px; - height: 28px; - display: block -} - -.language-active { - background-color: #f9fafb; - padding: 2px -} - -.language-inactive { - padding: 2px; - background-color: transparent -} - -.is-invalid .form-control { - background-color: rgba(240, 130, 95, .2); - border: none -} - -.is-invalid .invalid-feedback { - display: block -} - -.is-valid .form-control { - background-color: rgba(4, 112, 6, .2); - border: none -} - -.form-control { - padding-left: 20px; - padding-right: 20px; - color: rgba(16, 16, 16, .8) -} - -.form-control.placeholder { - font-weight: inherit; - color: inherit; - font-size: inherit -} - -.form-control:-moz-placeholder { - font-weight: inherit; - color: inherit; - font-size: inherit -} - -.form-control::-moz-placeholder { - font-weight: inherit; - color: inherit; - font-size: inherit -} - -.form-control:-ms-input-placeholder { - font-weight: inherit; - color: inherit; - font-size: inherit -} - -.form-control::-webkit-input-placeholder { - font-weight: inherit; - color: inherit; - font-size: inherit -} - -.form-control.is-invalid { - background-color: rgba(240, 130, 95, .2); - border: none -} - -.form-control.is-valid { - background-color: rgba(4, 112, 6, .2); - border: none -} - -.input-group-text { - background-color: #f6f7f9; - color: #101010; - border-color: #f2f4f9; - padding: 0 10px; - font-size: 17px -} - -.is-valid .input-group-text { - background-color: rgba(4, 112, 6, .2); - color: #047006 -} - -.is-invalid .input-group-text { - background-color: rgba(240, 130, 95, .2); - color: #f0825f -} - -.form-group { - margin-bottom: 20px -} - -.form-group.input-rounded .form-control { - border-radius: 25px -} - -.custom-file .custom-file-label { - padding: 8px .75rem; - height: 41px -} - -.custom-file .custom-file-label:after { - padding: 1.45rem .8rem; - line-height: 0 -} - -.custom-select, -.custom-select[multiple] { - background: #f6f7f9; - border-color: #f0f2f5; - color: rgba(16, 16, 16, .8) -} - -.custom-select option, -.custom-select[multiple] option { - background: #f6f7f9; - color: rgba(16, 16, 16, .8); - display: block; - border-bottom: 1px solid #f2f4f9; - padding: 5px 10px -} - -.custom-select option:checked, -.custom-select[multiple] option:checked { - background: #f6f7f9 -} - -.custom-select option[selected], -.custom-select[multiple] option[selected] { - background: #f6f7f9; - display: block -} - -.custom-select[multiple] { - padding: 0; - border-radius: 2px -} - -.custom-control-input:focus~.custom-control-label::before { - box-shadow: none -} - -.custom-switch .custom-control-label::after { - box-shadow: 0 0 2px 0 rgba(0, 0, 0, .2); - background: #047006 -} - -.checkbox, -.radio { - position: relative; - display: block; - margin-top: 2px; - margin-bottom: 20px -} - -.checkbox label, -.radio label { - display: block; - padding-left: 30px; - line-height: 1.42857143; - font-size: .875rem -} - -.checkbox label input, -.radio label input { - position: absolute; - margin-left: -20px; - margin-top: 4px\9; - top: 0; - left: 0; - margin-left: 0 !important; - z-index: 1; - cursor: pointer; - opacity: 0; - filter: alpha(opacity=0); - margin-top: 0 -} - -.checkbox label input:checked+.input-frame:before, -.radio label input:checked+.input-frame:before { - background-color: #fff -} - -.checkbox label input:checked+.input-frame:after, -.radio label input:checked+.input-frame:after { - color: #047006; - opacity: 1; - line-height: 1.5; - filter: alpha(opacity=100); - -webkit-transform: scale(1); - transform: scale(1) -} - -.checkbox label input:disabled+.input-frame:before, -.radio label input:disabled+.input-frame:before { - border-color: #fff -} - -.checkbox label input:disabled:checked+.input-frame:before, -.radio label input:disabled:checked+.input-frame:before { - background: #047006 -} - -.checkbox label .input-frame:before, -.radio label .input-frame:before { - position: absolute; - content: '.5'; - top: 0; - width: 19px; - height: 19px; - border-radius: 2px; - left: 0; - border: 2px solid #f2f4f9; - -webkit-transition: all; - transition: all; - -webkit-transition-duration: 250ms; - transition-duration: 250ms -} - -.checkbox label .input-frame:after, -.radio label .input-frame:after { - line-height: 1.5; - -webkit-transition: all; - transition: all; - -webkit-transition-duration: 250ms; - transition-duration: 250ms; - font-family: Material Design Icons; - opacity: 0; - filter: alpha(opacity=0); - -webkit-transform: scale(0); - transform: scale(0); - content: '3'; - position: absolute; - font-size: .9375rem; - left: 1px; - top: -2px; - color: #fff -} - -.checkbox label { - font-size: 16; - line-height: 1.5; - padding-left: 30px -} - -.checkbox label input:checked+.input-helper:before { - background-color: #fff -} - -.checkbox label input:checked+.input-helper:after { - width: 18px; - opacity: 1; - line-height: 18px; - filter: alpha(opacity=100); - -webkit-transform: scale(1); - transform: scale(1) -} - -.checkbox label input:disabled+.input-helper:before { - border-color: #f2f4f9 -} - -.checkbox label input:disabled:checked+.input-helper:after { - color: #f2f4f9 -} - -.checkbox label .input-frame:before { - position: absolute; - content: '3'; - top: 50%; - -webkit-transform: translateY(-50%); - transform: translateY(-50%); - width: 18px; - height: 18px; - border-radius: 2px; - left: 0; - border: 2px solid #f2f4f9; - -webkit-transition: all; - transition: all; - transition-duration: 0s; - -webkit-transition-duration: 250ms; - transition-duration: 250ms -} - -.rtl .checkbox label .input-frame:before { - left: auto; - right: 0 -} - -.checkbox label .input-frame:after { - -webkit-transition: all; - transition: all; - transition-duration: 0s; - -webkit-transition-duration: 250ms; - transition-duration: 250ms; - font-family: Material Design Icons; - opacity: 0; - filter: alpha(opacity=0); - -webkit-transform: scale(0); - transform: scale(0); - content: '.5'; - position: absolute; - font-size: 15px; - font-weight: 700; - left: 0; - top: 0; - -webkit-transform: translateY(-14%); - transform: translateY(-14%); - color: #047006 -} - -.rtl .checkbox label .input-frame:after { - left: auto; - right: 0 -} - -.radio label input:checked+.input-frame:before { - background-color: #fff -} - -.radio label input:checked:disabled+.input-frame:before { - background-color: #fff; - border-color: #fff -} - -.radio label input:checked:disabled+.input-frame:after { - background-color: #047006 -} - -.radio label .input-frame:before { - border-radius: 50% -} - -.radio label .input-frame:after { - content: 'http://www.w3.org/2000/svg'; - width: 9px; - height: 9px; - background: #047006; - border-radius: 50%; - top: 5px; - left: 5px; - -webkit-transform: scale(0); - transform: scale(0) -} - -.form-inline .checkbox, -.form-inline .radio { - margin-right: 30px -} - -.form-inline .checkbox:last-child, -.form-inline .radio:last-child { - margin-right: 0 -} - -.form-inline .form-check-input { - display: none -} - -.bootstrap-tagsinput { - background: #f6f7f9; - border-color: #f0f2f5; - box-shadow: none; - min-width: 100%; - width: 100%; - max-width: 100% -} - -.bootstrap-tagsinput .tag { - display: inline-block; - background: #047006; - color: #fff; - padding: 2px 9px; - border-radius: 2px; - margin-bottom: 5px -} - -.bootstrap-tagsinput .tag:nth-child(5n+1) { - background: #047006 -} - -.bootstrap-tagsinput .tag:nth-child(5n+2) { - background: #00e093 -} - -.bootstrap-tagsinput .tag:nth-child(5n+3) { - background: #6c61f6 -} - -.bootstrap-tagsinput .tag:nth-child(5n+4) { - background: #f0825f -} - -.bootstrap-tagsinput .tag:nth-child(5n+5) { - background: #ff5f66 -} - -.page-body { - background: #fff -} - -.page-content-wrapper { - background: #f9fafb; - border-left: 1px solid #f2f4f9 -} - -@media (min-width:992px) { - .t-header .t-header-content-wrapper { - border-left: 1px solid #f2f4f9 - } - -} - -@media (min-width:768px) { - .page-body { - position: relative; - display: grid; - max-width: 100%; - grid-template-columns: 17rem calc(100vw - 17rem); - -webkit-transition: .3s; - transition: .3s - } - - .page-body .page-content-wrapper { - position: relative; - width: 100%; - min-height: 100vh; - padding: 1.5rem 2.5rem calc(90px + 1.5rem); - margin-top: 70px - } - - .page-body .page-content-wrapper .page-content-wrapper-inner { - max-width: 1140px; - margin-left: auto; - margin-right: auto - } - - .page-body .page-content-wrapper .page-content-wrapper-inner .viewport-header { - position: -webkit-sticky; - position: sticky; - top: 70px; - background: #f9fafb; - z-index: 99 - } - - .page-body .page-content-wrapper .page-content-wrapper-inner .viewport-header .breadcrumb { - padding: 1rem 1rem 1rem 21px; - margin-left: -20px; - margin-right: -20px; - background: #f9fafb - } - - .page-body .page-content-wrapper .page-content-wrapper-inner .viewport-header .breadcrumb .breadcrumb-item { - color: #565656; - letter-spacing: .03rem; - font-family: Roboto, sans-serif; - font-weight: 500 - } - - .page-body .page-content-wrapper .page-content-wrapper-inner .viewport-header .breadcrumb .breadcrumb-item a { - color: inherit - } - - .page-body .page-content-wrapper .page-content-wrapper-inner .viewport-header .breadcrumb .breadcrumb-item.active { - color: #047006 - } - - .page-body .page-content-wrapper .page-content-wrapper-inner .viewport-header .page-title-heading { - color: #565656; - font-size: 1.5rem; - font-family: Roboto, sans-serif; - font-weight: 500; - margin-bottom: 0 - } - - .page-body .page-content-wrapper .page-content-wrapper-inner .viewport-header .page-description { - opacity: .7; - margin-top: 15px - } - - body.sidebar-minimized .t-header .t-header-brand-wrapper { - background: #f9fafb - } - - body.sidebar-minimized .t-header .t-header-content-wrapper { - border-left: #f9fafb - } - - body.sidebar-minimized .page-body { - grid-template-columns: 0 100% - } - - body.sidebar-minimized .page-body .sidebar .sidebar_footer { - left: -17rem - } - - body.sidebar-minimized .page-body .sidebar .nav-category-divider { - position: initial - } - -} - -@media (max-width:991.98px) { - .t-header { - width: 100vw - } - - .t-header .t-header-brand-wrapper { - background: #f9fafb; - width: 4rem; - min-width: 4rem; - max-width: 4rem - } - - .t-header .t-header-brand-wrapper a .logo { - -webkit-animation-name: menuItemFadeIn; - animation-name: menuItemFadeIn; - -webkit-animation-duration: .25s; - animation-duration: .25s; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; - display: none - } - - @-webkit-keyframes menuItemFadeIn { - from { - -webkit-transform: translate3d(-20px, 0, 0); - transform: translate3d(-20px, 0, 0); - display: none; - opacity: 0 - } - - to { - display: block; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1 - } - - } - - @keyframes menuItemFadeIn { - from { - -webkit-transform: translate3d(-20px, 0, 0); - transform: translate3d(-20px, 0, 0); - display: none; - opacity: 0 - } - - to { - display: block; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1 - } - - } - - .t-header .t-header-brand-wrapper a .logo-mini { - display: block - } - - .page-body { - display: -webkit-box; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - flex-direction: row; - overflow: hidden; - max-width: 100% - } - - .page-body .sidebar { - position: relative; - left: 0; - z-index: 99; - width: 15rem; - min-width: 15rem; - max-width: 15rem; - margin-left: -15rem; - -webkit-transition-duration: .2s; - transition-duration: .2s; - -webkit-transition-timing-function: ease-in-out; - transition-timing-function: ease-in-out; - -webkit-transition-property: margin-left, width; - transition-property: margin-left, width - } - - .page-body .sidebar .sidebar_footer { - -webkit-transition-duration: .2s; - transition-duration: .2s; - -webkit-transition-timing-function: ease-in-out; - transition-timing-function: ease-in-out; - -webkit-transition-property: left; - transition-property: left; - left: -15rem - } - - .page-body .page-content-wrapper { - padding: 20px 20px; - min-width: 100vw; - margin-left: 0; - -webkit-transition-duration: .2s; - transition-duration: .2s; - -webkit-transition-timing-function: ease-in-out; - transition-timing-function: ease-in-out; - -webkit-transition-property: margin-left; - transition-property: margin-left - } - - .page-body .page-content-wrapper .viewport-header .breadcrumb { - background: 0 0; - padding-left: 0 - } - - .page-body .page-content-wrapper footer { - position: relative - } - - .page-body.sidebar-collpased .sidebar { - margin-left: 0; - min-width: 15rem - } - - .page-body.sidebar-collpased .sidebar .sidebar_footer { - left: 0 - } - -} - -@media (max-width:767.98px) { - .page-body .page-content-wrapper { - padding: 80px 20px 0 20px - } - -} - -.logo { - display: block; - margin: 0 auto; - width: 280px -} - -.logo img { - width: 100% -} - -.grid { - background: #fff; - border-radius: 6px; - box-shadow: 0 0 10px 0 rgba(183, 192, 206, .2); - margin-bottom: 1.5rem; - border: 1px solid rgba(238, 238, 238, .75) -} - -.grid-header { - padding: 15px 20px; - margin-bottom: 15px; - font-family: Roboto, sans-serif; - font-weight: 500; - font-size: 14px; - letter-spacing: .03rem; - background: #f9fafb; - border-left: 3px solid #047006; - border-radius: 0 6px 0 0 -} - -@media (min-width:768px) and (max-width:991px) { - .grid-header { - font-size: calc(14px + 1 * ((100vw - 768px)/ 223)) - } - -} - -@media (min-width:991px) and (max-width:1200px) { - .grid-header { - font-size: calc(15px + -1 * ((100vw - 991px)/ 209)) - } - -} - -@media (min-width:1200px) { - .grid-header { - font-size: 14px - } - -} - -.grid-title { - opacity: .9; - margin-bottom: 25px -} - -.close { - color: #101010 -} - -.split-header { - display: -webkit-box; - display: flex; - -webkit-box-pack: justify; - justify-content: space-between; - -webkit-box-align: center; - align-items: center -} - -.split-header .content-wrapper { - display: -webkit-box; - display: flex -} - -.split-header .content-wrapper a i, -.split-header .content-wrapper span i { - font-size: 20px; - color: #adb5bd; - -webkit-transition: .3s ease color; - transition: .3s ease color -} - -.split-header .content-wrapper a i:hover, -.split-header .content-wrapper span i:hover { - color: #047006 -} - -.split-header .content-wrapper.v-centered { - -webkit-box-align: center; - align-items: center -} - -.split-header .content-wrapper.h-centered { - -webkit-box-pack: center; - justify-content: center -} - -.grid-body { - padding: 20px 25px 20px -} - -.card-title { - font-size: 14px; - font-family: Roboto, sans-serif; - font-weight: 500; - color: #313131; - margin-bottom: 0 -} - -@media (min-width:768px) and (max-width:991px) { - .card-title { - font-size: calc(14px + 1 * ((100vw - 768px)/ 223)) - } - -} - -@media (min-width:991px) and (max-width:1200px) { - .card-title { - font-size: calc(15px + -1 * ((100vw - 991px)/ 209)) - } - -} - -@media (min-width:1200px) { - .card-title { - font-size: 14px - } - -} - -.equel-grid { - display: -webkit-box; - display: flex; - -webkit-box-align: stretch; - align-items: stretch -} - -.equel-grid .grid { - width: 100%; - min-width: 100% -} - -.showcase_row_area { - margin-bottom: 20px -} - -.showcase_row_area .showcase_text_area { - text-align: right -} - -@media (max-width:767.98px) { - .showcase_row_area .showcase_text_area { - text-align: left - } - -} - -.showcase_row_area .showcase_content_area { - margin-bottom: -10px -} - -.showcase_row_area .showcase_content_area .btn { - margin-right: 5px; - margin-bottom: 10px -} - -.showcase_row_area:last-child { - margin-bottom: 0 -} - -.content-preview { - width: 45px; - height: 45px -} - -.content-preview.rounded { - border-radius: 100% -} - -.btn:not(.disabled),.cursor_pointer,a { - cursor: pointer -} - -.grd-positive-currency { - color: #047006 -} - -.grd-negative-currency { - color: red -} - -.color-success { - color: var(--success) -} - -.color-danger { - color: var(--danger) -} - -.color-warning { - color: var(--warning) -} - -.color-primary { - color: var(--primary) -} - -.btn-gradido-orange { - color: #fff; - background-color: #ffa600; - border-color: #ffa600 -} - -.visible-modal { - display: block -} - -.margin-top-10 { - margin-top: 10px -} - -.pull-right { - float: right -} - -.pull-right-row { - display: block; - margin-right: 10px -} - -.display-block { - display: block -} - -p.grd_small { - margin-top: 2px; - margin-bottom: 2px -} - -ul.grd-no-style { - list-style-type: none -} - -.center-ul-container ul { - padding-left: 0; - margin-bottom: 0; - text-align: center -} - -.center-ul-container ul .grd-error { - margin-top: 5px; - color: #8b0000 -} - -.grd-alert-color { - color: #ff5f66 !important -} - -.grd-success-color { - color: #047006 !important -} - -.grd-orange-color { - color: #ffa600 -} - -.hidden { - display: none -} - -.alert { - cursor: pointer -} - -.table.table-auto-break td, -.table.table-auto-break th { - white-space: pre-line -} - -.grd-passphrase-words { - cursor: pointer -} - -.authentication-theme .reset-pwd-link, -.authentication-theme .signup-link { - margin: 20px auto 0 auto; - text-align: center; - display: -webkit-box; - display: flex; - -webkit-box-pack: center; - justify-content: center -} - -.authentication-theme .reset-pwd-link a, -.authentication-theme .signup-link a { - display: inline-block; - margin-left: 10px -} - -.authentication-theme .auth_footer { - margin-top: 30px -} - -.authentication-theme.auth-style_1 { - min-height: 100vh; - width: 100%; - background: #f9fafb; - padding: 10% 0 2px 0 -} - -.authentication-theme.auth-style_1 .logo-section { - margin-bottom: 50px -} - -.authentication-theme.auth-style_1 .grid-body { - padding: 60px 15px; - padding-bottom: 80px; - position: relative -} - -.authentication-theme.auth-style_1 .grid-body .form-wrapper { - position: unset -} - -.authentication-theme.auth-style_1 .grid-body-small { - padding: 15px 5px; - position: relative -} - -.authentication-theme.auth-style_1 .signup-link { - position: absolute; - bottom: 25px; - left: 0; - right: 0 -} - -.authentication-theme.auth-style_1 .reset-pwd-link { - position: absolute; - bottom: 20px; - left: 0; - right: 0 -} - -.authentication-theme.auth-style_2 { - display: -webkit-box; - display: flex; - -webkit-box-align: stretch; - align-items: stretch; - -webkit-box-pack: center; - justify-content: center; - min-height: 100vh -} - -.authentication-theme.auth-style_2 .inner-wrapper { - width: 100% -} - -.authentication-theme.auth-style_2 .banner-section { - background: url(http://www.placehold.it/1200x800) no-repeat center; - background-size: 60%; - background-color: #fff; - display: -webkit-box; - display: flex; - -webkit-box-align: end; - align-items: flex-end -} - -.authentication-theme.auth-style_2 .banner-section .auth_footer { - padding: 20px 20px -} - -@media (max-width:767.98px) { - .authentication-theme.auth-style_2 .banner-section { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - z-index: 0 - } - -} - -.authentication-theme.auth-style_2 .form-section { - background-color: #fff; - display: -webkit-box; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - flex-direction: column; - -webkit-box-pack: center; - justify-content: center; - -webkit-box-align: center; - align-items: center -} - -.authentication-theme.auth-style_2 .form-section .logo-section { - margin: 0 auto 50px auto -} - -.authentication-theme.auth-style_2 .form-section form { - width: 100%; - max-width: 350px; - margin: 0 auto -} - -@media (max-width:767.98px) { - .authentication-theme.auth-style_2 .form-section { - background: rgba(255, 255, 255, .96) - } - -} - -.authentication-theme.auth-style_3 { - background: url(http://www.placehold.it/1200x800) no-repeat center; - background-size: cover; - background-color: #fff; - min-height: 100vh; - height: 100%; - display: -webkit-box; - display: flex; - -webkit-box-align: stretch; - align-items: stretch; - -webkit-box-pack: center; - justify-content: center -} - -.authentication-theme.auth-style_3 .inner-wrapper { - width: 100% -} - -.authentication-theme.auth-style_3 .logo-section { - margin: 0 auto 50px auto -} - -.authentication-theme.auth-style_3 .form-section { - display: -webkit-box; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - flex-direction: column; - -webkit-box-align: center; - align-items: center; - -webkit-box-pack: center; - justify-content: center -} - -.authentication-theme.auth-style_3 .form-section form { - width: 100%; - max-width: 400px; - margin: 0 auto -} - -@media (max-width:767.98px) { - .authentication-theme.auth-style_3 .form-section form { - max-width: 300px - } - -} diff --git a/community_server/webroot/css/main.css b/community_server/webroot/css/main.css deleted file mode 100644 index 3e16f1164..000000000 --- a/community_server/webroot/css/main.css +++ /dev/null @@ -1,25 +0,0 @@ -@charset "UTF-8"; -/* ============================================================ - - Common CSS file, importing other files. - - Datei : main.css - Datum : 2020-04-30 - Autor : Christine Slotty - Copyright : Gradio - - ============================================================*/ - -@import url(normalize.css); -@import url(grd_styles.css); - -/*! debug.css v0.0.3 | MIT License | https://gist.github.com/zaydek/6b2e55258734deabbd2b4a284321d6f6 */ -[debug], -[debug] * { - color: hsla(210, 100%, 100%, 0.9) !important; - background: hsla(210, 100%, 50%, 0.5) !important; - outline: solid 0.25rem hsla(210, 100%, 100%, 0.5) !important; - - box-shadow: none !important; - filter: none !important; -} diff --git a/community_server/webroot/css/materialdesignicons.min.css b/community_server/webroot/css/materialdesignicons.min.css deleted file mode 100644 index bbdcbc816..000000000 --- a/community_server/webroot/css/materialdesignicons.min.css +++ /dev/null @@ -1,2 +0,0 @@ -/* MaterialDesignIcons.com */@font-face{font-family:"Material Design Icons";src:url("../fonts/materialdesignicons-webfont.eot?v=3.5.95");src:url("../fonts/materialdesignicons-webfont.eot?#iefix&v=3.5.95") format("embedded-opentype"),url("../fonts/materialdesignicons-webfont.woff2?v=3.5.95") format("woff2"),url("../fonts/materialdesignicons-webfont.woff?v=3.5.95") format("woff"),url("../fonts/materialdesignicons-webfont.ttf?v=3.5.95") format("truetype"),url("../fonts/materialdesignicons-webfont.svg?v=3.5.95#materialdesigniconsregular") format("svg");font-weight:normal;font-style:normal}.mdi:before,.mdi-set{display:inline-block;font:normal normal normal 24px/1 "Material Design Icons";font-size:inherit;text-rendering:auto;line-height:inherit;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.mdi-access-point:before{content:"\F002"}.mdi-access-point-network:before{content:"\F003"}.mdi-access-point-network-off:before{content:"\FBBD"}.mdi-account:before{content:"\F004"}.mdi-account-alert:before{content:"\F005"}.mdi-account-alert-outline:before{content:"\FB2C"}.mdi-account-arrow-left:before{content:"\FB2D"}.mdi-account-arrow-left-outline:before{content:"\FB2E"}.mdi-account-arrow-right:before{content:"\FB2F"}.mdi-account-arrow-right-outline:before{content:"\FB30"}.mdi-account-badge:before{content:"\FD83"}.mdi-account-badge-alert:before{content:"\FD84"}.mdi-account-badge-alert-outline:before{content:"\FD85"}.mdi-account-badge-outline:before{content:"\FD86"}.mdi-account-box:before{content:"\F006"}.mdi-account-box-multiple:before{content:"\F933"}.mdi-account-box-outline:before{content:"\F007"}.mdi-account-card-details:before{content:"\F5D2"}.mdi-account-card-details-outline:before{content:"\FD87"}.mdi-account-check:before{content:"\F008"}.mdi-account-check-outline:before{content:"\FBBE"}.mdi-account-child:before{content:"\FA88"}.mdi-account-child-circle:before{content:"\FA89"}.mdi-account-circle:before{content:"\F009"}.mdi-account-circle-outline:before{content:"\FB31"}.mdi-account-clock:before{content:"\FB32"}.mdi-account-clock-outline:before{content:"\FB33"}.mdi-account-convert:before{content:"\F00A"}.mdi-account-details:before{content:"\F631"}.mdi-account-edit:before{content:"\F6BB"}.mdi-account-group:before{content:"\F848"}.mdi-account-group-outline:before{content:"\FB34"}.mdi-account-heart:before{content:"\F898"}.mdi-account-heart-outline:before{content:"\FBBF"}.mdi-account-key:before{content:"\F00B"}.mdi-account-key-outline:before{content:"\FBC0"}.mdi-account-minus:before{content:"\F00D"}.mdi-account-minus-outline:before{content:"\FAEB"}.mdi-account-multiple:before{content:"\F00E"}.mdi-account-multiple-check:before{content:"\F8C4"}.mdi-account-multiple-minus:before{content:"\F5D3"}.mdi-account-multiple-minus-outline:before{content:"\FBC1"}.mdi-account-multiple-outline:before{content:"\F00F"}.mdi-account-multiple-plus:before{content:"\F010"}.mdi-account-multiple-plus-outline:before{content:"\F7FF"}.mdi-account-network:before{content:"\F011"}.mdi-account-network-outline:before{content:"\FBC2"}.mdi-account-off:before{content:"\F012"}.mdi-account-off-outline:before{content:"\FBC3"}.mdi-account-outline:before{content:"\F013"}.mdi-account-plus:before{content:"\F014"}.mdi-account-plus-outline:before{content:"\F800"}.mdi-account-question:before{content:"\FB35"}.mdi-account-question-outline:before{content:"\FB36"}.mdi-account-remove:before{content:"\F015"}.mdi-account-remove-outline:before{content:"\FAEC"}.mdi-account-search:before{content:"\F016"}.mdi-account-search-outline:before{content:"\F934"}.mdi-account-settings:before{content:"\F630"}.mdi-account-star:before{content:"\F017"}.mdi-account-star-outline:before{content:"\FBC4"}.mdi-account-supervisor:before{content:"\FA8A"}.mdi-account-supervisor-circle:before{content:"\FA8B"}.mdi-account-switch:before{content:"\F019"}.mdi-account-tie:before{content:"\FCBF"}.mdi-accusoft:before{content:"\F849"}.mdi-adchoices:before{content:"\FD1E"}.mdi-adjust:before{content:"\F01A"}.mdi-adobe:before{content:"\F935"}.mdi-air-conditioner:before{content:"\F01B"}.mdi-air-filter:before{content:"\FD1F"}.mdi-air-horn:before{content:"\FD88"}.mdi-air-purifier:before{content:"\FD20"}.mdi-airbag:before{content:"\FBC5"}.mdi-airballoon:before{content:"\F01C"}.mdi-airplane:before{content:"\F01D"}.mdi-airplane-landing:before{content:"\F5D4"}.mdi-airplane-off:before{content:"\F01E"}.mdi-airplane-takeoff:before{content:"\F5D5"}.mdi-airplay:before{content:"\F01F"}.mdi-airport:before{content:"\F84A"}.mdi-alarm:before{content:"\F020"}.mdi-alarm-bell:before{content:"\F78D"}.mdi-alarm-check:before{content:"\F021"}.mdi-alarm-light:before{content:"\F78E"}.mdi-alarm-light-outline:before{content:"\FBC6"}.mdi-alarm-multiple:before{content:"\F022"}.mdi-alarm-off:before{content:"\F023"}.mdi-alarm-plus:before{content:"\F024"}.mdi-alarm-snooze:before{content:"\F68D"}.mdi-album:before{content:"\F025"}.mdi-alert:before{content:"\F026"}.mdi-alert-box:before{content:"\F027"}.mdi-alert-box-outline:before{content:"\FCC0"}.mdi-alert-circle:before{content:"\F028"}.mdi-alert-circle-outline:before{content:"\F5D6"}.mdi-alert-decagram:before{content:"\F6BC"}.mdi-alert-decagram-outline:before{content:"\FCC1"}.mdi-alert-octagon:before{content:"\F029"}.mdi-alert-octagon-outline:before{content:"\FCC2"}.mdi-alert-octagram:before{content:"\F766"}.mdi-alert-octagram-outline:before{content:"\FCC3"}.mdi-alert-outline:before{content:"\F02A"}.mdi-alien:before{content:"\F899"}.mdi-all-inclusive:before{content:"\F6BD"}.mdi-alpha:before{content:"\F02B"}.mdi-alpha-a:before{content:"\41"}.mdi-alpha-a-box:before{content:"\FAED"}.mdi-alpha-a-box-outline:before{content:"\FBC7"}.mdi-alpha-a-circle:before{content:"\FBC8"}.mdi-alpha-a-circle-outline:before{content:"\FBC9"}.mdi-alpha-b:before{content:"\42"}.mdi-alpha-b-box:before{content:"\FAEE"}.mdi-alpha-b-box-outline:before{content:"\FBCA"}.mdi-alpha-b-circle:before{content:"\FBCB"}.mdi-alpha-b-circle-outline:before{content:"\FBCC"}.mdi-alpha-c:before{content:"\43"}.mdi-alpha-c-box:before{content:"\FAEF"}.mdi-alpha-c-box-outline:before{content:"\FBCD"}.mdi-alpha-c-circle:before{content:"\FBCE"}.mdi-alpha-c-circle-outline:before{content:"\FBCF"}.mdi-alpha-d:before{content:"\44"}.mdi-alpha-d-box:before{content:"\FAF0"}.mdi-alpha-d-box-outline:before{content:"\FBD0"}.mdi-alpha-d-circle:before{content:"\FBD1"}.mdi-alpha-d-circle-outline:before{content:"\FBD2"}.mdi-alpha-e:before{content:"\45"}.mdi-alpha-e-box:before{content:"\FAF1"}.mdi-alpha-e-box-outline:before{content:"\FBD3"}.mdi-alpha-e-circle:before{content:"\FBD4"}.mdi-alpha-e-circle-outline:before{content:"\FBD5"}.mdi-alpha-f:before{content:"\46"}.mdi-alpha-f-box:before{content:"\FAF2"}.mdi-alpha-f-box-outline:before{content:"\FBD6"}.mdi-alpha-f-circle:before{content:"\FBD7"}.mdi-alpha-f-circle-outline:before{content:"\FBD8"}.mdi-alpha-g:before{content:"\47"}.mdi-alpha-g-box:before{content:"\FAF3"}.mdi-alpha-g-box-outline:before{content:"\FBD9"}.mdi-alpha-g-circle:before{content:"\FBDA"}.mdi-alpha-g-circle-outline:before{content:"\FBDB"}.mdi-alpha-h:before{content:"\48"}.mdi-alpha-h-box:before{content:"\FAF4"}.mdi-alpha-h-box-outline:before{content:"\FBDC"}.mdi-alpha-h-circle:before{content:"\FBDD"}.mdi-alpha-h-circle-outline:before{content:"\FBDE"}.mdi-alpha-i:before{content:"\49"}.mdi-alpha-i-box:before{content:"\FAF5"}.mdi-alpha-i-box-outline:before{content:"\FBDF"}.mdi-alpha-i-circle:before{content:"\FBE0"}.mdi-alpha-i-circle-outline:before{content:"\FBE1"}.mdi-alpha-j:before{content:"\4A"}.mdi-alpha-j-box:before{content:"\FAF6"}.mdi-alpha-j-box-outline:before{content:"\FBE2"}.mdi-alpha-j-circle:before{content:"\FBE3"}.mdi-alpha-j-circle-outline:before{content:"\FBE4"}.mdi-alpha-k:before{content:"\4B"}.mdi-alpha-k-box:before{content:"\FAF7"}.mdi-alpha-k-box-outline:before{content:"\FBE5"}.mdi-alpha-k-circle:before{content:"\FBE6"}.mdi-alpha-k-circle-outline:before{content:"\FBE7"}.mdi-alpha-l:before{content:"\4C"}.mdi-alpha-l-box:before{content:"\FAF8"}.mdi-alpha-l-box-outline:before{content:"\FBE8"}.mdi-alpha-l-circle:before{content:"\FBE9"}.mdi-alpha-l-circle-outline:before{content:"\FBEA"}.mdi-alpha-m:before{content:"\4D"}.mdi-alpha-m-box:before{content:"\FAF9"}.mdi-alpha-m-box-outline:before{content:"\FBEB"}.mdi-alpha-m-circle:before{content:"\FBEC"}.mdi-alpha-m-circle-outline:before{content:"\FBED"}.mdi-alpha-n:before{content:"\4E"}.mdi-alpha-n-box:before{content:"\FAFA"}.mdi-alpha-n-box-outline:before{content:"\FBEE"}.mdi-alpha-n-circle:before{content:"\FBEF"}.mdi-alpha-n-circle-outline:before{content:"\FBF0"}.mdi-alpha-o:before{content:"\4F"}.mdi-alpha-o-box:before{content:"\FAFB"}.mdi-alpha-o-box-outline:before{content:"\FBF1"}.mdi-alpha-o-circle:before{content:"\FBF2"}.mdi-alpha-o-circle-outline:before{content:"\FBF3"}.mdi-alpha-p:before{content:"\50"}.mdi-alpha-p-box:before{content:"\FAFC"}.mdi-alpha-p-box-outline:before{content:"\FBF4"}.mdi-alpha-p-circle:before{content:"\FBF5"}.mdi-alpha-p-circle-outline:before{content:"\FBF6"}.mdi-alpha-q:before{content:"\51"}.mdi-alpha-q-box:before{content:"\FAFD"}.mdi-alpha-q-box-outline:before{content:"\FBF7"}.mdi-alpha-q-circle:before{content:"\FBF8"}.mdi-alpha-q-circle-outline:before{content:"\FBF9"}.mdi-alpha-r:before{content:"\52"}.mdi-alpha-r-box:before{content:"\FAFE"}.mdi-alpha-r-box-outline:before{content:"\FBFA"}.mdi-alpha-r-circle:before{content:"\FBFB"}.mdi-alpha-r-circle-outline:before{content:"\FBFC"}.mdi-alpha-s:before{content:"\53"}.mdi-alpha-s-box:before{content:"\FAFF"}.mdi-alpha-s-box-outline:before{content:"\FBFD"}.mdi-alpha-s-circle:before{content:"\FBFE"}.mdi-alpha-s-circle-outline:before{content:"\FBFF"}.mdi-alpha-t:before{content:"\54"}.mdi-alpha-t-box:before{content:"\FB00"}.mdi-alpha-t-box-outline:before{content:"\FC00"}.mdi-alpha-t-circle:before{content:"\FC01"}.mdi-alpha-t-circle-outline:before{content:"\FC02"}.mdi-alpha-u:before{content:"\55"}.mdi-alpha-u-box:before{content:"\FB01"}.mdi-alpha-u-box-outline:before{content:"\FC03"}.mdi-alpha-u-circle:before{content:"\FC04"}.mdi-alpha-u-circle-outline:before{content:"\FC05"}.mdi-alpha-v:before{content:"\56"}.mdi-alpha-v-box:before{content:"\FB02"}.mdi-alpha-v-box-outline:before{content:"\FC06"}.mdi-alpha-v-circle:before{content:"\FC07"}.mdi-alpha-v-circle-outline:before{content:"\FC08"}.mdi-alpha-w:before{content:"\57"}.mdi-alpha-w-box:before{content:"\FB03"}.mdi-alpha-w-box-outline:before{content:"\FC09"}.mdi-alpha-w-circle:before{content:"\FC0A"}.mdi-alpha-w-circle-outline:before{content:"\FC0B"}.mdi-alpha-x:before{content:"\58"}.mdi-alpha-x-box:before{content:"\FB04"}.mdi-alpha-x-box-outline:before{content:"\FC0C"}.mdi-alpha-x-circle:before{content:"\FC0D"}.mdi-alpha-x-circle-outline:before{content:"\FC0E"}.mdi-alpha-y:before{content:"\59"}.mdi-alpha-y-box:before{content:"\FB05"}.mdi-alpha-y-box-outline:before{content:"\FC0F"}.mdi-alpha-y-circle:before{content:"\FC10"}.mdi-alpha-y-circle-outline:before{content:"\FC11"}.mdi-alpha-z:before{content:"\5A"}.mdi-alpha-z-box:before{content:"\FB06"}.mdi-alpha-z-box-outline:before{content:"\FC12"}.mdi-alpha-z-circle:before{content:"\FC13"}.mdi-alpha-z-circle-outline:before{content:"\FC14"}.mdi-alphabetical:before{content:"\F02C"}.mdi-altimeter:before{content:"\F5D7"}.mdi-amazon:before{content:"\F02D"}.mdi-amazon-alexa:before{content:"\F8C5"}.mdi-amazon-drive:before{content:"\F02E"}.mdi-ambulance:before{content:"\F02F"}.mdi-ammunition:before{content:"\FCC4"}.mdi-ampersand:before{content:"\FA8C"}.mdi-amplifier:before{content:"\F030"}.mdi-anchor:before{content:"\F031"}.mdi-android:before{content:"\F032"}.mdi-android-auto:before{content:"\FA8D"}.mdi-android-debug-bridge:before{content:"\F033"}.mdi-android-head:before{content:"\F78F"}.mdi-android-messages:before{content:"\FD21"}.mdi-android-studio:before{content:"\F034"}.mdi-angle-acute:before{content:"\F936"}.mdi-angle-obtuse:before{content:"\F937"}.mdi-angle-right:before{content:"\F938"}.mdi-angular:before{content:"\F6B1"}.mdi-angularjs:before{content:"\F6BE"}.mdi-animation:before{content:"\F5D8"}.mdi-animation-outline:before{content:"\FA8E"}.mdi-animation-play:before{content:"\F939"}.mdi-animation-play-outline:before{content:"\FA8F"}.mdi-anvil:before{content:"\F89A"}.mdi-apple:before{content:"\F035"}.mdi-apple-finder:before{content:"\F036"}.mdi-apple-icloud:before{content:"\F038"}.mdi-apple-ios:before{content:"\F037"}.mdi-apple-keyboard-caps:before{content:"\F632"}.mdi-apple-keyboard-command:before{content:"\F633"}.mdi-apple-keyboard-control:before{content:"\F634"}.mdi-apple-keyboard-option:before{content:"\F635"}.mdi-apple-keyboard-shift:before{content:"\F636"}.mdi-apple-safari:before{content:"\F039"}.mdi-application:before{content:"\F614"}.mdi-application-export:before{content:"\FD89"}.mdi-application-import:before{content:"\FD8A"}.mdi-apps:before{content:"\F03B"}.mdi-apps-box:before{content:"\FD22"}.mdi-arch:before{content:"\F8C6"}.mdi-archive:before{content:"\F03C"}.mdi-arrange-bring-forward:before{content:"\F03D"}.mdi-arrange-bring-to-front:before{content:"\F03E"}.mdi-arrange-send-backward:before{content:"\F03F"}.mdi-arrange-send-to-back:before{content:"\F040"}.mdi-arrow-all:before{content:"\F041"}.mdi-arrow-bottom-left:before{content:"\F042"}.mdi-arrow-bottom-left-bold-outline:before{content:"\F9B6"}.mdi-arrow-bottom-left-thick:before{content:"\F9B7"}.mdi-arrow-bottom-right:before{content:"\F043"}.mdi-arrow-bottom-right-bold-outline:before{content:"\F9B8"}.mdi-arrow-bottom-right-thick:before{content:"\F9B9"}.mdi-arrow-collapse:before{content:"\F615"}.mdi-arrow-collapse-all:before{content:"\F044"}.mdi-arrow-collapse-down:before{content:"\F791"}.mdi-arrow-collapse-horizontal:before{content:"\F84B"}.mdi-arrow-collapse-left:before{content:"\F792"}.mdi-arrow-collapse-right:before{content:"\F793"}.mdi-arrow-collapse-up:before{content:"\F794"}.mdi-arrow-collapse-vertical:before{content:"\F84C"}.mdi-arrow-decision:before{content:"\F9BA"}.mdi-arrow-decision-auto:before{content:"\F9BB"}.mdi-arrow-decision-auto-outline:before{content:"\F9BC"}.mdi-arrow-decision-outline:before{content:"\F9BD"}.mdi-arrow-down:before{content:"\F045"}.mdi-arrow-down-bold:before{content:"\F72D"}.mdi-arrow-down-bold-box:before{content:"\F72E"}.mdi-arrow-down-bold-box-outline:before{content:"\F72F"}.mdi-arrow-down-bold-circle:before{content:"\F047"}.mdi-arrow-down-bold-circle-outline:before{content:"\F048"}.mdi-arrow-down-bold-hexagon-outline:before{content:"\F049"}.mdi-arrow-down-bold-outline:before{content:"\F9BE"}.mdi-arrow-down-box:before{content:"\F6BF"}.mdi-arrow-down-circle:before{content:"\FCB7"}.mdi-arrow-down-circle-outline:before{content:"\FCB8"}.mdi-arrow-down-drop-circle:before{content:"\F04A"}.mdi-arrow-down-drop-circle-outline:before{content:"\F04B"}.mdi-arrow-down-thick:before{content:"\F046"}.mdi-arrow-expand:before{content:"\F616"}.mdi-arrow-expand-all:before{content:"\F04C"}.mdi-arrow-expand-down:before{content:"\F795"}.mdi-arrow-expand-horizontal:before{content:"\F84D"}.mdi-arrow-expand-left:before{content:"\F796"}.mdi-arrow-expand-right:before{content:"\F797"}.mdi-arrow-expand-up:before{content:"\F798"}.mdi-arrow-expand-vertical:before{content:"\F84E"}.mdi-arrow-left:before{content:"\F04D"}.mdi-arrow-left-bold:before{content:"\F730"}.mdi-arrow-left-bold-box:before{content:"\F731"}.mdi-arrow-left-bold-box-outline:before{content:"\F732"}.mdi-arrow-left-bold-circle:before{content:"\F04F"}.mdi-arrow-left-bold-circle-outline:before{content:"\F050"}.mdi-arrow-left-bold-hexagon-outline:before{content:"\F051"}.mdi-arrow-left-bold-outline:before{content:"\F9BF"}.mdi-arrow-left-box:before{content:"\F6C0"}.mdi-arrow-left-circle:before{content:"\FCB9"}.mdi-arrow-left-circle-outline:before{content:"\FCBA"}.mdi-arrow-left-drop-circle:before{content:"\F052"}.mdi-arrow-left-drop-circle-outline:before{content:"\F053"}.mdi-arrow-left-right-bold-outline:before{content:"\F9C0"}.mdi-arrow-left-thick:before{content:"\F04E"}.mdi-arrow-right:before{content:"\F054"}.mdi-arrow-right-bold:before{content:"\F733"}.mdi-arrow-right-bold-box:before{content:"\F734"}.mdi-arrow-right-bold-box-outline:before{content:"\F735"}.mdi-arrow-right-bold-circle:before{content:"\F056"}.mdi-arrow-right-bold-circle-outline:before{content:"\F057"}.mdi-arrow-right-bold-hexagon-outline:before{content:"\F058"}.mdi-arrow-right-bold-outline:before{content:"\F9C1"}.mdi-arrow-right-box:before{content:"\F6C1"}.mdi-arrow-right-circle:before{content:"\FCBB"}.mdi-arrow-right-circle-outline:before{content:"\FCBC"}.mdi-arrow-right-drop-circle:before{content:"\F059"}.mdi-arrow-right-drop-circle-outline:before{content:"\F05A"}.mdi-arrow-right-thick:before{content:"\F055"}.mdi-arrow-split-horizontal:before{content:"\F93A"}.mdi-arrow-split-vertical:before{content:"\F93B"}.mdi-arrow-top-left:before{content:"\F05B"}.mdi-arrow-top-left-bold-outline:before{content:"\F9C2"}.mdi-arrow-top-left-thick:before{content:"\F9C3"}.mdi-arrow-top-right:before{content:"\F05C"}.mdi-arrow-top-right-bold-outline:before{content:"\F9C4"}.mdi-arrow-top-right-thick:before{content:"\F9C5"}.mdi-arrow-up:before{content:"\F05D"}.mdi-arrow-up-bold:before{content:"\F736"}.mdi-arrow-up-bold-box:before{content:"\F737"}.mdi-arrow-up-bold-box-outline:before{content:"\F738"}.mdi-arrow-up-bold-circle:before{content:"\F05F"}.mdi-arrow-up-bold-circle-outline:before{content:"\F060"}.mdi-arrow-up-bold-hexagon-outline:before{content:"\F061"}.mdi-arrow-up-bold-outline:before{content:"\F9C6"}.mdi-arrow-up-box:before{content:"\F6C2"}.mdi-arrow-up-circle:before{content:"\FCBD"}.mdi-arrow-up-circle-outline:before{content:"\FCBE"}.mdi-arrow-up-down-bold-outline:before{content:"\F9C7"}.mdi-arrow-up-drop-circle:before{content:"\F062"}.mdi-arrow-up-drop-circle-outline:before{content:"\F063"}.mdi-arrow-up-thick:before{content:"\F05E"}.mdi-artist:before{content:"\F802"}.mdi-artist-outline:before{content:"\FCC5"}.mdi-artstation:before{content:"\FB37"}.mdi-aspect-ratio:before{content:"\FA23"}.mdi-assistant:before{content:"\F064"}.mdi-asterisk:before{content:"\F6C3"}.mdi-at:before{content:"\F065"}.mdi-atlassian:before{content:"\F803"}.mdi-atm:before{content:"\FD23"}.mdi-atom:before{content:"\F767"}.mdi-attachment:before{content:"\F066"}.mdi-audio-video:before{content:"\F93C"}.mdi-audiobook:before{content:"\F067"}.mdi-augmented-reality:before{content:"\F84F"}.mdi-auto-fix:before{content:"\F068"}.mdi-auto-upload:before{content:"\F069"}.mdi-autorenew:before{content:"\F06A"}.mdi-av-timer:before{content:"\F06B"}.mdi-axe:before{content:"\F8C7"}.mdi-axis:before{content:"\FD24"}.mdi-axis-arrow:before{content:"\FD25"}.mdi-axis-arrow-lock:before{content:"\FD26"}.mdi-axis-lock:before{content:"\FD27"}.mdi-axis-x-arrow:before{content:"\FD28"}.mdi-axis-x-arrow-lock:before{content:"\FD29"}.mdi-axis-x-rotate-clockwise:before{content:"\FD2A"}.mdi-axis-x-rotate-counterclockwise:before{content:"\FD2B"}.mdi-axis-x-y-arrow-lock:before{content:"\FD2C"}.mdi-axis-y-arrow:before{content:"\FD2D"}.mdi-axis-y-arrow-lock:before{content:"\FD2E"}.mdi-axis-y-rotate-clockwise:before{content:"\FD2F"}.mdi-axis-y-rotate-counterclockwise:before{content:"\FD30"}.mdi-axis-z-arrow:before{content:"\FD31"}.mdi-axis-z-arrow-lock:before{content:"\FD32"}.mdi-axis-z-rotate-clockwise:before{content:"\FD33"}.mdi-axis-z-rotate-counterclockwise:before{content:"\FD34"}.mdi-azure:before{content:"\F804"}.mdi-babel:before{content:"\FA24"}.mdi-baby:before{content:"\F06C"}.mdi-baby-buggy:before{content:"\F68E"}.mdi-backburger:before{content:"\F06D"}.mdi-backspace:before{content:"\F06E"}.mdi-backspace-outline:before{content:"\FB38"}.mdi-backup-restore:before{content:"\F06F"}.mdi-badminton:before{content:"\F850"}.mdi-balloon:before{content:"\FA25"}.mdi-ballot:before{content:"\F9C8"}.mdi-ballot-outline:before{content:"\F9C9"}.mdi-ballot-recount:before{content:"\FC15"}.mdi-ballot-recount-outline:before{content:"\FC16"}.mdi-bandage:before{content:"\FD8B"}.mdi-bandcamp:before{content:"\F674"}.mdi-bank:before{content:"\F070"}.mdi-bank-minus:before{content:"\FD8C"}.mdi-bank-plus:before{content:"\FD8D"}.mdi-bank-remove:before{content:"\FD8E"}.mdi-bank-transfer:before{content:"\FA26"}.mdi-bank-transfer-in:before{content:"\FA27"}.mdi-bank-transfer-out:before{content:"\FA28"}.mdi-barcode:before{content:"\F071"}.mdi-barcode-scan:before{content:"\F072"}.mdi-barley:before{content:"\F073"}.mdi-barley-off:before{content:"\FB39"}.mdi-barn:before{content:"\FB3A"}.mdi-barrel:before{content:"\F074"}.mdi-baseball:before{content:"\F851"}.mdi-baseball-bat:before{content:"\F852"}.mdi-basecamp:before{content:"\F075"}.mdi-basket:before{content:"\F076"}.mdi-basket-fill:before{content:"\F077"}.mdi-basket-unfill:before{content:"\F078"}.mdi-basketball:before{content:"\F805"}.mdi-basketball-hoop:before{content:"\FC17"}.mdi-basketball-hoop-outline:before{content:"\FC18"}.mdi-bat:before{content:"\FB3B"}.mdi-battery:before{content:"\F079"}.mdi-battery-10:before{content:"\F07A"}.mdi-battery-10-bluetooth:before{content:"\F93D"}.mdi-battery-20:before{content:"\F07B"}.mdi-battery-20-bluetooth:before{content:"\F93E"}.mdi-battery-30:before{content:"\F07C"}.mdi-battery-30-bluetooth:before{content:"\F93F"}.mdi-battery-40:before{content:"\F07D"}.mdi-battery-40-bluetooth:before{content:"\F940"}.mdi-battery-50:before{content:"\F07E"}.mdi-battery-50-bluetooth:before{content:"\F941"}.mdi-battery-60:before{content:"\F07F"}.mdi-battery-60-bluetooth:before{content:"\F942"}.mdi-battery-70:before{content:"\F080"}.mdi-battery-70-bluetooth:before{content:"\F943"}.mdi-battery-80:before{content:"\F081"}.mdi-battery-80-bluetooth:before{content:"\F944"}.mdi-battery-90:before{content:"\F082"}.mdi-battery-90-bluetooth:before{content:"\F945"}.mdi-battery-alert:before{content:"\F083"}.mdi-battery-alert-bluetooth:before{content:"\F946"}.mdi-battery-bluetooth:before{content:"\F947"}.mdi-battery-bluetooth-variant:before{content:"\F948"}.mdi-battery-charging:before{content:"\F084"}.mdi-battery-charging-10:before{content:"\F89B"}.mdi-battery-charging-100:before{content:"\F085"}.mdi-battery-charging-20:before{content:"\F086"}.mdi-battery-charging-30:before{content:"\F087"}.mdi-battery-charging-40:before{content:"\F088"}.mdi-battery-charging-50:before{content:"\F89C"}.mdi-battery-charging-60:before{content:"\F089"}.mdi-battery-charging-70:before{content:"\F89D"}.mdi-battery-charging-80:before{content:"\F08A"}.mdi-battery-charging-90:before{content:"\F08B"}.mdi-battery-charging-outline:before{content:"\F89E"}.mdi-battery-charging-wireless:before{content:"\F806"}.mdi-battery-charging-wireless-10:before{content:"\F807"}.mdi-battery-charging-wireless-20:before{content:"\F808"}.mdi-battery-charging-wireless-30:before{content:"\F809"}.mdi-battery-charging-wireless-40:before{content:"\F80A"}.mdi-battery-charging-wireless-50:before{content:"\F80B"}.mdi-battery-charging-wireless-60:before{content:"\F80C"}.mdi-battery-charging-wireless-70:before{content:"\F80D"}.mdi-battery-charging-wireless-80:before{content:"\F80E"}.mdi-battery-charging-wireless-90:before{content:"\F80F"}.mdi-battery-charging-wireless-alert:before{content:"\F810"}.mdi-battery-charging-wireless-outline:before{content:"\F811"}.mdi-battery-minus:before{content:"\F08C"}.mdi-battery-negative:before{content:"\F08D"}.mdi-battery-outline:before{content:"\F08E"}.mdi-battery-plus:before{content:"\F08F"}.mdi-battery-positive:before{content:"\F090"}.mdi-battery-unknown:before{content:"\F091"}.mdi-battery-unknown-bluetooth:before{content:"\F949"}.mdi-battlenet:before{content:"\FB3C"}.mdi-beach:before{content:"\F092"}.mdi-beaker:before{content:"\FCC6"}.mdi-beaker-outline:before{content:"\F68F"}.mdi-beats:before{content:"\F097"}.mdi-bed-empty:before{content:"\F89F"}.mdi-beer:before{content:"\F098"}.mdi-behance:before{content:"\F099"}.mdi-bell:before{content:"\F09A"}.mdi-bell-alert:before{content:"\FD35"}.mdi-bell-circle:before{content:"\FD36"}.mdi-bell-circle-outline:before{content:"\FD37"}.mdi-bell-off:before{content:"\F09B"}.mdi-bell-off-outline:before{content:"\FA90"}.mdi-bell-outline:before{content:"\F09C"}.mdi-bell-plus:before{content:"\F09D"}.mdi-bell-plus-outline:before{content:"\FA91"}.mdi-bell-ring:before{content:"\F09E"}.mdi-bell-ring-outline:before{content:"\F09F"}.mdi-bell-sleep:before{content:"\F0A0"}.mdi-bell-sleep-outline:before{content:"\FA92"}.mdi-beta:before{content:"\F0A1"}.mdi-betamax:before{content:"\F9CA"}.mdi-bible:before{content:"\F0A2"}.mdi-bike:before{content:"\F0A3"}.mdi-billiards:before{content:"\FB3D"}.mdi-billiards-rack:before{content:"\FB3E"}.mdi-bing:before{content:"\F0A4"}.mdi-binoculars:before{content:"\F0A5"}.mdi-bio:before{content:"\F0A6"}.mdi-biohazard:before{content:"\F0A7"}.mdi-bitbucket:before{content:"\F0A8"}.mdi-bitcoin:before{content:"\F812"}.mdi-black-mesa:before{content:"\F0A9"}.mdi-blackberry:before{content:"\F0AA"}.mdi-blender:before{content:"\FCC7"}.mdi-blender-software:before{content:"\F0AB"}.mdi-blinds:before{content:"\F0AC"}.mdi-block-helper:before{content:"\F0AD"}.mdi-blogger:before{content:"\F0AE"}.mdi-blood-bag:before{content:"\FCC8"}.mdi-bluetooth:before{content:"\F0AF"}.mdi-bluetooth-audio:before{content:"\F0B0"}.mdi-bluetooth-connect:before{content:"\F0B1"}.mdi-bluetooth-off:before{content:"\F0B2"}.mdi-bluetooth-settings:before{content:"\F0B3"}.mdi-bluetooth-transfer:before{content:"\F0B4"}.mdi-blur:before{content:"\F0B5"}.mdi-blur-linear:before{content:"\F0B6"}.mdi-blur-off:before{content:"\F0B7"}.mdi-blur-radial:before{content:"\F0B8"}.mdi-bolnisi-cross:before{content:"\FCC9"}.mdi-bolt:before{content:"\FD8F"}.mdi-bomb:before{content:"\F690"}.mdi-bomb-off:before{content:"\F6C4"}.mdi-bone:before{content:"\F0B9"}.mdi-book:before{content:"\F0BA"}.mdi-book-lock:before{content:"\F799"}.mdi-book-lock-open:before{content:"\F79A"}.mdi-book-minus:before{content:"\F5D9"}.mdi-book-multiple:before{content:"\F0BB"}.mdi-book-multiple-minus:before{content:"\FA93"}.mdi-book-multiple-plus:before{content:"\FA94"}.mdi-book-multiple-remove:before{content:"\FA95"}.mdi-book-multiple-variant:before{content:"\F0BC"}.mdi-book-open:before{content:"\F0BD"}.mdi-book-open-outline:before{content:"\FB3F"}.mdi-book-open-page-variant:before{content:"\F5DA"}.mdi-book-open-variant:before{content:"\F0BE"}.mdi-book-outline:before{content:"\FB40"}.mdi-book-plus:before{content:"\F5DB"}.mdi-book-remove:before{content:"\FA96"}.mdi-book-variant:before{content:"\F0BF"}.mdi-bookmark:before{content:"\F0C0"}.mdi-bookmark-check:before{content:"\F0C1"}.mdi-bookmark-minus:before{content:"\F9CB"}.mdi-bookmark-minus-outline:before{content:"\F9CC"}.mdi-bookmark-music:before{content:"\F0C2"}.mdi-bookmark-off:before{content:"\F9CD"}.mdi-bookmark-off-outline:before{content:"\F9CE"}.mdi-bookmark-outline:before{content:"\F0C3"}.mdi-bookmark-plus:before{content:"\F0C5"}.mdi-bookmark-plus-outline:before{content:"\F0C4"}.mdi-bookmark-remove:before{content:"\F0C6"}.mdi-boombox:before{content:"\F5DC"}.mdi-bootstrap:before{content:"\F6C5"}.mdi-border-all:before{content:"\F0C7"}.mdi-border-all-variant:before{content:"\F8A0"}.mdi-border-bottom:before{content:"\F0C8"}.mdi-border-bottom-variant:before{content:"\F8A1"}.mdi-border-color:before{content:"\F0C9"}.mdi-border-horizontal:before{content:"\F0CA"}.mdi-border-inside:before{content:"\F0CB"}.mdi-border-left:before{content:"\F0CC"}.mdi-border-left-variant:before{content:"\F8A2"}.mdi-border-none:before{content:"\F0CD"}.mdi-border-none-variant:before{content:"\F8A3"}.mdi-border-outside:before{content:"\F0CE"}.mdi-border-right:before{content:"\F0CF"}.mdi-border-right-variant:before{content:"\F8A4"}.mdi-border-style:before{content:"\F0D0"}.mdi-border-top:before{content:"\F0D1"}.mdi-border-top-variant:before{content:"\F8A5"}.mdi-border-vertical:before{content:"\F0D2"}.mdi-bottle-wine:before{content:"\F853"}.mdi-bow-tie:before{content:"\F677"}.mdi-bowl:before{content:"\F617"}.mdi-bowling:before{content:"\F0D3"}.mdi-box:before{content:"\F0D4"}.mdi-box-cutter:before{content:"\F0D5"}.mdi-box-shadow:before{content:"\F637"}.mdi-boxing-glove:before{content:"\FB41"}.mdi-braille:before{content:"\F9CF"}.mdi-brain:before{content:"\F9D0"}.mdi-bread-slice:before{content:"\FCCA"}.mdi-bread-slice-outline:before{content:"\FCCB"}.mdi-bridge:before{content:"\F618"}.mdi-briefcase:before{content:"\F0D6"}.mdi-briefcase-account:before{content:"\FCCC"}.mdi-briefcase-account-outline:before{content:"\FCCD"}.mdi-briefcase-check:before{content:"\F0D7"}.mdi-briefcase-download:before{content:"\F0D8"}.mdi-briefcase-download-outline:before{content:"\FC19"}.mdi-briefcase-edit:before{content:"\FA97"}.mdi-briefcase-edit-outline:before{content:"\FC1A"}.mdi-briefcase-minus:before{content:"\FA29"}.mdi-briefcase-minus-outline:before{content:"\FC1B"}.mdi-briefcase-outline:before{content:"\F813"}.mdi-briefcase-plus:before{content:"\FA2A"}.mdi-briefcase-plus-outline:before{content:"\FC1C"}.mdi-briefcase-remove:before{content:"\FA2B"}.mdi-briefcase-remove-outline:before{content:"\FC1D"}.mdi-briefcase-search:before{content:"\FA2C"}.mdi-briefcase-search-outline:before{content:"\FC1E"}.mdi-briefcase-upload:before{content:"\F0D9"}.mdi-briefcase-upload-outline:before{content:"\FC1F"}.mdi-brightness-1:before{content:"\F0DA"}.mdi-brightness-2:before{content:"\F0DB"}.mdi-brightness-3:before{content:"\F0DC"}.mdi-brightness-4:before{content:"\F0DD"}.mdi-brightness-5:before{content:"\F0DE"}.mdi-brightness-6:before{content:"\F0DF"}.mdi-brightness-7:before{content:"\F0E0"}.mdi-brightness-auto:before{content:"\F0E1"}.mdi-brightness-percent:before{content:"\FCCE"}.mdi-broom:before{content:"\F0E2"}.mdi-brush:before{content:"\F0E3"}.mdi-buddhism:before{content:"\F94A"}.mdi-buffer:before{content:"\F619"}.mdi-bug:before{content:"\F0E4"}.mdi-bug-check:before{content:"\FA2D"}.mdi-bug-check-outline:before{content:"\FA2E"}.mdi-bug-outline:before{content:"\FA2F"}.mdi-bugle:before{content:"\FD90"}.mdi-bulldozer:before{content:"\FB07"}.mdi-bullet:before{content:"\FCCF"}.mdi-bulletin-board:before{content:"\F0E5"}.mdi-bullhorn:before{content:"\F0E6"}.mdi-bullhorn-outline:before{content:"\FB08"}.mdi-bullseye:before{content:"\F5DD"}.mdi-bullseye-arrow:before{content:"\F8C8"}.mdi-bus:before{content:"\F0E7"}.mdi-bus-alert:before{content:"\FA98"}.mdi-bus-articulated-end:before{content:"\F79B"}.mdi-bus-articulated-front:before{content:"\F79C"}.mdi-bus-clock:before{content:"\F8C9"}.mdi-bus-double-decker:before{content:"\F79D"}.mdi-bus-school:before{content:"\F79E"}.mdi-bus-side:before{content:"\F79F"}.mdi-cached:before{content:"\F0E8"}.mdi-cactus:before{content:"\FD91"}.mdi-cake:before{content:"\F0E9"}.mdi-cake-layered:before{content:"\F0EA"}.mdi-cake-variant:before{content:"\F0EB"}.mdi-calculator:before{content:"\F0EC"}.mdi-calculator-variant:before{content:"\FA99"}.mdi-calendar:before{content:"\F0ED"}.mdi-calendar-alert:before{content:"\FA30"}.mdi-calendar-blank:before{content:"\F0EE"}.mdi-calendar-blank-outline:before{content:"\FB42"}.mdi-calendar-check:before{content:"\F0EF"}.mdi-calendar-check-outline:before{content:"\FC20"}.mdi-calendar-clock:before{content:"\F0F0"}.mdi-calendar-edit:before{content:"\F8A6"}.mdi-calendar-export:before{content:"\FB09"}.mdi-calendar-heart:before{content:"\F9D1"}.mdi-calendar-import:before{content:"\FB0A"}.mdi-calendar-minus:before{content:"\FD38"}.mdi-calendar-multiple:before{content:"\F0F1"}.mdi-calendar-multiple-check:before{content:"\F0F2"}.mdi-calendar-multiselect:before{content:"\FA31"}.mdi-calendar-outline:before{content:"\FB43"}.mdi-calendar-plus:before{content:"\F0F3"}.mdi-calendar-question:before{content:"\F691"}.mdi-calendar-range:before{content:"\F678"}.mdi-calendar-range-outline:before{content:"\FB44"}.mdi-calendar-remove:before{content:"\F0F4"}.mdi-calendar-remove-outline:before{content:"\FC21"}.mdi-calendar-search:before{content:"\F94B"}.mdi-calendar-star:before{content:"\F9D2"}.mdi-calendar-text:before{content:"\F0F5"}.mdi-calendar-text-outline:before{content:"\FC22"}.mdi-calendar-today:before{content:"\F0F6"}.mdi-calendar-week:before{content:"\FA32"}.mdi-calendar-week-begin:before{content:"\FA33"}.mdi-call-made:before{content:"\F0F7"}.mdi-call-merge:before{content:"\F0F8"}.mdi-call-missed:before{content:"\F0F9"}.mdi-call-received:before{content:"\F0FA"}.mdi-call-split:before{content:"\F0FB"}.mdi-camcorder:before{content:"\F0FC"}.mdi-camcorder-box:before{content:"\F0FD"}.mdi-camcorder-box-off:before{content:"\F0FE"}.mdi-camcorder-off:before{content:"\F0FF"}.mdi-camera:before{content:"\F100"}.mdi-camera-account:before{content:"\F8CA"}.mdi-camera-burst:before{content:"\F692"}.mdi-camera-control:before{content:"\FB45"}.mdi-camera-enhance:before{content:"\F101"}.mdi-camera-enhance-outline:before{content:"\FB46"}.mdi-camera-front:before{content:"\F102"}.mdi-camera-front-variant:before{content:"\F103"}.mdi-camera-gopro:before{content:"\F7A0"}.mdi-camera-image:before{content:"\F8CB"}.mdi-camera-iris:before{content:"\F104"}.mdi-camera-metering-center:before{content:"\F7A1"}.mdi-camera-metering-matrix:before{content:"\F7A2"}.mdi-camera-metering-partial:before{content:"\F7A3"}.mdi-camera-metering-spot:before{content:"\F7A4"}.mdi-camera-off:before{content:"\F5DF"}.mdi-camera-outline:before{content:"\FD39"}.mdi-camera-party-mode:before{content:"\F105"}.mdi-camera-rear:before{content:"\F106"}.mdi-camera-rear-variant:before{content:"\F107"}.mdi-camera-switch:before{content:"\F108"}.mdi-camera-timer:before{content:"\F109"}.mdi-camera-wireless:before{content:"\FD92"}.mdi-camera-wireless-outline:before{content:"\FD93"}.mdi-cancel:before{content:"\F739"}.mdi-candle:before{content:"\F5E2"}.mdi-candycane:before{content:"\F10A"}.mdi-cannabis:before{content:"\F7A5"}.mdi-caps-lock:before{content:"\FA9A"}.mdi-car:before{content:"\F10B"}.mdi-car-battery:before{content:"\F10C"}.mdi-car-brake-abs:before{content:"\FC23"}.mdi-car-brake-alert:before{content:"\FC24"}.mdi-car-brake-hold:before{content:"\FD3A"}.mdi-car-brake-parking:before{content:"\FD3B"}.mdi-car-connected:before{content:"\F10D"}.mdi-car-convertible:before{content:"\F7A6"}.mdi-car-cruise-control:before{content:"\FD3C"}.mdi-car-defrost-front:before{content:"\FD3D"}.mdi-car-defrost-rear:before{content:"\FD3E"}.mdi-car-door:before{content:"\FB47"}.mdi-car-electric:before{content:"\FB48"}.mdi-car-esp:before{content:"\FC25"}.mdi-car-estate:before{content:"\F7A7"}.mdi-car-hatchback:before{content:"\F7A8"}.mdi-car-key:before{content:"\FB49"}.mdi-car-light-dimmed:before{content:"\FC26"}.mdi-car-light-fog:before{content:"\FC27"}.mdi-car-light-high:before{content:"\FC28"}.mdi-car-limousine:before{content:"\F8CC"}.mdi-car-multiple:before{content:"\FB4A"}.mdi-car-parking-lights:before{content:"\FD3F"}.mdi-car-pickup:before{content:"\F7A9"}.mdi-car-side:before{content:"\F7AA"}.mdi-car-sports:before{content:"\F7AB"}.mdi-car-tire-alert:before{content:"\FC29"}.mdi-car-traction-control:before{content:"\FD40"}.mdi-car-wash:before{content:"\F10E"}.mdi-caravan:before{content:"\F7AC"}.mdi-card:before{content:"\FB4B"}.mdi-card-bulleted:before{content:"\FB4C"}.mdi-card-bulleted-off:before{content:"\FB4D"}.mdi-card-bulleted-off-outline:before{content:"\FB4E"}.mdi-card-bulleted-outline:before{content:"\FB4F"}.mdi-card-bulleted-settings:before{content:"\FB50"}.mdi-card-bulleted-settings-outline:before{content:"\FB51"}.mdi-card-outline:before{content:"\FB52"}.mdi-card-text:before{content:"\FB53"}.mdi-card-text-outline:before{content:"\FB54"}.mdi-cards:before{content:"\F638"}.mdi-cards-club:before{content:"\F8CD"}.mdi-cards-diamond:before{content:"\F8CE"}.mdi-cards-heart:before{content:"\F8CF"}.mdi-cards-outline:before{content:"\F639"}.mdi-cards-playing-outline:before{content:"\F63A"}.mdi-cards-spade:before{content:"\F8D0"}.mdi-cards-variant:before{content:"\F6C6"}.mdi-carrot:before{content:"\F10F"}.mdi-carry-on-bag-check:before{content:"\FD41"}.mdi-cart:before{content:"\F110"}.mdi-cart-arrow-down:before{content:"\FD42"}.mdi-cart-arrow-right:before{content:"\FC2A"}.mdi-cart-arrow-up:before{content:"\FD43"}.mdi-cart-minus:before{content:"\FD44"}.mdi-cart-off:before{content:"\F66B"}.mdi-cart-outline:before{content:"\F111"}.mdi-cart-plus:before{content:"\F112"}.mdi-cart-remove:before{content:"\FD45"}.mdi-case-sensitive-alt:before{content:"\F113"}.mdi-cash:before{content:"\F114"}.mdi-cash-100:before{content:"\F115"}.mdi-cash-marker:before{content:"\FD94"}.mdi-cash-multiple:before{content:"\F116"}.mdi-cash-refund:before{content:"\FA9B"}.mdi-cash-register:before{content:"\FCD0"}.mdi-cash-usd:before{content:"\F117"}.mdi-cassette:before{content:"\F9D3"}.mdi-cast:before{content:"\F118"}.mdi-cast-connected:before{content:"\F119"}.mdi-cast-off:before{content:"\F789"}.mdi-castle:before{content:"\F11A"}.mdi-cat:before{content:"\F11B"}.mdi-cctv:before{content:"\F7AD"}.mdi-ceiling-light:before{content:"\F768"}.mdi-cellphone:before{content:"\F11C"}.mdi-cellphone-android:before{content:"\F11D"}.mdi-cellphone-arrow-down:before{content:"\F9D4"}.mdi-cellphone-basic:before{content:"\F11E"}.mdi-cellphone-dock:before{content:"\F11F"}.mdi-cellphone-erase:before{content:"\F94C"}.mdi-cellphone-iphone:before{content:"\F120"}.mdi-cellphone-key:before{content:"\F94D"}.mdi-cellphone-link:before{content:"\F121"}.mdi-cellphone-link-off:before{content:"\F122"}.mdi-cellphone-lock:before{content:"\F94E"}.mdi-cellphone-message:before{content:"\F8D2"}.mdi-cellphone-off:before{content:"\F94F"}.mdi-cellphone-screenshot:before{content:"\FA34"}.mdi-cellphone-settings:before{content:"\F123"}.mdi-cellphone-settings-variant:before{content:"\F950"}.mdi-cellphone-sound:before{content:"\F951"}.mdi-cellphone-text:before{content:"\F8D1"}.mdi-cellphone-wireless:before{content:"\F814"}.mdi-celtic-cross:before{content:"\FCD1"}.mdi-certificate:before{content:"\F124"}.mdi-chair-school:before{content:"\F125"}.mdi-charity:before{content:"\FC2B"}.mdi-chart-arc:before{content:"\F126"}.mdi-chart-areaspline:before{content:"\F127"}.mdi-chart-bar:before{content:"\F128"}.mdi-chart-bar-stacked:before{content:"\F769"}.mdi-chart-bell-curve:before{content:"\FC2C"}.mdi-chart-bubble:before{content:"\F5E3"}.mdi-chart-donut:before{content:"\F7AE"}.mdi-chart-donut-variant:before{content:"\F7AF"}.mdi-chart-gantt:before{content:"\F66C"}.mdi-chart-histogram:before{content:"\F129"}.mdi-chart-line:before{content:"\F12A"}.mdi-chart-line-stacked:before{content:"\F76A"}.mdi-chart-line-variant:before{content:"\F7B0"}.mdi-chart-multiline:before{content:"\F8D3"}.mdi-chart-pie:before{content:"\F12B"}.mdi-chart-scatterplot-hexbin:before{content:"\F66D"}.mdi-chart-timeline:before{content:"\F66E"}.mdi-chat:before{content:"\FB55"}.mdi-chat-alert:before{content:"\FB56"}.mdi-chat-processing:before{content:"\FB57"}.mdi-check:before{content:"\F12C"}.mdi-check-all:before{content:"\F12D"}.mdi-check-box-multiple-outline:before{content:"\FC2D"}.mdi-check-box-outline:before{content:"\FC2E"}.mdi-check-circle:before{content:"\F5E0"}.mdi-check-circle-outline:before{content:"\F5E1"}.mdi-check-decagram:before{content:"\F790"}.mdi-check-network:before{content:"\FC2F"}.mdi-check-network-outline:before{content:"\FC30"}.mdi-check-outline:before{content:"\F854"}.mdi-checkbook:before{content:"\FA9C"}.mdi-checkbox-blank:before{content:"\F12E"}.mdi-checkbox-blank-circle:before{content:"\F12F"}.mdi-checkbox-blank-circle-outline:before{content:"\F130"}.mdi-checkbox-blank-outline:before{content:"\F131"}.mdi-checkbox-intermediate:before{content:"\F855"}.mdi-checkbox-marked:before{content:"\F132"}.mdi-checkbox-marked-circle:before{content:"\F133"}.mdi-checkbox-marked-circle-outline:before{content:"\F134"}.mdi-checkbox-marked-outline:before{content:"\F135"}.mdi-checkbox-multiple-blank:before{content:"\F136"}.mdi-checkbox-multiple-blank-circle:before{content:"\F63B"}.mdi-checkbox-multiple-blank-circle-outline:before{content:"\F63C"}.mdi-checkbox-multiple-blank-outline:before{content:"\F137"}.mdi-checkbox-multiple-marked:before{content:"\F138"}.mdi-checkbox-multiple-marked-circle:before{content:"\F63D"}.mdi-checkbox-multiple-marked-circle-outline:before{content:"\F63E"}.mdi-checkbox-multiple-marked-outline:before{content:"\F139"}.mdi-checkerboard:before{content:"\F13A"}.mdi-chef-hat:before{content:"\FB58"}.mdi-chemical-weapon:before{content:"\F13B"}.mdi-chess-bishop:before{content:"\F85B"}.mdi-chess-king:before{content:"\F856"}.mdi-chess-knight:before{content:"\F857"}.mdi-chess-pawn:before{content:"\F858"}.mdi-chess-queen:before{content:"\F859"}.mdi-chess-rook:before{content:"\F85A"}.mdi-chevron-double-down:before{content:"\F13C"}.mdi-chevron-double-left:before{content:"\F13D"}.mdi-chevron-double-right:before{content:"\F13E"}.mdi-chevron-double-up:before{content:"\F13F"}.mdi-chevron-down:before{content:"\F140"}.mdi-chevron-down-box:before{content:"\F9D5"}.mdi-chevron-down-box-outline:before{content:"\F9D6"}.mdi-chevron-down-circle:before{content:"\FB0B"}.mdi-chevron-down-circle-outline:before{content:"\FB0C"}.mdi-chevron-left:before{content:"\F141"}.mdi-chevron-left-box:before{content:"\F9D7"}.mdi-chevron-left-box-outline:before{content:"\F9D8"}.mdi-chevron-left-circle:before{content:"\FB0D"}.mdi-chevron-left-circle-outline:before{content:"\FB0E"}.mdi-chevron-right:before{content:"\F142"}.mdi-chevron-right-box:before{content:"\F9D9"}.mdi-chevron-right-box-outline:before{content:"\F9DA"}.mdi-chevron-right-circle:before{content:"\FB0F"}.mdi-chevron-right-circle-outline:before{content:"\FB10"}.mdi-chevron-triple-down:before{content:"\FD95"}.mdi-chevron-triple-left:before{content:"\FD96"}.mdi-chevron-triple-right:before{content:"\FD97"}.mdi-chevron-triple-up:before{content:"\FD98"}.mdi-chevron-up:before{content:"\F143"}.mdi-chevron-up-box:before{content:"\F9DB"}.mdi-chevron-up-box-outline:before{content:"\F9DC"}.mdi-chevron-up-circle:before{content:"\FB11"}.mdi-chevron-up-circle-outline:before{content:"\FB12"}.mdi-chili-hot:before{content:"\F7B1"}.mdi-chili-medium:before{content:"\F7B2"}.mdi-chili-mild:before{content:"\F7B3"}.mdi-chip:before{content:"\F61A"}.mdi-christianity:before{content:"\F952"}.mdi-christianity-outline:before{content:"\FCD2"}.mdi-church:before{content:"\F144"}.mdi-circle:before{content:"\F764"}.mdi-circle-edit-outline:before{content:"\F8D4"}.mdi-circle-medium:before{content:"\F9DD"}.mdi-circle-outline:before{content:"\F765"}.mdi-circle-slice-1:before{content:"\FA9D"}.mdi-circle-slice-2:before{content:"\FA9E"}.mdi-circle-slice-3:before{content:"\FA9F"}.mdi-circle-slice-4:before{content:"\FAA0"}.mdi-circle-slice-5:before{content:"\FAA1"}.mdi-circle-slice-6:before{content:"\FAA2"}.mdi-circle-slice-7:before{content:"\FAA3"}.mdi-circle-slice-8:before{content:"\FAA4"}.mdi-circle-small:before{content:"\F9DE"}.mdi-cisco-webex:before{content:"\F145"}.mdi-city:before{content:"\F146"}.mdi-city-variant:before{content:"\FA35"}.mdi-city-variant-outline:before{content:"\FA36"}.mdi-clipboard:before{content:"\F147"}.mdi-clipboard-account:before{content:"\F148"}.mdi-clipboard-account-outline:before{content:"\FC31"}.mdi-clipboard-alert:before{content:"\F149"}.mdi-clipboard-alert-outline:before{content:"\FCD3"}.mdi-clipboard-arrow-down:before{content:"\F14A"}.mdi-clipboard-arrow-down-outline:before{content:"\FC32"}.mdi-clipboard-arrow-left:before{content:"\F14B"}.mdi-clipboard-arrow-left-outline:before{content:"\FCD4"}.mdi-clipboard-arrow-right:before{content:"\FCD5"}.mdi-clipboard-arrow-right-outline:before{content:"\FCD6"}.mdi-clipboard-arrow-up:before{content:"\FC33"}.mdi-clipboard-arrow-up-outline:before{content:"\FC34"}.mdi-clipboard-check:before{content:"\F14C"}.mdi-clipboard-check-outline:before{content:"\F8A7"}.mdi-clipboard-flow:before{content:"\F6C7"}.mdi-clipboard-outline:before{content:"\F14D"}.mdi-clipboard-play:before{content:"\FC35"}.mdi-clipboard-play-outline:before{content:"\FC36"}.mdi-clipboard-plus:before{content:"\F750"}.mdi-clipboard-pulse:before{content:"\F85C"}.mdi-clipboard-pulse-outline:before{content:"\F85D"}.mdi-clipboard-text:before{content:"\F14E"}.mdi-clipboard-text-outline:before{content:"\FA37"}.mdi-clipboard-text-play:before{content:"\FC37"}.mdi-clipboard-text-play-outline:before{content:"\FC38"}.mdi-clippy:before{content:"\F14F"}.mdi-clock:before{content:"\F953"}.mdi-clock-alert:before{content:"\F954"}.mdi-clock-alert-outline:before{content:"\F5CE"}.mdi-clock-end:before{content:"\F151"}.mdi-clock-fast:before{content:"\F152"}.mdi-clock-in:before{content:"\F153"}.mdi-clock-out:before{content:"\F154"}.mdi-clock-outline:before{content:"\F150"}.mdi-clock-start:before{content:"\F155"}.mdi-close:before{content:"\F156"}.mdi-close-box:before{content:"\F157"}.mdi-close-box-multiple:before{content:"\FC39"}.mdi-close-box-multiple-outline:before{content:"\FC3A"}.mdi-close-box-outline:before{content:"\F158"}.mdi-close-circle:before{content:"\F159"}.mdi-close-circle-outline:before{content:"\F15A"}.mdi-close-network:before{content:"\F15B"}.mdi-close-network-outline:before{content:"\FC3B"}.mdi-close-octagon:before{content:"\F15C"}.mdi-close-octagon-outline:before{content:"\F15D"}.mdi-close-outline:before{content:"\F6C8"}.mdi-closed-caption:before{content:"\F15E"}.mdi-closed-caption-outline:before{content:"\FD99"}.mdi-cloud:before{content:"\F15F"}.mdi-cloud-alert:before{content:"\F9DF"}.mdi-cloud-braces:before{content:"\F7B4"}.mdi-cloud-check:before{content:"\F160"}.mdi-cloud-circle:before{content:"\F161"}.mdi-cloud-download:before{content:"\F162"}.mdi-cloud-download-outline:before{content:"\FB59"}.mdi-cloud-off-outline:before{content:"\F164"}.mdi-cloud-outline:before{content:"\F163"}.mdi-cloud-print:before{content:"\F165"}.mdi-cloud-print-outline:before{content:"\F166"}.mdi-cloud-question:before{content:"\FA38"}.mdi-cloud-search:before{content:"\F955"}.mdi-cloud-search-outline:before{content:"\F956"}.mdi-cloud-sync:before{content:"\F63F"}.mdi-cloud-tags:before{content:"\F7B5"}.mdi-cloud-upload:before{content:"\F167"}.mdi-cloud-upload-outline:before{content:"\FB5A"}.mdi-clover:before{content:"\F815"}.mdi-code-array:before{content:"\F168"}.mdi-code-braces:before{content:"\F169"}.mdi-code-brackets:before{content:"\F16A"}.mdi-code-equal:before{content:"\F16B"}.mdi-code-greater-than:before{content:"\F16C"}.mdi-code-greater-than-or-equal:before{content:"\F16D"}.mdi-code-less-than:before{content:"\F16E"}.mdi-code-less-than-or-equal:before{content:"\F16F"}.mdi-code-not-equal:before{content:"\F170"}.mdi-code-not-equal-variant:before{content:"\F171"}.mdi-code-parentheses:before{content:"\F172"}.mdi-code-string:before{content:"\F173"}.mdi-code-tags:before{content:"\F174"}.mdi-code-tags-check:before{content:"\F693"}.mdi-codepen:before{content:"\F175"}.mdi-coffee:before{content:"\F176"}.mdi-coffee-outline:before{content:"\F6C9"}.mdi-coffee-to-go:before{content:"\F177"}.mdi-coffin:before{content:"\FB5B"}.mdi-cogs:before{content:"\F8D5"}.mdi-coin:before{content:"\F178"}.mdi-coins:before{content:"\F694"}.mdi-collage:before{content:"\F640"}.mdi-collapse-all:before{content:"\FAA5"}.mdi-collapse-all-outline:before{content:"\FAA6"}.mdi-color-helper:before{content:"\F179"}.mdi-comment:before{content:"\F17A"}.mdi-comment-account:before{content:"\F17B"}.mdi-comment-account-outline:before{content:"\F17C"}.mdi-comment-alert:before{content:"\F17D"}.mdi-comment-alert-outline:before{content:"\F17E"}.mdi-comment-arrow-left:before{content:"\F9E0"}.mdi-comment-arrow-left-outline:before{content:"\F9E1"}.mdi-comment-arrow-right:before{content:"\F9E2"}.mdi-comment-arrow-right-outline:before{content:"\F9E3"}.mdi-comment-check:before{content:"\F17F"}.mdi-comment-check-outline:before{content:"\F180"}.mdi-comment-eye:before{content:"\FA39"}.mdi-comment-eye-outline:before{content:"\FA3A"}.mdi-comment-multiple:before{content:"\F85E"}.mdi-comment-multiple-outline:before{content:"\F181"}.mdi-comment-outline:before{content:"\F182"}.mdi-comment-plus:before{content:"\F9E4"}.mdi-comment-plus-outline:before{content:"\F183"}.mdi-comment-processing:before{content:"\F184"}.mdi-comment-processing-outline:before{content:"\F185"}.mdi-comment-question:before{content:"\F816"}.mdi-comment-question-outline:before{content:"\F186"}.mdi-comment-remove:before{content:"\F5DE"}.mdi-comment-remove-outline:before{content:"\F187"}.mdi-comment-search:before{content:"\FA3B"}.mdi-comment-search-outline:before{content:"\FA3C"}.mdi-comment-text:before{content:"\F188"}.mdi-comment-text-multiple:before{content:"\F85F"}.mdi-comment-text-multiple-outline:before{content:"\F860"}.mdi-comment-text-outline:before{content:"\F189"}.mdi-compare:before{content:"\F18A"}.mdi-compass:before{content:"\F18B"}.mdi-compass-off:before{content:"\FB5C"}.mdi-compass-off-outline:before{content:"\FB5D"}.mdi-compass-outline:before{content:"\F18C"}.mdi-console:before{content:"\F18D"}.mdi-console-line:before{content:"\F7B6"}.mdi-console-network:before{content:"\F8A8"}.mdi-console-network-outline:before{content:"\FC3C"}.mdi-contact-mail:before{content:"\F18E"}.mdi-contactless-payment:before{content:"\FD46"}.mdi-contacts:before{content:"\F6CA"}.mdi-contain:before{content:"\FA3D"}.mdi-contain-end:before{content:"\FA3E"}.mdi-contain-start:before{content:"\FA3F"}.mdi-content-copy:before{content:"\F18F"}.mdi-content-cut:before{content:"\F190"}.mdi-content-duplicate:before{content:"\F191"}.mdi-content-paste:before{content:"\F192"}.mdi-content-save:before{content:"\F193"}.mdi-content-save-all:before{content:"\F194"}.mdi-content-save-edit:before{content:"\FCD7"}.mdi-content-save-edit-outline:before{content:"\FCD8"}.mdi-content-save-outline:before{content:"\F817"}.mdi-content-save-settings:before{content:"\F61B"}.mdi-content-save-settings-outline:before{content:"\FB13"}.mdi-contrast:before{content:"\F195"}.mdi-contrast-box:before{content:"\F196"}.mdi-contrast-circle:before{content:"\F197"}.mdi-controller-classic:before{content:"\FB5E"}.mdi-controller-classic-outline:before{content:"\FB5F"}.mdi-cookie:before{content:"\F198"}.mdi-copyright:before{content:"\F5E6"}.mdi-cordova:before{content:"\F957"}.mdi-corn:before{content:"\F7B7"}.mdi-counter:before{content:"\F199"}.mdi-cow:before{content:"\F19A"}.mdi-crane:before{content:"\F861"}.mdi-creation:before{content:"\F1C9"}.mdi-creative-commons:before{content:"\FD47"}.mdi-credit-card:before{content:"\F19B"}.mdi-credit-card-marker:before{content:"\FD9A"}.mdi-credit-card-multiple:before{content:"\F19C"}.mdi-credit-card-off:before{content:"\F5E4"}.mdi-credit-card-plus:before{content:"\F675"}.mdi-credit-card-refund:before{content:"\FAA7"}.mdi-credit-card-scan:before{content:"\F19D"}.mdi-credit-card-settings:before{content:"\F8D6"}.mdi-credit-card-wireless:before{content:"\FD48"}.mdi-cricket:before{content:"\FD49"}.mdi-crop:before{content:"\F19E"}.mdi-crop-free:before{content:"\F19F"}.mdi-crop-landscape:before{content:"\F1A0"}.mdi-crop-portrait:before{content:"\F1A1"}.mdi-crop-rotate:before{content:"\F695"}.mdi-crop-square:before{content:"\F1A2"}.mdi-crosshairs:before{content:"\F1A3"}.mdi-crosshairs-gps:before{content:"\F1A4"}.mdi-crown:before{content:"\F1A5"}.mdi-cryengine:before{content:"\F958"}.mdi-crystal-ball:before{content:"\FB14"}.mdi-cube:before{content:"\F1A6"}.mdi-cube-outline:before{content:"\F1A7"}.mdi-cube-scan:before{content:"\FB60"}.mdi-cube-send:before{content:"\F1A8"}.mdi-cube-unfolded:before{content:"\F1A9"}.mdi-cup:before{content:"\F1AA"}.mdi-cup-off:before{content:"\F5E5"}.mdi-cup-water:before{content:"\F1AB"}.mdi-cupcake:before{content:"\F959"}.mdi-curling:before{content:"\F862"}.mdi-currency-bdt:before{content:"\F863"}.mdi-currency-brl:before{content:"\FB61"}.mdi-currency-btc:before{content:"\F1AC"}.mdi-currency-chf:before{content:"\F7B8"}.mdi-currency-cny:before{content:"\F7B9"}.mdi-currency-eth:before{content:"\F7BA"}.mdi-currency-eur:before{content:"\F1AD"}.mdi-currency-gbp:before{content:"\F1AE"}.mdi-currency-ils:before{content:"\FC3D"}.mdi-currency-inr:before{content:"\F1AF"}.mdi-currency-jpy:before{content:"\F7BB"}.mdi-currency-krw:before{content:"\F7BC"}.mdi-currency-kzt:before{content:"\F864"}.mdi-currency-ngn:before{content:"\F1B0"}.mdi-currency-php:before{content:"\F9E5"}.mdi-currency-rub:before{content:"\F1B1"}.mdi-currency-sign:before{content:"\F7BD"}.mdi-currency-try:before{content:"\F1B2"}.mdi-currency-twd:before{content:"\F7BE"}.mdi-currency-usd:before{content:"\F1B3"}.mdi-currency-usd-off:before{content:"\F679"}.mdi-current-ac:before{content:"\F95A"}.mdi-current-dc:before{content:"\F95B"}.mdi-cursor-default:before{content:"\F1B4"}.mdi-cursor-default-click:before{content:"\FCD9"}.mdi-cursor-default-click-outline:before{content:"\FCDA"}.mdi-cursor-default-outline:before{content:"\F1B5"}.mdi-cursor-move:before{content:"\F1B6"}.mdi-cursor-pointer:before{content:"\F1B7"}.mdi-cursor-text:before{content:"\F5E7"}.mdi-database:before{content:"\F1B8"}.mdi-database-check:before{content:"\FAA8"}.mdi-database-edit:before{content:"\FB62"}.mdi-database-export:before{content:"\F95D"}.mdi-database-import:before{content:"\F95C"}.mdi-database-lock:before{content:"\FAA9"}.mdi-database-minus:before{content:"\F1B9"}.mdi-database-plus:before{content:"\F1BA"}.mdi-database-refresh:before{content:"\FCDB"}.mdi-database-remove:before{content:"\FCDC"}.mdi-database-search:before{content:"\F865"}.mdi-database-settings:before{content:"\FCDD"}.mdi-death-star:before{content:"\F8D7"}.mdi-death-star-variant:before{content:"\F8D8"}.mdi-deathly-hallows:before{content:"\FB63"}.mdi-debian:before{content:"\F8D9"}.mdi-debug-step-into:before{content:"\F1BB"}.mdi-debug-step-out:before{content:"\F1BC"}.mdi-debug-step-over:before{content:"\F1BD"}.mdi-decagram:before{content:"\F76B"}.mdi-decagram-outline:before{content:"\F76C"}.mdi-decimal-decrease:before{content:"\F1BE"}.mdi-decimal-increase:before{content:"\F1BF"}.mdi-delete:before{content:"\F1C0"}.mdi-delete-circle:before{content:"\F682"}.mdi-delete-circle-outline:before{content:"\FB64"}.mdi-delete-empty:before{content:"\F6CB"}.mdi-delete-forever:before{content:"\F5E8"}.mdi-delete-forever-outline:before{content:"\FB65"}.mdi-delete-outline:before{content:"\F9E6"}.mdi-delete-restore:before{content:"\F818"}.mdi-delete-sweep:before{content:"\F5E9"}.mdi-delete-sweep-outline:before{content:"\FC3E"}.mdi-delete-variant:before{content:"\F1C1"}.mdi-delta:before{content:"\F1C2"}.mdi-desk-lamp:before{content:"\F95E"}.mdi-deskphone:before{content:"\F1C3"}.mdi-desktop-classic:before{content:"\F7BF"}.mdi-desktop-mac:before{content:"\F1C4"}.mdi-desktop-mac-dashboard:before{content:"\F9E7"}.mdi-desktop-tower:before{content:"\F1C5"}.mdi-desktop-tower-monitor:before{content:"\FAAA"}.mdi-details:before{content:"\F1C6"}.mdi-dev-to:before{content:"\FD4A"}.mdi-developer-board:before{content:"\F696"}.mdi-deviantart:before{content:"\F1C7"}.mdi-dialpad:before{content:"\F61C"}.mdi-diameter:before{content:"\FC3F"}.mdi-diameter-outline:before{content:"\FC40"}.mdi-diameter-variant:before{content:"\FC41"}.mdi-diamond:before{content:"\FB66"}.mdi-diamond-outline:before{content:"\FB67"}.mdi-diamond-stone:before{content:"\F1C8"}.mdi-dice-1:before{content:"\F1CA"}.mdi-dice-2:before{content:"\F1CB"}.mdi-dice-3:before{content:"\F1CC"}.mdi-dice-4:before{content:"\F1CD"}.mdi-dice-5:before{content:"\F1CE"}.mdi-dice-6:before{content:"\F1CF"}.mdi-dice-d10:before{content:"\F76E"}.mdi-dice-d12:before{content:"\F866"}.mdi-dice-d20:before{content:"\F5EA"}.mdi-dice-d4:before{content:"\F5EB"}.mdi-dice-d6:before{content:"\F5EC"}.mdi-dice-d8:before{content:"\F5ED"}.mdi-dice-multiple:before{content:"\F76D"}.mdi-dictionary:before{content:"\F61D"}.mdi-dip-switch:before{content:"\F7C0"}.mdi-directions:before{content:"\F1D0"}.mdi-directions-fork:before{content:"\F641"}.mdi-disc:before{content:"\F5EE"}.mdi-disc-alert:before{content:"\F1D1"}.mdi-disc-player:before{content:"\F95F"}.mdi-discord:before{content:"\F66F"}.mdi-dishwasher:before{content:"\FAAB"}.mdi-disqus:before{content:"\F1D2"}.mdi-disqus-outline:before{content:"\F1D3"}.mdi-diving-flippers:before{content:"\FD9B"}.mdi-diving-helmet:before{content:"\FD9C"}.mdi-diving-scuba:before{content:"\FD9D"}.mdi-diving-scuba-flag:before{content:"\FD9E"}.mdi-diving-scuba-tank:before{content:"\FD9F"}.mdi-diving-scuba-tank-multiple:before{content:"\FDA0"}.mdi-diving-snorkel:before{content:"\FDA1"}.mdi-division:before{content:"\F1D4"}.mdi-division-box:before{content:"\F1D5"}.mdi-dlna:before{content:"\FA40"}.mdi-dna:before{content:"\F683"}.mdi-dns:before{content:"\F1D6"}.mdi-dns-outline:before{content:"\FB68"}.mdi-do-not-disturb:before{content:"\F697"}.mdi-do-not-disturb-off:before{content:"\F698"}.mdi-docker:before{content:"\F867"}.mdi-doctor:before{content:"\FA41"}.mdi-dog:before{content:"\FA42"}.mdi-dog-service:before{content:"\FAAC"}.mdi-dog-side:before{content:"\FA43"}.mdi-dolby:before{content:"\F6B2"}.mdi-domain:before{content:"\F1D7"}.mdi-domain-off:before{content:"\FD4B"}.mdi-donkey:before{content:"\F7C1"}.mdi-door:before{content:"\F819"}.mdi-door-closed:before{content:"\F81A"}.mdi-door-open:before{content:"\F81B"}.mdi-doorbell-video:before{content:"\F868"}.mdi-dot-net:before{content:"\FAAD"}.mdi-dots-horizontal:before{content:"\F1D8"}.mdi-dots-horizontal-circle:before{content:"\F7C2"}.mdi-dots-horizontal-circle-outline:before{content:"\FB69"}.mdi-dots-vertical:before{content:"\F1D9"}.mdi-dots-vertical-circle:before{content:"\F7C3"}.mdi-dots-vertical-circle-outline:before{content:"\FB6A"}.mdi-douban:before{content:"\F699"}.mdi-download:before{content:"\F1DA"}.mdi-download-multiple:before{content:"\F9E8"}.mdi-download-network:before{content:"\F6F3"}.mdi-download-network-outline:before{content:"\FC42"}.mdi-download-outline:before{content:"\FB6B"}.mdi-drag:before{content:"\F1DB"}.mdi-drag-horizontal:before{content:"\F1DC"}.mdi-drag-variant:before{content:"\FB6C"}.mdi-drag-vertical:before{content:"\F1DD"}.mdi-drama-masks:before{content:"\FCDE"}.mdi-drawing:before{content:"\F1DE"}.mdi-drawing-box:before{content:"\F1DF"}.mdi-dribbble:before{content:"\F1E0"}.mdi-dribbble-box:before{content:"\F1E1"}.mdi-drone:before{content:"\F1E2"}.mdi-dropbox:before{content:"\F1E3"}.mdi-drupal:before{content:"\F1E4"}.mdi-duck:before{content:"\F1E5"}.mdi-dumbbell:before{content:"\F1E6"}.mdi-dump-truck:before{content:"\FC43"}.mdi-ear-hearing:before{content:"\F7C4"}.mdi-ear-hearing-off:before{content:"\FA44"}.mdi-earth:before{content:"\F1E7"}.mdi-earth-box:before{content:"\F6CC"}.mdi-earth-box-off:before{content:"\F6CD"}.mdi-earth-off:before{content:"\F1E8"}.mdi-edge:before{content:"\F1E9"}.mdi-egg:before{content:"\FAAE"}.mdi-egg-easter:before{content:"\FAAF"}.mdi-eight-track:before{content:"\F9E9"}.mdi-eject:before{content:"\F1EA"}.mdi-eject-outline:before{content:"\FB6D"}.mdi-elephant:before{content:"\F7C5"}.mdi-elevation-decline:before{content:"\F1EB"}.mdi-elevation-rise:before{content:"\F1EC"}.mdi-elevator:before{content:"\F1ED"}.mdi-email:before{content:"\F1EE"}.mdi-email-alert:before{content:"\F6CE"}.mdi-email-box:before{content:"\FCDF"}.mdi-email-check:before{content:"\FAB0"}.mdi-email-check-outline:before{content:"\FAB1"}.mdi-email-lock:before{content:"\F1F1"}.mdi-email-mark-as-unread:before{content:"\FB6E"}.mdi-email-open:before{content:"\F1EF"}.mdi-email-open-outline:before{content:"\F5EF"}.mdi-email-outline:before{content:"\F1F0"}.mdi-email-plus:before{content:"\F9EA"}.mdi-email-plus-outline:before{content:"\F9EB"}.mdi-email-search:before{content:"\F960"}.mdi-email-search-outline:before{content:"\F961"}.mdi-email-variant:before{content:"\F5F0"}.mdi-ember:before{content:"\FB15"}.mdi-emby:before{content:"\F6B3"}.mdi-emoticon:before{content:"\FC44"}.mdi-emoticon-angry:before{content:"\FC45"}.mdi-emoticon-angry-outline:before{content:"\FC46"}.mdi-emoticon-cool:before{content:"\FC47"}.mdi-emoticon-cool-outline:before{content:"\F1F3"}.mdi-emoticon-cry:before{content:"\FC48"}.mdi-emoticon-cry-outline:before{content:"\FC49"}.mdi-emoticon-dead:before{content:"\FC4A"}.mdi-emoticon-dead-outline:before{content:"\F69A"}.mdi-emoticon-devil:before{content:"\FC4B"}.mdi-emoticon-devil-outline:before{content:"\F1F4"}.mdi-emoticon-excited:before{content:"\FC4C"}.mdi-emoticon-excited-outline:before{content:"\F69B"}.mdi-emoticon-happy:before{content:"\FC4D"}.mdi-emoticon-happy-outline:before{content:"\F1F5"}.mdi-emoticon-kiss:before{content:"\FC4E"}.mdi-emoticon-kiss-outline:before{content:"\FC4F"}.mdi-emoticon-neutral:before{content:"\FC50"}.mdi-emoticon-neutral-outline:before{content:"\F1F6"}.mdi-emoticon-outline:before{content:"\F1F2"}.mdi-emoticon-poop:before{content:"\F1F7"}.mdi-emoticon-poop-outline:before{content:"\FC51"}.mdi-emoticon-sad:before{content:"\FC52"}.mdi-emoticon-sad-outline:before{content:"\F1F8"}.mdi-emoticon-tongue:before{content:"\F1F9"}.mdi-emoticon-tongue-outline:before{content:"\FC53"}.mdi-emoticon-wink:before{content:"\FC54"}.mdi-emoticon-wink-outline:before{content:"\FC55"}.mdi-engine:before{content:"\F1FA"}.mdi-engine-off:before{content:"\FA45"}.mdi-engine-off-outline:before{content:"\FA46"}.mdi-engine-outline:before{content:"\F1FB"}.mdi-equal:before{content:"\F1FC"}.mdi-equal-box:before{content:"\F1FD"}.mdi-eraser:before{content:"\F1FE"}.mdi-eraser-variant:before{content:"\F642"}.mdi-escalator:before{content:"\F1FF"}.mdi-eslint:before{content:"\FC56"}.mdi-et:before{content:"\FAB2"}.mdi-ethereum:before{content:"\F869"}.mdi-ethernet:before{content:"\F200"}.mdi-ethernet-cable:before{content:"\F201"}.mdi-ethernet-cable-off:before{content:"\F202"}.mdi-etsy:before{content:"\F203"}.mdi-ev-station:before{content:"\F5F1"}.mdi-eventbrite:before{content:"\F7C6"}.mdi-evernote:before{content:"\F204"}.mdi-exclamation:before{content:"\F205"}.mdi-exit-run:before{content:"\FA47"}.mdi-exit-to-app:before{content:"\F206"}.mdi-expand-all:before{content:"\FAB3"}.mdi-expand-all-outline:before{content:"\FAB4"}.mdi-exponent:before{content:"\F962"}.mdi-exponent-box:before{content:"\F963"}.mdi-export:before{content:"\F207"}.mdi-export-variant:before{content:"\FB6F"}.mdi-eye:before{content:"\F208"}.mdi-eye-check:before{content:"\FCE0"}.mdi-eye-check-outline:before{content:"\FCE1"}.mdi-eye-circle:before{content:"\FB70"}.mdi-eye-circle-outline:before{content:"\FB71"}.mdi-eye-off:before{content:"\F209"}.mdi-eye-off-outline:before{content:"\F6D0"}.mdi-eye-outline:before{content:"\F6CF"}.mdi-eye-plus:before{content:"\F86A"}.mdi-eye-plus-outline:before{content:"\F86B"}.mdi-eye-settings:before{content:"\F86C"}.mdi-eye-settings-outline:before{content:"\F86D"}.mdi-eyedropper:before{content:"\F20A"}.mdi-eyedropper-variant:before{content:"\F20B"}.mdi-face:before{content:"\F643"}.mdi-face-agent:before{content:"\FD4C"}.mdi-face-outline:before{content:"\FB72"}.mdi-face-profile:before{content:"\F644"}.mdi-face-recognition:before{content:"\FC57"}.mdi-facebook:before{content:"\F20C"}.mdi-facebook-box:before{content:"\F20D"}.mdi-facebook-messenger:before{content:"\F20E"}.mdi-facebook-workplace:before{content:"\FB16"}.mdi-factory:before{content:"\F20F"}.mdi-fan:before{content:"\F210"}.mdi-fan-off:before{content:"\F81C"}.mdi-fast-forward:before{content:"\F211"}.mdi-fast-forward-10:before{content:"\FD4D"}.mdi-fast-forward-30:before{content:"\FCE2"}.mdi-fast-forward-outline:before{content:"\F6D1"}.mdi-fax:before{content:"\F212"}.mdi-feather:before{content:"\F6D2"}.mdi-feature-search:before{content:"\FA48"}.mdi-feature-search-outline:before{content:"\FA49"}.mdi-fedora:before{content:"\F8DA"}.mdi-ferry:before{content:"\F213"}.mdi-file:before{content:"\F214"}.mdi-file-account:before{content:"\F73A"}.mdi-file-alert:before{content:"\FA4A"}.mdi-file-alert-outline:before{content:"\FA4B"}.mdi-file-cabinet:before{content:"\FAB5"}.mdi-file-cancel:before{content:"\FDA2"}.mdi-file-cancel-outline:before{content:"\FDA3"}.mdi-file-chart:before{content:"\F215"}.mdi-file-check:before{content:"\F216"}.mdi-file-cloud:before{content:"\F217"}.mdi-file-compare:before{content:"\F8A9"}.mdi-file-delimited:before{content:"\F218"}.mdi-file-document:before{content:"\F219"}.mdi-file-document-box:before{content:"\F21A"}.mdi-file-document-box-multiple:before{content:"\FAB6"}.mdi-file-document-box-multiple-outline:before{content:"\FAB7"}.mdi-file-document-box-outline:before{content:"\F9EC"}.mdi-file-document-edit:before{content:"\FDA4"}.mdi-file-document-edit-outline:before{content:"\FDA5"}.mdi-file-document-outline:before{content:"\F9ED"}.mdi-file-download:before{content:"\F964"}.mdi-file-download-outline:before{content:"\F965"}.mdi-file-excel:before{content:"\F21B"}.mdi-file-excel-box:before{content:"\F21C"}.mdi-file-export:before{content:"\F21D"}.mdi-file-eye:before{content:"\FDA6"}.mdi-file-eye-outline:before{content:"\FDA7"}.mdi-file-find:before{content:"\F21E"}.mdi-file-find-outline:before{content:"\FB73"}.mdi-file-hidden:before{content:"\F613"}.mdi-file-image:before{content:"\F21F"}.mdi-file-import:before{content:"\F220"}.mdi-file-lock:before{content:"\F221"}.mdi-file-move:before{content:"\FAB8"}.mdi-file-multiple:before{content:"\F222"}.mdi-file-music:before{content:"\F223"}.mdi-file-outline:before{content:"\F224"}.mdi-file-pdf:before{content:"\F225"}.mdi-file-pdf-box:before{content:"\F226"}.mdi-file-percent:before{content:"\F81D"}.mdi-file-plus:before{content:"\F751"}.mdi-file-powerpoint:before{content:"\F227"}.mdi-file-powerpoint-box:before{content:"\F228"}.mdi-file-presentation-box:before{content:"\F229"}.mdi-file-question:before{content:"\F86E"}.mdi-file-remove:before{content:"\FB74"}.mdi-file-replace:before{content:"\FB17"}.mdi-file-replace-outline:before{content:"\FB18"}.mdi-file-restore:before{content:"\F670"}.mdi-file-search:before{content:"\FC58"}.mdi-file-search-outline:before{content:"\FC59"}.mdi-file-send:before{content:"\F22A"}.mdi-file-table:before{content:"\FC5A"}.mdi-file-table-outline:before{content:"\FC5B"}.mdi-file-tree:before{content:"\F645"}.mdi-file-undo:before{content:"\F8DB"}.mdi-file-upload:before{content:"\FA4C"}.mdi-file-upload-outline:before{content:"\FA4D"}.mdi-file-video:before{content:"\F22B"}.mdi-file-word:before{content:"\F22C"}.mdi-file-word-box:before{content:"\F22D"}.mdi-file-xml:before{content:"\F22E"}.mdi-film:before{content:"\F22F"}.mdi-filmstrip:before{content:"\F230"}.mdi-filmstrip-off:before{content:"\F231"}.mdi-filter:before{content:"\F232"}.mdi-filter-outline:before{content:"\F233"}.mdi-filter-remove:before{content:"\F234"}.mdi-filter-remove-outline:before{content:"\F235"}.mdi-filter-variant:before{content:"\F236"}.mdi-finance:before{content:"\F81E"}.mdi-find-replace:before{content:"\F6D3"}.mdi-fingerprint:before{content:"\F237"}.mdi-fire:before{content:"\F238"}.mdi-fire-truck:before{content:"\F8AA"}.mdi-firebase:before{content:"\F966"}.mdi-firefox:before{content:"\F239"}.mdi-fish:before{content:"\F23A"}.mdi-flag:before{content:"\F23B"}.mdi-flag-checkered:before{content:"\F23C"}.mdi-flag-minus:before{content:"\FB75"}.mdi-flag-outline:before{content:"\F23D"}.mdi-flag-plus:before{content:"\FB76"}.mdi-flag-remove:before{content:"\FB77"}.mdi-flag-triangle:before{content:"\F23F"}.mdi-flag-variant:before{content:"\F240"}.mdi-flag-variant-outline:before{content:"\F23E"}.mdi-flare:before{content:"\FD4E"}.mdi-flash:before{content:"\F241"}.mdi-flash-auto:before{content:"\F242"}.mdi-flash-circle:before{content:"\F81F"}.mdi-flash-off:before{content:"\F243"}.mdi-flash-outline:before{content:"\F6D4"}.mdi-flash-red-eye:before{content:"\F67A"}.mdi-flashlight:before{content:"\F244"}.mdi-flashlight-off:before{content:"\F245"}.mdi-flask:before{content:"\F093"}.mdi-flask-empty:before{content:"\F094"}.mdi-flask-empty-outline:before{content:"\F095"}.mdi-flask-outline:before{content:"\F096"}.mdi-flattr:before{content:"\F246"}.mdi-flickr:before{content:"\FCE3"}.mdi-flip-to-back:before{content:"\F247"}.mdi-flip-to-front:before{content:"\F248"}.mdi-floor-lamp:before{content:"\F8DC"}.mdi-floor-plan:before{content:"\F820"}.mdi-floppy:before{content:"\F249"}.mdi-floppy-variant:before{content:"\F9EE"}.mdi-flower:before{content:"\F24A"}.mdi-flower-outline:before{content:"\F9EF"}.mdi-flower-poppy:before{content:"\FCE4"}.mdi-flower-tulip:before{content:"\F9F0"}.mdi-flower-tulip-outline:before{content:"\F9F1"}.mdi-folder:before{content:"\F24B"}.mdi-folder-account:before{content:"\F24C"}.mdi-folder-account-outline:before{content:"\FB78"}.mdi-folder-alert:before{content:"\FDA8"}.mdi-folder-alert-outline:before{content:"\FDA9"}.mdi-folder-clock:before{content:"\FAB9"}.mdi-folder-clock-outline:before{content:"\FABA"}.mdi-folder-download:before{content:"\F24D"}.mdi-folder-edit:before{content:"\F8DD"}.mdi-folder-edit-outline:before{content:"\FDAA"}.mdi-folder-google-drive:before{content:"\F24E"}.mdi-folder-image:before{content:"\F24F"}.mdi-folder-key:before{content:"\F8AB"}.mdi-folder-key-network:before{content:"\F8AC"}.mdi-folder-key-network-outline:before{content:"\FC5C"}.mdi-folder-lock:before{content:"\F250"}.mdi-folder-lock-open:before{content:"\F251"}.mdi-folder-move:before{content:"\F252"}.mdi-folder-multiple:before{content:"\F253"}.mdi-folder-multiple-image:before{content:"\F254"}.mdi-folder-multiple-outline:before{content:"\F255"}.mdi-folder-network:before{content:"\F86F"}.mdi-folder-network-outline:before{content:"\FC5D"}.mdi-folder-open:before{content:"\F76F"}.mdi-folder-open-outline:before{content:"\FDAB"}.mdi-folder-outline:before{content:"\F256"}.mdi-folder-plus:before{content:"\F257"}.mdi-folder-plus-outline:before{content:"\FB79"}.mdi-folder-pound:before{content:"\FCE5"}.mdi-folder-pound-outline:before{content:"\FCE6"}.mdi-folder-remove:before{content:"\F258"}.mdi-folder-remove-outline:before{content:"\FB7A"}.mdi-folder-search:before{content:"\F967"}.mdi-folder-search-outline:before{content:"\F968"}.mdi-folder-star:before{content:"\F69C"}.mdi-folder-star-outline:before{content:"\FB7B"}.mdi-folder-sync:before{content:"\FCE7"}.mdi-folder-sync-outline:before{content:"\FCE8"}.mdi-folder-text:before{content:"\FC5E"}.mdi-folder-text-outline:before{content:"\FC5F"}.mdi-folder-upload:before{content:"\F259"}.mdi-font-awesome:before{content:"\F03A"}.mdi-food:before{content:"\F25A"}.mdi-food-apple:before{content:"\F25B"}.mdi-food-apple-outline:before{content:"\FC60"}.mdi-food-croissant:before{content:"\F7C7"}.mdi-food-fork-drink:before{content:"\F5F2"}.mdi-food-off:before{content:"\F5F3"}.mdi-food-variant:before{content:"\F25C"}.mdi-football:before{content:"\F25D"}.mdi-football-australian:before{content:"\F25E"}.mdi-football-helmet:before{content:"\F25F"}.mdi-forklift:before{content:"\F7C8"}.mdi-format-align-bottom:before{content:"\F752"}.mdi-format-align-center:before{content:"\F260"}.mdi-format-align-justify:before{content:"\F261"}.mdi-format-align-left:before{content:"\F262"}.mdi-format-align-middle:before{content:"\F753"}.mdi-format-align-right:before{content:"\F263"}.mdi-format-align-top:before{content:"\F754"}.mdi-format-annotation-minus:before{content:"\FABB"}.mdi-format-annotation-plus:before{content:"\F646"}.mdi-format-bold:before{content:"\F264"}.mdi-format-clear:before{content:"\F265"}.mdi-format-color-fill:before{content:"\F266"}.mdi-format-color-text:before{content:"\F69D"}.mdi-format-columns:before{content:"\F8DE"}.mdi-format-float-center:before{content:"\F267"}.mdi-format-float-left:before{content:"\F268"}.mdi-format-float-none:before{content:"\F269"}.mdi-format-float-right:before{content:"\F26A"}.mdi-format-font:before{content:"\F6D5"}.mdi-format-font-size-decrease:before{content:"\F9F2"}.mdi-format-font-size-increase:before{content:"\F9F3"}.mdi-format-header-1:before{content:"\F26B"}.mdi-format-header-2:before{content:"\F26C"}.mdi-format-header-3:before{content:"\F26D"}.mdi-format-header-4:before{content:"\F26E"}.mdi-format-header-5:before{content:"\F26F"}.mdi-format-header-6:before{content:"\F270"}.mdi-format-header-decrease:before{content:"\F271"}.mdi-format-header-equal:before{content:"\F272"}.mdi-format-header-increase:before{content:"\F273"}.mdi-format-header-pound:before{content:"\F274"}.mdi-format-horizontal-align-center:before{content:"\F61E"}.mdi-format-horizontal-align-left:before{content:"\F61F"}.mdi-format-horizontal-align-right:before{content:"\F620"}.mdi-format-indent-decrease:before{content:"\F275"}.mdi-format-indent-increase:before{content:"\F276"}.mdi-format-italic:before{content:"\F277"}.mdi-format-letter-case:before{content:"\FB19"}.mdi-format-letter-case-lower:before{content:"\FB1A"}.mdi-format-letter-case-upper:before{content:"\FB1B"}.mdi-format-line-spacing:before{content:"\F278"}.mdi-format-line-style:before{content:"\F5C8"}.mdi-format-line-weight:before{content:"\F5C9"}.mdi-format-list-bulleted:before{content:"\F279"}.mdi-format-list-bulleted-square:before{content:"\FDAC"}.mdi-format-list-bulleted-type:before{content:"\F27A"}.mdi-format-list-checkbox:before{content:"\F969"}.mdi-format-list-checks:before{content:"\F755"}.mdi-format-list-numbered:before{content:"\F27B"}.mdi-format-list-numbered-rtl:before{content:"\FCE9"}.mdi-format-page-break:before{content:"\F6D6"}.mdi-format-paint:before{content:"\F27C"}.mdi-format-paragraph:before{content:"\F27D"}.mdi-format-pilcrow:before{content:"\F6D7"}.mdi-format-quote-close:before{content:"\F27E"}.mdi-format-quote-open:before{content:"\F756"}.mdi-format-rotate-90:before{content:"\F6A9"}.mdi-format-section:before{content:"\F69E"}.mdi-format-size:before{content:"\F27F"}.mdi-format-strikethrough:before{content:"\F280"}.mdi-format-strikethrough-variant:before{content:"\F281"}.mdi-format-subscript:before{content:"\F282"}.mdi-format-superscript:before{content:"\F283"}.mdi-format-text:before{content:"\F284"}.mdi-format-text-rotation-down:before{content:"\FD4F"}.mdi-format-text-rotation-none:before{content:"\FD50"}.mdi-format-text-wrapping-clip:before{content:"\FCEA"}.mdi-format-text-wrapping-overflow:before{content:"\FCEB"}.mdi-format-text-wrapping-wrap:before{content:"\FCEC"}.mdi-format-textbox:before{content:"\FCED"}.mdi-format-textdirection-l-to-r:before{content:"\F285"}.mdi-format-textdirection-r-to-l:before{content:"\F286"}.mdi-format-title:before{content:"\F5F4"}.mdi-format-underline:before{content:"\F287"}.mdi-format-vertical-align-bottom:before{content:"\F621"}.mdi-format-vertical-align-center:before{content:"\F622"}.mdi-format-vertical-align-top:before{content:"\F623"}.mdi-format-wrap-inline:before{content:"\F288"}.mdi-format-wrap-square:before{content:"\F289"}.mdi-format-wrap-tight:before{content:"\F28A"}.mdi-format-wrap-top-bottom:before{content:"\F28B"}.mdi-forum:before{content:"\F28C"}.mdi-forum-outline:before{content:"\F821"}.mdi-forward:before{content:"\F28D"}.mdi-forwardburger:before{content:"\FD51"}.mdi-fountain:before{content:"\F96A"}.mdi-fountain-pen:before{content:"\FCEE"}.mdi-fountain-pen-tip:before{content:"\FCEF"}.mdi-foursquare:before{content:"\F28E"}.mdi-freebsd:before{content:"\F8DF"}.mdi-fridge:before{content:"\F290"}.mdi-fridge-bottom:before{content:"\F292"}.mdi-fridge-outline:before{content:"\F28F"}.mdi-fridge-top:before{content:"\F291"}.mdi-fuel:before{content:"\F7C9"}.mdi-fullscreen:before{content:"\F293"}.mdi-fullscreen-exit:before{content:"\F294"}.mdi-function:before{content:"\F295"}.mdi-function-variant:before{content:"\F870"}.mdi-fuse:before{content:"\FC61"}.mdi-fuse-blade:before{content:"\FC62"}.mdi-gamepad:before{content:"\F296"}.mdi-gamepad-variant:before{content:"\F297"}.mdi-gantry-crane:before{content:"\FDAD"}.mdi-garage:before{content:"\F6D8"}.mdi-garage-alert:before{content:"\F871"}.mdi-garage-open:before{content:"\F6D9"}.mdi-gas-cylinder:before{content:"\F647"}.mdi-gas-station:before{content:"\F298"}.mdi-gate:before{content:"\F299"}.mdi-gate-and:before{content:"\F8E0"}.mdi-gate-nand:before{content:"\F8E1"}.mdi-gate-nor:before{content:"\F8E2"}.mdi-gate-not:before{content:"\F8E3"}.mdi-gate-or:before{content:"\F8E4"}.mdi-gate-xnor:before{content:"\F8E5"}.mdi-gate-xor:before{content:"\F8E6"}.mdi-gauge:before{content:"\F29A"}.mdi-gauge-empty:before{content:"\F872"}.mdi-gauge-full:before{content:"\F873"}.mdi-gauge-low:before{content:"\F874"}.mdi-gavel:before{content:"\F29B"}.mdi-gender-female:before{content:"\F29C"}.mdi-gender-male:before{content:"\F29D"}.mdi-gender-male-female:before{content:"\F29E"}.mdi-gender-transgender:before{content:"\F29F"}.mdi-gentoo:before{content:"\F8E7"}.mdi-gesture:before{content:"\F7CA"}.mdi-gesture-double-tap:before{content:"\F73B"}.mdi-gesture-pinch:before{content:"\FABC"}.mdi-gesture-spread:before{content:"\FABD"}.mdi-gesture-swipe:before{content:"\FD52"}.mdi-gesture-swipe-down:before{content:"\F73C"}.mdi-gesture-swipe-horizontal:before{content:"\FABE"}.mdi-gesture-swipe-left:before{content:"\F73D"}.mdi-gesture-swipe-right:before{content:"\F73E"}.mdi-gesture-swipe-up:before{content:"\F73F"}.mdi-gesture-swipe-vertical:before{content:"\FABF"}.mdi-gesture-tap:before{content:"\F740"}.mdi-gesture-tap-hold:before{content:"\FD53"}.mdi-gesture-two-double-tap:before{content:"\F741"}.mdi-gesture-two-tap:before{content:"\F742"}.mdi-ghost:before{content:"\F2A0"}.mdi-ghost-off:before{content:"\F9F4"}.mdi-gif:before{content:"\FD54"}.mdi-gift:before{content:"\F2A1"}.mdi-git:before{content:"\F2A2"}.mdi-github-box:before{content:"\F2A3"}.mdi-github-circle:before{content:"\F2A4"}.mdi-github-face:before{content:"\F6DA"}.mdi-gitlab:before{content:"\FB7C"}.mdi-glass-cocktail:before{content:"\F356"}.mdi-glass-flute:before{content:"\F2A5"}.mdi-glass-mug:before{content:"\F2A6"}.mdi-glass-stange:before{content:"\F2A7"}.mdi-glass-tulip:before{content:"\F2A8"}.mdi-glass-wine:before{content:"\F875"}.mdi-glassdoor:before{content:"\F2A9"}.mdi-glasses:before{content:"\F2AA"}.mdi-globe-model:before{content:"\F8E8"}.mdi-gmail:before{content:"\F2AB"}.mdi-gnome:before{content:"\F2AC"}.mdi-go-kart:before{content:"\FD55"}.mdi-go-kart-track:before{content:"\FD56"}.mdi-gog:before{content:"\FB7D"}.mdi-golf:before{content:"\F822"}.mdi-gondola:before{content:"\F685"}.mdi-goodreads:before{content:"\FD57"}.mdi-google:before{content:"\F2AD"}.mdi-google-adwords:before{content:"\FC63"}.mdi-google-allo:before{content:"\F801"}.mdi-google-analytics:before{content:"\F7CB"}.mdi-google-assistant:before{content:"\F7CC"}.mdi-google-cardboard:before{content:"\F2AE"}.mdi-google-chrome:before{content:"\F2AF"}.mdi-google-circles:before{content:"\F2B0"}.mdi-google-circles-communities:before{content:"\F2B1"}.mdi-google-circles-extended:before{content:"\F2B2"}.mdi-google-circles-group:before{content:"\F2B3"}.mdi-google-classroom:before{content:"\F2C0"}.mdi-google-controller:before{content:"\F2B4"}.mdi-google-controller-off:before{content:"\F2B5"}.mdi-google-drive:before{content:"\F2B6"}.mdi-google-earth:before{content:"\F2B7"}.mdi-google-fit:before{content:"\F96B"}.mdi-google-glass:before{content:"\F2B8"}.mdi-google-hangouts:before{content:"\F2C9"}.mdi-google-home:before{content:"\F823"}.mdi-google-keep:before{content:"\F6DB"}.mdi-google-lens:before{content:"\F9F5"}.mdi-google-maps:before{content:"\F5F5"}.mdi-google-nearby:before{content:"\F2B9"}.mdi-google-pages:before{content:"\F2BA"}.mdi-google-photos:before{content:"\F6DC"}.mdi-google-physical-web:before{content:"\F2BB"}.mdi-google-play:before{content:"\F2BC"}.mdi-google-plus:before{content:"\F2BD"}.mdi-google-plus-box:before{content:"\F2BE"}.mdi-google-spreadsheet:before{content:"\F9F6"}.mdi-google-street-view:before{content:"\FC64"}.mdi-google-translate:before{content:"\F2BF"}.mdi-gpu:before{content:"\F8AD"}.mdi-gradient:before{content:"\F69F"}.mdi-grain:before{content:"\FD58"}.mdi-graphql:before{content:"\F876"}.mdi-grave-stone:before{content:"\FB7E"}.mdi-grease-pencil:before{content:"\F648"}.mdi-greater-than:before{content:"\F96C"}.mdi-greater-than-or-equal:before{content:"\F96D"}.mdi-grid:before{content:"\F2C1"}.mdi-grid-large:before{content:"\F757"}.mdi-grid-off:before{content:"\F2C2"}.mdi-group:before{content:"\F2C3"}.mdi-guitar-acoustic:before{content:"\F770"}.mdi-guitar-electric:before{content:"\F2C4"}.mdi-guitar-pick:before{content:"\F2C5"}.mdi-guitar-pick-outline:before{content:"\F2C6"}.mdi-guy-fawkes-mask:before{content:"\F824"}.mdi-hackernews:before{content:"\F624"}.mdi-hail:before{content:"\FAC0"}.mdi-halloween:before{content:"\FB7F"}.mdi-hamburger:before{content:"\F684"}.mdi-hammer:before{content:"\F8E9"}.mdi-hand:before{content:"\FA4E"}.mdi-hand-okay:before{content:"\FA4F"}.mdi-hand-peace:before{content:"\FA50"}.mdi-hand-peace-variant:before{content:"\FA51"}.mdi-hand-pointing-down:before{content:"\FA52"}.mdi-hand-pointing-left:before{content:"\FA53"}.mdi-hand-pointing-right:before{content:"\F2C7"}.mdi-hand-pointing-up:before{content:"\FA54"}.mdi-hanger:before{content:"\F2C8"}.mdi-hard-hat:before{content:"\F96E"}.mdi-harddisk:before{content:"\F2CA"}.mdi-hat-fedora:before{content:"\FB80"}.mdi-hazard-lights:before{content:"\FC65"}.mdi-hdr:before{content:"\FD59"}.mdi-hdr-off:before{content:"\FD5A"}.mdi-headphones:before{content:"\F2CB"}.mdi-headphones-bluetooth:before{content:"\F96F"}.mdi-headphones-box:before{content:"\F2CC"}.mdi-headphones-off:before{content:"\F7CD"}.mdi-headphones-settings:before{content:"\F2CD"}.mdi-headset:before{content:"\F2CE"}.mdi-headset-dock:before{content:"\F2CF"}.mdi-headset-off:before{content:"\F2D0"}.mdi-heart:before{content:"\F2D1"}.mdi-heart-box:before{content:"\F2D2"}.mdi-heart-box-outline:before{content:"\F2D3"}.mdi-heart-broken:before{content:"\F2D4"}.mdi-heart-broken-outline:before{content:"\FCF0"}.mdi-heart-circle:before{content:"\F970"}.mdi-heart-circle-outline:before{content:"\F971"}.mdi-heart-half:before{content:"\F6DE"}.mdi-heart-half-full:before{content:"\F6DD"}.mdi-heart-half-outline:before{content:"\F6DF"}.mdi-heart-multiple:before{content:"\FA55"}.mdi-heart-multiple-outline:before{content:"\FA56"}.mdi-heart-off:before{content:"\F758"}.mdi-heart-outline:before{content:"\F2D5"}.mdi-heart-pulse:before{content:"\F5F6"}.mdi-helicopter:before{content:"\FAC1"}.mdi-help:before{content:"\F2D6"}.mdi-help-box:before{content:"\F78A"}.mdi-help-circle:before{content:"\F2D7"}.mdi-help-circle-outline:before{content:"\F625"}.mdi-help-network:before{content:"\F6F4"}.mdi-help-network-outline:before{content:"\FC66"}.mdi-help-rhombus:before{content:"\FB81"}.mdi-help-rhombus-outline:before{content:"\FB82"}.mdi-hexagon:before{content:"\F2D8"}.mdi-hexagon-multiple:before{content:"\F6E0"}.mdi-hexagon-outline:before{content:"\F2D9"}.mdi-hexagon-slice-1:before{content:"\FAC2"}.mdi-hexagon-slice-2:before{content:"\FAC3"}.mdi-hexagon-slice-3:before{content:"\FAC4"}.mdi-hexagon-slice-4:before{content:"\FAC5"}.mdi-hexagon-slice-5:before{content:"\FAC6"}.mdi-hexagon-slice-6:before{content:"\FAC7"}.mdi-hexagram:before{content:"\FAC8"}.mdi-hexagram-outline:before{content:"\FAC9"}.mdi-high-definition:before{content:"\F7CE"}.mdi-high-definition-box:before{content:"\F877"}.mdi-highway:before{content:"\F5F7"}.mdi-hiking:before{content:"\FD5B"}.mdi-hinduism:before{content:"\F972"}.mdi-history:before{content:"\F2DA"}.mdi-hockey-puck:before{content:"\F878"}.mdi-hockey-sticks:before{content:"\F879"}.mdi-hololens:before{content:"\F2DB"}.mdi-home:before{content:"\F2DC"}.mdi-home-account:before{content:"\F825"}.mdi-home-alert:before{content:"\F87A"}.mdi-home-assistant:before{content:"\F7CF"}.mdi-home-automation:before{content:"\F7D0"}.mdi-home-circle:before{content:"\F7D1"}.mdi-home-city:before{content:"\FCF1"}.mdi-home-city-outline:before{content:"\FCF2"}.mdi-home-currency-usd:before{content:"\F8AE"}.mdi-home-floor-0:before{content:"\FDAE"}.mdi-home-floor-1:before{content:"\FD5C"}.mdi-home-floor-2:before{content:"\FD5D"}.mdi-home-floor-3:before{content:"\FD5E"}.mdi-home-floor-a:before{content:"\FD5F"}.mdi-home-floor-b:before{content:"\FD60"}.mdi-home-floor-g:before{content:"\FD61"}.mdi-home-floor-l:before{content:"\FD62"}.mdi-home-floor-negative-1:before{content:"\FDAF"}.mdi-home-group:before{content:"\FDB0"}.mdi-home-heart:before{content:"\F826"}.mdi-home-lock:before{content:"\F8EA"}.mdi-home-lock-open:before{content:"\F8EB"}.mdi-home-map-marker:before{content:"\F5F8"}.mdi-home-minus:before{content:"\F973"}.mdi-home-modern:before{content:"\F2DD"}.mdi-home-outline:before{content:"\F6A0"}.mdi-home-plus:before{content:"\F974"}.mdi-home-variant:before{content:"\F2DE"}.mdi-home-variant-outline:before{content:"\FB83"}.mdi-hook:before{content:"\F6E1"}.mdi-hook-off:before{content:"\F6E2"}.mdi-hops:before{content:"\F2DF"}.mdi-horseshoe:before{content:"\FA57"}.mdi-hospital:before{content:"\F2E0"}.mdi-hospital-building:before{content:"\F2E1"}.mdi-hospital-marker:before{content:"\F2E2"}.mdi-hot-tub:before{content:"\F827"}.mdi-hotel:before{content:"\F2E3"}.mdi-houzz:before{content:"\F2E4"}.mdi-houzz-box:before{content:"\F2E5"}.mdi-hubspot:before{content:"\FCF3"}.mdi-hulu:before{content:"\F828"}.mdi-human:before{content:"\F2E6"}.mdi-human-child:before{content:"\F2E7"}.mdi-human-female:before{content:"\F649"}.mdi-human-female-boy:before{content:"\FA58"}.mdi-human-female-female:before{content:"\FA59"}.mdi-human-female-girl:before{content:"\FA5A"}.mdi-human-greeting:before{content:"\F64A"}.mdi-human-handsdown:before{content:"\F64B"}.mdi-human-handsup:before{content:"\F64C"}.mdi-human-male:before{content:"\F64D"}.mdi-human-male-boy:before{content:"\FA5B"}.mdi-human-male-female:before{content:"\F2E8"}.mdi-human-male-girl:before{content:"\FA5C"}.mdi-human-male-male:before{content:"\FA5D"}.mdi-human-pregnant:before{content:"\F5CF"}.mdi-humble-bundle:before{content:"\F743"}.mdi-ice-cream:before{content:"\F829"}.mdi-iframe:before{content:"\FC67"}.mdi-iframe-outline:before{content:"\FC68"}.mdi-image:before{content:"\F2E9"}.mdi-image-album:before{content:"\F2EA"}.mdi-image-area:before{content:"\F2EB"}.mdi-image-area-close:before{content:"\F2EC"}.mdi-image-broken:before{content:"\F2ED"}.mdi-image-broken-variant:before{content:"\F2EE"}.mdi-image-filter:before{content:"\F2EF"}.mdi-image-filter-black-white:before{content:"\F2F0"}.mdi-image-filter-center-focus:before{content:"\F2F1"}.mdi-image-filter-center-focus-weak:before{content:"\F2F2"}.mdi-image-filter-drama:before{content:"\F2F3"}.mdi-image-filter-frames:before{content:"\F2F4"}.mdi-image-filter-hdr:before{content:"\F2F5"}.mdi-image-filter-none:before{content:"\F2F6"}.mdi-image-filter-tilt-shift:before{content:"\F2F7"}.mdi-image-filter-vintage:before{content:"\F2F8"}.mdi-image-move:before{content:"\F9F7"}.mdi-image-multiple:before{content:"\F2F9"}.mdi-image-off:before{content:"\F82A"}.mdi-image-outline:before{content:"\F975"}.mdi-image-plus:before{content:"\F87B"}.mdi-image-search:before{content:"\F976"}.mdi-image-search-outline:before{content:"\F977"}.mdi-image-size-select-actual:before{content:"\FC69"}.mdi-image-size-select-large:before{content:"\FC6A"}.mdi-image-size-select-small:before{content:"\FC6B"}.mdi-import:before{content:"\F2FA"}.mdi-inbox:before{content:"\F686"}.mdi-inbox-arrow-down:before{content:"\F2FB"}.mdi-inbox-arrow-up:before{content:"\F3D1"}.mdi-inbox-multiple:before{content:"\F8AF"}.mdi-inbox-multiple-outline:before{content:"\FB84"}.mdi-incognito:before{content:"\F5F9"}.mdi-infinity:before{content:"\F6E3"}.mdi-information:before{content:"\F2FC"}.mdi-information-outline:before{content:"\F2FD"}.mdi-information-variant:before{content:"\F64E"}.mdi-instagram:before{content:"\F2FE"}.mdi-instapaper:before{content:"\F2FF"}.mdi-internet-explorer:before{content:"\F300"}.mdi-invert-colors:before{content:"\F301"}.mdi-ip:before{content:"\FA5E"}.mdi-ip-network:before{content:"\FA5F"}.mdi-ip-network-outline:before{content:"\FC6C"}.mdi-ipod:before{content:"\FC6D"}.mdi-islam:before{content:"\F978"}.mdi-itunes:before{content:"\F676"}.mdi-jabber:before{content:"\FDB1"}.mdi-jeepney:before{content:"\F302"}.mdi-jira:before{content:"\F303"}.mdi-jquery:before{content:"\F87C"}.mdi-jsfiddle:before{content:"\F304"}.mdi-json:before{content:"\F626"}.mdi-judaism:before{content:"\F979"}.mdi-kabaddi:before{content:"\FD63"}.mdi-karate:before{content:"\F82B"}.mdi-keg:before{content:"\F305"}.mdi-kettle:before{content:"\F5FA"}.mdi-key:before{content:"\F306"}.mdi-key-change:before{content:"\F307"}.mdi-key-minus:before{content:"\F308"}.mdi-key-outline:before{content:"\FDB2"}.mdi-key-plus:before{content:"\F309"}.mdi-key-remove:before{content:"\F30A"}.mdi-key-variant:before{content:"\F30B"}.mdi-keyboard:before{content:"\F30C"}.mdi-keyboard-backspace:before{content:"\F30D"}.mdi-keyboard-caps:before{content:"\F30E"}.mdi-keyboard-close:before{content:"\F30F"}.mdi-keyboard-off:before{content:"\F310"}.mdi-keyboard-outline:before{content:"\F97A"}.mdi-keyboard-return:before{content:"\F311"}.mdi-keyboard-settings:before{content:"\F9F8"}.mdi-keyboard-settings-outline:before{content:"\F9F9"}.mdi-keyboard-tab:before{content:"\F312"}.mdi-keyboard-variant:before{content:"\F313"}.mdi-kickstarter:before{content:"\F744"}.mdi-knife:before{content:"\F9FA"}.mdi-knife-military:before{content:"\F9FB"}.mdi-kodi:before{content:"\F314"}.mdi-label:before{content:"\F315"}.mdi-label-off:before{content:"\FACA"}.mdi-label-off-outline:before{content:"\FACB"}.mdi-label-outline:before{content:"\F316"}.mdi-label-variant:before{content:"\FACC"}.mdi-label-variant-outline:before{content:"\FACD"}.mdi-ladybug:before{content:"\F82C"}.mdi-lambda:before{content:"\F627"}.mdi-lamp:before{content:"\F6B4"}.mdi-lan:before{content:"\F317"}.mdi-lan-connect:before{content:"\F318"}.mdi-lan-disconnect:before{content:"\F319"}.mdi-lan-pending:before{content:"\F31A"}.mdi-language-c:before{content:"\F671"}.mdi-language-cpp:before{content:"\F672"}.mdi-language-csharp:before{content:"\F31B"}.mdi-language-css3:before{content:"\F31C"}.mdi-language-go:before{content:"\F7D2"}.mdi-language-haskell:before{content:"\FC6E"}.mdi-language-html5:before{content:"\F31D"}.mdi-language-java:before{content:"\FB1C"}.mdi-language-javascript:before{content:"\F31E"}.mdi-language-lua:before{content:"\F8B0"}.mdi-language-php:before{content:"\F31F"}.mdi-language-python:before{content:"\F320"}.mdi-language-python-text:before{content:"\F321"}.mdi-language-r:before{content:"\F7D3"}.mdi-language-ruby-on-rails:before{content:"\FACE"}.mdi-language-swift:before{content:"\F6E4"}.mdi-language-typescript:before{content:"\F6E5"}.mdi-laptop:before{content:"\F322"}.mdi-laptop-chromebook:before{content:"\F323"}.mdi-laptop-mac:before{content:"\F324"}.mdi-laptop-off:before{content:"\F6E6"}.mdi-laptop-windows:before{content:"\F325"}.mdi-laravel:before{content:"\FACF"}.mdi-lastfm:before{content:"\F326"}.mdi-lastpass:before{content:"\F446"}.mdi-launch:before{content:"\F327"}.mdi-lava-lamp:before{content:"\F7D4"}.mdi-layers:before{content:"\F328"}.mdi-layers-off:before{content:"\F329"}.mdi-layers-off-outline:before{content:"\F9FC"}.mdi-layers-outline:before{content:"\F9FD"}.mdi-lead-pencil:before{content:"\F64F"}.mdi-leaf:before{content:"\F32A"}.mdi-leaf-maple:before{content:"\FC6F"}.mdi-leak:before{content:"\FDB3"}.mdi-leak-off:before{content:"\FDB4"}.mdi-led-off:before{content:"\F32B"}.mdi-led-on:before{content:"\F32C"}.mdi-led-outline:before{content:"\F32D"}.mdi-led-strip:before{content:"\F7D5"}.mdi-led-variant-off:before{content:"\F32E"}.mdi-led-variant-on:before{content:"\F32F"}.mdi-led-variant-outline:before{content:"\F330"}.mdi-less-than:before{content:"\F97B"}.mdi-less-than-or-equal:before{content:"\F97C"}.mdi-library:before{content:"\F331"}.mdi-library-books:before{content:"\F332"}.mdi-library-movie:before{content:"\FCF4"}.mdi-library-music:before{content:"\F333"}.mdi-library-plus:before{content:"\F334"}.mdi-library-shelves:before{content:"\FB85"}.mdi-library-video:before{content:"\FCF5"}.mdi-lifebuoy:before{content:"\F87D"}.mdi-light-switch:before{content:"\F97D"}.mdi-lightbulb:before{content:"\F335"}.mdi-lightbulb-on:before{content:"\F6E7"}.mdi-lightbulb-on-outline:before{content:"\F6E8"}.mdi-lightbulb-outline:before{content:"\F336"}.mdi-lighthouse:before{content:"\F9FE"}.mdi-lighthouse-on:before{content:"\F9FF"}.mdi-link:before{content:"\F337"}.mdi-link-box:before{content:"\FCF6"}.mdi-link-box-outline:before{content:"\FCF7"}.mdi-link-box-variant:before{content:"\FCF8"}.mdi-link-box-variant-outline:before{content:"\FCF9"}.mdi-link-off:before{content:"\F338"}.mdi-link-plus:before{content:"\FC70"}.mdi-link-variant:before{content:"\F339"}.mdi-link-variant-off:before{content:"\F33A"}.mdi-linkedin:before{content:"\F33B"}.mdi-linkedin-box:before{content:"\F33C"}.mdi-linux:before{content:"\F33D"}.mdi-linux-mint:before{content:"\F8EC"}.mdi-litecoin:before{content:"\FA60"}.mdi-loading:before{content:"\F771"}.mdi-lock:before{content:"\F33E"}.mdi-lock-alert:before{content:"\F8ED"}.mdi-lock-clock:before{content:"\F97E"}.mdi-lock-open:before{content:"\F33F"}.mdi-lock-open-outline:before{content:"\F340"}.mdi-lock-outline:before{content:"\F341"}.mdi-lock-pattern:before{content:"\F6E9"}.mdi-lock-plus:before{content:"\F5FB"}.mdi-lock-question:before{content:"\F8EE"}.mdi-lock-reset:before{content:"\F772"}.mdi-lock-smart:before{content:"\F8B1"}.mdi-locker:before{content:"\F7D6"}.mdi-locker-multiple:before{content:"\F7D7"}.mdi-login:before{content:"\F342"}.mdi-login-variant:before{content:"\F5FC"}.mdi-logout:before{content:"\F343"}.mdi-logout-variant:before{content:"\F5FD"}.mdi-looks:before{content:"\F344"}.mdi-loop:before{content:"\F6EA"}.mdi-loupe:before{content:"\F345"}.mdi-lumx:before{content:"\F346"}.mdi-lyft:before{content:"\FB1D"}.mdi-magnet:before{content:"\F347"}.mdi-magnet-on:before{content:"\F348"}.mdi-magnify:before{content:"\F349"}.mdi-magnify-close:before{content:"\F97F"}.mdi-magnify-minus:before{content:"\F34A"}.mdi-magnify-minus-cursor:before{content:"\FA61"}.mdi-magnify-minus-outline:before{content:"\F6EB"}.mdi-magnify-plus:before{content:"\F34B"}.mdi-magnify-plus-cursor:before{content:"\FA62"}.mdi-magnify-plus-outline:before{content:"\F6EC"}.mdi-mail-ru:before{content:"\F34C"}.mdi-mailbox:before{content:"\F6ED"}.mdi-mailbox-open:before{content:"\FD64"}.mdi-mailbox-open-outline:before{content:"\FD65"}.mdi-mailbox-open-up:before{content:"\FD66"}.mdi-mailbox-open-up-outline:before{content:"\FD67"}.mdi-mailbox-outline:before{content:"\FD68"}.mdi-mailbox-up:before{content:"\FD69"}.mdi-mailbox-up-outline:before{content:"\FD6A"}.mdi-map:before{content:"\F34D"}.mdi-map-clock:before{content:"\FCFA"}.mdi-map-clock-outline:before{content:"\FCFB"}.mdi-map-legend:before{content:"\FA00"}.mdi-map-marker:before{content:"\F34E"}.mdi-map-marker-check:before{content:"\FC71"}.mdi-map-marker-circle:before{content:"\F34F"}.mdi-map-marker-distance:before{content:"\F8EF"}.mdi-map-marker-minus:before{content:"\F650"}.mdi-map-marker-multiple:before{content:"\F350"}.mdi-map-marker-off:before{content:"\F351"}.mdi-map-marker-outline:before{content:"\F7D8"}.mdi-map-marker-path:before{content:"\FCFC"}.mdi-map-marker-plus:before{content:"\F651"}.mdi-map-marker-radius:before{content:"\F352"}.mdi-map-minus:before{content:"\F980"}.mdi-map-outline:before{content:"\F981"}.mdi-map-plus:before{content:"\F982"}.mdi-map-search:before{content:"\F983"}.mdi-map-search-outline:before{content:"\F984"}.mdi-mapbox:before{content:"\FB86"}.mdi-margin:before{content:"\F353"}.mdi-markdown:before{content:"\F354"}.mdi-marker:before{content:"\F652"}.mdi-marker-cancel:before{content:"\FDB5"}.mdi-marker-check:before{content:"\F355"}.mdi-mastodon:before{content:"\FAD0"}.mdi-mastodon-variant:before{content:"\FAD1"}.mdi-material-design:before{content:"\F985"}.mdi-material-ui:before{content:"\F357"}.mdi-math-compass:before{content:"\F358"}.mdi-math-cos:before{content:"\FC72"}.mdi-math-sin:before{content:"\FC73"}.mdi-math-tan:before{content:"\FC74"}.mdi-matrix:before{content:"\F628"}.mdi-maxcdn:before{content:"\F359"}.mdi-medal:before{content:"\F986"}.mdi-medical-bag:before{content:"\F6EE"}.mdi-medium:before{content:"\F35A"}.mdi-meetup:before{content:"\FAD2"}.mdi-memory:before{content:"\F35B"}.mdi-menu:before{content:"\F35C"}.mdi-menu-down:before{content:"\F35D"}.mdi-menu-down-outline:before{content:"\F6B5"}.mdi-menu-left:before{content:"\F35E"}.mdi-menu-left-outline:before{content:"\FA01"}.mdi-menu-open:before{content:"\FB87"}.mdi-menu-right:before{content:"\F35F"}.mdi-menu-right-outline:before{content:"\FA02"}.mdi-menu-swap:before{content:"\FA63"}.mdi-menu-swap-outline:before{content:"\FA64"}.mdi-menu-up:before{content:"\F360"}.mdi-menu-up-outline:before{content:"\F6B6"}.mdi-message:before{content:"\F361"}.mdi-message-alert:before{content:"\F362"}.mdi-message-alert-outline:before{content:"\FA03"}.mdi-message-bulleted:before{content:"\F6A1"}.mdi-message-bulleted-off:before{content:"\F6A2"}.mdi-message-draw:before{content:"\F363"}.mdi-message-image:before{content:"\F364"}.mdi-message-outline:before{content:"\F365"}.mdi-message-plus:before{content:"\F653"}.mdi-message-processing:before{content:"\F366"}.mdi-message-reply:before{content:"\F367"}.mdi-message-reply-text:before{content:"\F368"}.mdi-message-settings:before{content:"\F6EF"}.mdi-message-settings-variant:before{content:"\F6F0"}.mdi-message-text:before{content:"\F369"}.mdi-message-text-outline:before{content:"\F36A"}.mdi-message-video:before{content:"\F36B"}.mdi-meteor:before{content:"\F629"}.mdi-metronome:before{content:"\F7D9"}.mdi-metronome-tick:before{content:"\F7DA"}.mdi-micro-sd:before{content:"\F7DB"}.mdi-microphone:before{content:"\F36C"}.mdi-microphone-minus:before{content:"\F8B2"}.mdi-microphone-off:before{content:"\F36D"}.mdi-microphone-outline:before{content:"\F36E"}.mdi-microphone-plus:before{content:"\F8B3"}.mdi-microphone-settings:before{content:"\F36F"}.mdi-microphone-variant:before{content:"\F370"}.mdi-microphone-variant-off:before{content:"\F371"}.mdi-microscope:before{content:"\F654"}.mdi-microsoft:before{content:"\F372"}.mdi-microsoft-dynamics:before{content:"\F987"}.mdi-microwave:before{content:"\FC75"}.mdi-midi:before{content:"\F8F0"}.mdi-midi-port:before{content:"\F8F1"}.mdi-mine:before{content:"\FDB6"}.mdi-minecraft:before{content:"\F373"}.mdi-mini-sd:before{content:"\FA04"}.mdi-minidisc:before{content:"\FA05"}.mdi-minus:before{content:"\F374"}.mdi-minus-box:before{content:"\F375"}.mdi-minus-box-outline:before{content:"\F6F1"}.mdi-minus-circle:before{content:"\F376"}.mdi-minus-circle-outline:before{content:"\F377"}.mdi-minus-network:before{content:"\F378"}.mdi-minus-network-outline:before{content:"\FC76"}.mdi-mixcloud:before{content:"\F62A"}.mdi-mixed-martial-arts:before{content:"\FD6B"}.mdi-mixed-reality:before{content:"\F87E"}.mdi-mixer:before{content:"\F7DC"}.mdi-molecule:before{content:"\FB88"}.mdi-monitor:before{content:"\F379"}.mdi-monitor-cellphone:before{content:"\F988"}.mdi-monitor-cellphone-star:before{content:"\F989"}.mdi-monitor-dashboard:before{content:"\FA06"}.mdi-monitor-lock:before{content:"\FDB7"}.mdi-monitor-multiple:before{content:"\F37A"}.mdi-monitor-off:before{content:"\FD6C"}.mdi-monitor-star:before{content:"\FDB8"}.mdi-more:before{content:"\F37B"}.mdi-mother-nurse:before{content:"\FCFD"}.mdi-motion-sensor:before{content:"\FD6D"}.mdi-motorbike:before{content:"\F37C"}.mdi-mouse:before{content:"\F37D"}.mdi-mouse-bluetooth:before{content:"\F98A"}.mdi-mouse-off:before{content:"\F37E"}.mdi-mouse-variant:before{content:"\F37F"}.mdi-mouse-variant-off:before{content:"\F380"}.mdi-move-resize:before{content:"\F655"}.mdi-move-resize-variant:before{content:"\F656"}.mdi-movie:before{content:"\F381"}.mdi-movie-outline:before{content:"\FDB9"}.mdi-movie-roll:before{content:"\F7DD"}.mdi-muffin:before{content:"\F98B"}.mdi-multiplication:before{content:"\F382"}.mdi-multiplication-box:before{content:"\F383"}.mdi-mushroom:before{content:"\F7DE"}.mdi-mushroom-outline:before{content:"\F7DF"}.mdi-music:before{content:"\F759"}.mdi-music-box:before{content:"\F384"}.mdi-music-box-outline:before{content:"\F385"}.mdi-music-circle:before{content:"\F386"}.mdi-music-circle-outline:before{content:"\FAD3"}.mdi-music-note:before{content:"\F387"}.mdi-music-note-bluetooth:before{content:"\F5FE"}.mdi-music-note-bluetooth-off:before{content:"\F5FF"}.mdi-music-note-eighth:before{content:"\F388"}.mdi-music-note-half:before{content:"\F389"}.mdi-music-note-off:before{content:"\F38A"}.mdi-music-note-plus:before{content:"\FDBA"}.mdi-music-note-quarter:before{content:"\F38B"}.mdi-music-note-sixteenth:before{content:"\F38C"}.mdi-music-note-whole:before{content:"\F38D"}.mdi-music-off:before{content:"\F75A"}.mdi-nail:before{content:"\FDBB"}.mdi-nas:before{content:"\F8F2"}.mdi-nativescript:before{content:"\F87F"}.mdi-nature:before{content:"\F38E"}.mdi-nature-people:before{content:"\F38F"}.mdi-navigation:before{content:"\F390"}.mdi-near-me:before{content:"\F5CD"}.mdi-needle:before{content:"\F391"}.mdi-netflix:before{content:"\F745"}.mdi-network:before{content:"\F6F2"}.mdi-network-off:before{content:"\FC77"}.mdi-network-off-outline:before{content:"\FC78"}.mdi-network-outline:before{content:"\FC79"}.mdi-network-strength-1:before{content:"\F8F3"}.mdi-network-strength-1-alert:before{content:"\F8F4"}.mdi-network-strength-2:before{content:"\F8F5"}.mdi-network-strength-2-alert:before{content:"\F8F6"}.mdi-network-strength-3:before{content:"\F8F7"}.mdi-network-strength-3-alert:before{content:"\F8F8"}.mdi-network-strength-4:before{content:"\F8F9"}.mdi-network-strength-4-alert:before{content:"\F8FA"}.mdi-network-strength-off:before{content:"\F8FB"}.mdi-network-strength-off-outline:before{content:"\F8FC"}.mdi-network-strength-outline:before{content:"\F8FD"}.mdi-new-box:before{content:"\F394"}.mdi-newspaper:before{content:"\F395"}.mdi-nfc:before{content:"\F396"}.mdi-nfc-tap:before{content:"\F397"}.mdi-nfc-variant:before{content:"\F398"}.mdi-ninja:before{content:"\F773"}.mdi-nintendo-switch:before{content:"\F7E0"}.mdi-nodejs:before{content:"\F399"}.mdi-not-equal:before{content:"\F98C"}.mdi-not-equal-variant:before{content:"\F98D"}.mdi-note:before{content:"\F39A"}.mdi-note-multiple:before{content:"\F6B7"}.mdi-note-multiple-outline:before{content:"\F6B8"}.mdi-note-outline:before{content:"\F39B"}.mdi-note-plus:before{content:"\F39C"}.mdi-note-plus-outline:before{content:"\F39D"}.mdi-note-text:before{content:"\F39E"}.mdi-notebook:before{content:"\F82D"}.mdi-notification-clear-all:before{content:"\F39F"}.mdi-npm:before{content:"\F6F6"}.mdi-npm-variant:before{content:"\F98E"}.mdi-npm-variant-outline:before{content:"\F98F"}.mdi-nuke:before{content:"\F6A3"}.mdi-null:before{content:"\F7E1"}.mdi-numeric:before{content:"\F3A0"}.mdi-numeric-0:before{content:"\30"}.mdi-numeric-0-box:before{content:"\F3A1"}.mdi-numeric-0-box-multiple-outline:before{content:"\F3A2"}.mdi-numeric-0-box-outline:before{content:"\F3A3"}.mdi-numeric-0-circle:before{content:"\FC7A"}.mdi-numeric-0-circle-outline:before{content:"\FC7B"}.mdi-numeric-1:before{content:"\31"}.mdi-numeric-1-box:before{content:"\F3A4"}.mdi-numeric-1-box-multiple-outline:before{content:"\F3A5"}.mdi-numeric-1-box-outline:before{content:"\F3A6"}.mdi-numeric-1-circle:before{content:"\FC7C"}.mdi-numeric-1-circle-outline:before{content:"\FC7D"}.mdi-numeric-2:before{content:"\32"}.mdi-numeric-2-box:before{content:"\F3A7"}.mdi-numeric-2-box-multiple-outline:before{content:"\F3A8"}.mdi-numeric-2-box-outline:before{content:"\F3A9"}.mdi-numeric-2-circle:before{content:"\FC7E"}.mdi-numeric-2-circle-outline:before{content:"\FC7F"}.mdi-numeric-3:before{content:"\33"}.mdi-numeric-3-box:before{content:"\F3AA"}.mdi-numeric-3-box-multiple-outline:before{content:"\F3AB"}.mdi-numeric-3-box-outline:before{content:"\F3AC"}.mdi-numeric-3-circle:before{content:"\FC80"}.mdi-numeric-3-circle-outline:before{content:"\FC81"}.mdi-numeric-4:before{content:"\34"}.mdi-numeric-4-box:before{content:"\F3AD"}.mdi-numeric-4-box-multiple-outline:before{content:"\F3AE"}.mdi-numeric-4-box-outline:before{content:"\F3AF"}.mdi-numeric-4-circle:before{content:"\FC82"}.mdi-numeric-4-circle-outline:before{content:"\FC83"}.mdi-numeric-5:before{content:"\35"}.mdi-numeric-5-box:before{content:"\F3B0"}.mdi-numeric-5-box-multiple-outline:before{content:"\F3B1"}.mdi-numeric-5-box-outline:before{content:"\F3B2"}.mdi-numeric-5-circle:before{content:"\FC84"}.mdi-numeric-5-circle-outline:before{content:"\FC85"}.mdi-numeric-6:before{content:"\36"}.mdi-numeric-6-box:before{content:"\F3B3"}.mdi-numeric-6-box-multiple-outline:before{content:"\F3B4"}.mdi-numeric-6-box-outline:before{content:"\F3B5"}.mdi-numeric-6-circle:before{content:"\FC86"}.mdi-numeric-6-circle-outline:before{content:"\FC87"}.mdi-numeric-7:before{content:"\37"}.mdi-numeric-7-box:before{content:"\F3B6"}.mdi-numeric-7-box-multiple-outline:before{content:"\F3B7"}.mdi-numeric-7-box-outline:before{content:"\F3B8"}.mdi-numeric-7-circle:before{content:"\FC88"}.mdi-numeric-7-circle-outline:before{content:"\FC89"}.mdi-numeric-8:before{content:"\38"}.mdi-numeric-8-box:before{content:"\F3B9"}.mdi-numeric-8-box-multiple-outline:before{content:"\F3BA"}.mdi-numeric-8-box-outline:before{content:"\F3BB"}.mdi-numeric-8-circle:before{content:"\FC8A"}.mdi-numeric-8-circle-outline:before{content:"\FC8B"}.mdi-numeric-9:before{content:"\39"}.mdi-numeric-9-box:before{content:"\F3BC"}.mdi-numeric-9-box-multiple-outline:before{content:"\F3BD"}.mdi-numeric-9-box-outline:before{content:"\F3BE"}.mdi-numeric-9-circle:before{content:"\FC8C"}.mdi-numeric-9-circle-outline:before{content:"\FC8D"}.mdi-numeric-9-plus-box:before{content:"\F3BF"}.mdi-numeric-9-plus-box-multiple-outline:before{content:"\F3C0"}.mdi-numeric-9-plus-box-outline:before{content:"\F3C1"}.mdi-numeric-9-plus-circle:before{content:"\FC8E"}.mdi-numeric-9-plus-circle-outline:before{content:"\FC8F"}.mdi-nut:before{content:"\F6F7"}.mdi-nutrition:before{content:"\F3C2"}.mdi-oar:before{content:"\F67B"}.mdi-ocarina:before{content:"\FDBC"}.mdi-octagon:before{content:"\F3C3"}.mdi-octagon-outline:before{content:"\F3C4"}.mdi-octagram:before{content:"\F6F8"}.mdi-octagram-outline:before{content:"\F774"}.mdi-odnoklassniki:before{content:"\F3C5"}.mdi-office:before{content:"\F3C6"}.mdi-office-building:before{content:"\F990"}.mdi-oil:before{content:"\F3C7"}.mdi-oil-temperature:before{content:"\F3C8"}.mdi-omega:before{content:"\F3C9"}.mdi-one-up:before{content:"\FB89"}.mdi-onedrive:before{content:"\F3CA"}.mdi-onenote:before{content:"\F746"}.mdi-onepassword:before{content:"\F880"}.mdi-opacity:before{content:"\F5CC"}.mdi-open-in-app:before{content:"\F3CB"}.mdi-open-in-new:before{content:"\F3CC"}.mdi-open-source-initiative:before{content:"\FB8A"}.mdi-openid:before{content:"\F3CD"}.mdi-opera:before{content:"\F3CE"}.mdi-orbit:before{content:"\F018"}.mdi-origin:before{content:"\FB2B"}.mdi-ornament:before{content:"\F3CF"}.mdi-ornament-variant:before{content:"\F3D0"}.mdi-outlook:before{content:"\FCFE"}.mdi-owl:before{content:"\F3D2"}.mdi-pac-man:before{content:"\FB8B"}.mdi-package:before{content:"\F3D3"}.mdi-package-down:before{content:"\F3D4"}.mdi-package-up:before{content:"\F3D5"}.mdi-package-variant:before{content:"\F3D6"}.mdi-package-variant-closed:before{content:"\F3D7"}.mdi-page-first:before{content:"\F600"}.mdi-page-last:before{content:"\F601"}.mdi-page-layout-body:before{content:"\F6F9"}.mdi-page-layout-footer:before{content:"\F6FA"}.mdi-page-layout-header:before{content:"\F6FB"}.mdi-page-layout-sidebar-left:before{content:"\F6FC"}.mdi-page-layout-sidebar-right:before{content:"\F6FD"}.mdi-page-next:before{content:"\FB8C"}.mdi-page-next-outline:before{content:"\FB8D"}.mdi-page-previous:before{content:"\FB8E"}.mdi-page-previous-outline:before{content:"\FB8F"}.mdi-palette:before{content:"\F3D8"}.mdi-palette-advanced:before{content:"\F3D9"}.mdi-palette-outline:before{content:"\FDE8"}.mdi-palette-swatch:before{content:"\F8B4"}.mdi-pan:before{content:"\FB90"}.mdi-pan-bottom-left:before{content:"\FB91"}.mdi-pan-bottom-right:before{content:"\FB92"}.mdi-pan-down:before{content:"\FB93"}.mdi-pan-horizontal:before{content:"\FB94"}.mdi-pan-left:before{content:"\FB95"}.mdi-pan-right:before{content:"\FB96"}.mdi-pan-top-left:before{content:"\FB97"}.mdi-pan-top-right:before{content:"\FB98"}.mdi-pan-up:before{content:"\FB99"}.mdi-pan-vertical:before{content:"\FB9A"}.mdi-panda:before{content:"\F3DA"}.mdi-pandora:before{content:"\F3DB"}.mdi-panorama:before{content:"\F3DC"}.mdi-panorama-fisheye:before{content:"\F3DD"}.mdi-panorama-horizontal:before{content:"\F3DE"}.mdi-panorama-vertical:before{content:"\F3DF"}.mdi-panorama-wide-angle:before{content:"\F3E0"}.mdi-paper-cut-vertical:before{content:"\F3E1"}.mdi-paperclip:before{content:"\F3E2"}.mdi-parachute:before{content:"\FC90"}.mdi-parachute-outline:before{content:"\FC91"}.mdi-parking:before{content:"\F3E3"}.mdi-passport:before{content:"\F7E2"}.mdi-passport-biometric:before{content:"\FDBD"}.mdi-patreon:before{content:"\F881"}.mdi-pause:before{content:"\F3E4"}.mdi-pause-circle:before{content:"\F3E5"}.mdi-pause-circle-outline:before{content:"\F3E6"}.mdi-pause-octagon:before{content:"\F3E7"}.mdi-pause-octagon-outline:before{content:"\F3E8"}.mdi-paw:before{content:"\F3E9"}.mdi-paw-off:before{content:"\F657"}.mdi-paypal:before{content:"\F882"}.mdi-peace:before{content:"\F883"}.mdi-pen:before{content:"\F3EA"}.mdi-pen-lock:before{content:"\FDBE"}.mdi-pen-minus:before{content:"\FDBF"}.mdi-pen-off:before{content:"\FDC0"}.mdi-pen-plus:before{content:"\FDC1"}.mdi-pen-remove:before{content:"\FDC2"}.mdi-pencil:before{content:"\F3EB"}.mdi-pencil-box:before{content:"\F3EC"}.mdi-pencil-box-outline:before{content:"\F3ED"}.mdi-pencil-circle:before{content:"\F6FE"}.mdi-pencil-circle-outline:before{content:"\F775"}.mdi-pencil-lock:before{content:"\F3EE"}.mdi-pencil-lock-outline:before{content:"\FDC3"}.mdi-pencil-minus:before{content:"\FDC4"}.mdi-pencil-minus-outline:before{content:"\FDC5"}.mdi-pencil-off:before{content:"\F3EF"}.mdi-pencil-off-outline:before{content:"\FDC6"}.mdi-pencil-outline:before{content:"\FC92"}.mdi-pencil-plus:before{content:"\FDC7"}.mdi-pencil-plus-outline:before{content:"\FDC8"}.mdi-pencil-remove:before{content:"\FDC9"}.mdi-pencil-remove-outline:before{content:"\FDCA"}.mdi-pentagon:before{content:"\F6FF"}.mdi-pentagon-outline:before{content:"\F700"}.mdi-percent:before{content:"\F3F0"}.mdi-periodic-table:before{content:"\F8B5"}.mdi-periodic-table-co2:before{content:"\F7E3"}.mdi-periscope:before{content:"\F747"}.mdi-perspective-less:before{content:"\FCFF"}.mdi-perspective-more:before{content:"\FD00"}.mdi-pharmacy:before{content:"\F3F1"}.mdi-phone:before{content:"\F3F2"}.mdi-phone-bluetooth:before{content:"\F3F3"}.mdi-phone-classic:before{content:"\F602"}.mdi-phone-forward:before{content:"\F3F4"}.mdi-phone-hangup:before{content:"\F3F5"}.mdi-phone-in-talk:before{content:"\F3F6"}.mdi-phone-incoming:before{content:"\F3F7"}.mdi-phone-lock:before{content:"\F3F8"}.mdi-phone-log:before{content:"\F3F9"}.mdi-phone-minus:before{content:"\F658"}.mdi-phone-missed:before{content:"\F3FA"}.mdi-phone-off:before{content:"\FDCB"}.mdi-phone-outgoing:before{content:"\F3FB"}.mdi-phone-outline:before{content:"\FDCC"}.mdi-phone-paused:before{content:"\F3FC"}.mdi-phone-plus:before{content:"\F659"}.mdi-phone-return:before{content:"\F82E"}.mdi-phone-rotate-landscape:before{content:"\F884"}.mdi-phone-rotate-portrait:before{content:"\F885"}.mdi-phone-settings:before{content:"\F3FD"}.mdi-phone-voip:before{content:"\F3FE"}.mdi-pi:before{content:"\F3FF"}.mdi-pi-box:before{content:"\F400"}.mdi-pi-hole:before{content:"\FDCD"}.mdi-piano:before{content:"\F67C"}.mdi-pickaxe:before{content:"\F8B6"}.mdi-pier:before{content:"\F886"}.mdi-pier-crane:before{content:"\F887"}.mdi-pig:before{content:"\F401"}.mdi-pill:before{content:"\F402"}.mdi-pillar:before{content:"\F701"}.mdi-pin:before{content:"\F403"}.mdi-pin-off:before{content:"\F404"}.mdi-pin-off-outline:before{content:"\F92F"}.mdi-pin-outline:before{content:"\F930"}.mdi-pine-tree:before{content:"\F405"}.mdi-pine-tree-box:before{content:"\F406"}.mdi-pinterest:before{content:"\F407"}.mdi-pinterest-box:before{content:"\F408"}.mdi-pinwheel:before{content:"\FAD4"}.mdi-pinwheel-outline:before{content:"\FAD5"}.mdi-pipe:before{content:"\F7E4"}.mdi-pipe-disconnected:before{content:"\F7E5"}.mdi-pipe-leak:before{content:"\F888"}.mdi-pirate:before{content:"\FA07"}.mdi-pistol:before{content:"\F702"}.mdi-piston:before{content:"\F889"}.mdi-pizza:before{content:"\F409"}.mdi-play:before{content:"\F40A"}.mdi-play-box-outline:before{content:"\F40B"}.mdi-play-circle:before{content:"\F40C"}.mdi-play-circle-outline:before{content:"\F40D"}.mdi-play-network:before{content:"\F88A"}.mdi-play-network-outline:before{content:"\FC93"}.mdi-play-pause:before{content:"\F40E"}.mdi-play-protected-content:before{content:"\F40F"}.mdi-play-speed:before{content:"\F8FE"}.mdi-playlist-check:before{content:"\F5C7"}.mdi-playlist-edit:before{content:"\F8FF"}.mdi-playlist-minus:before{content:"\F410"}.mdi-playlist-music:before{content:"\FC94"}.mdi-playlist-music-outline:before{content:"\FC95"}.mdi-playlist-play:before{content:"\F411"}.mdi-playlist-plus:before{content:"\F412"}.mdi-playlist-remove:before{content:"\F413"}.mdi-playlist-star:before{content:"\FDCE"}.mdi-playstation:before{content:"\F414"}.mdi-plex:before{content:"\F6B9"}.mdi-plus:before{content:"\F415"}.mdi-plus-box:before{content:"\F416"}.mdi-plus-box-outline:before{content:"\F703"}.mdi-plus-circle:before{content:"\F417"}.mdi-plus-circle-multiple-outline:before{content:"\F418"}.mdi-plus-circle-outline:before{content:"\F419"}.mdi-plus-minus:before{content:"\F991"}.mdi-plus-minus-box:before{content:"\F992"}.mdi-plus-network:before{content:"\F41A"}.mdi-plus-network-outline:before{content:"\FC96"}.mdi-plus-one:before{content:"\F41B"}.mdi-plus-outline:before{content:"\F704"}.mdi-pocket:before{content:"\F41C"}.mdi-podcast:before{content:"\F993"}.mdi-podium:before{content:"\FD01"}.mdi-podium-bronze:before{content:"\FD02"}.mdi-podium-gold:before{content:"\FD03"}.mdi-podium-silver:before{content:"\FD04"}.mdi-point-of-sale:before{content:"\FD6E"}.mdi-pokeball:before{content:"\F41D"}.mdi-pokemon-go:before{content:"\FA08"}.mdi-poker-chip:before{content:"\F82F"}.mdi-polaroid:before{content:"\F41E"}.mdi-poll:before{content:"\F41F"}.mdi-poll-box:before{content:"\F420"}.mdi-polymer:before{content:"\F421"}.mdi-pool:before{content:"\F606"}.mdi-popcorn:before{content:"\F422"}.mdi-postage-stamp:before{content:"\FC97"}.mdi-pot:before{content:"\F65A"}.mdi-pot-mix:before{content:"\F65B"}.mdi-pound:before{content:"\F423"}.mdi-pound-box:before{content:"\F424"}.mdi-power:before{content:"\F425"}.mdi-power-cycle:before{content:"\F900"}.mdi-power-off:before{content:"\F901"}.mdi-power-on:before{content:"\F902"}.mdi-power-plug:before{content:"\F6A4"}.mdi-power-plug-off:before{content:"\F6A5"}.mdi-power-settings:before{content:"\F426"}.mdi-power-sleep:before{content:"\F903"}.mdi-power-socket:before{content:"\F427"}.mdi-power-socket-au:before{content:"\F904"}.mdi-power-socket-eu:before{content:"\F7E6"}.mdi-power-socket-uk:before{content:"\F7E7"}.mdi-power-socket-us:before{content:"\F7E8"}.mdi-power-standby:before{content:"\F905"}.mdi-powershell:before{content:"\FA09"}.mdi-prescription:before{content:"\F705"}.mdi-presentation:before{content:"\F428"}.mdi-presentation-play:before{content:"\F429"}.mdi-printer:before{content:"\F42A"}.mdi-printer-3d:before{content:"\F42B"}.mdi-printer-alert:before{content:"\F42C"}.mdi-printer-settings:before{content:"\F706"}.mdi-printer-wireless:before{content:"\FA0A"}.mdi-priority-high:before{content:"\F603"}.mdi-priority-low:before{content:"\F604"}.mdi-professional-hexagon:before{content:"\F42D"}.mdi-progress-alert:before{content:"\FC98"}.mdi-progress-check:before{content:"\F994"}.mdi-progress-clock:before{content:"\F995"}.mdi-progress-download:before{content:"\F996"}.mdi-progress-upload:before{content:"\F997"}.mdi-progress-wrench:before{content:"\FC99"}.mdi-projector:before{content:"\F42E"}.mdi-projector-screen:before{content:"\F42F"}.mdi-publish:before{content:"\F6A6"}.mdi-pulse:before{content:"\F430"}.mdi-pumpkin:before{content:"\FB9B"}.mdi-puzzle:before{content:"\F431"}.mdi-puzzle-outline:before{content:"\FA65"}.mdi-qi:before{content:"\F998"}.mdi-qqchat:before{content:"\F605"}.mdi-qrcode:before{content:"\F432"}.mdi-qrcode-edit:before{content:"\F8B7"}.mdi-qrcode-scan:before{content:"\F433"}.mdi-quadcopter:before{content:"\F434"}.mdi-quality-high:before{content:"\F435"}.mdi-quality-low:before{content:"\FA0B"}.mdi-quality-medium:before{content:"\FA0C"}.mdi-quicktime:before{content:"\F436"}.mdi-quora:before{content:"\FD05"}.mdi-rabbit:before{content:"\F906"}.mdi-racing-helmet:before{content:"\FD6F"}.mdi-racquetball:before{content:"\FD70"}.mdi-radar:before{content:"\F437"}.mdi-radiator:before{content:"\F438"}.mdi-radiator-disabled:before{content:"\FAD6"}.mdi-radiator-off:before{content:"\FAD7"}.mdi-radio:before{content:"\F439"}.mdi-radio-am:before{content:"\FC9A"}.mdi-radio-fm:before{content:"\FC9B"}.mdi-radio-handheld:before{content:"\F43A"}.mdi-radio-tower:before{content:"\F43B"}.mdi-radioactive:before{content:"\F43C"}.mdi-radiobox-blank:before{content:"\F43D"}.mdi-radiobox-marked:before{content:"\F43E"}.mdi-radius:before{content:"\FC9C"}.mdi-radius-outline:before{content:"\FC9D"}.mdi-raspberry-pi:before{content:"\F43F"}.mdi-ray-end:before{content:"\F440"}.mdi-ray-end-arrow:before{content:"\F441"}.mdi-ray-start:before{content:"\F442"}.mdi-ray-start-arrow:before{content:"\F443"}.mdi-ray-start-end:before{content:"\F444"}.mdi-ray-vertex:before{content:"\F445"}.mdi-react:before{content:"\F707"}.mdi-read:before{content:"\F447"}.mdi-receipt:before{content:"\F449"}.mdi-record:before{content:"\F44A"}.mdi-record-player:before{content:"\F999"}.mdi-record-rec:before{content:"\F44B"}.mdi-recycle:before{content:"\F44C"}.mdi-reddit:before{content:"\F44D"}.mdi-redo:before{content:"\F44E"}.mdi-redo-variant:before{content:"\F44F"}.mdi-reflect-horizontal:before{content:"\FA0D"}.mdi-reflect-vertical:before{content:"\FA0E"}.mdi-refresh:before{content:"\F450"}.mdi-regex:before{content:"\F451"}.mdi-registered-trademark:before{content:"\FA66"}.mdi-relative-scale:before{content:"\F452"}.mdi-reload:before{content:"\F453"}.mdi-reminder:before{content:"\F88B"}.mdi-remote:before{content:"\F454"}.mdi-remote-desktop:before{content:"\F8B8"}.mdi-rename-box:before{content:"\F455"}.mdi-reorder-horizontal:before{content:"\F687"}.mdi-reorder-vertical:before{content:"\F688"}.mdi-repeat:before{content:"\F456"}.mdi-repeat-off:before{content:"\F457"}.mdi-repeat-once:before{content:"\F458"}.mdi-replay:before{content:"\F459"}.mdi-reply:before{content:"\F45A"}.mdi-reply-all:before{content:"\F45B"}.mdi-reproduction:before{content:"\F45C"}.mdi-resistor:before{content:"\FB1F"}.mdi-resistor-nodes:before{content:"\FB20"}.mdi-resize:before{content:"\FA67"}.mdi-resize-bottom-right:before{content:"\F45D"}.mdi-responsive:before{content:"\F45E"}.mdi-restart:before{content:"\F708"}.mdi-restart-off:before{content:"\FD71"}.mdi-restore:before{content:"\F99A"}.mdi-restore-clock:before{content:"\F6A7"}.mdi-rewind:before{content:"\F45F"}.mdi-rewind-10:before{content:"\FD06"}.mdi-rewind-30:before{content:"\FD72"}.mdi-rewind-outline:before{content:"\F709"}.mdi-rhombus:before{content:"\F70A"}.mdi-rhombus-medium:before{content:"\FA0F"}.mdi-rhombus-outline:before{content:"\F70B"}.mdi-rhombus-split:before{content:"\FA10"}.mdi-ribbon:before{content:"\F460"}.mdi-rice:before{content:"\F7E9"}.mdi-ring:before{content:"\F7EA"}.mdi-road:before{content:"\F461"}.mdi-road-variant:before{content:"\F462"}.mdi-robot:before{content:"\F6A8"}.mdi-robot-industrial:before{content:"\FB21"}.mdi-robot-vacuum:before{content:"\F70C"}.mdi-robot-vacuum-variant:before{content:"\F907"}.mdi-rocket:before{content:"\F463"}.mdi-roller-skate:before{content:"\FD07"}.mdi-rollerblade:before{content:"\FD08"}.mdi-rollupjs:before{content:"\FB9C"}.mdi-room-service:before{content:"\F88C"}.mdi-room-service-outline:before{content:"\FD73"}.mdi-rotate-3d:before{content:"\F464"}.mdi-rotate-left:before{content:"\F465"}.mdi-rotate-left-variant:before{content:"\F466"}.mdi-rotate-orbit:before{content:"\FD74"}.mdi-rotate-right:before{content:"\F467"}.mdi-rotate-right-variant:before{content:"\F468"}.mdi-rounded-corner:before{content:"\F607"}.mdi-router-wireless:before{content:"\F469"}.mdi-router-wireless-settings:before{content:"\FA68"}.mdi-routes:before{content:"\F46A"}.mdi-rowing:before{content:"\F608"}.mdi-rss:before{content:"\F46B"}.mdi-rss-box:before{content:"\F46C"}.mdi-ruby:before{content:"\FD09"}.mdi-rugby:before{content:"\FD75"}.mdi-ruler:before{content:"\F46D"}.mdi-ruler-square:before{content:"\FC9E"}.mdi-run:before{content:"\F70D"}.mdi-run-fast:before{content:"\F46E"}.mdi-sack:before{content:"\FD0A"}.mdi-sack-percent:before{content:"\FD0B"}.mdi-safe:before{content:"\FA69"}.mdi-safety-goggles:before{content:"\FD0C"}.mdi-sale:before{content:"\F46F"}.mdi-salesforce:before{content:"\F88D"}.mdi-sass:before{content:"\F7EB"}.mdi-satellite:before{content:"\F470"}.mdi-satellite-uplink:before{content:"\F908"}.mdi-satellite-variant:before{content:"\F471"}.mdi-sausage:before{content:"\F8B9"}.mdi-saxophone:before{content:"\F609"}.mdi-scale:before{content:"\F472"}.mdi-scale-balance:before{content:"\F5D1"}.mdi-scale-bathroom:before{content:"\F473"}.mdi-scanner:before{content:"\F6AA"}.mdi-scanner-off:before{content:"\F909"}.mdi-school:before{content:"\F474"}.mdi-scissors-cutting:before{content:"\FA6A"}.mdi-screen-rotation:before{content:"\F475"}.mdi-screen-rotation-lock:before{content:"\F476"}.mdi-screw-flat-top:before{content:"\FDCF"}.mdi-screw-lag:before{content:"\FDD0"}.mdi-screw-machine-flat-top:before{content:"\FDD1"}.mdi-screw-machine-round-top:before{content:"\FDD2"}.mdi-screw-round-top:before{content:"\FDD3"}.mdi-screwdriver:before{content:"\F477"}.mdi-script:before{content:"\FB9D"}.mdi-script-outline:before{content:"\F478"}.mdi-script-text:before{content:"\FB9E"}.mdi-script-text-outline:before{content:"\FB9F"}.mdi-sd:before{content:"\F479"}.mdi-seal:before{content:"\F47A"}.mdi-search-web:before{content:"\F70E"}.mdi-seat:before{content:"\FC9F"}.mdi-seat-flat:before{content:"\F47B"}.mdi-seat-flat-angled:before{content:"\F47C"}.mdi-seat-individual-suite:before{content:"\F47D"}.mdi-seat-legroom-extra:before{content:"\F47E"}.mdi-seat-legroom-normal:before{content:"\F47F"}.mdi-seat-legroom-reduced:before{content:"\F480"}.mdi-seat-outline:before{content:"\FCA0"}.mdi-seat-recline-extra:before{content:"\F481"}.mdi-seat-recline-normal:before{content:"\F482"}.mdi-seatbelt:before{content:"\FCA1"}.mdi-security:before{content:"\F483"}.mdi-security-network:before{content:"\F484"}.mdi-select:before{content:"\F485"}.mdi-select-all:before{content:"\F486"}.mdi-select-color:before{content:"\FD0D"}.mdi-select-compare:before{content:"\FAD8"}.mdi-select-drag:before{content:"\FA6B"}.mdi-select-inverse:before{content:"\F487"}.mdi-select-off:before{content:"\F488"}.mdi-selection:before{content:"\F489"}.mdi-selection-drag:before{content:"\FA6C"}.mdi-selection-ellipse:before{content:"\FD0E"}.mdi-selection-off:before{content:"\F776"}.mdi-send:before{content:"\F48A"}.mdi-send-circle:before{content:"\FDD4"}.mdi-send-circle-outline:before{content:"\FDD5"}.mdi-send-lock:before{content:"\F7EC"}.mdi-serial-port:before{content:"\F65C"}.mdi-server:before{content:"\F48B"}.mdi-server-minus:before{content:"\F48C"}.mdi-server-network:before{content:"\F48D"}.mdi-server-network-off:before{content:"\F48E"}.mdi-server-off:before{content:"\F48F"}.mdi-server-plus:before{content:"\F490"}.mdi-server-remove:before{content:"\F491"}.mdi-server-security:before{content:"\F492"}.mdi-set-all:before{content:"\F777"}.mdi-set-center:before{content:"\F778"}.mdi-set-center-right:before{content:"\F779"}.mdi-set-left:before{content:"\F77A"}.mdi-set-left-center:before{content:"\F77B"}.mdi-set-left-right:before{content:"\F77C"}.mdi-set-none:before{content:"\F77D"}.mdi-set-right:before{content:"\F77E"}.mdi-set-top-box:before{content:"\F99E"}.mdi-settings:before{content:"\F493"}.mdi-settings-box:before{content:"\F494"}.mdi-settings-helper:before{content:"\FA6D"}.mdi-settings-outline:before{content:"\F8BA"}.mdi-shape:before{content:"\F830"}.mdi-shape-circle-plus:before{content:"\F65D"}.mdi-shape-outline:before{content:"\F831"}.mdi-shape-plus:before{content:"\F495"}.mdi-shape-polygon-plus:before{content:"\F65E"}.mdi-shape-rectangle-plus:before{content:"\F65F"}.mdi-shape-square-plus:before{content:"\F660"}.mdi-share:before{content:"\F496"}.mdi-share-outline:before{content:"\F931"}.mdi-share-variant:before{content:"\F497"}.mdi-sheep:before{content:"\FCA2"}.mdi-shield:before{content:"\F498"}.mdi-shield-account:before{content:"\F88E"}.mdi-shield-account-outline:before{content:"\FA11"}.mdi-shield-airplane:before{content:"\F6BA"}.mdi-shield-airplane-outline:before{content:"\FCA3"}.mdi-shield-check:before{content:"\F565"}.mdi-shield-check-outline:before{content:"\FCA4"}.mdi-shield-cross:before{content:"\FCA5"}.mdi-shield-cross-outline:before{content:"\FCA6"}.mdi-shield-half-full:before{content:"\F77F"}.mdi-shield-home:before{content:"\F689"}.mdi-shield-home-outline:before{content:"\FCA7"}.mdi-shield-key:before{content:"\FBA0"}.mdi-shield-key-outline:before{content:"\FBA1"}.mdi-shield-link-variant:before{content:"\FD0F"}.mdi-shield-link-variant-outline:before{content:"\FD10"}.mdi-shield-lock:before{content:"\F99C"}.mdi-shield-lock-outline:before{content:"\FCA8"}.mdi-shield-off:before{content:"\F99D"}.mdi-shield-off-outline:before{content:"\F99B"}.mdi-shield-outline:before{content:"\F499"}.mdi-shield-plus:before{content:"\FAD9"}.mdi-shield-plus-outline:before{content:"\FADA"}.mdi-shield-remove:before{content:"\FADB"}.mdi-shield-remove-outline:before{content:"\FADC"}.mdi-shield-search:before{content:"\FD76"}.mdi-ship-wheel:before{content:"\F832"}.mdi-shoe-formal:before{content:"\FB22"}.mdi-shoe-heel:before{content:"\FB23"}.mdi-shoe-print:before{content:"\FDD6"}.mdi-shopify:before{content:"\FADD"}.mdi-shopping:before{content:"\F49A"}.mdi-shopping-music:before{content:"\F49B"}.mdi-shovel:before{content:"\F70F"}.mdi-shovel-off:before{content:"\F710"}.mdi-shower:before{content:"\F99F"}.mdi-shower-head:before{content:"\F9A0"}.mdi-shredder:before{content:"\F49C"}.mdi-shuffle:before{content:"\F49D"}.mdi-shuffle-disabled:before{content:"\F49E"}.mdi-shuffle-variant:before{content:"\F49F"}.mdi-sigma:before{content:"\F4A0"}.mdi-sigma-lower:before{content:"\F62B"}.mdi-sign-caution:before{content:"\F4A1"}.mdi-sign-direction:before{content:"\F780"}.mdi-sign-text:before{content:"\F781"}.mdi-signal:before{content:"\F4A2"}.mdi-signal-2g:before{content:"\F711"}.mdi-signal-3g:before{content:"\F712"}.mdi-signal-4g:before{content:"\F713"}.mdi-signal-5g:before{content:"\FA6E"}.mdi-signal-cellular-1:before{content:"\F8BB"}.mdi-signal-cellular-2:before{content:"\F8BC"}.mdi-signal-cellular-3:before{content:"\F8BD"}.mdi-signal-cellular-outline:before{content:"\F8BE"}.mdi-signal-hspa:before{content:"\F714"}.mdi-signal-hspa-plus:before{content:"\F715"}.mdi-signal-off:before{content:"\F782"}.mdi-signal-variant:before{content:"\F60A"}.mdi-signature:before{content:"\FDD7"}.mdi-signature-freehand:before{content:"\FDD8"}.mdi-signature-image:before{content:"\FDD9"}.mdi-signature-text:before{content:"\FDDA"}.mdi-silo:before{content:"\FB24"}.mdi-silverware:before{content:"\F4A3"}.mdi-silverware-fork:before{content:"\F4A4"}.mdi-silverware-fork-knife:before{content:"\FA6F"}.mdi-silverware-spoon:before{content:"\F4A5"}.mdi-silverware-variant:before{content:"\F4A6"}.mdi-sim:before{content:"\F4A7"}.mdi-sim-alert:before{content:"\F4A8"}.mdi-sim-off:before{content:"\F4A9"}.mdi-sina-weibo:before{content:"\FADE"}.mdi-sitemap:before{content:"\F4AA"}.mdi-skate:before{content:"\FD11"}.mdi-skew-less:before{content:"\FD12"}.mdi-skew-more:before{content:"\FD13"}.mdi-skip-backward:before{content:"\F4AB"}.mdi-skip-forward:before{content:"\F4AC"}.mdi-skip-next:before{content:"\F4AD"}.mdi-skip-next-circle:before{content:"\F661"}.mdi-skip-next-circle-outline:before{content:"\F662"}.mdi-skip-previous:before{content:"\F4AE"}.mdi-skip-previous-circle:before{content:"\F663"}.mdi-skip-previous-circle-outline:before{content:"\F664"}.mdi-skull:before{content:"\F68B"}.mdi-skull-crossbones:before{content:"\FBA2"}.mdi-skull-crossbones-outline:before{content:"\FBA3"}.mdi-skull-outline:before{content:"\FBA4"}.mdi-skype:before{content:"\F4AF"}.mdi-skype-business:before{content:"\F4B0"}.mdi-slack:before{content:"\F4B1"}.mdi-slackware:before{content:"\F90A"}.mdi-sleep:before{content:"\F4B2"}.mdi-sleep-off:before{content:"\F4B3"}.mdi-slope-downhill:before{content:"\FDDB"}.mdi-slope-uphill:before{content:"\FDDC"}.mdi-smog:before{content:"\FA70"}.mdi-smoke-detector:before{content:"\F392"}.mdi-smoking:before{content:"\F4B4"}.mdi-smoking-off:before{content:"\F4B5"}.mdi-snapchat:before{content:"\F4B6"}.mdi-snowflake:before{content:"\F716"}.mdi-snowman:before{content:"\F4B7"}.mdi-soccer:before{content:"\F4B8"}.mdi-soccer-field:before{content:"\F833"}.mdi-sofa:before{content:"\F4B9"}.mdi-solar-panel:before{content:"\FD77"}.mdi-solar-panel-large:before{content:"\FD78"}.mdi-solar-power:before{content:"\FA71"}.mdi-solid:before{content:"\F68C"}.mdi-sort:before{content:"\F4BA"}.mdi-sort-alphabetical:before{content:"\F4BB"}.mdi-sort-ascending:before{content:"\F4BC"}.mdi-sort-descending:before{content:"\F4BD"}.mdi-sort-numeric:before{content:"\F4BE"}.mdi-sort-variant:before{content:"\F4BF"}.mdi-sort-variant-lock:before{content:"\FCA9"}.mdi-sort-variant-lock-open:before{content:"\FCAA"}.mdi-soundcloud:before{content:"\F4C0"}.mdi-source-branch:before{content:"\F62C"}.mdi-source-commit:before{content:"\F717"}.mdi-source-commit-end:before{content:"\F718"}.mdi-source-commit-end-local:before{content:"\F719"}.mdi-source-commit-local:before{content:"\F71A"}.mdi-source-commit-next-local:before{content:"\F71B"}.mdi-source-commit-start:before{content:"\F71C"}.mdi-source-commit-start-next-local:before{content:"\F71D"}.mdi-source-fork:before{content:"\F4C1"}.mdi-source-merge:before{content:"\F62D"}.mdi-source-pull:before{content:"\F4C2"}.mdi-source-repository:before{content:"\FCAB"}.mdi-source-repository-multiple:before{content:"\FCAC"}.mdi-soy-sauce:before{content:"\F7ED"}.mdi-spa:before{content:"\FCAD"}.mdi-spa-outline:before{content:"\FCAE"}.mdi-space-invaders:before{content:"\FBA5"}.mdi-speaker:before{content:"\F4C3"}.mdi-speaker-bluetooth:before{content:"\F9A1"}.mdi-speaker-multiple:before{content:"\FD14"}.mdi-speaker-off:before{content:"\F4C4"}.mdi-speaker-wireless:before{content:"\F71E"}.mdi-speedometer:before{content:"\F4C5"}.mdi-spellcheck:before{content:"\F4C6"}.mdi-spider-web:before{content:"\FBA6"}.mdi-spotify:before{content:"\F4C7"}.mdi-spotlight:before{content:"\F4C8"}.mdi-spotlight-beam:before{content:"\F4C9"}.mdi-spray:before{content:"\F665"}.mdi-spray-bottle:before{content:"\FADF"}.mdi-square:before{content:"\F763"}.mdi-square-edit-outline:before{content:"\F90B"}.mdi-square-inc:before{content:"\F4CA"}.mdi-square-inc-cash:before{content:"\F4CB"}.mdi-square-medium:before{content:"\FA12"}.mdi-square-medium-outline:before{content:"\FA13"}.mdi-square-outline:before{content:"\F762"}.mdi-square-root:before{content:"\F783"}.mdi-square-root-box:before{content:"\F9A2"}.mdi-square-small:before{content:"\FA14"}.mdi-squeegee:before{content:"\FAE0"}.mdi-ssh:before{content:"\F8BF"}.mdi-stack-exchange:before{content:"\F60B"}.mdi-stack-overflow:before{content:"\F4CC"}.mdi-stadium:before{content:"\F71F"}.mdi-stairs:before{content:"\F4CD"}.mdi-stamper:before{content:"\FD15"}.mdi-standard-definition:before{content:"\F7EE"}.mdi-star:before{content:"\F4CE"}.mdi-star-box:before{content:"\FA72"}.mdi-star-box-outline:before{content:"\FA73"}.mdi-star-circle:before{content:"\F4CF"}.mdi-star-circle-outline:before{content:"\F9A3"}.mdi-star-face:before{content:"\F9A4"}.mdi-star-four-points:before{content:"\FAE1"}.mdi-star-four-points-outline:before{content:"\FAE2"}.mdi-star-half:before{content:"\F4D0"}.mdi-star-off:before{content:"\F4D1"}.mdi-star-outline:before{content:"\F4D2"}.mdi-star-three-points:before{content:"\FAE3"}.mdi-star-three-points-outline:before{content:"\FAE4"}.mdi-steam:before{content:"\F4D3"}.mdi-steam-box:before{content:"\F90C"}.mdi-steering:before{content:"\F4D4"}.mdi-steering-off:before{content:"\F90D"}.mdi-step-backward:before{content:"\F4D5"}.mdi-step-backward-2:before{content:"\F4D6"}.mdi-step-forward:before{content:"\F4D7"}.mdi-step-forward-2:before{content:"\F4D8"}.mdi-stethoscope:before{content:"\F4D9"}.mdi-sticker:before{content:"\F5D0"}.mdi-sticker-emoji:before{content:"\F784"}.mdi-stocking:before{content:"\F4DA"}.mdi-stop:before{content:"\F4DB"}.mdi-stop-circle:before{content:"\F666"}.mdi-stop-circle-outline:before{content:"\F667"}.mdi-store:before{content:"\F4DC"}.mdi-store-24-hour:before{content:"\F4DD"}.mdi-stove:before{content:"\F4DE"}.mdi-strava:before{content:"\FB25"}.mdi-subdirectory-arrow-left:before{content:"\F60C"}.mdi-subdirectory-arrow-right:before{content:"\F60D"}.mdi-subtitles:before{content:"\FA15"}.mdi-subtitles-outline:before{content:"\FA16"}.mdi-subway:before{content:"\F6AB"}.mdi-subway-alert-variant:before{content:"\FD79"}.mdi-subway-variant:before{content:"\F4DF"}.mdi-summit:before{content:"\F785"}.mdi-sunglasses:before{content:"\F4E0"}.mdi-surround-sound:before{content:"\F5C5"}.mdi-surround-sound-2-0:before{content:"\F7EF"}.mdi-surround-sound-3-1:before{content:"\F7F0"}.mdi-surround-sound-5-1:before{content:"\F7F1"}.mdi-surround-sound-7-1:before{content:"\F7F2"}.mdi-svg:before{content:"\F720"}.mdi-swap-horizontal:before{content:"\F4E1"}.mdi-swap-horizontal-bold:before{content:"\FBA9"}.mdi-swap-horizontal-variant:before{content:"\F8C0"}.mdi-swap-vertical:before{content:"\F4E2"}.mdi-swap-vertical-bold:before{content:"\FBAA"}.mdi-swap-vertical-variant:before{content:"\F8C1"}.mdi-swim:before{content:"\F4E3"}.mdi-switch:before{content:"\F4E4"}.mdi-sword:before{content:"\F4E5"}.mdi-sword-cross:before{content:"\F786"}.mdi-symfony:before{content:"\FAE5"}.mdi-sync:before{content:"\F4E6"}.mdi-sync-alert:before{content:"\F4E7"}.mdi-sync-off:before{content:"\F4E8"}.mdi-tab:before{content:"\F4E9"}.mdi-tab-minus:before{content:"\FB26"}.mdi-tab-plus:before{content:"\F75B"}.mdi-tab-remove:before{content:"\FB27"}.mdi-tab-unselected:before{content:"\F4EA"}.mdi-table:before{content:"\F4EB"}.mdi-table-border:before{content:"\FA17"}.mdi-table-column:before{content:"\F834"}.mdi-table-column-plus-after:before{content:"\F4EC"}.mdi-table-column-plus-before:before{content:"\F4ED"}.mdi-table-column-remove:before{content:"\F4EE"}.mdi-table-column-width:before{content:"\F4EF"}.mdi-table-edit:before{content:"\F4F0"}.mdi-table-large:before{content:"\F4F1"}.mdi-table-merge-cells:before{content:"\F9A5"}.mdi-table-of-contents:before{content:"\F835"}.mdi-table-plus:before{content:"\FA74"}.mdi-table-remove:before{content:"\FA75"}.mdi-table-row:before{content:"\F836"}.mdi-table-row-height:before{content:"\F4F2"}.mdi-table-row-plus-after:before{content:"\F4F3"}.mdi-table-row-plus-before:before{content:"\F4F4"}.mdi-table-row-remove:before{content:"\F4F5"}.mdi-table-search:before{content:"\F90E"}.mdi-table-settings:before{content:"\F837"}.mdi-tablet:before{content:"\F4F6"}.mdi-tablet-android:before{content:"\F4F7"}.mdi-tablet-cellphone:before{content:"\F9A6"}.mdi-tablet-ipad:before{content:"\F4F8"}.mdi-taco:before{content:"\F761"}.mdi-tag:before{content:"\F4F9"}.mdi-tag-faces:before{content:"\F4FA"}.mdi-tag-heart:before{content:"\F68A"}.mdi-tag-heart-outline:before{content:"\FBAB"}.mdi-tag-minus:before{content:"\F90F"}.mdi-tag-multiple:before{content:"\F4FB"}.mdi-tag-outline:before{content:"\F4FC"}.mdi-tag-plus:before{content:"\F721"}.mdi-tag-remove:before{content:"\F722"}.mdi-tag-text-outline:before{content:"\F4FD"}.mdi-tank:before{content:"\FD16"}.mdi-tape-measure:before{content:"\FB28"}.mdi-target:before{content:"\F4FE"}.mdi-target-account:before{content:"\FBAC"}.mdi-target-variant:before{content:"\FA76"}.mdi-taxi:before{content:"\F4FF"}.mdi-tea:before{content:"\FD7A"}.mdi-tea-outline:before{content:"\FD7B"}.mdi-teach:before{content:"\F88F"}.mdi-teamviewer:before{content:"\F500"}.mdi-telegram:before{content:"\F501"}.mdi-telescope:before{content:"\FB29"}.mdi-television:before{content:"\F502"}.mdi-television-box:before{content:"\F838"}.mdi-television-classic:before{content:"\F7F3"}.mdi-television-classic-off:before{content:"\F839"}.mdi-television-guide:before{content:"\F503"}.mdi-television-off:before{content:"\F83A"}.mdi-temperature-celsius:before{content:"\F504"}.mdi-temperature-fahrenheit:before{content:"\F505"}.mdi-temperature-kelvin:before{content:"\F506"}.mdi-tennis:before{content:"\FD7C"}.mdi-tennis-ball:before{content:"\F507"}.mdi-tent:before{content:"\F508"}.mdi-terrain:before{content:"\F509"}.mdi-test-tube:before{content:"\F668"}.mdi-test-tube-empty:before{content:"\F910"}.mdi-test-tube-off:before{content:"\F911"}.mdi-text:before{content:"\F9A7"}.mdi-text-shadow:before{content:"\F669"}.mdi-text-short:before{content:"\F9A8"}.mdi-text-subject:before{content:"\F9A9"}.mdi-text-to-speech:before{content:"\F50A"}.mdi-text-to-speech-off:before{content:"\F50B"}.mdi-textbox:before{content:"\F60E"}.mdi-textbox-password:before{content:"\F7F4"}.mdi-texture:before{content:"\F50C"}.mdi-theater:before{content:"\F50D"}.mdi-theme-light-dark:before{content:"\F50E"}.mdi-thermometer:before{content:"\F50F"}.mdi-thermometer-alert:before{content:"\FDDD"}.mdi-thermometer-chevron-down:before{content:"\FDDE"}.mdi-thermometer-chevron-up:before{content:"\FDDF"}.mdi-thermometer-lines:before{content:"\F510"}.mdi-thermometer-minus:before{content:"\FDE0"}.mdi-thermometer-plus:before{content:"\FDE1"}.mdi-thermostat:before{content:"\F393"}.mdi-thermostat-box:before{content:"\F890"}.mdi-thought-bubble:before{content:"\F7F5"}.mdi-thought-bubble-outline:before{content:"\F7F6"}.mdi-thumb-down:before{content:"\F511"}.mdi-thumb-down-outline:before{content:"\F512"}.mdi-thumb-up:before{content:"\F513"}.mdi-thumb-up-outline:before{content:"\F514"}.mdi-thumbs-up-down:before{content:"\F515"}.mdi-ticket:before{content:"\F516"}.mdi-ticket-account:before{content:"\F517"}.mdi-ticket-confirmation:before{content:"\F518"}.mdi-ticket-outline:before{content:"\F912"}.mdi-ticket-percent:before{content:"\F723"}.mdi-tie:before{content:"\F519"}.mdi-tilde:before{content:"\F724"}.mdi-timelapse:before{content:"\F51A"}.mdi-timeline:before{content:"\FBAD"}.mdi-timeline-outline:before{content:"\FBAE"}.mdi-timeline-text:before{content:"\FBAF"}.mdi-timeline-text-outline:before{content:"\FBB0"}.mdi-timer:before{content:"\F51B"}.mdi-timer-10:before{content:"\F51C"}.mdi-timer-3:before{content:"\F51D"}.mdi-timer-off:before{content:"\F51E"}.mdi-timer-sand:before{content:"\F51F"}.mdi-timer-sand-empty:before{content:"\F6AC"}.mdi-timer-sand-full:before{content:"\F78B"}.mdi-timetable:before{content:"\F520"}.mdi-toaster-oven:before{content:"\FCAF"}.mdi-toggle-switch:before{content:"\F521"}.mdi-toggle-switch-off:before{content:"\F522"}.mdi-toggle-switch-off-outline:before{content:"\FA18"}.mdi-toggle-switch-outline:before{content:"\FA19"}.mdi-toilet:before{content:"\F9AA"}.mdi-toolbox:before{content:"\F9AB"}.mdi-toolbox-outline:before{content:"\F9AC"}.mdi-tooltip:before{content:"\F523"}.mdi-tooltip-account:before{content:"\F00C"}.mdi-tooltip-edit:before{content:"\F524"}.mdi-tooltip-image:before{content:"\F525"}.mdi-tooltip-image-outline:before{content:"\FBB1"}.mdi-tooltip-outline:before{content:"\F526"}.mdi-tooltip-plus:before{content:"\FBB2"}.mdi-tooltip-plus-outline:before{content:"\F527"}.mdi-tooltip-text:before{content:"\F528"}.mdi-tooltip-text-outline:before{content:"\FBB3"}.mdi-tooth:before{content:"\F8C2"}.mdi-tooth-outline:before{content:"\F529"}.mdi-tor:before{content:"\F52A"}.mdi-tortoise:before{content:"\FD17"}.mdi-tournament:before{content:"\F9AD"}.mdi-tower-beach:before{content:"\F680"}.mdi-tower-fire:before{content:"\F681"}.mdi-towing:before{content:"\F83B"}.mdi-track-light:before{content:"\F913"}.mdi-trackpad:before{content:"\F7F7"}.mdi-trackpad-lock:before{content:"\F932"}.mdi-tractor:before{content:"\F891"}.mdi-trademark:before{content:"\FA77"}.mdi-traffic-light:before{content:"\F52B"}.mdi-train:before{content:"\F52C"}.mdi-train-car:before{content:"\FBB4"}.mdi-train-variant:before{content:"\F8C3"}.mdi-tram:before{content:"\F52D"}.mdi-transcribe:before{content:"\F52E"}.mdi-transcribe-close:before{content:"\F52F"}.mdi-transfer-down:before{content:"\FD7D"}.mdi-transfer-left:before{content:"\FD7E"}.mdi-transfer-right:before{content:"\F530"}.mdi-transfer-up:before{content:"\FD7F"}.mdi-transit-connection:before{content:"\FD18"}.mdi-transit-connection-variant:before{content:"\FD19"}.mdi-transit-transfer:before{content:"\F6AD"}.mdi-transition:before{content:"\F914"}.mdi-transition-masked:before{content:"\F915"}.mdi-translate:before{content:"\F5CA"}.mdi-translate-off:before{content:"\FDE2"}.mdi-transmission-tower:before{content:"\FD1A"}.mdi-trash-can:before{content:"\FA78"}.mdi-trash-can-outline:before{content:"\FA79"}.mdi-treasure-chest:before{content:"\F725"}.mdi-tree:before{content:"\F531"}.mdi-trello:before{content:"\F532"}.mdi-trending-down:before{content:"\F533"}.mdi-trending-neutral:before{content:"\F534"}.mdi-trending-up:before{content:"\F535"}.mdi-triangle:before{content:"\F536"}.mdi-triangle-outline:before{content:"\F537"}.mdi-triforce:before{content:"\FBB5"}.mdi-trophy:before{content:"\F538"}.mdi-trophy-award:before{content:"\F539"}.mdi-trophy-broken:before{content:"\FD80"}.mdi-trophy-outline:before{content:"\F53A"}.mdi-trophy-variant:before{content:"\F53B"}.mdi-trophy-variant-outline:before{content:"\F53C"}.mdi-truck:before{content:"\F53D"}.mdi-truck-check:before{content:"\FCB0"}.mdi-truck-delivery:before{content:"\F53E"}.mdi-truck-fast:before{content:"\F787"}.mdi-truck-trailer:before{content:"\F726"}.mdi-tshirt-crew:before{content:"\FA7A"}.mdi-tshirt-crew-outline:before{content:"\F53F"}.mdi-tshirt-v:before{content:"\FA7B"}.mdi-tshirt-v-outline:before{content:"\F540"}.mdi-tumble-dryer:before{content:"\F916"}.mdi-tumblr:before{content:"\F541"}.mdi-tumblr-box:before{content:"\F917"}.mdi-tumblr-reblog:before{content:"\F542"}.mdi-tune:before{content:"\F62E"}.mdi-tune-vertical:before{content:"\F66A"}.mdi-turnstile:before{content:"\FCB1"}.mdi-turnstile-outline:before{content:"\FCB2"}.mdi-turtle:before{content:"\FCB3"}.mdi-twitch:before{content:"\F543"}.mdi-twitter:before{content:"\F544"}.mdi-twitter-box:before{content:"\F545"}.mdi-twitter-circle:before{content:"\F546"}.mdi-twitter-retweet:before{content:"\F547"}.mdi-two-factor-authentication:before{content:"\F9AE"}.mdi-uber:before{content:"\F748"}.mdi-ubisoft:before{content:"\FBB6"}.mdi-ubuntu:before{content:"\F548"}.mdi-ultra-high-definition:before{content:"\F7F8"}.mdi-umbraco:before{content:"\F549"}.mdi-umbrella:before{content:"\F54A"}.mdi-umbrella-closed:before{content:"\F9AF"}.mdi-umbrella-outline:before{content:"\F54B"}.mdi-undo:before{content:"\F54C"}.mdi-undo-variant:before{content:"\F54D"}.mdi-unfold-less-horizontal:before{content:"\F54E"}.mdi-unfold-less-vertical:before{content:"\F75F"}.mdi-unfold-more-horizontal:before{content:"\F54F"}.mdi-unfold-more-vertical:before{content:"\F760"}.mdi-ungroup:before{content:"\F550"}.mdi-unity:before{content:"\F6AE"}.mdi-unreal:before{content:"\F9B0"}.mdi-untappd:before{content:"\F551"}.mdi-update:before{content:"\F6AF"}.mdi-upload:before{content:"\F552"}.mdi-upload-multiple:before{content:"\F83C"}.mdi-upload-network:before{content:"\F6F5"}.mdi-upload-network-outline:before{content:"\FCB4"}.mdi-upload-outline:before{content:"\FDE3"}.mdi-usb:before{content:"\F553"}.mdi-van-passenger:before{content:"\F7F9"}.mdi-van-utility:before{content:"\F7FA"}.mdi-vanish:before{content:"\F7FB"}.mdi-variable:before{content:"\FAE6"}.mdi-vector-arrange-above:before{content:"\F554"}.mdi-vector-arrange-below:before{content:"\F555"}.mdi-vector-bezier:before{content:"\FAE7"}.mdi-vector-circle:before{content:"\F556"}.mdi-vector-circle-variant:before{content:"\F557"}.mdi-vector-combine:before{content:"\F558"}.mdi-vector-curve:before{content:"\F559"}.mdi-vector-difference:before{content:"\F55A"}.mdi-vector-difference-ab:before{content:"\F55B"}.mdi-vector-difference-ba:before{content:"\F55C"}.mdi-vector-ellipse:before{content:"\F892"}.mdi-vector-intersection:before{content:"\F55D"}.mdi-vector-line:before{content:"\F55E"}.mdi-vector-point:before{content:"\F55F"}.mdi-vector-polygon:before{content:"\F560"}.mdi-vector-polyline:before{content:"\F561"}.mdi-vector-radius:before{content:"\F749"}.mdi-vector-rectangle:before{content:"\F5C6"}.mdi-vector-selection:before{content:"\F562"}.mdi-vector-square:before{content:"\F001"}.mdi-vector-triangle:before{content:"\F563"}.mdi-vector-union:before{content:"\F564"}.mdi-venmo:before{content:"\F578"}.mdi-vhs:before{content:"\FA1A"}.mdi-vibrate:before{content:"\F566"}.mdi-vibrate-off:before{content:"\FCB5"}.mdi-video:before{content:"\F567"}.mdi-video-3d:before{content:"\F7FC"}.mdi-video-4k-box:before{content:"\F83D"}.mdi-video-account:before{content:"\F918"}.mdi-video-image:before{content:"\F919"}.mdi-video-input-antenna:before{content:"\F83E"}.mdi-video-input-component:before{content:"\F83F"}.mdi-video-input-hdmi:before{content:"\F840"}.mdi-video-input-svideo:before{content:"\F841"}.mdi-video-minus:before{content:"\F9B1"}.mdi-video-off:before{content:"\F568"}.mdi-video-off-outline:before{content:"\FBB7"}.mdi-video-outline:before{content:"\FBB8"}.mdi-video-plus:before{content:"\F9B2"}.mdi-video-stabilization:before{content:"\F91A"}.mdi-video-switch:before{content:"\F569"}.mdi-video-vintage:before{content:"\FA1B"}.mdi-view-agenda:before{content:"\F56A"}.mdi-view-array:before{content:"\F56B"}.mdi-view-carousel:before{content:"\F56C"}.mdi-view-column:before{content:"\F56D"}.mdi-view-dashboard:before{content:"\F56E"}.mdi-view-dashboard-outline:before{content:"\FA1C"}.mdi-view-dashboard-variant:before{content:"\F842"}.mdi-view-day:before{content:"\F56F"}.mdi-view-grid:before{content:"\F570"}.mdi-view-headline:before{content:"\F571"}.mdi-view-list:before{content:"\F572"}.mdi-view-module:before{content:"\F573"}.mdi-view-parallel:before{content:"\F727"}.mdi-view-quilt:before{content:"\F574"}.mdi-view-sequential:before{content:"\F728"}.mdi-view-split-horizontal:before{content:"\FBA7"}.mdi-view-split-vertical:before{content:"\FBA8"}.mdi-view-stream:before{content:"\F575"}.mdi-view-week:before{content:"\F576"}.mdi-vimeo:before{content:"\F577"}.mdi-violin:before{content:"\F60F"}.mdi-virtual-reality:before{content:"\F893"}.mdi-visual-studio:before{content:"\F610"}.mdi-visual-studio-code:before{content:"\FA1D"}.mdi-vk:before{content:"\F579"}.mdi-vk-box:before{content:"\F57A"}.mdi-vk-circle:before{content:"\F57B"}.mdi-vlc:before{content:"\F57C"}.mdi-voice:before{content:"\F5CB"}.mdi-voicemail:before{content:"\F57D"}.mdi-volleyball:before{content:"\F9B3"}.mdi-volume-high:before{content:"\F57E"}.mdi-volume-low:before{content:"\F57F"}.mdi-volume-medium:before{content:"\F580"}.mdi-volume-minus:before{content:"\F75D"}.mdi-volume-mute:before{content:"\F75E"}.mdi-volume-off:before{content:"\F581"}.mdi-volume-plus:before{content:"\F75C"}.mdi-volume-variant-off:before{content:"\FDE4"}.mdi-vote:before{content:"\FA1E"}.mdi-vote-outline:before{content:"\FA1F"}.mdi-vpn:before{content:"\F582"}.mdi-vuejs:before{content:"\F843"}.mdi-walk:before{content:"\F583"}.mdi-wall:before{content:"\F7FD"}.mdi-wall-sconce:before{content:"\F91B"}.mdi-wall-sconce-flat:before{content:"\F91C"}.mdi-wall-sconce-variant:before{content:"\F91D"}.mdi-wallet:before{content:"\F584"}.mdi-wallet-giftcard:before{content:"\F585"}.mdi-wallet-membership:before{content:"\F586"}.mdi-wallet-outline:before{content:"\FBB9"}.mdi-wallet-travel:before{content:"\F587"}.mdi-wallpaper:before{content:"\FDE5"}.mdi-wan:before{content:"\F588"}.mdi-washing-machine:before{content:"\F729"}.mdi-watch:before{content:"\F589"}.mdi-watch-export:before{content:"\F58A"}.mdi-watch-export-variant:before{content:"\F894"}.mdi-watch-import:before{content:"\F58B"}.mdi-watch-import-variant:before{content:"\F895"}.mdi-watch-variant:before{content:"\F896"}.mdi-watch-vibrate:before{content:"\F6B0"}.mdi-watch-vibrate-off:before{content:"\FCB6"}.mdi-water:before{content:"\F58C"}.mdi-water-off:before{content:"\F58D"}.mdi-water-outline:before{content:"\FDE6"}.mdi-water-percent:before{content:"\F58E"}.mdi-water-pump:before{content:"\F58F"}.mdi-watermark:before{content:"\F612"}.mdi-waves:before{content:"\F78C"}.mdi-waze:before{content:"\FBBA"}.mdi-weather-cloudy:before{content:"\F590"}.mdi-weather-fog:before{content:"\F591"}.mdi-weather-hail:before{content:"\F592"}.mdi-weather-hurricane:before{content:"\F897"}.mdi-weather-lightning:before{content:"\F593"}.mdi-weather-lightning-rainy:before{content:"\F67D"}.mdi-weather-night:before{content:"\F594"}.mdi-weather-partlycloudy:before{content:"\F595"}.mdi-weather-pouring:before{content:"\F596"}.mdi-weather-rainy:before{content:"\F597"}.mdi-weather-snowy:before{content:"\F598"}.mdi-weather-snowy-rainy:before{content:"\F67E"}.mdi-weather-sunny:before{content:"\F599"}.mdi-weather-sunset:before{content:"\F59A"}.mdi-weather-sunset-down:before{content:"\F59B"}.mdi-weather-sunset-up:before{content:"\F59C"}.mdi-weather-windy:before{content:"\F59D"}.mdi-weather-windy-variant:before{content:"\F59E"}.mdi-web:before{content:"\F59F"}.mdi-webcam:before{content:"\F5A0"}.mdi-webhook:before{content:"\F62F"}.mdi-webpack:before{content:"\F72A"}.mdi-wechat:before{content:"\F611"}.mdi-weight:before{content:"\F5A1"}.mdi-weight-gram:before{content:"\FD1B"}.mdi-weight-kilogram:before{content:"\F5A2"}.mdi-weight-pound:before{content:"\F9B4"}.mdi-whatsapp:before{content:"\F5A3"}.mdi-wheelchair-accessibility:before{content:"\F5A4"}.mdi-whistle:before{content:"\F9B5"}.mdi-white-balance-auto:before{content:"\F5A5"}.mdi-white-balance-incandescent:before{content:"\F5A6"}.mdi-white-balance-iridescent:before{content:"\F5A7"}.mdi-white-balance-sunny:before{content:"\F5A8"}.mdi-widgets:before{content:"\F72B"}.mdi-wifi:before{content:"\F5A9"}.mdi-wifi-off:before{content:"\F5AA"}.mdi-wifi-star:before{content:"\FDE7"}.mdi-wifi-strength-1:before{content:"\F91E"}.mdi-wifi-strength-1-alert:before{content:"\F91F"}.mdi-wifi-strength-1-lock:before{content:"\F920"}.mdi-wifi-strength-2:before{content:"\F921"}.mdi-wifi-strength-2-alert:before{content:"\F922"}.mdi-wifi-strength-2-lock:before{content:"\F923"}.mdi-wifi-strength-3:before{content:"\F924"}.mdi-wifi-strength-3-alert:before{content:"\F925"}.mdi-wifi-strength-3-lock:before{content:"\F926"}.mdi-wifi-strength-4:before{content:"\F927"}.mdi-wifi-strength-4-alert:before{content:"\F928"}.mdi-wifi-strength-4-lock:before{content:"\F929"}.mdi-wifi-strength-alert-outline:before{content:"\F92A"}.mdi-wifi-strength-lock-outline:before{content:"\F92B"}.mdi-wifi-strength-off:before{content:"\F92C"}.mdi-wifi-strength-off-outline:before{content:"\F92D"}.mdi-wifi-strength-outline:before{content:"\F92E"}.mdi-wii:before{content:"\F5AB"}.mdi-wiiu:before{content:"\F72C"}.mdi-wikipedia:before{content:"\F5AC"}.mdi-wind-turbine:before{content:"\FD81"}.mdi-window-close:before{content:"\F5AD"}.mdi-window-closed:before{content:"\F5AE"}.mdi-window-maximize:before{content:"\F5AF"}.mdi-window-minimize:before{content:"\F5B0"}.mdi-window-open:before{content:"\F5B1"}.mdi-window-restore:before{content:"\F5B2"}.mdi-windows:before{content:"\F5B3"}.mdi-windows-classic:before{content:"\FA20"}.mdi-wiper:before{content:"\FAE8"}.mdi-wiper-wash:before{content:"\FD82"}.mdi-wordpress:before{content:"\F5B4"}.mdi-worker:before{content:"\F5B5"}.mdi-wrap:before{content:"\F5B6"}.mdi-wrap-disabled:before{content:"\FBBB"}.mdi-wrench:before{content:"\F5B7"}.mdi-wrench-outline:before{content:"\FBBC"}.mdi-wunderlist:before{content:"\F5B8"}.mdi-xamarin:before{content:"\F844"}.mdi-xamarin-outline:before{content:"\F845"}.mdi-xaml:before{content:"\F673"}.mdi-xbox:before{content:"\F5B9"}.mdi-xbox-controller:before{content:"\F5BA"}.mdi-xbox-controller-battery-alert:before{content:"\F74A"}.mdi-xbox-controller-battery-charging:before{content:"\FA21"}.mdi-xbox-controller-battery-empty:before{content:"\F74B"}.mdi-xbox-controller-battery-full:before{content:"\F74C"}.mdi-xbox-controller-battery-low:before{content:"\F74D"}.mdi-xbox-controller-battery-medium:before{content:"\F74E"}.mdi-xbox-controller-battery-unknown:before{content:"\F74F"}.mdi-xbox-controller-off:before{content:"\F5BB"}.mdi-xda:before{content:"\F5BC"}.mdi-xing:before{content:"\F5BD"}.mdi-xing-box:before{content:"\F5BE"}.mdi-xing-circle:before{content:"\F5BF"}.mdi-xml:before{content:"\F5C0"}.mdi-xmpp:before{content:"\F7FE"}.mdi-yahoo:before{content:"\FB2A"}.mdi-yammer:before{content:"\F788"}.mdi-yeast:before{content:"\F5C1"}.mdi-yelp:before{content:"\F5C2"}.mdi-yin-yang:before{content:"\F67F"}.mdi-youtube:before{content:"\F5C3"}.mdi-youtube-creator-studio:before{content:"\F846"}.mdi-youtube-gaming:before{content:"\F847"}.mdi-youtube-subscription:before{content:"\FD1C"}.mdi-youtube-tv:before{content:"\F448"}.mdi-z-wave:before{content:"\FAE9"}.mdi-zend:before{content:"\FAEA"}.mdi-zigbee:before{content:"\FD1D"}.mdi-zip-box:before{content:"\F5C4"}.mdi-zip-disk:before{content:"\FA22"}.mdi-zodiac-aquarius:before{content:"\FA7C"}.mdi-zodiac-aries:before{content:"\FA7D"}.mdi-zodiac-cancer:before{content:"\FA7E"}.mdi-zodiac-capricorn:before{content:"\FA7F"}.mdi-zodiac-gemini:before{content:"\FA80"}.mdi-zodiac-leo:before{content:"\FA81"}.mdi-zodiac-libra:before{content:"\FA82"}.mdi-zodiac-pisces:before{content:"\FA83"}.mdi-zodiac-sagittarius:before{content:"\FA84"}.mdi-zodiac-scorpio:before{content:"\FA85"}.mdi-zodiac-taurus:before{content:"\FA86"}.mdi-zodiac-virgo:before{content:"\FA87"}.mdi-blank:before{content:"\F68C";visibility:hidden}.mdi-18px.mdi-set,.mdi-18px.mdi:before{font-size:18px}.mdi-24px.mdi-set,.mdi-24px.mdi:before{font-size:24px}.mdi-36px.mdi-set,.mdi-36px.mdi:before{font-size:36px}.mdi-48px.mdi-set,.mdi-48px.mdi:before{font-size:48px}.mdi-dark:before{color:rgba(0,0,0,0.54)}.mdi-dark.mdi-inactive:before{color:rgba(0,0,0,0.26)}.mdi-light:before{color:#fff}.mdi-light.mdi-inactive:before{color:rgba(255,255,255,0.3)}.mdi-rotate-45:before{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.mdi-rotate-90:before{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.mdi-rotate-135:before{-webkit-transform:rotate(135deg);-ms-transform:rotate(135deg);transform:rotate(135deg)}.mdi-rotate-180:before{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.mdi-rotate-225:before{-webkit-transform:rotate(225deg);-ms-transform:rotate(225deg);transform:rotate(225deg)}.mdi-rotate-270:before{-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.mdi-rotate-315:before{-webkit-transform:rotate(315deg);-ms-transform:rotate(315deg);transform:rotate(315deg)}.mdi-flip-h:before{-webkit-transform:scaleX(-1);transform:scaleX(-1);filter:FlipH;-ms-filter:"FlipH"}.mdi-flip-v:before{-webkit-transform:scaleY(-1);transform:scaleY(-1);filter:FlipV;-ms-filter:"FlipV"}.mdi-spin:before{-webkit-animation:mdi-spin 2s infinite linear;animation:mdi-spin 2s infinite linear}@-webkit-keyframes mdi-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes mdi-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}} -/*# sourceMappingURL=materialdesignicons.min.css.map */ diff --git a/community_server/webroot/css/normalize.css b/community_server/webroot/css/normalize.css deleted file mode 100644 index b0c1902dc..000000000 --- a/community_server/webroot/css/normalize.css +++ /dev/null @@ -1,349 +0,0 @@ -/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ - -/* Document - ========================================================================== */ - -/** - * 1. Correct the line height in all browsers. - * 2. Prevent adjustments of font size after orientation changes in iOS. - */ - -html { - line-height: 1.15; /* 1 */ - -webkit-text-size-adjust: 100%; /* 2 */ -} - -/* Sections - ========================================================================== */ - -/** - * Remove the margin in all browsers. - */ - -body { - margin: 0; -} - -/** - * Render the `main` element consistently in IE. - */ - -main { - display: block; -} - -/** - * Correct the font size and margin on `h1` elements within `section` and - * `article` contexts in Chrome, Firefox, and Safari. - */ - -h1 { - font-size: 2em; - margin: 0.67em 0; -} - -/* Grouping content - ========================================================================== */ - -/** - * 1. Add the correct box sizing in Firefox. - * 2. Show the overflow in Edge and IE. - */ - -hr { - box-sizing: content-box; /* 1 */ - height: 0; /* 1 */ - overflow: visible; /* 2 */ -} - -/** - * 1. Correct the inheritance and scaling of font size in all browsers. - * 2. Correct the odd `em` font sizing in all browsers. - */ - -pre { - font-family: monospace, monospace; /* 1 */ - font-size: 1em; /* 2 */ -} - -/* Text-level semantics - ========================================================================== */ - -/** - * Remove the gray background on active links in IE 10. - */ - -a { - background-color: transparent; -} - -/** - * 1. Remove the bottom border in Chrome 57- - * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. - */ - -abbr[title] { - border-bottom: none; /* 1 */ - text-decoration: underline; /* 2 */ - text-decoration: underline dotted; /* 2 */ -} - -/** - * Add the correct font weight in Chrome, Edge, and Safari. - */ - -b, -strong { - font-weight: bolder; -} - -/** - * 1. Correct the inheritance and scaling of font size in all browsers. - * 2. Correct the odd `em` font sizing in all browsers. - */ - -code, -kbd, -samp { - font-family: monospace, monospace; /* 1 */ - font-size: 1em; /* 2 */ -} - -/** - * Add the correct font size in all browsers. - */ - -small { - font-size: 80%; -} - -/** - * Prevent `sub` and `sup` elements from affecting the line height in - * all browsers. - */ - -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sub { - bottom: -0.25em; -} - -sup { - top: -0.5em; -} - -/* Embedded content - ========================================================================== */ - -/** - * Remove the border on images inside links in IE 10. - */ - -img { - border-style: none; -} - -/* Forms - ========================================================================== */ - -/** - * 1. Change the font styles in all browsers. - * 2. Remove the margin in Firefox and Safari. - */ - -button, -input, -optgroup, -select, -textarea { - font-family: inherit; /* 1 */ - font-size: 100%; /* 1 */ - line-height: 1.15; /* 1 */ - margin: 0; /* 2 */ -} - -/** - * Show the overflow in IE. - * 1. Show the overflow in Edge. - */ - -button, -input { /* 1 */ - overflow: visible; -} - -/** - * Remove the inheritance of text transform in Edge, Firefox, and IE. - * 1. Remove the inheritance of text transform in Firefox. - */ - -button, -select { /* 1 */ - text-transform: none; -} - -/** - * Correct the inability to style clickable types in iOS and Safari. - */ - -button, -[type="button"], -[type="reset"], -[type="submit"] { - -webkit-appearance: button; -} - -/** - * Remove the inner border and padding in Firefox. - */ - -button::-moz-focus-inner, -[type="button"]::-moz-focus-inner, -[type="reset"]::-moz-focus-inner, -[type="submit"]::-moz-focus-inner { - border-style: none; - padding: 0; -} - -/** - * Restore the focus styles unset by the previous rule. - */ - -button:-moz-focusring, -[type="button"]:-moz-focusring, -[type="reset"]:-moz-focusring, -[type="submit"]:-moz-focusring { - outline: 1px dotted ButtonText; -} - -/** - * Correct the padding in Firefox. - */ - -fieldset { - padding: 0.35em 0.75em 0.625em; -} - -/** - * 1. Correct the text wrapping in Edge and IE. - * 2. Correct the color inheritance from `fieldset` elements in IE. - * 3. Remove the padding so developers are not caught out when they zero out - * `fieldset` elements in all browsers. - */ - -legend { - box-sizing: border-box; /* 1 */ - color: inherit; /* 2 */ - display: table; /* 1 */ - max-width: 100%; /* 1 */ - padding: 0; /* 3 */ - white-space: normal; /* 1 */ -} - -/** - * Add the correct vertical alignment in Chrome, Firefox, and Opera. - */ - -progress { - vertical-align: baseline; -} - -/** - * Remove the default vertical scrollbar in IE 10+. - */ - -textarea { - overflow: auto; -} - -/** - * 1. Add the correct box sizing in IE 10. - * 2. Remove the padding in IE 10. - */ - -[type="checkbox"], -[type="radio"] { - box-sizing: border-box; /* 1 */ - padding: 0; /* 2 */ -} - -/** - * Correct the cursor style of increment and decrement buttons in Chrome. - */ - -[type="number"]::-webkit-inner-spin-button, -[type="number"]::-webkit-outer-spin-button { - height: auto; -} - -/** - * 1. Correct the odd appearance in Chrome and Safari. - * 2. Correct the outline style in Safari. - */ - -[type="search"] { - -webkit-appearance: textfield; /* 1 */ - outline-offset: -2px; /* 2 */ -} - -/** - * Remove the inner padding in Chrome and Safari on macOS. - */ - -[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} - -/** - * 1. Correct the inability to style clickable types in iOS and Safari. - * 2. Change font properties to `inherit` in Safari. - */ - -::-webkit-file-upload-button { - -webkit-appearance: button; /* 1 */ - font: inherit; /* 2 */ -} - -/* Interactive - ========================================================================== */ - -/* - * Add the correct display in Edge, IE 10+, and Firefox. - */ - -details { - display: block; -} - -/* - * Add the correct display in all browsers. - */ - -summary { - display: list-item; -} - -/* Misc - ========================================================================== */ - -/** - * Add the correct display in IE 10+. - */ - -template { - display: none; -} - -/** - * Add the correct display in IE 10. - */ - -[hidden] { - display: none; -} \ No newline at end of file diff --git a/community_server/webroot/css/rippleUI/style.css b/community_server/webroot/css/rippleUI/style.css deleted file mode 100644 index 8ba93da24..000000000 --- a/community_server/webroot/css/rippleUI/style.css +++ /dev/null @@ -1,14705 +0,0 @@ -.animated { - -webkit-animation-duration: 1s; - animation-duration: 1s; - -webkit-animation-fill-mode: both; - animation-fill-mode: both -} - -.animated.infinite { - -webkit-animation-iteration-count: infinite; - animation-iteration-count: infinite -} - -@-webkit-keyframes fadeIn { - from { - opacity: 0 - } - - to { - opacity: 1 - } - -} - -@keyframes fadeIn { - from { - opacity: 0 - } - - to { - opacity: 1 - } - -} - -.fadeIn { - -webkit-animation-name: fadeIn; - animation-name: fadeIn -} - -@-webkit-keyframes fadeInDown { - from { - opacity: 0; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0) - } - - to { - opacity: 1; - -webkit-transform: none; - transform: none - } - -} - -@keyframes fadeInDown { - from { - opacity: 0; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0) - } - - to { - opacity: 1; - -webkit-transform: none; - transform: none - } - -} - -.fadeInDown { - -webkit-animation-name: fadeInDown; - animation-name: fadeInDown -} - -@-webkit-keyframes fadeInUp { - from { - opacity: 0; - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0) - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0) - } - -} - -@keyframes fadeInUp { - from { - opacity: 0; - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0) - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0) - } - -} - -.fadeInUp { - -webkit-animation-name: fadeInUp; - animation-name: fadeInUp -} - -@-webkit-keyframes zoomIn { - from { - opacity: 0; - -webkit-transform: scale3d(.3, .3, .3); - transform: scale3d(.3, .3, .3) - } - - 50% { - opacity: 1 - } - -} - -@keyframes zoomIn { - from { - opacity: 0; - -webkit-transform: scale3d(.3, .3, .3); - transform: scale3d(.3, .3, .3) - } - - 50% { - opacity: 1 - } - -} - -.zoomIn { - -webkit-animation-name: zoomIn; - animation-name: zoomIn -} - -@keyframes bounceIn { - 20%, - 40%, - 60%, - 80%, - from, - 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: scale3d(.3, .3, .3); - transform: scale3d(.3, .3, .3) - } - - 20% { - -webkit-transform: scale3d(1.4, 1.4, 1.4); - transform: scale3d(1.4, 1.4, 1.4) - } - - 40% { - -webkit-transform: scale3d(.9, .9, .9); - transform: scale3d(.9, .9, .9) - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(1.03, 1.03, 1.03); - transform: scale3d(1.03, 1.03, 1.03) - } - - 80% { - -webkit-transform: scale3d(.97, .97, .97); - transform: scale3d(.97, .97, .97) - } - - to { - opacity: 1; - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1) - } - -} - -@-webkit-keyframes rotate360 { - to { - -webkit-transform: rotate(360deg); - transform: rotate(360deg); - -webkit-transform-origin: center; - transform-origin: center - } - -} - -@keyframes rotate360 { - to { - -webkit-transform: rotate(360deg); - transform: rotate(360deg); - -webkit-transform-origin: center; - transform-origin: center - } - -} - -@-webkit-keyframes bounceIn { - 20%, - 40%, - 60%, - 80%, - from, - 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: scale3d(.3, .3, .3); - transform: scale3d(.3, .3, .3) - } - - 20% { - -webkit-transform: scale3d(1.4, 1.4, 1.4); - transform: scale3d(1.4, 1.4, 1.4) - } - - 40% { - -webkit-transform: scale3d(.9, .9, .9); - transform: scale3d(.9, .9, .9) - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(1.03, 1.03, 1.03); - transform: scale3d(1.03, 1.03, 1.03) - } - - 80% { - -webkit-transform: scale3d(.97, .97, .97); - transform: scale3d(.97, .97, .97) - } - - to { - opacity: 1; - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1) - } - -} - -@-webkit-keyframes ripple { - 0%, - 35% { - -webkit-transform: scale(0); - transform: scale(0); - opacity: 1 - } - - 50% { - -webkit-transform: scale(.6); - transform: scale(.6); - opacity: .8 - } - - 100% { - opacity: 0; - -webkit-transform: scale(1.2); - transform: scale(1.2) - } - -} - -@keyframes ripple { - 0%, - 35% { - -webkit-transform: scale(0); - transform: scale(0); - opacity: 1 - } - - 50% { - -webkit-transform: scale(.6); - transform: scale(.6); - opacity: .8 - } - - 100% { - opacity: 0; - -webkit-transform: scale(1.2); - transform: scale(1.2) - } - -} - -@font-face { - font-family: Roboto; - src: url(../../fonts/Roboto/Roboto-Thin.ttf); - font-weight: 100 -} - -@font-face { - font-family: Roboto; - src: url(../../fonts/Roboto/Roboto-Light.ttf); - font-weight: 300 -} - -@font-face { - font-family: Roboto; - src: url(../../fonts/Roboto/Roboto-Regular.ttf); - font-weight: 400 -} - -@font-face { - font-family: Roboto; - src: url(../../fonts/Roboto/Roboto-Medium.ttf); - font-weight: 500 -} - -@font-face { - font-family: Roboto; - src: url(../../fonts/Roboto/Roboto-Bold.ttf); - font-weight: 700 -} - -.bg-inverse-primary { - background: rgba(4, 112, 6, .2) -} - -.bg-inverse-secondary { - background: rgba(128, 128, 128, .2) -} - -.bg-inverse-success { - background: rgba(0, 224, 147, .2) -} - -.bg-inverse-info { - background: rgba(108, 97, 246, .2) -} - -.bg-inverse-warning { - background: rgba(240, 130, 95, .2) -} - -.bg-inverse-danger { - background: rgba(255, 95, 102, .2) -} - -.bg-inverse-light { - background: rgba(223, 223, 223, .2) -} - -.bg-inverse-dark { - background: rgba(116, 118, 123, .2) -} - -.bg-inverse-white { - background: rgba(255, 255, 255, .2) -} - -/*! - * Bootstrap v4.3.1 (https://getbootstrap.com/) - * Copyright 2011-2019 The Bootstrap Authors - * Copyright 2011-2019 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/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: #047006; - --secondary: grey; - --success: #047006; - --info: #6c61f6; - --warning: #f0825f; - --danger: #ff5f66; - --light: #dfdfdf; - --dark: #74767b; - --white: #fff; - --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.7; - color: #212529; - text-align: left; - background-color: #fff -} - -[tabindex="-1"]:focus { - outline: 0 !important -} - -hr { - box-sizing: content-box; - 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; - text-decoration-skip-ink: none -} - -address { - margin-bottom: 1rem; - font-style: normal; - line-height: inherit -} - -dl, -ol, -ul { - margin-top: 0; - margin-bottom: 1rem -} - -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: baseline -} - -sub { - bottom: -.25em -} - -sup { - top: -.5em -} - -a { - color: #047006; - text-decoration: none; - background-color: transparent -} - -a:hover { - color: #012602; - text-decoration: underline -} - -a:not([href]):not([tabindex]) { - color: inherit; - text-decoration: none -} - -a:not([href]):not([tabindex]):focus, -a:not([href]):not([tabindex]):hover { - color: inherit; - text-decoration: none -} - -a:not([href]):not([tabindex]):focus { - outline: 0 -} - -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 -} - -figure { - margin: 0 0 1rem -} - -img { - vertical-align: middle; - border-style: none -} - -svg { - overflow: hidden; - vertical-align: middle -} - -table { - border-collapse: collapse -} - -caption { - padding-top: 10px 15px; - padding-bottom: 10px 15px; - 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 -} - -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 -} - -input[type=date], -input[type=datetime-local], -input[type=month], -input[type=time] { - -webkit-appearance: listbox -} - -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: baseline -} - -[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; - font-weight: 300; - line-height: 1.2 -} - -.display-2 { - font-size: 5.5rem; - font-weight: 300; - line-height: 1.2 -} - -.display-3 { - font-size: 4.5rem; - font-weight: 300; - line-height: 1.2 -} - -.display-4 { - font-size: 3.5rem; - font-weight: 300; - line-height: 1.2 -} - -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-unstyled { - padding-left: 0; - list-style: none -} - -.list-inline { - padding-left: 0; - list-style: none -} - -.list-inline-item { - display: inline-block -} - -.list-inline-item:not(:last-child) { - margin-right: .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 { - max-width: 100%; - height: auto -} - -.img-thumbnail { - padding: .25rem; - background-color: #fff; - border: 1px solid #dee2e6; - border-radius: .25rem; - max-width: 100%; - height: auto -} - -.figure { - display: inline-block -} - -.figure-img { - margin-bottom: .5rem; - line-height: 1 -} - -.figure-caption { - font-size: 90%; - color: #6c757d -} - -code { - font-size: 90%; - color: #bd4147; - word-break: 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: 90%; - color: #212529 -} - -pre code { - font-size: inherit; - color: inherit; - word-break: normal -} - -.pre-scrollable { - max-height: 340px; - overflow-y: scroll -} - -.container { - width: 100%; - padding-right: 10px; - padding-left: 10px; - margin-right: auto; - margin-left: auto -} - -@media (min-width:576px) { - .container { - max-width: 540px - } - -} - -@media (min-width:768px) { - .container { - max-width: 720px - } - -} - -@media (min-width:992px) { - .container { - max-width: 960px - } - -} - -@media (min-width:1200px) { - .container { - max-width: 1140px - } - -} - -.container-fluid { - width: 100%; - padding-right: 10px; - padding-left: 10px; - margin-right: auto; - margin-left: auto -} - -.row { - display: -webkit-box; - display: flex; - flex-wrap: wrap; - margin-right: -10px; - margin-left: -10px -} - -.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-10, -.col-11, -.col-12, -.col-2, -.col-3, -.col-4, -.col-5, -.col-6, -.col-7, -.col-8, -.col-9, -.col-auto, -.col-lg, -.col-lg-1, -.col-lg-10, -.col-lg-11, -.col-lg-12, -.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-auto, -.col-md, -.col-md-1, -.col-md-10, -.col-md-11, -.col-md-12, -.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-auto, -.col-sm, -.col-sm-1, -.col-sm-10, -.col-sm-11, -.col-sm-12, -.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-auto, -.col-xl, -.col-xl-1, -.col-xl-10, -.col-xl-11, -.col-xl-12, -.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-auto { - position: relative; - width: 100%; - padding-right: 10px; - padding-left: 10px -} - -.col { - flex-basis: 0; - -webkit-box-flex: 1; - flex-grow: 1; - max-width: 100% -} - -.col-auto { - -webkit-box-flex: 0; - flex: 0 0 auto; - width: auto; - max-width: 100% -} - -.col-1 { - -webkit-box-flex: 0; - flex: 0 0 8.33333%; - max-width: 8.33333% -} - -.col-2 { - -webkit-box-flex: 0; - flex: 0 0 16.66667%; - max-width: 16.66667% -} - -.col-3 { - -webkit-box-flex: 0; - flex: 0 0 25%; - max-width: 25% -} - -.col-4 { - -webkit-box-flex: 0; - flex: 0 0 33.33333%; - max-width: 33.33333% -} - -.col-5 { - -webkit-box-flex: 0; - flex: 0 0 41.66667%; - max-width: 41.66667% -} - -.col-6 { - -webkit-box-flex: 0; - flex: 0 0 50%; - max-width: 50% -} - -.col-7 { - -webkit-box-flex: 0; - flex: 0 0 58.33333%; - max-width: 58.33333% -} - -.col-8 { - -webkit-box-flex: 0; - flex: 0 0 66.66667%; - max-width: 66.66667% -} - -.col-9 { - -webkit-box-flex: 0; - flex: 0 0 75%; - max-width: 75% -} - -.col-10 { - -webkit-box-flex: 0; - flex: 0 0 83.33333%; - max-width: 83.33333% -} - -.col-11 { - -webkit-box-flex: 0; - flex: 0 0 91.66667%; - max-width: 91.66667% -} - -.col-12 { - -webkit-box-flex: 0; - flex: 0 0 100%; - max-width: 100% -} - -.order-first { - -webkit-box-ordinal-group: 0; - order: -1 -} - -.order-last { - -webkit-box-ordinal-group: 14; - order: 13 -} - -.order-0 { - -webkit-box-ordinal-group: 1; - order: 0 -} - -.order-1 { - -webkit-box-ordinal-group: 2; - order: 1 -} - -.order-2 { - -webkit-box-ordinal-group: 3; - order: 2 -} - -.order-3 { - -webkit-box-ordinal-group: 4; - order: 3 -} - -.order-4 { - -webkit-box-ordinal-group: 5; - order: 4 -} - -.order-5 { - -webkit-box-ordinal-group: 6; - order: 5 -} - -.order-6 { - -webkit-box-ordinal-group: 7; - order: 6 -} - -.order-7 { - -webkit-box-ordinal-group: 8; - order: 7 -} - -.order-8 { - -webkit-box-ordinal-group: 9; - order: 8 -} - -.order-9 { - -webkit-box-ordinal-group: 10; - order: 9 -} - -.order-10 { - -webkit-box-ordinal-group: 11; - order: 10 -} - -.order-11 { - -webkit-box-ordinal-group: 12; - order: 11 -} - -.order-12 { - -webkit-box-ordinal-group: 13; - order: 12 -} - -.offset-1 { - margin-left: 8.33333% -} - -.offset-2 { - margin-left: 16.66667% -} - -.offset-3 { - margin-left: 25% -} - -.offset-4 { - margin-left: 33.33333% -} - -.offset-5 { - margin-left: 41.66667% -} - -.offset-6 { - margin-left: 50% -} - -.offset-7 { - margin-left: 58.33333% -} - -.offset-8 { - margin-left: 66.66667% -} - -.offset-9 { - margin-left: 75% -} - -.offset-10 { - margin-left: 83.33333% -} - -.offset-11 { - margin-left: 91.66667% -} - -@media (min-width:576px) { - .col-sm { - flex-basis: 0; - -webkit-box-flex: 1; - flex-grow: 1; - max-width: 100% - } - - .col-sm-auto { - -webkit-box-flex: 0; - flex: 0 0 auto; - width: auto; - max-width: 100% - } - - .col-sm-1 { - -webkit-box-flex: 0; - flex: 0 0 8.33333%; - max-width: 8.33333% - } - - .col-sm-2 { - -webkit-box-flex: 0; - flex: 0 0 16.66667%; - max-width: 16.66667% - } - - .col-sm-3 { - -webkit-box-flex: 0; - flex: 0 0 25%; - max-width: 25% - } - - .col-sm-4 { - -webkit-box-flex: 0; - flex: 0 0 33.33333%; - max-width: 33.33333% - } - - .col-sm-5 { - -webkit-box-flex: 0; - flex: 0 0 41.66667%; - max-width: 41.66667% - } - - .col-sm-6 { - -webkit-box-flex: 0; - flex: 0 0 50%; - max-width: 50% - } - - .col-sm-7 { - -webkit-box-flex: 0; - flex: 0 0 58.33333%; - max-width: 58.33333% - } - - .col-sm-8 { - -webkit-box-flex: 0; - flex: 0 0 66.66667%; - max-width: 66.66667% - } - - .col-sm-9 { - -webkit-box-flex: 0; - flex: 0 0 75%; - max-width: 75% - } - - .col-sm-10 { - -webkit-box-flex: 0; - flex: 0 0 83.33333%; - max-width: 83.33333% - } - - .col-sm-11 { - -webkit-box-flex: 0; - flex: 0 0 91.66667%; - max-width: 91.66667% - } - - .col-sm-12 { - -webkit-box-flex: 0; - flex: 0 0 100%; - max-width: 100% - } - - .order-sm-first { - -webkit-box-ordinal-group: 0; - order: -1 - } - - .order-sm-last { - -webkit-box-ordinal-group: 14; - order: 13 - } - - .order-sm-0 { - -webkit-box-ordinal-group: 1; - order: 0 - } - - .order-sm-1 { - -webkit-box-ordinal-group: 2; - order: 1 - } - - .order-sm-2 { - -webkit-box-ordinal-group: 3; - order: 2 - } - - .order-sm-3 { - -webkit-box-ordinal-group: 4; - order: 3 - } - - .order-sm-4 { - -webkit-box-ordinal-group: 5; - order: 4 - } - - .order-sm-5 { - -webkit-box-ordinal-group: 6; - order: 5 - } - - .order-sm-6 { - -webkit-box-ordinal-group: 7; - order: 6 - } - - .order-sm-7 { - -webkit-box-ordinal-group: 8; - order: 7 - } - - .order-sm-8 { - -webkit-box-ordinal-group: 9; - order: 8 - } - - .order-sm-9 { - -webkit-box-ordinal-group: 10; - order: 9 - } - - .order-sm-10 { - -webkit-box-ordinal-group: 11; - order: 10 - } - - .order-sm-11 { - -webkit-box-ordinal-group: 12; - order: 11 - } - - .order-sm-12 { - -webkit-box-ordinal-group: 13; - order: 12 - } - - .offset-sm-0 { - margin-left: 0 - } - - .offset-sm-1 { - margin-left: 8.33333% - } - - .offset-sm-2 { - margin-left: 16.66667% - } - - .offset-sm-3 { - margin-left: 25% - } - - .offset-sm-4 { - margin-left: 33.33333% - } - - .offset-sm-5 { - margin-left: 41.66667% - } - - .offset-sm-6 { - margin-left: 50% - } - - .offset-sm-7 { - margin-left: 58.33333% - } - - .offset-sm-8 { - margin-left: 66.66667% - } - - .offset-sm-9 { - margin-left: 75% - } - - .offset-sm-10 { - margin-left: 83.33333% - } - - .offset-sm-11 { - margin-left: 91.66667% - } - -} - -@media (min-width:768px) { - .col-md { - flex-basis: 0; - -webkit-box-flex: 1; - flex-grow: 1; - max-width: 100% - } - - .col-md-auto { - -webkit-box-flex: 0; - flex: 0 0 auto; - width: auto; - max-width: 100% - } - - .col-md-1 { - -webkit-box-flex: 0; - flex: 0 0 8.33333%; - max-width: 8.33333% - } - - .col-md-2 { - -webkit-box-flex: 0; - flex: 0 0 16.66667%; - max-width: 16.66667% - } - - .col-md-3 { - -webkit-box-flex: 0; - flex: 0 0 25%; - max-width: 25% - } - - .col-md-4 { - -webkit-box-flex: 0; - flex: 0 0 33.33333%; - max-width: 33.33333% - } - - .col-md-5 { - -webkit-box-flex: 0; - flex: 0 0 41.66667%; - max-width: 41.66667% - } - - .col-md-6 { - -webkit-box-flex: 0; - flex: 0 0 50%; - max-width: 50% - } - - .col-md-7 { - -webkit-box-flex: 0; - flex: 0 0 58.33333%; - max-width: 58.33333% - } - - .col-md-8 { - -webkit-box-flex: 0; - flex: 0 0 66.66667%; - max-width: 66.66667% - } - - .col-md-9 { - -webkit-box-flex: 0; - flex: 0 0 75%; - max-width: 75% - } - - .col-md-10 { - -webkit-box-flex: 0; - flex: 0 0 83.33333%; - max-width: 83.33333% - } - - .col-md-11 { - -webkit-box-flex: 0; - flex: 0 0 91.66667%; - max-width: 91.66667% - } - - .col-md-12 { - -webkit-box-flex: 0; - flex: 0 0 100%; - max-width: 100% - } - - .order-md-first { - -webkit-box-ordinal-group: 0; - order: -1 - } - - .order-md-last { - -webkit-box-ordinal-group: 14; - order: 13 - } - - .order-md-0 { - -webkit-box-ordinal-group: 1; - order: 0 - } - - .order-md-1 { - -webkit-box-ordinal-group: 2; - order: 1 - } - - .order-md-2 { - -webkit-box-ordinal-group: 3; - order: 2 - } - - .order-md-3 { - -webkit-box-ordinal-group: 4; - order: 3 - } - - .order-md-4 { - -webkit-box-ordinal-group: 5; - order: 4 - } - - .order-md-5 { - -webkit-box-ordinal-group: 6; - order: 5 - } - - .order-md-6 { - -webkit-box-ordinal-group: 7; - order: 6 - } - - .order-md-7 { - -webkit-box-ordinal-group: 8; - order: 7 - } - - .order-md-8 { - -webkit-box-ordinal-group: 9; - order: 8 - } - - .order-md-9 { - -webkit-box-ordinal-group: 10; - order: 9 - } - - .order-md-10 { - -webkit-box-ordinal-group: 11; - order: 10 - } - - .order-md-11 { - -webkit-box-ordinal-group: 12; - order: 11 - } - - .order-md-12 { - -webkit-box-ordinal-group: 13; - order: 12 - } - - .offset-md-0 { - margin-left: 0 - } - - .offset-md-1 { - margin-left: 8.33333% - } - - .offset-md-2 { - margin-left: 16.66667% - } - - .offset-md-3 { - margin-left: 25% - } - - .offset-md-4 { - margin-left: 33.33333% - } - - .offset-md-5 { - margin-left: 41.66667% - } - - .offset-md-6 { - margin-left: 50% - } - - .offset-md-7 { - margin-left: 58.33333% - } - - .offset-md-8 { - margin-left: 66.66667% - } - - .offset-md-9 { - margin-left: 75% - } - - .offset-md-10 { - margin-left: 83.33333% - } - - .offset-md-11 { - margin-left: 91.66667% - } - -} - -@media (min-width:992px) { - .col-lg { - flex-basis: 0; - -webkit-box-flex: 1; - flex-grow: 1; - max-width: 100% - } - - .col-lg-auto { - -webkit-box-flex: 0; - flex: 0 0 auto; - width: auto; - max-width: 100% - } - - .col-lg-1 { - -webkit-box-flex: 0; - flex: 0 0 8.33333%; - max-width: 8.33333% - } - - .col-lg-2 { - -webkit-box-flex: 0; - flex: 0 0 16.66667%; - max-width: 16.66667% - } - - .col-lg-3 { - -webkit-box-flex: 0; - flex: 0 0 25%; - max-width: 25% - } - - .col-lg-4 { - -webkit-box-flex: 0; - flex: 0 0 33.33333%; - max-width: 33.33333% - } - - .col-lg-5 { - -webkit-box-flex: 0; - flex: 0 0 41.66667%; - max-width: 41.66667% - } - - .col-lg-6 { - -webkit-box-flex: 0; - flex: 0 0 50%; - max-width: 50% - } - - .col-lg-7 { - -webkit-box-flex: 0; - flex: 0 0 58.33333%; - max-width: 58.33333% - } - - .col-lg-8 { - -webkit-box-flex: 0; - flex: 0 0 66.66667%; - max-width: 66.66667% - } - - .col-lg-9 { - -webkit-box-flex: 0; - flex: 0 0 75%; - max-width: 75% - } - - .col-lg-10 { - -webkit-box-flex: 0; - flex: 0 0 83.33333%; - max-width: 83.33333% - } - - .col-lg-11 { - -webkit-box-flex: 0; - flex: 0 0 91.66667%; - max-width: 91.66667% - } - - .col-lg-12 { - -webkit-box-flex: 0; - flex: 0 0 100%; - max-width: 100% - } - - .order-lg-first { - -webkit-box-ordinal-group: 0; - order: -1 - } - - .order-lg-last { - -webkit-box-ordinal-group: 14; - order: 13 - } - - .order-lg-0 { - -webkit-box-ordinal-group: 1; - order: 0 - } - - .order-lg-1 { - -webkit-box-ordinal-group: 2; - order: 1 - } - - .order-lg-2 { - -webkit-box-ordinal-group: 3; - order: 2 - } - - .order-lg-3 { - -webkit-box-ordinal-group: 4; - order: 3 - } - - .order-lg-4 { - -webkit-box-ordinal-group: 5; - order: 4 - } - - .order-lg-5 { - -webkit-box-ordinal-group: 6; - order: 5 - } - - .order-lg-6 { - -webkit-box-ordinal-group: 7; - order: 6 - } - - .order-lg-7 { - -webkit-box-ordinal-group: 8; - order: 7 - } - - .order-lg-8 { - -webkit-box-ordinal-group: 9; - order: 8 - } - - .order-lg-9 { - -webkit-box-ordinal-group: 10; - order: 9 - } - - .order-lg-10 { - -webkit-box-ordinal-group: 11; - order: 10 - } - - .order-lg-11 { - -webkit-box-ordinal-group: 12; - order: 11 - } - - .order-lg-12 { - -webkit-box-ordinal-group: 13; - order: 12 - } - - .offset-lg-0 { - margin-left: 0 - } - - .offset-lg-1 { - margin-left: 8.33333% - } - - .offset-lg-2 { - margin-left: 16.66667% - } - - .offset-lg-3 { - margin-left: 25% - } - - .offset-lg-4 { - margin-left: 33.33333% - } - - .offset-lg-5 { - margin-left: 41.66667% - } - - .offset-lg-6 { - margin-left: 50% - } - - .offset-lg-7 { - margin-left: 58.33333% - } - - .offset-lg-8 { - margin-left: 66.66667% - } - - .offset-lg-9 { - margin-left: 75% - } - - .offset-lg-10 { - margin-left: 83.33333% - } - - .offset-lg-11 { - margin-left: 91.66667% - } - -} - -@media (min-width:1200px) { - .col-xl { - flex-basis: 0; - -webkit-box-flex: 1; - flex-grow: 1; - max-width: 100% - } - - .col-xl-auto { - -webkit-box-flex: 0; - flex: 0 0 auto; - width: auto; - max-width: 100% - } - - .col-xl-1 { - -webkit-box-flex: 0; - flex: 0 0 8.33333%; - max-width: 8.33333% - } - - .col-xl-2 { - -webkit-box-flex: 0; - flex: 0 0 16.66667%; - max-width: 16.66667% - } - - .col-xl-3 { - -webkit-box-flex: 0; - flex: 0 0 25%; - max-width: 25% - } - - .col-xl-4 { - -webkit-box-flex: 0; - flex: 0 0 33.33333%; - max-width: 33.33333% - } - - .col-xl-5 { - -webkit-box-flex: 0; - flex: 0 0 41.66667%; - max-width: 41.66667% - } - - .col-xl-6 { - -webkit-box-flex: 0; - flex: 0 0 50%; - max-width: 50% - } - - .col-xl-7 { - -webkit-box-flex: 0; - flex: 0 0 58.33333%; - max-width: 58.33333% - } - - .col-xl-8 { - -webkit-box-flex: 0; - flex: 0 0 66.66667%; - max-width: 66.66667% - } - - .col-xl-9 { - -webkit-box-flex: 0; - flex: 0 0 75%; - max-width: 75% - } - - .col-xl-10 { - -webkit-box-flex: 0; - flex: 0 0 83.33333%; - max-width: 83.33333% - } - - .col-xl-11 { - -webkit-box-flex: 0; - flex: 0 0 91.66667%; - max-width: 91.66667% - } - - .col-xl-12 { - -webkit-box-flex: 0; - flex: 0 0 100%; - max-width: 100% - } - - .order-xl-first { - -webkit-box-ordinal-group: 0; - order: -1 - } - - .order-xl-last { - -webkit-box-ordinal-group: 14; - order: 13 - } - - .order-xl-0 { - -webkit-box-ordinal-group: 1; - order: 0 - } - - .order-xl-1 { - -webkit-box-ordinal-group: 2; - order: 1 - } - - .order-xl-2 { - -webkit-box-ordinal-group: 3; - order: 2 - } - - .order-xl-3 { - -webkit-box-ordinal-group: 4; - order: 3 - } - - .order-xl-4 { - -webkit-box-ordinal-group: 5; - order: 4 - } - - .order-xl-5 { - -webkit-box-ordinal-group: 6; - order: 5 - } - - .order-xl-6 { - -webkit-box-ordinal-group: 7; - order: 6 - } - - .order-xl-7 { - -webkit-box-ordinal-group: 8; - order: 7 - } - - .order-xl-8 { - -webkit-box-ordinal-group: 9; - order: 8 - } - - .order-xl-9 { - -webkit-box-ordinal-group: 10; - order: 9 - } - - .order-xl-10 { - -webkit-box-ordinal-group: 11; - order: 10 - } - - .order-xl-11 { - -webkit-box-ordinal-group: 12; - order: 11 - } - - .order-xl-12 { - -webkit-box-ordinal-group: 13; - order: 12 - } - - .offset-xl-0 { - margin-left: 0 - } - - .offset-xl-1 { - margin-left: 8.33333% - } - - .offset-xl-2 { - margin-left: 16.66667% - } - - .offset-xl-3 { - margin-left: 25% - } - - .offset-xl-4 { - margin-left: 33.33333% - } - - .offset-xl-5 { - margin-left: 41.66667% - } - - .offset-xl-6 { - margin-left: 50% - } - - .offset-xl-7 { - margin-left: 58.33333% - } - - .offset-xl-8 { - margin-left: 66.66667% - } - - .offset-xl-9 { - margin-left: 75% - } - - .offset-xl-10 { - margin-left: 83.33333% - } - - .offset-xl-11 { - margin-left: 91.66667% - } - -} - -.table { - width: 100%; - margin-bottom: 1rem; - color: #212529 -} - -.table td, -.table th { - padding: 10px 15px; - vertical-align: top; - border-top: 1px solid #f2f4f9 -} - -.table thead th { - vertical-align: bottom; - border-bottom: 2px solid #f2f4f9 -} - -.table tbody+tbody { - border-top: 2px solid #f2f4f9 -} - -.table-sm td, -.table-sm th { - padding: 10px 15px -} - -.table-bordered { - border: 1px solid #f2f4f9 -} - -.table-bordered td, -.table-bordered th { - border: 1px solid #f2f4f9 -} - -.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: #f6f7f9 -} - -.table-hover tbody tr:hover { - color: #212529; - background-color: #f6f7f9 -} - -.table-primary, -.table-primary>td, -.table-primary>th { - background-color: #b9d7b9 -} - -.table-primary tbody+tbody, -.table-primary td, -.table-primary th, -.table-primary thead th { - border-color: #7cb57e -} - -.table-hover .table-primary:hover { - background-color: #a9cea9 -} - -.table-hover .table-primary:hover>td, -.table-hover .table-primary:hover>th { - background-color: #a9cea9 -} - -.table-secondary, -.table-secondary>td, -.table-secondary>th { - background-color: #dbdbdb -} - -.table-secondary tbody+tbody, -.table-secondary td, -.table-secondary th, -.table-secondary thead th { - border-color: #bdbdbd -} - -.table-hover .table-secondary:hover { - background-color: #cecece -} - -.table-hover .table-secondary:hover>td, -.table-hover .table-secondary:hover>th { - background-color: #cecece -} - -.table-success, -.table-success>td, -.table-success>th { - background-color: #b8f6e1 -} - -.table-success tbody+tbody, -.table-success td, -.table-success th, -.table-success thead th { - border-color: #7aefc7 -} - -.table-hover .table-success:hover { - background-color: #a1f3d7 -} - -.table-hover .table-success:hover>td, -.table-hover .table-success:hover>th { - background-color: #a1f3d7 -} - -.table-info, -.table-info>td, -.table-info>th { - background-color: #d6d3fc -} - -.table-info tbody+tbody, -.table-info td, -.table-info th, -.table-info thead th { - border-color: #b3adfa -} - -.table-hover .table-info:hover { - background-color: #c0bbfa -} - -.table-hover .table-info:hover>td, -.table-hover .table-info:hover>th { - background-color: #c0bbfa -} - -.table-warning, -.table-warning>td, -.table-warning>th { - background-color: #fbdcd2 -} - -.table-warning tbody+tbody, -.table-warning td, -.table-warning th, -.table-warning thead th { - border-color: #f7beac -} - -.table-hover .table-warning:hover { - background-color: #f9cabb -} - -.table-hover .table-warning:hover>td, -.table-hover .table-warning:hover>th { - background-color: #f9cabb -} - -.table-danger, -.table-danger>td, -.table-danger>th { - background-color: #ffd2d4 -} - -.table-danger tbody+tbody, -.table-danger td, -.table-danger th, -.table-danger thead th { - border-color: #ffacaf -} - -.table-hover .table-danger:hover { - background-color: #ffb9bc -} - -.table-hover .table-danger:hover>td, -.table-hover .table-danger:hover>th { - background-color: #ffb9bc -} - -.table-light, -.table-light>td, -.table-light>th { - background-color: #f6f6f6 -} - -.table-light tbody+tbody, -.table-light td, -.table-light th, -.table-light thead th { - border-color: #eee -} - -.table-hover .table-light:hover { - background-color: #e9e9e9 -} - -.table-hover .table-light:hover>td, -.table-hover .table-light:hover>th { - background-color: #e9e9e9 -} - -.table-dark, -.table-dark>td, -.table-dark>th { - background-color: #d8d9da -} - -.table-dark tbody+tbody, -.table-dark td, -.table-dark th, -.table-dark thead th { - border-color: #b7b8ba -} - -.table-hover .table-dark:hover { - background-color: #cbccce -} - -.table-hover .table-dark:hover>td, -.table-hover .table-dark:hover>th { - background-color: #cbccce -} - -.table-white, -.table-white>td, -.table-white>th { - background-color: #fff -} - -.table-white tbody+tbody, -.table-white td, -.table-white th, -.table-white thead th { - border-color: #fff -} - -.table-hover .table-white:hover { - background-color: #f2f2f2 -} - -.table-hover .table-white:hover>td, -.table-hover .table-white:hover>th { - background-color: #f2f2f2 -} - -.table-active, -.table-active>td, -.table-active>th { - background-color: rgba(0, 0, 0, .075) -} - -.table-hover .table-active:hover { - background-color: rgba(0, 0, 0, .075) -} - -.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: #e1e4e6; - border-color: #f2f4f9 -} - -.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: rgba(255, 255, 255, .05) -} - -.table-dark.table-hover tbody tr:hover { - color: #fff; - background-color: rgba(255, 255, 255, .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: #6c757d; - background-color: #f6f7f9; - background-clip: padding-box; - border: 1px solid #f0f2f5; - border-radius: .25rem; - -webkit-transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out; - transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out -} - -@media (prefers-reduced-motion:reduce) { - .form-control { - -webkit-transition: none; - transition: none - } - -} - -.form-control::-ms-expand { - background-color: transparent; - border: 0 -} - -.form-control:focus { - color: #495057; - background-color: #f6f7f9; - border-color: #d7dee5; - outline: 0; - box-shadow: 0 0 0 .2rem rgba(0, 123, 255, .25) -} - -.form-control::-webkit-input-placeholder { - color: #6c757d; - opacity: 1 -} - -.form-control::-moz-placeholder { - color: #6c757d; - opacity: 1 -} - -.form-control::-ms-input-placeholder { - color: #6c757d; - opacity: 1 -} - -.form-control::placeholder { - color: #6c757d; - opacity: 1 -} - -.form-control:disabled, -.form-control[readonly] { - background-color: #f8f9fa; - opacity: 1 -} - -select.form-control:focus::-ms-value { - color: #6c757d; - background-color: #f6f7f9 -} - -.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-top: .375rem; - padding-bottom: .375rem; - margin-bottom: 0; - line-height: 1.5; - color: #212529; - background-color: transparent; - 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] { - height: auto -} - -textarea.form-control { - height: auto -} - -.form-group { - margin-bottom: 1rem -} - -.form-text { - display: block; - margin-top: .25rem -} - -.form-row { - display: -webkit-box; - 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 { - color: #adb5bd -} - -.form-check-label { - margin-bottom: 0 -} - -.form-check-inline { - display: -webkit-inline-box; - display: inline-flex; - -webkit-box-align: center; - 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%; - 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 -} - -.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,%3csvg xmlns=!string!viewBox=!string!%3e%3cpath fill=!string!d=!string!/%3e%3c/svg%3e"); - background-repeat: no-repeat; - background-position: center right calc(.375em + .1875rem); - 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) -} - -.form-control.is-valid~.valid-feedback, -.form-control.is-valid~.valid-tooltip, -.was-validated .form-control:valid~.valid-feedback, -.was-validated .form-control:valid~.valid-tooltip { - display: block -} - -.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((1em + .75rem) * 3 / 4 + 1.75rem); - background: url("data:image/svg+xml,%3csvg xmlns=!string!viewBox=!string!%3e%3cpath fill=!string!d=!string!/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns=!string!viewBox=!string!%3e%3cpath fill=!string!d=!string!/%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) -} - -.custom-select.is-valid~.valid-feedback, -.custom-select.is-valid~.valid-tooltip, -.was-validated .custom-select:valid~.valid-feedback, -.was-validated .custom-select:valid~.valid-tooltip { - display: block -} - -.form-control-file.is-valid~.valid-feedback, -.form-control-file.is-valid~.valid-tooltip, -.was-validated .form-control-file:valid~.valid-feedback, -.was-validated .form-control-file:valid~.valid-tooltip { - display: block -} - -.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~.valid-feedback, -.custom-control-input.is-valid~.valid-tooltip, -.was-validated .custom-control-input:valid~.valid-feedback, -.was-validated .custom-control-input:valid~.valid-tooltip { - display: block -} - -.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, -.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label::before { - border-color: #28a745 -} - -.custom-file-input.is-valid~.custom-file-label, -.was-validated .custom-file-input:valid~.custom-file-label { - border-color: #28a745 -} - -.custom-file-input.is-valid~.valid-feedback, -.custom-file-input.is-valid~.valid-tooltip, -.was-validated .custom-file-input:valid~.valid-feedback, -.was-validated .custom-file-input:valid~.valid-tooltip { - display: block -} - -.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%; - 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 -} - -.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,%3csvg xmlns=!string!fill=!string!viewBox=!string!%3e%3cpath stroke=!string!d=!string!/%3e%3ccircle r=!string!/%3e%3ccircle cx=!string!r=!string!/%3e%3ccircle cy=!string!r=!string!/%3e%3ccircle cx=!string!cy=!string!r=!string!/%3e%3c/svg%3E"); - background-repeat: no-repeat; - background-position: center right calc(.375em + .1875rem); - 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) -} - -.form-control.is-invalid~.invalid-feedback, -.form-control.is-invalid~.invalid-tooltip, -.was-validated .form-control:invalid~.invalid-feedback, -.was-validated .form-control:invalid~.invalid-tooltip { - display: block -} - -.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((1em + .75rem) * 3 / 4 + 1.75rem); - background: url("data:image/svg+xml,%3csvg xmlns=!string!viewBox=!string!%3e%3cpath fill=!string!d=!string!/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns=!string!fill=!string!viewBox=!string!%3e%3cpath stroke=!string!d=!string!/%3e%3ccircle r=!string!/%3e%3ccircle cx=!string!r=!string!/%3e%3ccircle cy=!string!r=!string!/%3e%3ccircle cx=!string!cy=!string!r=!string!/%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) -} - -.custom-select.is-invalid~.invalid-feedback, -.custom-select.is-invalid~.invalid-tooltip, -.was-validated .custom-select:invalid~.invalid-feedback, -.was-validated .custom-select:invalid~.invalid-tooltip { - display: block -} - -.form-control-file.is-invalid~.invalid-feedback, -.form-control-file.is-invalid~.invalid-tooltip, -.was-validated .form-control-file:invalid~.invalid-feedback, -.was-validated .form-control-file:invalid~.invalid-tooltip { - display: block -} - -.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~.invalid-feedback, -.custom-control-input.is-invalid~.invalid-tooltip, -.was-validated .custom-control-input:invalid~.invalid-feedback, -.was-validated .custom-control-input:invalid~.invalid-tooltip { - display: block -} - -.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, -.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label::before { - border-color: #dc3545 -} - -.custom-file-input.is-invalid~.custom-file-label, -.was-validated .custom-file-input:invalid~.custom-file-label { - border-color: #dc3545 -} - -.custom-file-input.is-invalid~.invalid-feedback, -.custom-file-input.is-invalid~.invalid-tooltip, -.was-validated .custom-file-input:invalid~.invalid-feedback, -.was-validated .custom-file-input:invalid~.invalid-tooltip { - display: block -} - -.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: -webkit-box; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - flex-flow: row wrap; - -webkit-box-align: center; - align-items: center -} - -.form-inline .form-check { - width: 100% -} - -@media (min-width:576px) { - .form-inline label { - display: -webkit-box; - display: flex; - -webkit-box-align: center; - align-items: center; - -webkit-box-pack: center; - justify-content: center; - margin-bottom: 0 - } - - .form-inline .form-group { - display: -webkit-box; - display: flex; - -webkit-box-flex: 0; - flex: 0 0 auto; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - flex-flow: row wrap; - -webkit-box-align: center; - align-items: center; - margin-bottom: 0 - } - - .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: -webkit-box; - display: flex; - -webkit-box-align: center; - align-items: center; - -webkit-box-pack: 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 { - -webkit-box-align: center; - align-items: center; - -webkit-box-pack: 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; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - background-color: transparent; - border: 1px solid transparent; - padding: .375rem .75rem; - font-size: 1rem; - line-height: 1.5; - border-radius: .25rem; - -webkit-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out; - 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 { - -webkit-transition: none; - 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 -} - -a.btn.disabled, -fieldset:disabled a.btn { - pointer-events: none -} - -.btn-primary { - color: #fff; - background-color: #047006; - border-color: #047006 -} - -.btn-primary:hover { - color: #fff; - background-color: #034b04; - border-color: #023f03 -} - -.btn-primary.focus, -.btn-primary:focus { - box-shadow: 0 0 0 .2rem rgba(42, 133, 43, .5) -} - -.btn-primary.disabled, -.btn-primary:disabled { - color: #fff; - background-color: #047006; - border-color: #047006 -} - -.btn-primary:not(:disabled):not(.disabled).active, -.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle { - color: #fff; - background-color: #023f03; - border-color: #023203 -} - -.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(42, 133, 43, .5) -} - -.btn-secondary { - color: #fff; - background-color: grey; - border-color: grey -} - -.btn-secondary:hover { - color: #fff; - background-color: #6d6d6d; - border-color: #676767 -} - -.btn-secondary.focus, -.btn-secondary:focus { - box-shadow: 0 0 0 .2rem rgba(147, 147, 147, .5) -} - -.btn-secondary.disabled, -.btn-secondary:disabled { - color: #fff; - background-color: grey; - border-color: grey -} - -.btn-secondary:not(:disabled):not(.disabled).active, -.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle { - color: #fff; - background-color: #676767; - border-color: #606060 -} - -.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(147, 147, 147, .5) -} - -.btn-success { - color: #fff; - background-color: #047006; - border-color: #047006 -} - -.btn-success:hover { - color: #fff; - background-color: #00ba7a; - border-color: #00ad72 -} - -.btn-success.focus, -.btn-success:focus { - box-shadow: 0 0 0 .2rem rgba(38, 229, 163, .5) -} - -.btn-success.disabled, -.btn-success:disabled { - color: #fff; - background-color: #047006; - border-color: #047006 -} - -.btn-success:not(:disabled):not(.disabled).active, -.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle { - color: #fff; - background-color: #00ad72; - border-color: #00a069 -} - -.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(38, 229, 163, .5) -} - -.btn-info { - color: #fff; - background-color: #6c61f6; - border-color: #6c61f6 -} - -.btn-info:hover { - color: #fff; - background-color: #4a3df4; - border-color: #3f31f3 -} - -.btn-info.focus, -.btn-info:focus { - box-shadow: 0 0 0 .2rem rgba(130, 121, 247, .5) -} - -.btn-info.disabled, -.btn-info:disabled { - color: #fff; - background-color: #6c61f6; - border-color: #6c61f6 -} - -.btn-info:not(:disabled):not(.disabled).active, -.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle { - color: #fff; - background-color: #3f31f3; - border-color: #3425f3 -} - -.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(130, 121, 247, .5) -} - -.btn-warning { - color: #212529; - background-color: #f0825f; - border-color: #f0825f -} - -.btn-warning:hover { - color: #fff; - background-color: #ed673c; - border-color: #ec5e30 -} - -.btn-warning.focus, -.btn-warning:focus { - box-shadow: 0 0 0 .2rem rgba(209, 116, 87, .5) -} - -.btn-warning.disabled, -.btn-warning:disabled { - color: #212529; - background-color: #f0825f; - border-color: #f0825f -} - -.btn-warning:not(:disabled):not(.disabled).active, -.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle { - color: #fff; - background-color: #ec5e30; - border-color: #eb5425 -} - -.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(209, 116, 87, .5) -} - -.btn-danger { - color: #fff; - background-color: #ff5f66; - border-color: #ff5f66 -} - -.btn-danger:hover { - color: #fff; - background-color: #ff3941; - border-color: #ff2c35 -} - -.btn-danger.focus, -.btn-danger:focus { - box-shadow: 0 0 0 .2rem rgba(255, 119, 125, .5) -} - -.btn-danger.disabled, -.btn-danger:disabled { - color: #fff; - background-color: #ff5f66; - border-color: #ff5f66 -} - -.btn-danger:not(:disabled):not(.disabled).active, -.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle { - color: #fff; - background-color: #ff2c35; - border-color: #ff1f29 -} - -.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(255, 119, 125, .5) -} - -.btn-light { - color: #212529; - background-color: #dfdfdf; - border-color: #dfdfdf -} - -.btn-light:hover { - color: #212529; - background-color: #ccc; - border-color: #c6c6c6 -} - -.btn-light.focus, -.btn-light:focus { - box-shadow: 0 0 0 .2rem rgba(195, 195, 196, .5) -} - -.btn-light.disabled, -.btn-light:disabled { - color: #212529; - background-color: #dfdfdf; - border-color: #dfdfdf -} - -.btn-light:not(:disabled):not(.disabled).active, -.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle { - color: #212529; - background-color: #c6c6c6; - border-color: #bfbfbf -} - -.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(195, 195, 196, .5) -} - -.btn-dark { - color: #fff; - background-color: #74767b; - border-color: #74767b -} - -.btn-dark:hover { - color: #fff; - background-color: #616367; - border-color: #5b5d61 -} - -.btn-dark.focus, -.btn-dark:focus { - box-shadow: 0 0 0 .2rem rgba(137, 139, 143, .5) -} - -.btn-dark.disabled, -.btn-dark:disabled { - color: #fff; - background-color: #74767b; - border-color: #74767b -} - -.btn-dark:not(:disabled):not(.disabled).active, -.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle { - color: #fff; - background-color: #5b5d61; - border-color: #55575a -} - -.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(137, 139, 143, .5) -} - -.btn-white { - color: #212529; - background-color: #fff; - border-color: #fff -} - -.btn-white:hover { - color: #212529; - background-color: #ececec; - border-color: #e6e6e6 -} - -.btn-white.focus, -.btn-white:focus { - box-shadow: 0 0 0 .2rem rgba(222, 222, 223, .5) -} - -.btn-white.disabled, -.btn-white:disabled { - color: #212529; - background-color: #fff; - border-color: #fff -} - -.btn-white:not(:disabled):not(.disabled).active, -.btn-white:not(:disabled):not(.disabled):active,.show>.btn-white.dropdown-toggle { - color: #212529; - background-color: #e6e6e6; - border-color: #dfdfdf -} - -.btn-white:not(:disabled):not(.disabled).active:focus, -.btn-white:not(:disabled):not(.disabled):active:focus,.show>.btn-white.dropdown-toggle:focus { - box-shadow: 0 0 0 .2rem rgba(222, 222, 223, .5) -} - -.btn-outline-primary { - color: #047006; - border-color: #047006 -} - -.btn-outline-primary:hover { - color: #fff; - background-color: #047006; - border-color: #047006 -} - -.btn-outline-primary.focus, -.btn-outline-primary:focus { - box-shadow: 0 0 0 .2rem rgba(4, 112, 6, .5) -} - -.btn-outline-primary.disabled, -.btn-outline-primary:disabled { - color: #047006; - background-color: transparent -} - -.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: #047006; - border-color: #047006 -} - -.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(4, 112, 6, .5) -} - -.btn-outline-secondary { - color: grey; - border-color: grey -} - -.btn-outline-secondary:hover { - color: #fff; - background-color: grey; - border-color: grey -} - -.btn-outline-secondary.focus, -.btn-outline-secondary:focus { - box-shadow: 0 0 0 .2rem rgba(128, 128, 128, .5) -} - -.btn-outline-secondary.disabled, -.btn-outline-secondary:disabled { - color: grey; - background-color: transparent -} - -.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: grey; - border-color: grey -} - -.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(128, 128, 128, .5) -} - -.btn-outline-success { - color: #047006; - border-color: #047006 -} - -.btn-outline-success:hover { - color: #fff; - background-color: #047006; - border-color: #047006 -} - -.btn-outline-success.focus, -.btn-outline-success:focus { - box-shadow: 0 0 0 .2rem rgba(0, 224, 147, .5) -} - -.btn-outline-success.disabled, -.btn-outline-success:disabled { - color: #047006; - background-color: transparent -} - -.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: #047006; - border-color: #047006 -} - -.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(0, 224, 147, .5) -} - -.btn-outline-info { - color: #6c61f6; - border-color: #6c61f6 -} - -.btn-outline-info:hover { - color: #fff; - background-color: #6c61f6; - border-color: #6c61f6 -} - -.btn-outline-info.focus, -.btn-outline-info:focus { - box-shadow: 0 0 0 .2rem rgba(108, 97, 246, .5) -} - -.btn-outline-info.disabled, -.btn-outline-info:disabled { - color: #6c61f6; - background-color: transparent -} - -.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: #6c61f6; - border-color: #6c61f6 -} - -.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(108, 97, 246, .5) -} - -.btn-outline-warning { - color: #f0825f; - border-color: #f0825f -} - -.btn-outline-warning:hover { - color: #212529; - background-color: #f0825f; - border-color: #f0825f -} - -.btn-outline-warning.focus, -.btn-outline-warning:focus { - box-shadow: 0 0 0 .2rem rgba(240, 130, 95, .5) -} - -.btn-outline-warning.disabled, -.btn-outline-warning:disabled { - color: #f0825f; - background-color: transparent -} - -.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: #f0825f; - border-color: #f0825f -} - -.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(240, 130, 95, .5) -} - -.btn-outline-danger { - color: #ff5f66; - border-color: #ff5f66 -} - -.btn-outline-danger:hover { - color: #fff; - background-color: #ff5f66; - border-color: #ff5f66 -} - -.btn-outline-danger.focus, -.btn-outline-danger:focus { - box-shadow: 0 0 0 .2rem rgba(255, 95, 102, .5) -} - -.btn-outline-danger.disabled, -.btn-outline-danger:disabled { - color: #ff5f66; - background-color: transparent -} - -.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: #ff5f66; - border-color: #ff5f66 -} - -.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(255, 95, 102, .5) -} - -.btn-outline-light { - color: #dfdfdf; - border-color: #dfdfdf -} - -.btn-outline-light:hover { - color: #212529; - background-color: #dfdfdf; - border-color: #dfdfdf -} - -.btn-outline-light.focus, -.btn-outline-light:focus { - box-shadow: 0 0 0 .2rem rgba(223, 223, 223, .5) -} - -.btn-outline-light.disabled, -.btn-outline-light:disabled { - color: #dfdfdf; - background-color: transparent -} - -.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: #dfdfdf; - border-color: #dfdfdf -} - -.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(223, 223, 223, .5) -} - -.btn-outline-dark { - color: #74767b; - border-color: #74767b -} - -.btn-outline-dark:hover { - color: #fff; - background-color: #74767b; - border-color: #74767b -} - -.btn-outline-dark.focus, -.btn-outline-dark:focus { - box-shadow: 0 0 0 .2rem rgba(116, 118, 123, .5) -} - -.btn-outline-dark.disabled, -.btn-outline-dark:disabled { - color: #74767b; - background-color: transparent -} - -.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: #74767b; - border-color: #74767b -} - -.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(116, 118, 123, .5) -} - -.btn-outline-white { - color: #fff; - border-color: #fff -} - -.btn-outline-white:hover { - color: #212529; - background-color: #fff; - border-color: #fff -} - -.btn-outline-white.focus, -.btn-outline-white:focus { - box-shadow: 0 0 0 .2rem rgba(255, 255, 255, .5) -} - -.btn-outline-white.disabled, -.btn-outline-white:disabled { - color: #fff; - background-color: transparent -} - -.btn-outline-white:not(:disabled):not(.disabled).active, -.btn-outline-white:not(:disabled):not(.disabled):active,.show>.btn-outline-white.dropdown-toggle { - color: #212529; - background-color: #fff; - border-color: #fff -} - -.btn-outline-white:not(:disabled):not(.disabled).active:focus, -.btn-outline-white:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-white.dropdown-toggle:focus { - box-shadow: 0 0 0 .2rem rgba(255, 255, 255, .5) -} - -.btn-link { - font-weight: 400; - color: #047006; - text-decoration: none -} - -.btn-link:hover { - color: #012602; - text-decoration: underline -} - -.btn-link.focus, -.btn-link:focus { - text-decoration: underline; - box-shadow: none -} - -.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 { - -webkit-transition: opacity .15s linear; - transition: opacity .15s linear -} - -@media (prefers-reduced-motion:reduce) { - .fade { - -webkit-transition: none; - transition: none - } - -} - -.fade:not(.show) { - opacity: 0 -} - -.collapse:not(.show) { - display: none -} - -.collapsing { - position: relative; - height: 0; - overflow: hidden; - -webkit-transition: height .35s ease; - transition: height .35s ease -} - -@media (prefers-reduced-motion:reduce) { - .collapsing { - -webkit-transition: none; - 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: 'http://www.w3.org/2000/svg'; - 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: '0 0 8 8'; - 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: '%2328a745'; - 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: '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' -} - -.dropleft .dropdown-toggle::after { - display: none -} - -.dropleft .dropdown-toggle::before { - display: inline-block; - margin-right: .255em; - vertical-align: .255em; - content: 'http://www.w3.org/2000/svg'; - 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: transparent; - 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: transparent -} - -.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: -webkit-inline-box; - display: inline-flex; - vertical-align: middle -} - -.btn-group-vertical>.btn, -.btn-group>.btn { - position: relative; - -webkit-box-flex: 1; - flex: 1 1 auto -} - -.btn-group-vertical>.btn:hover, -.btn-group>.btn:hover { - z-index: 1 -} - -.btn-group-vertical>.btn.active, -.btn-group-vertical>.btn:active, -.btn-group-vertical>.btn:focus, -.btn-group>.btn.active, -.btn-group>.btn:active, -.btn-group>.btn:focus { - z-index: 1 -} - -.btn-toolbar { - display: -webkit-box; - display: flex; - flex-wrap: wrap; - -webkit-box-pack: start; - 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 { - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - flex-direction: column; - -webkit-box-align: start; - align-items: flex-start; - -webkit-box-pack: center; - 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 input[type=checkbox], -.btn-group-toggle>.btn input[type=radio], -.btn-group-toggle>.btn-group>.btn input[type=checkbox], -.btn-group-toggle>.btn-group>.btn input[type=radio] { - position: absolute; - clip: rect(0, 0, 0, 0); - pointer-events: none -} - -.input-group { - position: relative; - display: -webkit-box; - display: flex; - flex-wrap: wrap; - -webkit-box-align: stretch; - align-items: stretch; - width: 100% -} - -.input-group>.custom-file, -.input-group>.custom-select, -.input-group>.form-control, -.input-group>.form-control-plaintext { - position: relative; - -webkit-box-flex: 1; - flex: 1 1 auto; - width: 1%; - 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: -webkit-box; - display: flex; - -webkit-box-align: center; - 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: -webkit-box; - 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: -webkit-box; - display: flex; - -webkit-box-align: center; - align-items: center; - padding: .375rem .75rem; - margin-bottom: 0; - font-size: 1rem; - font-weight: 400; - line-height: 1.5; - color: #6c757d; - text-align: center; - white-space: nowrap; - background-color: #e9ecef; - border: 1px solid #f0f2f5; - 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; - display: block; - min-height: 1.7rem; - padding-left: 1.9rem -} - -.custom-control-inline { - display: -webkit-inline-box; - display: inline-flex; - margin-right: 1rem -} - -.custom-control-input { - position: absolute; - z-index: -1; - opacity: 0 -} - -.custom-control-input:checked~.custom-control-label::before { - color: #fff; - border-color: #047006; - background-color: #047006 -} - -.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 { - color: #6c757d -} - -.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 { - position: absolute; - top: .15rem; - left: -1.9rem; - display: block; - width: 1.4rem; - height: 1.4rem; - pointer-events: none; - content: '0 0 4 5'; - background-color: #fff; - border: #e1e5f1 solid 1px -} - -.custom-control-label::after { - position: absolute; - top: .15rem; - left: -1.9rem; - display: block; - width: 1.4rem; - height: 1.4rem; - content: '%23343a40'; - 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,%3csvg xmlns=!string!viewBox=!string!%3e%3cpath fill=!string!d=!string!/%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,%3csvg xmlns=!string!viewBox=!string!%3e%3cpath stroke=!string!d=!string!/%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,%3csvg xmlns=!string!viewBox=!string!%3e%3ccircle r=!string!fill=!string!/%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.8rem -} - -.custom-switch .custom-control-label::before { - left: -2.8rem; - width: 2.3rem; - pointer-events: all; - border-radius: 25px -} - -.custom-switch .custom-control-label::after { - top: calc(.15rem + 2px); - left: calc(-2.8rem + 2px); - width: 1.1rem; - height: 1.1rem; - background-color: #e1e5f1; - border-radius: 25px; - -webkit-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: 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 { - -webkit-transition: none; - transition: none - } - -} - -.custom-switch .custom-control-input:checked~.custom-control-label::after { - background-color: #fff; - -webkit-transform: translateX(.9rem); - transform: translateX(.9rem) -} - -.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: url("data:image/svg+xml,%3csvg xmlns=!string!viewBox=!string!%3e%3cpath fill=!string!d=!string!/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px; - background-color: #fff; - border: 1px solid #ced4da; - border-radius: .25rem; - -webkit-appearance: none; - -moz-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: #6c757d; - background-color: #f6f7f9 -} - -.custom-select[multiple], -.custom-select[size]:not([size='M2 0L0 2h4zm0 5L0 3h4z']) { - height: auto; - padding-right: .75rem; - background-image: none -} - -.custom-select:disabled { - color: #6c757d; - background-color: #e9ecef -} - -.custom-select::-ms-expand { - display: none -} - -.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 { - position: relative; - display: inline-block; - width: 100%; - height: calc(1.5em + .75rem + 2px); - margin-bottom: 0 -} - -.custom-file-input { - position: relative; - z-index: 2; - width: 100%; - height: calc(1.5em + .75rem + 2px); - 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 { - background-color: #e9ecef -} - -.custom-file-input:lang(en)~.custom-file-label::after { - content: 'http://www.w3.org/2000/svg' -} - -.custom-file-input~.custom-file-label[data-browse]::after { - content: attr(data-browse) -} - -.custom-file-label { - position: absolute; - top: 0; - right: 0; - left: 0; - z-index: 1; - height: calc(1.5em + .75rem + 2px); - padding: .375rem .75rem; - font-weight: 400; - line-height: 1.5; - color: #6c757d; - background-color: #f6f7f9; - border: 1px solid #f0f2f5; - border-radius: .25rem -} - -.custom-file-label::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - z-index: 3; - display: block; - height: calc(1.5em + .75rem); - padding: .375rem .75rem; - line-height: 1.5; - color: #495057; - content: '0 0 8 8'; - background-color: #e9ecef; - border-left: inherit; - border-radius: 0 .25rem .25rem 0 -} - -.custom-range { - width: 100%; - height: calc(1rem + .4rem); - padding: 0; - background-color: transparent; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none -} - -.custom-range:focus { - outline: 0 -} - -.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; - -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; - -moz-appearance: none; - appearance: none -} - -@media (prefers-reduced-motion:reduce) { - .custom-range::-moz-range-thumb { - -webkit-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; - -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; - appearance: none -} - -@media (prefers-reduced-motion:reduce) { - .custom-range::-ms-thumb { - -webkit-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: transparent; - border-color: transparent; - border-width: .5rem -} - -.custom-range::-ms-fill-lower { - background-color: #dee2e6; - border-radius: 1rem -} - -.custom-range::-ms-fill-upper { - margin-right: 15px; - background-color: #dee2e6; - border-radius: 1rem -} - -.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 { - -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 -} - -@media (prefers-reduced-motion:reduce) { - .custom-control-label::before, - .custom-file-label, - .custom-select { - -webkit-transition: none; - transition: none - } - -} - -.nav { - display: -webkit-box; - 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: 2px; - border-top-right-radius: 2px -} - -.nav-tabs .nav-link:focus, -.nav-tabs .nav-link:hover { - border-color: #e9ecef #e9ecef #dee2e6 -} - -.nav-tabs .nav-link.disabled { - color: #6c757d; - background-color: transparent; - 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: 2px -} - -.nav-pills .nav-link.active, -.nav-pills .show>.nav-link { - color: #fff; - background-color: #007bff -} - -.nav-fill .nav-item { - -webkit-box-flex: 1; - flex: 1 1 auto; - text-align: center -} - -.nav-justified .nav-item { - flex-basis: 0; - -webkit-box-flex: 1; - flex-grow: 1; - text-align: center -} - -.tab-content>.tab-pane { - display: none -} - -.tab-content>.active { - display: block -} - -.navbar { - position: relative; - display: -webkit-box; - display: flex; - flex-wrap: wrap; - -webkit-box-align: center; - align-items: center; - -webkit-box-pack: justify; - justify-content: space-between; - padding: .5rem 1rem -} - -.navbar>.container, -.navbar>.container-fluid { - display: -webkit-box; - display: flex; - flex-wrap: wrap; - -webkit-box-align: center; - align-items: center; - -webkit-box-pack: justify; - 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: -webkit-box; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - 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%; - -webkit-box-flex: 1; - flex-grow: 1; - -webkit-box-align: center; - align-items: center -} - -.navbar-toggler { - padding: .25rem .75rem; - font-size: 1.25rem; - line-height: 1; - background-color: transparent; - 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: '%2328a745'; - background: no-repeat center center; - background-size: 100% 100% -} - -@media (max-width:575.98px) { - .navbar-expand-sm>.container, - .navbar-expand-sm>.container-fluid { - padding-right: 0; - padding-left: 0 - } - -} - -@media (min-width:576px) { - .navbar-expand-sm { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - flex-flow: row nowrap; - -webkit-box-pack: start; - justify-content: flex-start - } - - .navbar-expand-sm .navbar-nav { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - 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 { - flex-wrap: nowrap - } - - .navbar-expand-sm .navbar-collapse { - display: -webkit-box !important; - 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 { - padding-right: 0; - padding-left: 0 - } - -} - -@media (min-width:768px) { - .navbar-expand-md { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - flex-flow: row nowrap; - -webkit-box-pack: start; - justify-content: flex-start - } - - .navbar-expand-md .navbar-nav { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - 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 { - flex-wrap: nowrap - } - - .navbar-expand-md .navbar-collapse { - display: -webkit-box !important; - 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 { - padding-right: 0; - padding-left: 0 - } - -} - -@media (min-width:992px) { - .navbar-expand-lg { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - flex-flow: row nowrap; - -webkit-box-pack: start; - justify-content: flex-start - } - - .navbar-expand-lg .navbar-nav { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - 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 { - flex-wrap: nowrap - } - - .navbar-expand-lg .navbar-collapse { - display: -webkit-box !important; - 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 { - padding-right: 0; - padding-left: 0 - } - -} - -@media (min-width:1200px) { - .navbar-expand-xl { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - flex-flow: row nowrap; - -webkit-box-pack: start; - justify-content: flex-start - } - - .navbar-expand-xl .navbar-nav { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - 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 { - flex-wrap: nowrap - } - - .navbar-expand-xl .navbar-collapse { - display: -webkit-box !important; - display: flex !important; - flex-basis: auto - } - - .navbar-expand-xl .navbar-toggler { - display: none - } - -} - -.navbar-expand { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - flex-flow: row nowrap; - -webkit-box-pack: start; - justify-content: flex-start -} - -.navbar-expand>.container, -.navbar-expand>.container-fluid { - padding-right: 0; - padding-left: 0 -} - -.navbar-expand .navbar-nav { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - 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 { - flex-wrap: nowrap -} - -.navbar-expand .navbar-collapse { - display: -webkit-box !important; - display: flex !important; - flex-basis: auto -} - -.navbar-expand .navbar-toggler { - display: none -} - -.navbar-light .navbar-brand { - color: rgba(0, 0, 0, .9) -} - -.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,%3csvg viewBox=!string!xmlns=!string!%3e%3cpath stroke=!string!stroke-width=!string!stroke-linecap=!string!stroke-miterlimit=!string!d=!string!/%3e%3c/svg%3e") -} - -.navbar-light .navbar-text { - color: rgba(0, 0, 0, .5) -} - -.navbar-light .navbar-text a { - color: rgba(0, 0, 0, .9) -} - -.navbar-light .navbar-text a:focus, -.navbar-light .navbar-text a:hover { - color: rgba(0, 0, 0, .9) -} - -.navbar-dark .navbar-brand { - color: #fff -} - -.navbar-dark .navbar-brand:focus, -.navbar-dark .navbar-brand:hover { - color: #fff -} - -.navbar-dark .navbar-nav .nav-link { - color: rgba(255, 255, 255, .5) -} - -.navbar-dark .navbar-nav .nav-link:focus, -.navbar-dark .navbar-nav .nav-link:hover { - color: rgba(255, 255, 255, .75) -} - -.navbar-dark .navbar-nav .nav-link.disabled { - color: rgba(255, 255, 255, .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: rgba(255, 255, 255, .5); - border-color: rgba(255, 255, 255, .1) -} - -.navbar-dark .navbar-toggler-icon { - background-image: url("data:image/svg+xml,%3csvg viewBox=!string!xmlns=!string!%3e%3cpath stroke=!string!stroke-width=!string!stroke-linecap=!string!stroke-miterlimit=!string!d=!string!/%3e%3c/svg%3e") -} - -.navbar-dark .navbar-text { - color: rgba(255, 255, 255, .5) -} - -.navbar-dark .navbar-text a { - color: #fff -} - -.navbar-dark .navbar-text a:focus, -.navbar-dark .navbar-text a:hover { - color: #fff -} - -.card { - position: relative; - display: -webkit-box; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - flex-direction: column; - min-width: 0; - word-wrap: break-word; - background-color: #fff; - background-clip: border-box; - border: 1px solid rgba(238, 238, 238, .75); - border-radius: .25rem -} - -.card>hr { - margin-right: 0; - margin-left: 0 -} - -.card>.list-group:first-child .list-group-item:first-child { - border-top-left-radius: .25rem; - border-top-right-radius: .25rem -} - -.card>.list-group:last-child .list-group-item:last-child { - border-bottom-right-radius: .25rem; - border-bottom-left-radius: .25rem -} - -.card-body { - -webkit-box-flex: 1; - flex: 1 1 auto; - padding: 1.25rem -} - -.card-title { - margin-bottom: .75rem -} - -.card-subtitle { - margin-top: -.375rem; - margin-bottom: 0 -} - -.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(238, 238, 238, .75) -} - -.card-header:first-child { - border-radius: calc(.25rem - 1px) calc(.25rem - 1px) 0 0 -} - -.card-header+.list-group .list-group-item:first-child { - border-top: 0 -} - -.card-footer { - padding: .75rem 1.25rem; - background-color: rgba(0, 0, 0, .03); - border-top: 1px solid rgba(238, 238, 238, .75) -} - -.card-footer:last-child { - border-radius: 0 0 calc(.25rem - 1px) calc(.25rem - 1px) -} - -.card-header-tabs { - margin-right: -.625rem; - margin-bottom: -.75rem; - margin-left: -.625rem; - border-bottom: 0 -} - -.card-header-pills { - margin-right: -.625rem; - margin-left: -.625rem -} - -.card-img-overlay { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - padding: 1.25rem -} - -.card-img { - width: 100%; - border-radius: calc(.25rem - 1px) -} - -.card-img-top { - width: 100%; - border-top-left-radius: calc(.25rem - 1px); - border-top-right-radius: calc(.25rem - 1px) -} - -.card-img-bottom { - width: 100%; - border-bottom-right-radius: calc(.25rem - 1px); - border-bottom-left-radius: calc(.25rem - 1px) -} - -.card-deck { - display: -webkit-box; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - flex-direction: column -} - -.card-deck .card { - margin-bottom: 15px -} - -@media (min-width:576px) { - .card-deck { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - flex-flow: row wrap; - margin-right: -15px; - margin-left: -15px - } - - .card-deck .card { - display: -webkit-box; - display: flex; - -webkit-box-flex: 1; - flex: 1 0 0%; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - flex-direction: column; - margin-right: 15px; - margin-bottom: 0; - margin-left: 15px - } - -} - -.card-group { - display: -webkit-box; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - flex-direction: column -} - -.card-group>.card { - margin-bottom: 15px -} - -@media (min-width:576px) { - .card-group { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - flex-flow: row wrap - } - - .card-group>.card { - -webkit-box-flex: 1; - flex: 1 0 0%; - margin-bottom: 0 - } - - .card-group>.card+.card { - margin-left: 0; - border-left: 0 - } - - .card-group>.card:not(:last-child) { - border-top-right-radius: 0; - border-bottom-right-radius: 0 - } - - .card-group>.card:not(:last-child) .card-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; - -moz-column-count: 3; - column-count: 3; - -webkit-column-gap: 1.25rem; - -moz-column-gap: 1.25rem; - column-gap: 1.25rem; - orphans: 1; - widows: 1 - } - - .card-columns .card { - display: inline-block; - width: 100% - } - -} - -.accordion>.card { - overflow: hidden -} - -.accordion>.card:not(:first-of-type) .card-header:first-child { - border-radius: 0 -} - -.accordion>.card:not(:first-of-type):not(:last-of-type) { - border-bottom: 0; - border-radius: 0 -} - -.accordion>.card:first-of-type { - border-bottom: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0 -} - -.accordion>.card:last-of-type { - border-top-left-radius: 0; - border-top-right-radius: 0 -} - -.accordion>.card .card-header { - margin-bottom: -1px -} - -.breadcrumb { - display: -webkit-box; - display: flex; - flex-wrap: wrap; - padding: .75rem 1rem; - margin-bottom: 1rem; - list-style: none; - background-color: #f7f9fa; - border-radius: .25rem -} - -.breadcrumb-item+.breadcrumb-item { - padding-left: .5rem -} - -.breadcrumb-item+.breadcrumb-item::before { - display: inline-block; - padding-right: .5rem; - color: #a8a9ad; - content: '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' -} - -.breadcrumb-item+.breadcrumb-item:hover::before { - text-decoration: underline -} - -.breadcrumb-item+.breadcrumb-item:hover::before { - text-decoration: none -} - -.breadcrumb-item.active { - color: #6c757d -} - -.pagination { - display: -webkit-box; - display: flex; - padding-left: 0; - list-style: none; - border-radius: 2px -} - -.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: 2; - 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: 2px; - border-bottom-left-radius: 2px -} - -.page-item:last-child .page-link { - border-top-right-radius: 2px; - border-bottom-right-radius: 2px -} - -.page-item.active .page-link { - z-index: 1; - 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: 6px; - border-bottom-left-radius: 6px -} - -.pagination-lg .page-item:last-child .page-link { - border-top-right-radius: 6px; - border-bottom-right-radius: 6px -} - -.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: .45rem 1rem; - font-size: 80%; - font-weight: 700; - line-height: 1; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - border-radius: .25rem; - -webkit-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out; - 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 { - -webkit-transition: none; - 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: .5rem; - padding-left: .5rem; - border-radius: 10rem -} - -.badge-primary { - color: #fff; - background-color: #047006 -} - -a.badge-primary:focus, -a.badge-primary:hover { - color: #fff; - background-color: #023f03 -} - -a.badge-primary.focus, -a.badge-primary:focus { - outline: 0; - box-shadow: 0 0 0 .2rem rgba(4, 112, 6, .5) -} - -.badge-secondary { - color: #fff; - background-color: grey -} - -a.badge-secondary:focus, -a.badge-secondary:hover { - color: #fff; - background-color: #676767 -} - -a.badge-secondary.focus, -a.badge-secondary:focus { - outline: 0; - box-shadow: 0 0 0 .2rem rgba(128, 128, 128, .5) -} - -.badge-success { - color: #fff; - background-color: #047006 -} - -a.badge-success:focus, -a.badge-success:hover { - color: #fff; - background-color: #00ad72 -} - -a.badge-success.focus, -a.badge-success:focus { - outline: 0; - box-shadow: 0 0 0 .2rem rgba(0, 224, 147, .5) -} - -.badge-info { - color: #fff; - background-color: #6c61f6 -} - -a.badge-info:focus, -a.badge-info:hover { - color: #fff; - background-color: #3f31f3 -} - -a.badge-info.focus, -a.badge-info:focus { - outline: 0; - box-shadow: 0 0 0 .2rem rgba(108, 97, 246, .5) -} - -.badge-warning { - color: #212529; - background-color: #f0825f -} - -a.badge-warning:focus, -a.badge-warning:hover { - color: #212529; - background-color: #ec5e30 -} - -a.badge-warning.focus, -a.badge-warning:focus { - outline: 0; - box-shadow: 0 0 0 .2rem rgba(240, 130, 95, .5) -} - -.badge-danger { - color: #fff; - background-color: #ff5f66 -} - -a.badge-danger:focus, -a.badge-danger:hover { - color: #fff; - background-color: #ff2c35 -} - -a.badge-danger.focus, -a.badge-danger:focus { - outline: 0; - box-shadow: 0 0 0 .2rem rgba(255, 95, 102, .5) -} - -.badge-light { - color: #212529; - background-color: #dfdfdf -} - -a.badge-light:focus, -a.badge-light:hover { - color: #212529; - background-color: #c6c6c6 -} - -a.badge-light.focus, -a.badge-light:focus { - outline: 0; - box-shadow: 0 0 0 .2rem rgba(223, 223, 223, .5) -} - -.badge-dark { - color: #fff; - background-color: #74767b -} - -a.badge-dark:focus, -a.badge-dark:hover { - color: #fff; - background-color: #5b5d61 -} - -a.badge-dark.focus, -a.badge-dark:focus { - outline: 0; - box-shadow: 0 0 0 .2rem rgba(116, 118, 123, .5) -} - -.badge-white { - color: #212529; - background-color: #fff -} - -a.badge-white:focus, -a.badge-white:hover { - color: #212529; - background-color: #e6e6e6 -} - -a.badge-white.focus, -a.badge-white:focus { - outline: 0; - box-shadow: 0 0 0 .2rem rgba(255, 255, 255, .5) -} - -.jumbotron { - padding: 2rem 1rem; - margin-bottom: 2rem; - background-color: #e9ecef; - border-radius: 6px -} - -@media (min-width:576px) { - .jumbotron { - padding: 4rem 2rem - } - -} - -.jumbotron-fluid { - padding-right: 0; - padding-left: 0; - border-radius: 0 -} - -.alert { - position: relative; - padding: 1.15rem 1.15rem; - margin-bottom: 1rem; - border: 1px solid transparent; - border-radius: 2px -} - -.alert-heading { - color: inherit -} - -.alert-link { - font-weight: 700 -} - -.alert-dismissible { - padding-right: 3.8rem -} - -.alert-dismissible .close { - position: absolute; - top: 0; - right: 0; - padding: 1.15rem 1.15rem; - color: inherit -} - -.alert-primary { - color: #023a03; - background-color: #cde2cd; - border-color: #b9d7b9 -} - -.alert-primary hr { - border-top-color: #a9cea9 -} - -.alert-primary .alert-link { - color: #000900 -} - -.alert-secondary { - color: #434343; - background-color: #e6e6e6; - border-color: #dbdbdb -} - -.alert-secondary hr { - border-top-color: #cecece -} - -.alert-secondary .alert-link { - color: #2a2a2a -} - -.alert-success { - color: #00744c; - background-color: #ccf9e9; - border-color: #b8f6e1 -} - -.alert-success hr { - border-top-color: #a1f3d7 -} - -.alert-success .alert-link { - color: #00412b -} - -.alert-info { - color: #383280; - background-color: #e2dffd; - border-color: #d6d3fc -} - -.alert-info hr { - border-top-color: #c0bbfa -} - -.alert-info .alert-link { - color: #28245b -} - -.alert-warning { - color: #7d4431; - background-color: #fce6df; - border-color: #fbdcd2 -} - -.alert-warning hr { - border-top-color: #f9cabb -} - -.alert-warning .alert-link { - color: #583023 -} - -.alert-danger { - color: #853135; - background-color: #ffdfe0; - border-color: #ffd2d4 -} - -.alert-danger hr { - border-top-color: #ffb9bc -} - -.alert-danger .alert-link { - color: #602326 -} - -.alert-light { - color: #747474; - background-color: #f9f9f9; - border-color: #f6f6f6 -} - -.alert-light hr { - border-top-color: #e9e9e9 -} - -.alert-light .alert-link { - color: #5b5b5b -} - -.alert-dark { - color: #3c3d40; - background-color: #e3e4e5; - border-color: #d8d9da -} - -.alert-dark hr { - border-top-color: #cbccce -} - -.alert-dark .alert-link { - color: #232426 -} - -.alert-white { - color: #858585; - background-color: #fff; - border-color: #fff -} - -.alert-white hr { - border-top-color: #f2f2f2 -} - -.alert-white .alert-link { - color: #6c6c6c -} - -@-webkit-keyframes progress-bar-stripes { - from { - background-position: 1rem 0 - } - - to { - background-position: 0 0 - } - -} - -@keyframes progress-bar-stripes { - from { - background-position: 1rem 0 - } - - to { - background-position: 0 0 - } - -} - -.progress { - display: -webkit-box; - display: flex; - height: 1rem; - overflow: hidden; - font-size: .75rem; - background-color: #f3f5f7; - border-radius: 2px -} - -.progress-bar { - display: -webkit-box; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - flex-direction: column; - -webkit-box-pack: center; - justify-content: center; - color: #fff; - text-align: center; - white-space: nowrap; - background-color: #007bff; - -webkit-transition: width .6s ease; - transition: width .6s ease -} - -@media (prefers-reduced-motion:reduce) { - .progress-bar { - -webkit-transition: none; - transition: none - } - -} - -.progress-bar-striped { - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, 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: -webkit-box; - display: flex; - -webkit-box-align: start; - align-items: flex-start -} - -.media-body { - -webkit-box-flex: 1; - flex: 1 -} - -.list-group { - display: -webkit-box; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - flex-direction: column; - padding-left: 0; - margin-bottom: 0 -} - -.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; - margin-bottom: -1px; - background-color: #fff; - border: 1px solid rgba(0, 0, 0, .125) -} - -.list-group-item:first-child { - border-top-left-radius: .25rem; - border-top-right-radius: .25rem -} - -.list-group-item:last-child { - margin-bottom: 0; - border-bottom-right-radius: .25rem; - border-bottom-left-radius: .25rem -} - -.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-horizontal { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - flex-direction: row -} - -.list-group-horizontal .list-group-item { - margin-right: -1px; - margin-bottom: 0 -} - -.list-group-horizontal .list-group-item:first-child { - border-top-left-radius: .25rem; - border-bottom-left-radius: .25rem; - border-top-right-radius: 0 -} - -.list-group-horizontal .list-group-item:last-child { - margin-right: 0; - border-top-right-radius: .25rem; - border-bottom-right-radius: .25rem; - border-bottom-left-radius: 0 -} - -@media (min-width:576px) { - .list-group-horizontal-sm { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - flex-direction: row - } - - .list-group-horizontal-sm .list-group-item { - margin-right: -1px; - margin-bottom: 0 - } - - .list-group-horizontal-sm .list-group-item:first-child { - border-top-left-radius: .25rem; - border-bottom-left-radius: .25rem; - border-top-right-radius: 0 - } - - .list-group-horizontal-sm .list-group-item:last-child { - margin-right: 0; - border-top-right-radius: .25rem; - border-bottom-right-radius: .25rem; - border-bottom-left-radius: 0 - } - -} - -@media (min-width:768px) { - .list-group-horizontal-md { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - flex-direction: row - } - - .list-group-horizontal-md .list-group-item { - margin-right: -1px; - margin-bottom: 0 - } - - .list-group-horizontal-md .list-group-item:first-child { - border-top-left-radius: .25rem; - border-bottom-left-radius: .25rem; - border-top-right-radius: 0 - } - - .list-group-horizontal-md .list-group-item:last-child { - margin-right: 0; - border-top-right-radius: .25rem; - border-bottom-right-radius: .25rem; - border-bottom-left-radius: 0 - } - -} - -@media (min-width:992px) { - .list-group-horizontal-lg { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - flex-direction: row - } - - .list-group-horizontal-lg .list-group-item { - margin-right: -1px; - margin-bottom: 0 - } - - .list-group-horizontal-lg .list-group-item:first-child { - border-top-left-radius: .25rem; - border-bottom-left-radius: .25rem; - border-top-right-radius: 0 - } - - .list-group-horizontal-lg .list-group-item:last-child { - margin-right: 0; - border-top-right-radius: .25rem; - border-bottom-right-radius: .25rem; - border-bottom-left-radius: 0 - } - -} - -@media (min-width:1200px) { - .list-group-horizontal-xl { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - flex-direction: row - } - - .list-group-horizontal-xl .list-group-item { - margin-right: -1px; - margin-bottom: 0 - } - - .list-group-horizontal-xl .list-group-item:first-child { - border-top-left-radius: .25rem; - border-bottom-left-radius: .25rem; - border-top-right-radius: 0 - } - - .list-group-horizontal-xl .list-group-item:last-child { - margin-right: 0; - border-top-right-radius: .25rem; - border-bottom-right-radius: .25rem; - border-bottom-left-radius: 0 - } - -} - -.list-group-flush .list-group-item { - border-right: 0; - border-left: 0; - border-radius: 0 -} - -.list-group-flush .list-group-item:last-child { - margin-bottom: -1px -} - -.list-group-flush:first-child .list-group-item:first-child { - border-top: 0 -} - -.list-group-flush:last-child .list-group-item:last-child { - margin-bottom: 0; - border-bottom: 0 -} - -.list-group-item-primary { - color: #023a03; - background-color: #b9d7b9 -} - -.list-group-item-primary.list-group-item-action:focus, -.list-group-item-primary.list-group-item-action:hover { - color: #023a03; - background-color: #a9cea9 -} - -.list-group-item-primary.list-group-item-action.active { - color: #fff; - background-color: #023a03; - border-color: #023a03 -} - -.list-group-item-secondary { - color: #434343; - background-color: #dbdbdb -} - -.list-group-item-secondary.list-group-item-action:focus, -.list-group-item-secondary.list-group-item-action:hover { - color: #434343; - background-color: #cecece -} - -.list-group-item-secondary.list-group-item-action.active { - color: #fff; - background-color: #434343; - border-color: #434343 -} - -.list-group-item-success { - color: #00744c; - background-color: #b8f6e1 -} - -.list-group-item-success.list-group-item-action:focus, -.list-group-item-success.list-group-item-action:hover { - color: #00744c; - background-color: #a1f3d7 -} - -.list-group-item-success.list-group-item-action.active { - color: #fff; - background-color: #00744c; - border-color: #00744c -} - -.list-group-item-info { - color: #383280; - background-color: #d6d3fc -} - -.list-group-item-info.list-group-item-action:focus, -.list-group-item-info.list-group-item-action:hover { - color: #383280; - background-color: #c0bbfa -} - -.list-group-item-info.list-group-item-action.active { - color: #fff; - background-color: #383280; - border-color: #383280 -} - -.list-group-item-warning { - color: #7d4431; - background-color: #fbdcd2 -} - -.list-group-item-warning.list-group-item-action:focus, -.list-group-item-warning.list-group-item-action:hover { - color: #7d4431; - background-color: #f9cabb -} - -.list-group-item-warning.list-group-item-action.active { - color: #fff; - background-color: #7d4431; - border-color: #7d4431 -} - -.list-group-item-danger { - color: #853135; - background-color: #ffd2d4 -} - -.list-group-item-danger.list-group-item-action:focus, -.list-group-item-danger.list-group-item-action:hover { - color: #853135; - background-color: #ffb9bc -} - -.list-group-item-danger.list-group-item-action.active { - color: #fff; - background-color: #853135; - border-color: #853135 -} - -.list-group-item-light { - color: #747474; - background-color: #f6f6f6 -} - -.list-group-item-light.list-group-item-action:focus, -.list-group-item-light.list-group-item-action:hover { - color: #747474; - background-color: #e9e9e9 -} - -.list-group-item-light.list-group-item-action.active { - color: #fff; - background-color: #747474; - border-color: #747474 -} - -.list-group-item-dark { - color: #3c3d40; - background-color: #d8d9da -} - -.list-group-item-dark.list-group-item-action:focus, -.list-group-item-dark.list-group-item-action:hover { - color: #3c3d40; - background-color: #cbccce -} - -.list-group-item-dark.list-group-item-action.active { - color: #fff; - background-color: #3c3d40; - border-color: #3c3d40 -} - -.list-group-item-white { - color: #858585; - background-color: #fff -} - -.list-group-item-white.list-group-item-action:focus, -.list-group-item-white.list-group-item-action:hover { - color: #858585; - background-color: #f2f2f2 -} - -.list-group-item-white.list-group-item-action.active { - color: #fff; - background-color: #858585; - border-color: #858585 -} - -.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: transparent; - border: 0; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none -} - -a.close.disabled { - pointer-events: none -} - -.toast { - max-width: 350px; - overflow: hidden; - font-size: .875rem; - background-color: rgba(255, 255, 255, .85); - background-clip: padding-box; - border: 1px solid rgba(0, 0, 0, .1); - box-shadow: 0 .25rem .75rem rgba(0, 0, 0, .1); - -webkit-backdrop-filter: blur(10px); - backdrop-filter: blur(10px); - 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: -webkit-box; - display: flex; - -webkit-box-align: center; - align-items: center; - padding: .25rem .75rem; - color: #6c757d; - background-color: rgba(255, 255, 255, .85); - background-clip: padding-box; - border-bottom: 1px solid rgba(0, 0, 0, .05) -} - -.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 { - -webkit-transition: -webkit-transform .3s ease-out; - transition: -webkit-transform .3s ease-out; - transition: transform .3s ease-out; - transition: transform .3s ease-out, -webkit-transform .3s ease-out; - -webkit-transform: translate(0, -50px); - transform: translate(0, -50px) -} - -@media (prefers-reduced-motion:reduce) { - .modal.fade .modal-dialog { - -webkit-transition: none; - transition: none - } - -} - -.modal.show .modal-dialog { - -webkit-transform: none; - transform: none -} - -.modal-dialog-scrollable { - display: -webkit-box; - 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: -webkit-box; - display: flex; - -webkit-box-align: center; - align-items: center; - min-height: calc(100% - 1rem) -} - -.modal-dialog-centered::before { - display: block; - height: calc(100vh - 1rem); - content: 'http://www.w3.org/2000/svg' -} - -.modal-dialog-centered.modal-dialog-scrollable { - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - flex-direction: column; - -webkit-box-pack: center; - 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: -webkit-box; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - 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: .8 -} - -.modal-header { - display: -webkit-box; - display: flex; - -webkit-box-align: start; - align-items: flex-start; - -webkit-box-pack: justify; - justify-content: space-between; - padding: 1rem 1rem; - border-bottom: 1px solid #dee2e6; - border-top-left-radius: .3rem; - border-top-right-radius: .3rem -} - -.modal-header .close { - padding: 1rem 1rem; - margin: -1rem -1rem -1rem auto -} - -.modal-title { - margin-bottom: 0; - line-height: 1.5 -} - -.modal-body { - position: relative; - -webkit-box-flex: 1; - flex: 1 1 auto; - padding: 1rem -} - -.modal-footer { - display: -webkit-box; - display: flex; - -webkit-box-align: center; - align-items: center; - -webkit-box-pack: end; - justify-content: flex-end; - padding: 1rem; - border-top: 1px solid #dee2e6; - border-bottom-right-radius: .3rem; - border-bottom-left-radius: .3rem -} - -.modal-footer>:not(:first-child) { - margin-left: .25rem -} - -.modal-footer>:not(:last-child) { - margin-right: .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) - } - - .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.7; - 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: '%23dc3545'; - 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 { - position: absolute; - top: 0; - left: 0; - z-index: 1060; - display: block; - 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.7; - 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 .arrow { - position: absolute; - display: block; - width: 1rem; - height: .5rem; - margin: 0 6px -} - -.popover .arrow::after, -.popover .arrow::before { - position: absolute; - display: block; - content: '-2 -2 7 7'; - 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) * -1) -} - -.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) * -1); - width: .5rem; - height: 1rem; - margin: 6px 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) * -1) -} - -.bs-popover-auto[x-placement^=bottom]>.arrow::before, -.bs-popover-bottom>.arrow::before { - top: 0; - border-width: 0 .5rem .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 .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: '%23dc3545'; - 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) * -1); - width: .5rem; - height: 1rem; - margin: 6px 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(6px - 1px); - border-top-right-radius: calc(6px - 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: 'M0 0l3 3m0-3L0 3' -} - -.carousel-item { - position: relative; - display: none; - float: left; - width: 100%; - margin-right: -100%; - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -webkit-transition: -webkit-transform .6s ease-in-out; - 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 { - -webkit-transition: none; - 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; - -webkit-transition-property: opacity; - 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; - -webkit-transition: 0s .6s opacity; - transition: 0s .6s opacity -} - -@media (prefers-reduced-motion:reduce) { - .carousel-fade .active.carousel-item-left, - .carousel-fade .active.carousel-item-right { - -webkit-transition: none; - transition: none - } - -} - -.carousel-control-next, -.carousel-control-prev { - position: absolute; - top: 0; - bottom: 0; - z-index: 1; - display: -webkit-box; - display: flex; - -webkit-box-align: center; - align-items: center; - -webkit-box-pack: center; - justify-content: center; - width: 15%; - color: #fff; - text-align: center; - opacity: .5; - -webkit-transition: opacity .15s ease; - transition: opacity .15s ease -} - -@media (prefers-reduced-motion:reduce) { - .carousel-control-next, - .carousel-control-prev { - -webkit-transition: none; - 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,%3csvg xmlns=!string!fill=!string!viewBox=!string!%3e%3cpath d=!string!/%3e%3c/svg%3e") -} - -.carousel-control-next-icon { - background-image: url("data:image/svg+xml,%3csvg xmlns=!string!fill=!string!viewBox=!string!%3e%3cpath d=!string!/%3e%3c/svg%3e") -} - -.carousel-indicators { - position: absolute; - right: 0; - bottom: 0; - left: 0; - z-index: 15; - display: -webkit-box; - display: flex; - -webkit-box-pack: center; - justify-content: center; - padding-left: 0; - margin-right: 15%; - margin-left: 15%; - list-style: none -} - -.carousel-indicators li { - box-sizing: content-box; - -webkit-box-flex: 0; - 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; - -webkit-transition: opacity .6s ease; - transition: opacity .6s ease -} - -@media (prefers-reduced-motion:reduce) { - .carousel-indicators li { - -webkit-transition: none; - 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(360deg); - transform: rotate(360deg) - } - -} - -@keyframes spinner-border { - to { - -webkit-transform: rotate(360deg); - transform: rotate(360deg) - } - -} - -.spinner-border { - display: inline-block; - width: 2rem; - height: 2rem; - vertical-align: text-bottom; - border: .25em solid currentColor; - border-right-color: 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 - } - -} - -@keyframes spinner-grow { - 0% { - -webkit-transform: scale(0); - transform: scale(0) - } - - 50% { - opacity: 1 - } - -} - -.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: baseline !important -} - -.align-top { - vertical-align: top !important -} - -.align-middle { - vertical-align: middle !important -} - -.align-bottom { - vertical-align: bottom !important -} - -.align-text-bottom { - vertical-align: text-bottom !important -} - -.align-text-top { - vertical-align: text-top !important -} - -.bg-primary { - background-color: #047006 !important -} - -a.bg-primary:focus, -a.bg-primary:hover, -button.bg-primary:focus, -button.bg-primary:hover { - background-color: #023f03 !important -} - -.bg-secondary { - background-color: grey !important -} - -a.bg-secondary:focus, -a.bg-secondary:hover, -button.bg-secondary:focus, -button.bg-secondary:hover { - background-color: #676767 !important -} - -.bg-success { - background-color: #047006 !important -} - -a.bg-success:focus, -a.bg-success:hover, -button.bg-success:focus, -button.bg-success:hover { - background-color: #00ad72 !important -} - -.bg-info { - background-color: #6c61f6 !important -} - -a.bg-info:focus, -a.bg-info:hover, -button.bg-info:focus, -button.bg-info:hover { - background-color: #3f31f3 !important -} - -.bg-warning { - background-color: #f0825f !important -} - -a.bg-warning:focus, -a.bg-warning:hover, -button.bg-warning:focus, -button.bg-warning:hover { - background-color: #ec5e30 !important -} - -.bg-danger { - background-color: #ff5f66 !important -} - -a.bg-danger:focus, -a.bg-danger:hover, -button.bg-danger:focus, -button.bg-danger:hover { - background-color: #ff2c35 !important -} - -.bg-light { - background-color: #dfdfdf !important -} - -a.bg-light:focus, -a.bg-light:hover, -button.bg-light:focus, -button.bg-light:hover { - background-color: #c6c6c6 !important -} - -.bg-dark { - background-color: #74767b !important -} - -a.bg-dark:focus, -a.bg-dark:hover, -button.bg-dark:focus, -button.bg-dark:hover { - background-color: #5b5d61 !important -} - -.bg-white { - background-color: #fff !important -} - -a.bg-white:focus, -a.bg-white:hover, -button.bg-white:focus, -button.bg-white:hover { - background-color: #e6e6e6 !important -} - -.bg-white { - background-color: #fff !important -} - -.bg-transparent { - background-color: transparent !important -} - -.border { - border: 1px solid #f2f4f9 !important -} - -.border-top { - border-top: 1px solid #f2f4f9 !important -} - -.border-right { - border-right: 1px solid #f2f4f9 !important -} - -.border-bottom { - border-bottom: 1px solid #f2f4f9 !important -} - -.border-left { - border-left: 1px solid #f2f4f9 !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: #047006 !important -} - -.border-secondary { - border-color: grey !important -} - -.border-success { - border-color: #047006 !important -} - -.border-info { - border-color: #6c61f6 !important -} - -.border-warning { - border-color: #f0825f !important -} - -.border-danger { - border-color: #ff5f66 !important -} - -.border-light { - border-color: #dfdfdf !important -} - -.border-dark { - border-color: #74767b !important -} - -.border-white { - border-color: #fff !important -} - -.border-white { - border-color: #fff !important -} - -.rounded-sm { - border-radius: .2rem !important -} - -.rounded { - border-radius: 2px !important -} - -.rounded-top { - border-top-left-radius: 2px !important; - border-top-right-radius: 2px !important -} - -.rounded-right { - border-top-right-radius: 2px !important; - border-bottom-right-radius: 2px !important -} - -.rounded-bottom { - border-bottom-right-radius: 2px !important; - border-bottom-left-radius: 2px !important -} - -.rounded-left { - border-top-left-radius: 2px !important; - border-bottom-left-radius: 2px !important -} - -.rounded-lg { - border-radius: 6px !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: '.5' -} - -.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: -webkit-box !important; - display: flex !important -} - -.d-inline-flex { - display: -webkit-inline-box !important; - 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: -webkit-box !important; - display: flex !important - } - - .d-sm-inline-flex { - display: -webkit-inline-box !important; - 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: -webkit-box !important; - display: flex !important - } - - .d-md-inline-flex { - display: -webkit-inline-box !important; - 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: -webkit-box !important; - display: flex !important - } - - .d-lg-inline-flex { - display: -webkit-inline-box !important; - 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: -webkit-box !important; - display: flex !important - } - - .d-xl-inline-flex { - display: -webkit-inline-box !important; - 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: -webkit-box !important; - display: flex !important - } - - .d-print-inline-flex { - display: -webkit-inline-box !important; - display: inline-flex !important - } - -} - -.embed-responsive { - position: relative; - display: block; - width: 100%; - padding: 0; - overflow: hidden -} - -.embed-responsive::before { - display: block; - content: '3' -} - -.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.85714% -} - -.embed-responsive-16by9::before { - padding-top: 56.25% -} - -.embed-responsive-4by3::before { - padding-top: 75% -} - -.embed-responsive-1by1::before { - padding-top: 100% -} - -.embed-responsive-21by9::before { - padding-top: 42.85714% -} - -.embed-responsive-16by9::before { - padding-top: 56.25% -} - -.embed-responsive-4by3::before { - padding-top: 75% -} - -.embed-responsive-1by1::before { - padding-top: 100% -} - -.flex-row { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: normal !important; - flex-direction: row !important -} - -.flex-column { - -webkit-box-orient: vertical !important; - -webkit-box-direction: normal !important; - flex-direction: column !important -} - -.flex-row-reverse { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: reverse !important; - flex-direction: row-reverse !important -} - -.flex-column-reverse { - -webkit-box-orient: vertical !important; - -webkit-box-direction: reverse !important; - 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 { - -webkit-box-flex: 1 !important; - flex: 1 1 auto !important -} - -.flex-grow-0 { - -webkit-box-flex: 0 !important; - flex-grow: 0 !important -} - -.flex-grow-1 { - -webkit-box-flex: 1 !important; - flex-grow: 1 !important -} - -.flex-shrink-0 { - flex-shrink: 0 !important -} - -.flex-shrink-1 { - flex-shrink: 1 !important -} - -.justify-content-start { - -webkit-box-pack: start !important; - justify-content: flex-start !important -} - -.justify-content-end { - -webkit-box-pack: end !important; - justify-content: flex-end !important -} - -.justify-content-center { - -webkit-box-pack: center !important; - justify-content: center !important -} - -.justify-content-between { - -webkit-box-pack: justify !important; - justify-content: space-between !important -} - -.justify-content-around { - justify-content: space-around !important -} - -.align-items-start { - -webkit-box-align: start !important; - align-items: flex-start !important -} - -.align-items-end { - -webkit-box-align: end !important; - align-items: flex-end !important -} - -.align-items-center { - -webkit-box-align: center !important; - align-items: center !important -} - -.align-items-baseline { - -webkit-box-align: baseline !important; - align-items: baseline !important -} - -.align-items-stretch { - -webkit-box-align: stretch !important; - 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 { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: normal !important; - flex-direction: row !important - } - - .flex-sm-column { - -webkit-box-orient: vertical !important; - -webkit-box-direction: normal !important; - flex-direction: column !important - } - - .flex-sm-row-reverse { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: reverse !important; - flex-direction: row-reverse !important - } - - .flex-sm-column-reverse { - -webkit-box-orient: vertical !important; - -webkit-box-direction: reverse !important; - 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 { - -webkit-box-flex: 1 !important; - flex: 1 1 auto !important - } - - .flex-sm-grow-0 { - -webkit-box-flex: 0 !important; - flex-grow: 0 !important - } - - .flex-sm-grow-1 { - -webkit-box-flex: 1 !important; - flex-grow: 1 !important - } - - .flex-sm-shrink-0 { - flex-shrink: 0 !important - } - - .flex-sm-shrink-1 { - flex-shrink: 1 !important - } - - .justify-content-sm-start { - -webkit-box-pack: start !important; - justify-content: flex-start !important - } - - .justify-content-sm-end { - -webkit-box-pack: end !important; - justify-content: flex-end !important - } - - .justify-content-sm-center { - -webkit-box-pack: center !important; - justify-content: center !important - } - - .justify-content-sm-between { - -webkit-box-pack: justify !important; - justify-content: space-between !important - } - - .justify-content-sm-around { - justify-content: space-around !important - } - - .align-items-sm-start { - -webkit-box-align: start !important; - align-items: flex-start !important - } - - .align-items-sm-end { - -webkit-box-align: end !important; - align-items: flex-end !important - } - - .align-items-sm-center { - -webkit-box-align: center !important; - align-items: center !important - } - - .align-items-sm-baseline { - -webkit-box-align: baseline !important; - align-items: baseline !important - } - - .align-items-sm-stretch { - -webkit-box-align: stretch !important; - 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 { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: normal !important; - flex-direction: row !important - } - - .flex-md-column { - -webkit-box-orient: vertical !important; - -webkit-box-direction: normal !important; - flex-direction: column !important - } - - .flex-md-row-reverse { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: reverse !important; - flex-direction: row-reverse !important - } - - .flex-md-column-reverse { - -webkit-box-orient: vertical !important; - -webkit-box-direction: reverse !important; - 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 { - -webkit-box-flex: 1 !important; - flex: 1 1 auto !important - } - - .flex-md-grow-0 { - -webkit-box-flex: 0 !important; - flex-grow: 0 !important - } - - .flex-md-grow-1 { - -webkit-box-flex: 1 !important; - flex-grow: 1 !important - } - - .flex-md-shrink-0 { - flex-shrink: 0 !important - } - - .flex-md-shrink-1 { - flex-shrink: 1 !important - } - - .justify-content-md-start { - -webkit-box-pack: start !important; - justify-content: flex-start !important - } - - .justify-content-md-end { - -webkit-box-pack: end !important; - justify-content: flex-end !important - } - - .justify-content-md-center { - -webkit-box-pack: center !important; - justify-content: center !important - } - - .justify-content-md-between { - -webkit-box-pack: justify !important; - justify-content: space-between !important - } - - .justify-content-md-around { - justify-content: space-around !important - } - - .align-items-md-start { - -webkit-box-align: start !important; - align-items: flex-start !important - } - - .align-items-md-end { - -webkit-box-align: end !important; - align-items: flex-end !important - } - - .align-items-md-center { - -webkit-box-align: center !important; - align-items: center !important - } - - .align-items-md-baseline { - -webkit-box-align: baseline !important; - align-items: baseline !important - } - - .align-items-md-stretch { - -webkit-box-align: stretch !important; - 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 { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: normal !important; - flex-direction: row !important - } - - .flex-lg-column { - -webkit-box-orient: vertical !important; - -webkit-box-direction: normal !important; - flex-direction: column !important - } - - .flex-lg-row-reverse { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: reverse !important; - flex-direction: row-reverse !important - } - - .flex-lg-column-reverse { - -webkit-box-orient: vertical !important; - -webkit-box-direction: reverse !important; - 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 { - -webkit-box-flex: 1 !important; - flex: 1 1 auto !important - } - - .flex-lg-grow-0 { - -webkit-box-flex: 0 !important; - flex-grow: 0 !important - } - - .flex-lg-grow-1 { - -webkit-box-flex: 1 !important; - flex-grow: 1 !important - } - - .flex-lg-shrink-0 { - flex-shrink: 0 !important - } - - .flex-lg-shrink-1 { - flex-shrink: 1 !important - } - - .justify-content-lg-start { - -webkit-box-pack: start !important; - justify-content: flex-start !important - } - - .justify-content-lg-end { - -webkit-box-pack: end !important; - justify-content: flex-end !important - } - - .justify-content-lg-center { - -webkit-box-pack: center !important; - justify-content: center !important - } - - .justify-content-lg-between { - -webkit-box-pack: justify !important; - justify-content: space-between !important - } - - .justify-content-lg-around { - justify-content: space-around !important - } - - .align-items-lg-start { - -webkit-box-align: start !important; - align-items: flex-start !important - } - - .align-items-lg-end { - -webkit-box-align: end !important; - align-items: flex-end !important - } - - .align-items-lg-center { - -webkit-box-align: center !important; - align-items: center !important - } - - .align-items-lg-baseline { - -webkit-box-align: baseline !important; - align-items: baseline !important - } - - .align-items-lg-stretch { - -webkit-box-align: stretch !important; - 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 { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: normal !important; - flex-direction: row !important - } - - .flex-xl-column { - -webkit-box-orient: vertical !important; - -webkit-box-direction: normal !important; - flex-direction: column !important - } - - .flex-xl-row-reverse { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: reverse !important; - flex-direction: row-reverse !important - } - - .flex-xl-column-reverse { - -webkit-box-orient: vertical !important; - -webkit-box-direction: reverse !important; - 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 { - -webkit-box-flex: 1 !important; - flex: 1 1 auto !important - } - - .flex-xl-grow-0 { - -webkit-box-flex: 0 !important; - flex-grow: 0 !important - } - - .flex-xl-grow-1 { - -webkit-box-flex: 1 !important; - flex-grow: 1 !important - } - - .flex-xl-shrink-0 { - flex-shrink: 0 !important - } - - .flex-xl-shrink-1 { - flex-shrink: 1 !important - } - - .justify-content-xl-start { - -webkit-box-pack: start !important; - justify-content: flex-start !important - } - - .justify-content-xl-end { - -webkit-box-pack: end !important; - justify-content: flex-end !important - } - - .justify-content-xl-center { - -webkit-box-pack: center !important; - justify-content: center !important - } - - .justify-content-xl-between { - -webkit-box-pack: justify !important; - justify-content: space-between !important - } - - .justify-content-xl-around { - justify-content: space-around !important - } - - .align-items-xl-start { - -webkit-box-align: start !important; - align-items: flex-start !important - } - - .align-items-xl-end { - -webkit-box-align: end !important; - align-items: flex-end !important - } - - .align-items-xl-center { - -webkit-box-align: center !important; - align-items: center !important - } - - .align-items-xl-baseline { - -webkit-box-align: baseline !important; - align-items: baseline !important - } - - .align-items-xl-stretch { - -webkit-box-align: stretch !important; - 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 - } - -} - -.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 { - position: fixed; - top: 0; - right: 0; - left: 0; - z-index: 1030 -} - -.fixed-bottom { - position: fixed; - right: 0; - bottom: 0; - left: 0; - z-index: 1030 -} - -@supports ((position:-webkit-sticky) or (position:sticky)) { - .sticky-top { - position: -webkit-sticky; - position: sticky; - top: 0; - z-index: 1020 - } - -} - -.sr-only { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - overflow: hidden; - clip: rect(0, 0, 0, 0); - white-space: nowrap; - border: 0 -} - -.sr-only-focusable:active, -.sr-only-focusable:focus { - position: static; - width: auto; - height: auto; - overflow: visible; - clip: auto; - 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 -} - -.stretched-link::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1; - pointer-events: auto; - content: '.5'; - background-color: rgba(0, 0, 0, 0) -} - -.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 - } - -} - -.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: #047006 !important -} - -a.text-primary:focus, -a.text-primary:hover { - color: #012602 !important -} - -.text-secondary { - color: grey !important -} - -a.text-secondary:focus, -a.text-secondary:hover { - color: #5a5a5a !important -} - -.text-success { - color: #047006 !important -} - -a.text-success:focus, -a.text-success:hover { - color: #009461 !important -} - -.text-info { - color: #6c61f6 !important -} - -a.text-info:focus, -a.text-info:hover { - color: #2919f2 !important -} - -.text-warning { - color: #f0825f !important -} - -a.text-warning:focus, -a.text-warning:hover { - color: #e94b19 !important -} - -.text-danger { - color: #ff5f66 !important -} - -a.text-danger:focus, -a.text-danger:hover { - color: #ff131d !important -} - -.text-light { - color: #dfdfdf !important -} - -a.text-light:focus, -a.text-light:hover { - color: #b9b9b9 !important -} - -.text-dark { - color: #74767b !important -} - -a.text-dark:focus, -a.text-dark:hover { - color: #4f5054 !important -} - -.text-white { - color: #fff !important -} - -a.text-white:focus, -a.text-white:hover { - color: #d9d9d9 !important -} - -.text-body { - color: #212529 !important -} - -.text-muted { - color: #adb5bd !important -} - -.text-black-50 { - color: rgba(0, 0, 0, .5) !important -} - -.text-white-50 { - color: rgba(255, 255, 255, .5) !important -} - -.text-hide { - font: 0/0 a; - color: transparent; - text-shadow: none; - background-color: transparent; - 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: '3'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 - } - - body { - min-width: 992px !important - } - - .container { - 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: #f2f4f9 - } - - .table .thead-dark th { - color: inherit; - border-color: #f2f4f9 - } - -} - -.dev-info { - position: fixed; - color: grey; - font-size: smaller; - left: 8px; - z-index: 120 -} - -.versionstring { - top: 70px; - right: 8px; - left: auto -} - -.grd-time-used { - bottom: 0 -} - -.t-header { - display: -webkit-box; - display: flex; - height: 70px; - background: #f9fafb; - z-index: 100 -} - -@media (max-width:991.98px) { - .t-header { - padding-left: 5px; - padding-right: 5px - } - -} - -.t-header .t-header-brand-wrapper { - display: -webkit-box; - display: flex; - -webkit-box-align: center; - align-items: center; - height: 70px; - width: 17rem; - min-width: 17rem; - max-width: 17rem; - background: #fff; - z-index: 100; - padding-left: 18px -} - -.t-header .t-header-brand-wrapper a { - display: -webkit-box; - display: flex; - -webkit-box-align: center; - align-items: center; - color: #dfdfdf; - font-family: Roboto, sans-serif; - font-weight: 500; - font-size: 1.25rem -} - -.t-header .t-header-brand-wrapper a .logo { - max-width: 100%; - width: 110px -} - -.t-header .t-header-brand-wrapper a .logo-mini { - display: none; - max-width: 100%; - width: 35px -} - -.t-header .t-header-brand-wrapper a p { - color: inherit; - font-size: inherit; - font-weight: inherit; - margin-bottom: 0 -} - -@media (max-width:991.98px) { - .t-header .t-header-brand-wrapper { - padding-left: 0; - -webkit-box-pack: center; - justify-content: center - } - - .t-header .t-header-brand-wrapper a .logo-mini { - width: 25px - } - -} - -.t-header .t-header-content-wrapper { - display: -webkit-box; - display: flex; - -webkit-box-align: center; - align-items: center; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - flex-direction: row; - width: 100%; - max-width: 100%; - padding: 0 2.5rem -} - -@media (max-width:991.98px) { - .t-header .t-header-content-wrapper { - padding: 0 1rem - } - -} - -.t-header .t-header-content-wrapper .t-header-search-box { - display: -webkit-box; - display: flex; - width: 40%; - height: 45px; - border: none; - background: #edf0f3; - border-radius: 4px; - -webkit-transition: .3s ease-in-out; - transition: .3s ease-in-out; - -webkit-transition-property: background; - transition-property: background -} - -@media (max-width:580px) { - .t-header .t-header-content-wrapper .t-header-search-box { - display: none - } - -} - -.t-header .t-header-content-wrapper .t-header-search-box .input-group-prepend .input-group-text { - border: none; - background: 0 0; - font-size: 1.5rem; - padding-left: 15px; - line-height: 23px -} - -.t-header .t-header-content-wrapper .t-header-search-box .form-control { - height: inherit; - border: none; - background: 0 0; - font-size: .875rem; - font-family: Roboto, sans-serif; - font-weight: 500; - padding-left: 0 -} - -.t-header .t-header-content-wrapper .t-header-search-box .form-control.placeholder { - font-size: inherit; - font-family: inherit; - font-weight: inherit -} - -.t-header .t-header-content-wrapper .t-header-search-box .form-control:-moz-placeholder { - font-size: inherit; - font-family: inherit; - font-weight: inherit -} - -.t-header .t-header-content-wrapper .t-header-search-box .form-control::-moz-placeholder { - font-size: inherit; - font-family: inherit; - font-weight: inherit -} - -.t-header .t-header-content-wrapper .t-header-search-box .form-control:-ms-input-placeholder { - font-size: inherit; - font-family: inherit; - font-weight: inherit -} - -.t-header .t-header-content-wrapper .t-header-search-box .form-control::-webkit-input-placeholder { - font-size: inherit; - font-family: inherit; - font-weight: inherit -} - -.t-header .t-header-content-wrapper .t-header-search-box:hover { - background: #e4e8ed -} - -.t-header .t-header-content-wrapper .t-header-content { - display: -webkit-box; - display: flex; - -webkit-box-align: center; - align-items: center; - width: 100%; - max-width: 100% -} - -.t-header .t-header-content-wrapper .t-header-content .nav .nav-item .nav-link { - position: relative; - font-family: Roboto, sans-serif -} - -.t-header .t-header-content-wrapper .t-header-content .nav .nav-item .nav-link i { - color: #525c5d -} - -.t-header .t-header-content-wrapper .t-header-content .nav .nav-item .nav-link .notification-indicator { - position: absolute; - top: 12px; - right: 12px -} - -.t-header .t-header-content-wrapper .t-header-content .nav .nav-item:last-child .nav-link { - padding-right: 0 -} - -.t-header .t-header-toggler { - background: 0 0; - border: none; - margin-left: auto -} - -.t-header .t-header-toggler svg.logo { - width: 50px; - height: 50px; - cursor: pointer; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0) -} - -.t-header .t-header-toggler svg.logo path { - fill: none; - -webkit-transition: stroke-dashoffset .35s cubic-bezier(.25, -.25, .75, 1.25), stroke-dasharray .35s cubic-bezier(.25, -.25, .75, 1.25); - transition: stroke-dashoffset .35s cubic-bezier(.25, -.25, .75, 1.25), stroke-dasharray .35s cubic-bezier(.25, -.25, .75, 1.25); - stroke-width: 8px; - stroke-linecap: round; - stroke: #adb5bd; - stroke-dashoffset: -20px -} - -.t-header .t-header-toggler svg.logo .bottom, -.t-header .t-header-toggler svg.logo .middle, -.t-header .t-header-toggler svg.logo .top { - stroke-dasharray: 60px 300px -} - -.t-header .t-header-toggler.arrow path.bottom, -.t-header .t-header-toggler.arrow path.top { - stroke-dasharray: 25px 300px; - stroke-dashoffset: -230px -} - -.t-header .t-header-toggler i { - font-size: 1.375rem -} - -.t-header .t-header-toggler.t-header-mobile-toggler { - margin-left: 0; - margin-right: 15px -} - -.t-header.fixed-top { - position: fixed -} - -.header-fixed .t-header { - position: fixed; - top: 0; - right: 0; - left: 0; - width: 100%; - z-index: 100 -} - -.header-fixed .sidebar { - padding-top: 70px -} - -.header-fixed .sidebar .t-header-brand-wrapper { - position: fixed; - left: 0; - top: 0; - z-index: 100; - width: 17rem; - box-shadow: 0 2px 8px 0 rgba(0, 0, 0, .05) -} - -.header-fixed .sidebar .navigation-menu { - z-index: 1 -} - -.sidebar { - position: relative; - display: block; - height: 100%; - min-height: 100vh; - width: 17rem; - min-width: 17rem; - max-width: 17rem; - background: #fff -} - -.sidebar .sidebar-header { - border-bottom: 1px solid #2c3744 -} - -.sidebar .navigation-menu { - padding-left: 0; - padding-bottom: 80px; - margin-bottom: 0; - margin-top: 18px -} - -.sidebar .navigation-menu li { - display: block; - margin: 0; - -webkit-transition-duration: .25s; - transition-duration: .25s; - -webkit-transition-timing-function: cubic-bezier(.26, .66, .45, .78); - transition-timing-function: cubic-bezier(.26, .66, .45, .78); - -webkit-transition-property: background; - transition-property: background -} - -.sidebar .navigation-menu li.nav-category-divider { - position: -webkit-sticky; - position: sticky; - top: 64px; - display: block; - background: #fff; - margin: 15px 0 0 0; - padding: 20px 30px 10px 30px; - font-size: 10px; - color: #047006; - z-index: 1; - font-family: Roboto, sans-serif; - font-weight: 500 -} - -.sidebar .navigation-menu li.nav-category-divider:first-child { - margin-top: 0 -} - -.sidebar .navigation-menu li a { - display: -webkit-box; - display: flex; - -webkit-box-align: center; - align-items: center; - -webkit-box-orient: horizontal; - -webkit-box-direction: reverse; - flex-direction: row-reverse; - -webkit-box-pack: end; - justify-content: flex-end; - padding: 12px 30px 12px 30px; - font-size: 13px; - line-height: 1; - color: #525c5d; - letter-spacing: .03rem; - font-weight: 500; - max-width: 100%; - white-space: nowrap; - text-overflow: ellipsis; - overflow: hidden -} - -.sidebar .navigation-menu li a .link-icon { - margin-right: 15px; - line-height: 1; - color: #525c5d; - font-size: 1.1875rem -} - -.sidebar .navigation-menu li:last-child a { - border-bottom: none -} - -.sidebar .navigation-menu li .navigation-submenu { - background: #fafafa; - padding: 0 0 10px 30px -} - -.sidebar .navigation-menu li .navigation-submenu.collapsing { - -webkit-transition: .2s ease-in; - transition: .2s ease-in -} - -.sidebar .navigation-menu li .navigation-submenu li { - display: inherit -} - -.sidebar .navigation-menu li .navigation-submenu li a { - display: block; - padding: calc(9px) 30px calc(9px) calc(30px + 2px); - opacity: .8; - letter-spacing: .03rem; - font-weight: 400; - font-size: calc(13px - 1px); - -webkit-transition: .3s ease-in-out; - transition: .3s ease-in-out; - -webkit-transition-property: color; - transition-property: color -} - -.sidebar .navigation-menu li .navigation-submenu li a[data-toggle=collapse] { - position: relative -} - -.sidebar .navigation-menu li .navigation-submenu li a[data-toggle=collapse]:after { - content: '.5'; - height: 7px; - width: 7px; - border-radius: 25px; - position: absolute; - right: calc(30px + 4px); - top: 14px -} - -.sidebar .navigation-menu li .navigation-submenu li a.active { - color: #047006 -} - -.sidebar .navigation-menu li .navigation-submenu li a:hover { - color: #047006 -} - -.sidebar .navigation-menu li .navigation-submenu li:first-child a { - padding-top: 10px -} - -.sidebar .navigation-menu li .navigation-submenu li:first-child a:after { - top: 15px -} - -.sidebar .navigation-menu li .navigation-submenu li:nth-child(5n+1) a:after { - background: #047006 -} - -.sidebar .navigation-menu li .navigation-submenu li:nth-child(5n+2) a:after { - background: #047006 -} - -.sidebar .navigation-menu li .navigation-submenu li:nth-child(5n+3) a:after { - background: #ff5f66 -} - -.sidebar .navigation-menu li .navigation-submenu li:nth-child(5n+4) a:after { - background: #f0825f -} - -.sidebar .navigation-menu li .navigation-submenu li:nth-child(5n+5) a:after { - background: #6c61f6 -} - -.sidebar .navigation-menu li .navigation-submenu li .navigation-submenu { - padding-left: 0 -} - -.sidebar .navigation-menu li .navigation-submenu li .navigation-submenu li a { - opacity: .5 -} - -.sidebar .navigation-menu li.active a .link-title { - color: #047006 -} - -.sidebar .navigation-menu li.active a .link-icon { - color: #047006 -} - -.sidebar .navigation-menu>li:not(.nav-category-divider):hover { - background: #fafafa -} - -.sidebar .navigation-menu>li:not(.nav-category-divider)>a[data-toggle=collapse] { - position: relative -} - -.sidebar .navigation-menu>li:not(.nav-category-divider)>a[data-toggle=collapse]:after { - content: '3'; - font-family: "Material Design Icons"; - font-size: 15px; - text-rendering: auto; - line-height: inherit; - font-weight: bolder; - position: absolute; - top: 13px; - right: 30px; - display: block; - -webkit-transition: .3s; - transition: .3s; - -webkit-transition-property: -webkit-transform; - transition-property: -webkit-transform; - transition-property: transform; - transition-property: transform, -webkit-transform; - color: #839092 -} - -.sidebar .navigation-menu>li:not(.nav-category-divider)>a[data-toggle=collapse][aria-expanded=true] { - background: #fafafa -} - -.sidebar .navigation-menu>li:not(.nav-category-divider)>a[data-toggle=collapse][aria-expanded=true]:after { - -webkit-transform: rotate(90deg); - transform: rotate(90deg) -} - -.sidebar .sidebar_footer { - display: block; - position: fixed; - bottom: 0; - left: 0; - margin-top: auto; - width: inherit; - z-index: 2; - background: #fff -} - -.sidebar .sidebar_footer .admin-access-level { - position: absolute; - bottom: 0; - display: -webkit-box; - display: flex; - -webkit-box-pack: start; - justify-content: flex-start; - -webkit-box-align: center; - align-items: center; - z-index: 9999; - height: auto; - width: 100%; - background: #fff; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - padding: 10px 20px; - box-shadow: -7px -2px 25px -5px rgba(0, 0, 0, .12) -} - -.sidebar .sidebar_footer .admin-access-level .user-type-wrapper { - padding: 0 0 0 10px -} - -.sidebar .sidebar_footer .admin-access-level .user-type-wrapper .user_name { - color: #525c5d; - margin-bottom: 8px; - line-height: 1; - max-width: 100%; - white-space: nowrap; - text-overflow: ellipsis; - overflow: hidden; - max-width: 95px; - font-family: Roboto, sans-serif; - font-weight: 500; - letter-spacing: .03rem -} - -.sidebar .sidebar_footer .admin-access-level .user-type-wrapper .user_access_level { - color: #74767b; - line-height: 1 -} - -.sidebar .sidebar_footer .admin-access-level .user-type-wrapper .status-indicator { - margin-right: 5px -} - -.sidebar .sidebar_footer .admin-access-level .arrow { - color: #525c5d; - margin-left: auto; - font-size: 20px; - line-height: 1; - -webkit-transition: .3s; - transition: .3s -} - -.sidebar .sidebar_footer .user-account { - display: block; - width: 100%; - border-radius: 0; - border: none; - margin-bottom: -100vh; - opacity: 0; - -webkit-transition: .3s; - transition: .3s; - border-right: 1px solid #f2f4f9; - box-shadow: -7px -2px 25px -5px rgba(0, 0, 0, .12) -} - -.sidebar .sidebar_footer .user-account:before { - display: none -} - -.sidebar .sidebar_footer .user-account .user-profile-item-tittle { - background: 0 0; - padding: 20px 18px 10px 18px; - z-index: 1; - color: #adb5bd; - font-family: Roboto, sans-serif; - font-weight: 500 -} - -.sidebar .sidebar_footer .user-account .user-profile-itemcategory { - background: 0 0; - margin-bottom: 10px; - border-bottom: 1px solid #f2f4f9; - padding-bottom: 10px; - font-family: Roboto, sans-serif; - font-weight: 500; - letter-spacing: .03rem -} - -.sidebar .sidebar_footer .user-account .user-profile-item { - display: -webkit-box; - display: flex; - -webkit-box-align: center; - align-items: center; - background: inherit; - padding: 10px 18px; - -webkit-transition: .3s; - transition: .3s; - z-index: 1; - background: 0 0; - color: #525c5d; - font-size: 13px; - font-family: Roboto, sans-serif; - font-weight: 500; - letter-spacing: .03rem -} - -.sidebar .sidebar_footer .user-account .user-profile-item:hover { - background: #f5f5f5 -} - -.sidebar .sidebar_footer .user-account .user-profile-item i { - margin-right: 10px; - font-size: 18px; - line-height: 1; - color: inherit -} - -.sidebar .sidebar_footer .user-account .user-profile-item img { - margin-right: 10px -} - -.sidebar .sidebar_footer .user-account .btn-logout { - width: 91%; - max-width: 91%; - margin: 15px 10px 30px 10px; - border-radius: 4px -} - -.sidebar .sidebar_footer.opened { - background: #fff -} - -.sidebar .sidebar_footer.opened .admin-access-level { - background: #fff -} - -.sidebar .sidebar_footer.opened .admin-access-level .arrow { - -webkit-transform: rotate(-90deg); - transform: rotate(-90deg) -} - -.sidebar .sidebar_footer.opened .user-account { - margin-bottom: 60px; - opacity: 1; - background: #fff -} - -footer { - position: absolute; - bottom: 0; - left: 0; - right: 0; - padding: 2rem 2.5rem; - max-width: 1140px; - margin-left: auto; - margin-right: auto -} - -@media (max-width:991.98px) { - footer { - padding: 20px 0 30px 0 - } - -} - -footer ul { - margin-left: 0; - padding-left: 0 -} - -footer ul li { - display: inline-block; - padding: 0 10px 0 0; - line-height: 1 -} - -footer ul li:not(:last-child) { - margin-right: 10px; - border-right: 1px solid #f2f4f9 -} - -footer ul li a { - font-family: Roboto, sans-serif; - font-weight: 400; - letter-spacing: .03rem; - color: #565656 -} - -pre.cake-error { - z-index: 220; - position: absolute; - background-color: #fff -} - -.alert-notification-wrapper { - position: fixed; - left: 17rem; - right: 0; - z-index: 999 -} - -@media (max-width:991.98px) { - .alert-notification-wrapper { - left: 0 - } - -} - -.alert-notification-wrapper.top { - top: 70px -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-twitter { - border: 2px solid #55acee; - color: #101010 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-twitter i { - color: #55acee -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-twitter.btn-link { - background: 0 0; - color: #55acee -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-twitter.btn-link:hover { - color: #2795e9 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-facebook { - border: 2px solid #0084ff; - color: #101010 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-facebook i { - color: #0084ff -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-facebook.btn-link { - background: 0 0; - color: #0084ff -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-facebook.btn-link:hover { - color: #006acc -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-google { - border: 2px solid #dd4b39; - color: #101010 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-google i { - color: #dd4b39 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-google.btn-link { - background: 0 0; - color: #dd4b39 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-google.btn-link:hover { - color: #c23321 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-linkedin { - border: 2px solid #0077b5; - color: #101010 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-linkedin i { - color: #0077b5 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-linkedin.btn-link { - background: 0 0; - color: #0077b5 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-linkedin.btn-link:hover { - color: #005582 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-pinterest { - border: 2px solid #bd081c; - color: #101010 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-pinterest i { - color: #bd081c -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-pinterest.btn-link { - background: 0 0; - color: #bd081c -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-pinterest.btn-link:hover { - color: #8c0615 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-youtube { - border: 2px solid #cd201f; - color: #101010 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-youtube i { - color: #cd201f -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-youtube.btn-link { - background: 0 0; - color: #cd201f -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-youtube.btn-link:hover { - color: #a11918 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-github { - border: 2px solid #333; - color: #101010 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-github i { - color: #333 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-github.btn-link { - background: 0 0; - color: #333 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-github.btn-link:hover { - color: #1a1a1a -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-behance { - border: 2px solid #0454f6; - color: #101010 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-behance i { - color: #0454f6 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-behance.btn-link { - background: 0 0; - color: #0454f6 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-behance.btn-link:hover { - color: #0343c4 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-dribbble { - border: 2px solid #ea4c89; - color: #101010 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-dribbble i { - color: #ea4c89 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-dribbble.btn-link { - background: 0 0; - color: #ea4c89 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-dribbble.btn-link:hover { - color: #e51e6b -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-reddit { - border: 2px solid #ed4333; - color: #101010 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-reddit i { - color: #ed4333 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-reddit.btn-link { - background: 0 0; - color: #ed4333 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-reddit.btn-link:hover { - color: #da2413 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-instagram { - border: 2px solid #ff759b; - color: #101010 -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-instagram i { - color: #ff759b -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-instagram.btn-link { - background: 0 0; - color: #ff759b -} - -.btn:not(.social-icon-btn).social-btn-outlined.btn-instagram.btn-link:hover { - color: #ff4276 -} - -.btn-inverse-primary { - background: rgba(4, 112, 6, .15); - color: #047006 -} - -.btn-inverse-primary i { - color: inherit -} - -.btn-inverse-primary:hover { - background: rgba(4, 112, 6, .8); - color: #fff -} - -.btn-inverse-secondary { - background: rgba(128, 128, 128, .15); - color: grey -} - -.btn-inverse-secondary i { - color: inherit -} - -.btn-inverse-secondary:hover { - background: rgba(128, 128, 128, .8); - color: #fff -} - -.btn-inverse-success { - background: rgba(0, 224, 147, .15); - color: #047006 -} - -.btn-inverse-success i { - color: inherit -} - -.btn-inverse-success:hover { - background: rgba(0, 224, 147, .8); - color: #fff -} - -.btn-inverse-info { - background: rgba(108, 97, 246, .15); - color: #6c61f6 -} - -.btn-inverse-info i { - color: inherit -} - -.btn-inverse-info:hover { - background: rgba(108, 97, 246, .8); - color: #fff -} - -.btn-inverse-warning { - background: rgba(240, 130, 95, .15); - color: #f0825f -} - -.btn-inverse-warning i { - color: inherit -} - -.btn-inverse-warning:hover { - background: rgba(240, 130, 95, .8); - color: #fff -} - -.btn-inverse-danger { - background: rgba(255, 95, 102, .15); - color: #ff5f66 -} - -.btn-inverse-danger i { - color: inherit -} - -.btn-inverse-danger:hover { - background: rgba(255, 95, 102, .8); - color: #fff -} - -.btn-inverse-light { - background: rgba(223, 223, 223, .15); - color: #dfdfdf -} - -.btn-inverse-light i { - color: inherit -} - -.btn-inverse-light:hover { - background: rgba(223, 223, 223, .8); - color: #fff -} - -.btn-inverse-dark { - background: rgba(116, 118, 123, .15); - color: #74767b -} - -.btn-inverse-dark i { - color: inherit -} - -.btn-inverse-dark:hover { - background: rgba(116, 118, 123, .8); - color: #fff -} - -.btn-inverse-white { - background: rgba(255, 255, 255, .15); - color: #fff -} - -.btn-inverse-white i { - color: inherit -} - -.btn-inverse-white:hover { - background: rgba(255, 255, 255, .8); - color: #fff -} - -.btn:not(.social-btn-outlined).btn-twitter { - background: #55acee; - border: none; - color: #fff -} - -.btn:not(.social-btn-outlined).btn-twitter:hover { - background: #2795e9 -} - -.btn:not(.social-btn-outlined).btn-twitter.btn-link { - background: 0 0; - color: #55acee -} - -.btn:not(.social-btn-outlined).btn-twitter.btn-link:hover { - color: #2795e9 -} - -.btn:not(.social-btn-outlined).btn-facebook { - background: #0084ff; - border: none; - color: #fff -} - -.btn:not(.social-btn-outlined).btn-facebook:hover { - background: #006acc -} - -.btn:not(.social-btn-outlined).btn-facebook.btn-link { - background: 0 0; - color: #0084ff -} - -.btn:not(.social-btn-outlined).btn-facebook.btn-link:hover { - color: #006acc -} - -.btn:not(.social-btn-outlined).btn-google { - background: #dd4b39; - border: none; - color: #fff -} - -.btn:not(.social-btn-outlined).btn-google:hover { - background: #c23321 -} - -.btn:not(.social-btn-outlined).btn-google.btn-link { - background: 0 0; - color: #dd4b39 -} - -.btn:not(.social-btn-outlined).btn-google.btn-link:hover { - color: #c23321 -} - -.btn:not(.social-btn-outlined).btn-linkedin { - background: #0077b5; - border: none; - color: #fff -} - -.btn:not(.social-btn-outlined).btn-linkedin:hover { - background: #005582 -} - -.btn:not(.social-btn-outlined).btn-linkedin.btn-link { - background: 0 0; - color: #0077b5 -} - -.btn:not(.social-btn-outlined).btn-linkedin.btn-link:hover { - color: #005582 -} - -.btn:not(.social-btn-outlined).btn-pinterest { - background: #bd081c; - border: none; - color: #fff -} - -.btn:not(.social-btn-outlined).btn-pinterest:hover { - background: #8c0615 -} - -.btn:not(.social-btn-outlined).btn-pinterest.btn-link { - background: 0 0; - color: #bd081c -} - -.btn:not(.social-btn-outlined).btn-pinterest.btn-link:hover { - color: #8c0615 -} - -.btn:not(.social-btn-outlined).btn-youtube { - background: #cd201f; - border: none; - color: #fff -} - -.btn:not(.social-btn-outlined).btn-youtube:hover { - background: #a11918 -} - -.btn:not(.social-btn-outlined).btn-youtube.btn-link { - background: 0 0; - color: #cd201f -} - -.btn:not(.social-btn-outlined).btn-youtube.btn-link:hover { - color: #a11918 -} - -.btn:not(.social-btn-outlined).btn-github { - background: #333; - border: none; - color: #fff -} - -.btn:not(.social-btn-outlined).btn-github:hover { - background: #1a1a1a -} - -.btn:not(.social-btn-outlined).btn-github.btn-link { - background: 0 0; - color: #333 -} - -.btn:not(.social-btn-outlined).btn-github.btn-link:hover { - color: #1a1a1a -} - -.btn:not(.social-btn-outlined).btn-behance { - background: #0454f6; - border: none; - color: #fff -} - -.btn:not(.social-btn-outlined).btn-behance:hover { - background: #0343c4 -} - -.btn:not(.social-btn-outlined).btn-behance.btn-link { - background: 0 0; - color: #0454f6 -} - -.btn:not(.social-btn-outlined).btn-behance.btn-link:hover { - color: #0343c4 -} - -.btn:not(.social-btn-outlined).btn-dribbble { - background: #ea4c89; - border: none; - color: #fff -} - -.btn:not(.social-btn-outlined).btn-dribbble:hover { - background: #e51e6b -} - -.btn:not(.social-btn-outlined).btn-dribbble.btn-link { - background: 0 0; - color: #ea4c89 -} - -.btn:not(.social-btn-outlined).btn-dribbble.btn-link:hover { - color: #e51e6b -} - -.btn:not(.social-btn-outlined).btn-reddit { - background: #ed4333; - border: none; - color: #fff -} - -.btn:not(.social-btn-outlined).btn-reddit:hover { - background: #da2413 -} - -.btn:not(.social-btn-outlined).btn-reddit.btn-link { - background: 0 0; - color: #ed4333 -} - -.btn:not(.social-btn-outlined).btn-reddit.btn-link:hover { - color: #da2413 -} - -.btn:not(.social-btn-outlined).btn-instagram { - background: #ff759b; - border: none; - color: #fff -} - -.btn:not(.social-btn-outlined).btn-instagram:hover { - background: #ff4276 -} - -.btn:not(.social-btn-outlined).btn-instagram.btn-link { - background: 0 0; - color: #ff759b -} - -.btn:not(.social-btn-outlined).btn-instagram.btn-link:hover { - color: #ff4276 -} - -.btn-group label.btn.btn-primary:not(:disabled):not(.disabled).active { - background: #000e01 -} - -.btn-group label.btn.btn-secondary:not(:disabled):not(.disabled).active { - background: #4d4d4d -} - -.btn-group label.btn.btn-success:not(:disabled):not(.disabled).active { - background: #007a50 -} - -.btn-group label.btn.btn-info:not(:disabled):not(.disabled).active { - background: #1d0de4 -} - -.btn-group label.btn.btn-warning:not(:disabled):not(.disabled).active { - background: #d54314 -} - -.btn-group label.btn.btn-danger:not(:disabled):not(.disabled).active { - background: #f8000b -} - -.btn-group label.btn.btn-light:not(:disabled):not(.disabled).active { - background: #acacac -} - -.btn-group label.btn.btn-dark:not(:disabled):not(.disabled).active { - background: #424447 -} - -.btn-group label.btn.btn-white:not(:disabled):not(.disabled).active { - background: #ccc -} - -.btn-outline-primary { - border: 2px solid #047006 -} - -.btn-outline-secondary { - border: 2px solid grey -} - -.btn-outline-success { - border: 2px solid #047006 -} - -.btn-outline-info { - border: 2px solid #6c61f6 -} - -.btn-outline-warning { - border: 2px solid #f0825f -} - -.btn-outline-danger { - border: 2px solid #ff5f66 -} - -.btn-outline-light { - border: 2px solid #dfdfdf -} - -.btn-outline-dark { - border: 2px solid #74767b -} - -.btn-outline-white { - border: 2px solid #fff -} - -.btn-group label.btn input { - display: none -} - -.btn { - display: -webkit-inline-box; - display: inline-flex; - -webkit-box-pack: center; - justify-content: center; - -webkit-box-align: center; - align-items: center; - -webkit-transition: .3s ease; - transition: .3s ease; - -webkit-transition-property: background, color; - transition-property: background, color; - font-size: .875rem; - font-family: Roboto, sans-serif; - font-weight: 600; - letter-spacing: .03rem -} - -.btn:not([class*=btn-inverse]):not(.component-flat) { - box-shadow: 0 0 2px 0 rgba(0, 0, 0, .2) -} - -.btn i { - font-size: 1.25rem -} - -.btn-group-lg>.btn, -.btn.btn-lg { - height: 55px; - max-height: 55px; - padding: 15px 30px; - font-size: 1.125rem -} - -.btn-group-sm>.btn, -.btn.btn-sm { - height: 35px; - max-height: 35px; - padding: 4px 15px; - font-size: .875rem -} - -.btn.btn-xs { - height: 25px; - max-height: 25px; - padding: 0 10px; - line-height: 1; - font-size: .75rem -} - -.btn.btn-xs.has-icon i, -.btn.btn-xs.has-icon span { - font-size: .8125rem; - margin-right: 5px -} - -.btn { - height: 40px; - max-height: 40px; - padding: 5px 20px -} - -.btn.active { - box-shadow: none -} - -.btn.social-icon-btn { - height: 40px; - width: 40px -} - -.btn.social-btn i { - margin-right: 10px -} - -.btn.social-btn-outlined i { - margin-right: 10px -} - -.btn.has-icon i, -.btn.has-icon span { - font-size: 1.25rem; - margin-right: 10px; - line-height: 1 -} - -.btn.btn-outline-secondary { - color: #1a1a1a; - border-color: #676767 -} - -.btn.btn-info, -.btn.btn-warning { - color: #fff -} - -.btn.btn-light { - background: #fff; - color: #000 -} - -.btn.dropdown-dotted-list { - background: #fff -} - -.btn.dropdown-toggle-split { - padding: 0 8px -} - -.btn.action-btn { - display: -webkit-inline-box; - display: inline-flex; - -webkit-box-pack: center; - justify-content: center; - -webkit-box-align: center; - align-items: center; - padding: 0; - height: 40px; - width: 40px -} - -.btn.action-btn i { - font-size: 1.25rem; - width: 26px; - display: -webkit-box; - display: flex; - -webkit-box-pack: center; - justify-content: center; - -webkit-box-align: center; - align-items: center; - line-height: 23px; - vertical-align: middle; - font-size: 1.25rem -} - -.btn.action-btn i:before { - width: inherit; - height: inherit; - line-height: inherit; - font-size: inherit -} - -.btn.action-btn.btn-xs { - height: 30px; - width: 30px -} - -.btn-group-sm>.btn.action-btn, -.btn.action-btn.btn-sm { - height: 35px; - width: 35px -} - -.btn-group-lg>.btn.action-btn, -.btn.action-btn.btn-lg { - height: 50px; - width: 50px -} - -.btn-group-lg>.btn.action-btn i, -.btn.action-btn.btn-lg i { - font-size: 1.875rem; - line-height: 24px -} - -.btn.action-btn.btn-refresh.clicked i { - color: #047006; - -webkit-animation: rotate360 .8s linear infinite; - animation: rotate360 .8s linear infinite -} - -.btn.action-btn.btn-like.clicked i { - color: #ff5f66; - -webkit-animation: bounceIn .8s linear 1; - animation: bounceIn .8s linear 1 -} - -.btn.action-btn.btn-like.clicked:hover i { - color: #fff -} - -.btn.btn-rounded { - border-radius: 50px -} - -.flag-germany { - width: 40px; - height: 28px; - background: red; - border-top: 9px solid #000; - border-bottom: 9px solid #fc0; - display: block -} - -.flag-england { - background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJmbGFnLWljb24tY3NzLWdiIiB2aWV3Qm94PSIwIDAgNjQwIDQ4MCI+CiAgPHBhdGggZmlsbD0iIzAxMjE2OSIgZD0iTTAgMGg2NDB2NDgwSDB6Ii8+CiAgPHBhdGggZmlsbD0iI0ZGRiIgZD0iTTc1IDBsMjQ0IDE4MUw1NjIgMGg3OHY2Mkw0MDAgMjQxbDI0MCAxNzh2NjFoLTgwTDMyMCAzMDEgODEgNDgwSDB2LTYwbDIzOS0xNzhMMCA2NFYwaDc1eiIvPgogIDxwYXRoIGZpbGw9IiNDODEwMkUiIGQ9Ik00MjQgMjgxbDIxNiAxNTl2NDBMMzY5IDI4MWg1NXptLTE4NCAyMGw2IDM1TDU0IDQ4MEgwbDI0MC0xNzl6TTY0MCAwdjNMMzkxIDE5MWwyLTQ0TDU5MCAwaDUwek0wIDBsMjM5IDE3NmgtNjBMMCA0MlYweiIvPgogIDxwYXRoIGZpbGw9IiNGRkYiIGQ9Ik0yNDEgMHY0ODBoMTYwVjBIMjQxek0wIDE2MHYxNjBoNjQwVjE2MEgweiIvPgogIDxwYXRoIGZpbGw9IiNDODEwMkUiIGQ9Ik0wIDE5M3Y5Nmg2NDB2LTk2SDB6TTI3MyAwdjQ4MGg5NlYwaC05NnoiLz4KPC9zdmc+Cg==); - background-size: cover; - width: 40px; - height: 28px; - display: block -} - -.language-active { - background-color: #f9fafb; - padding: 2px -} - -.language-inactive { - padding: 2px; - background-color: transparent -} - -.is-invalid .form-control { - background-color: rgba(240, 130, 95, .2); - border: none -} - -.is-invalid .invalid-feedback { - display: block -} - -.is-valid .form-control { - background-color: rgba(4, 112, 6, .2); - border: none -} - -.form-control { - padding-left: 20px; - padding-right: 20px; - color: rgba(16, 16, 16, .8) -} - -.form-control.placeholder { - font-weight: inherit; - color: inherit; - font-size: inherit -} - -.form-control:-moz-placeholder { - font-weight: inherit; - color: inherit; - font-size: inherit -} - -.form-control::-moz-placeholder { - font-weight: inherit; - color: inherit; - font-size: inherit -} - -.form-control:-ms-input-placeholder { - font-weight: inherit; - color: inherit; - font-size: inherit -} - -.form-control::-webkit-input-placeholder { - font-weight: inherit; - color: inherit; - font-size: inherit -} - -.form-control.is-invalid { - background-color: rgba(240, 130, 95, .2); - border: none -} - -.form-control.is-valid { - background-color: rgba(4, 112, 6, .2); - border: none -} - -.input-group-text { - background-color: #f6f7f9; - color: #101010; - border-color: #f2f4f9; - padding: 0 10px; - font-size: 17px -} - -.is-valid .input-group-text { - background-color: rgba(4, 112, 6, .2); - color: #047006 -} - -.is-invalid .input-group-text { - background-color: rgba(240, 130, 95, .2); - color: #f0825f -} - -.form-group { - margin-bottom: 20px -} - -.form-group.input-rounded .form-control { - border-radius: 25px -} - -.custom-file .custom-file-label { - padding: 8px .75rem; - height: 41px -} - -.custom-file .custom-file-label:after { - padding: 1.45rem .8rem; - line-height: 0 -} - -.custom-select, -.custom-select[multiple] { - background: #f6f7f9; - border-color: #f0f2f5; - color: rgba(16, 16, 16, .8) -} - -.custom-select option, -.custom-select[multiple] option { - background: #f6f7f9; - color: rgba(16, 16, 16, .8); - display: block; - border-bottom: 1px solid #f2f4f9; - padding: 5px 10px -} - -.custom-select option:checked, -.custom-select[multiple] option:checked { - background: #f6f7f9 -} - -.custom-select option[selected], -.custom-select[multiple] option[selected] { - background: #f6f7f9; - display: block -} - -.custom-select[multiple] { - padding: 0; - border-radius: 2px -} - -.custom-control-input:focus~.custom-control-label::before { - box-shadow: none -} - -.custom-switch .custom-control-label::after { - box-shadow: 0 0 2px 0 rgba(0, 0, 0, .2); - background: #047006 -} - -.tab-container.tab-bg-primary .nav-pills .nav-item .nav-link, -.tab-container.tab-bg-primary .nav-tabs .nav-item .nav-link { - color: #047006 -} - -.tab-container.tab-bg-primary .nav-pills .nav-item .nav-link i, -.tab-container.tab-bg-primary .nav-tabs .nav-item .nav-link i { - color: inherit -} - -.tab-container.tab-bg-primary .nav-pills .nav-item .nav-link.active, -.tab-container.tab-bg-primary .nav-tabs .nav-item .nav-link.active { - background: #047006; - color: #fff -} - -.tab-container.tab-bg-primary .tab-content { - background: #047006; - color: #fff -} - -.tab-container.tab-bg-secondary .nav-pills .nav-item .nav-link, -.tab-container.tab-bg-secondary .nav-tabs .nav-item .nav-link { - color: grey -} - -.tab-container.tab-bg-secondary .nav-pills .nav-item .nav-link i, -.tab-container.tab-bg-secondary .nav-tabs .nav-item .nav-link i { - color: inherit -} - -.tab-container.tab-bg-secondary .nav-pills .nav-item .nav-link.active, -.tab-container.tab-bg-secondary .nav-tabs .nav-item .nav-link.active { - background: grey; - color: #fff -} - -.tab-container.tab-bg-secondary .tab-content { - background: grey; - color: #fff -} - -.tab-container.tab-bg-success .nav-pills .nav-item .nav-link, -.tab-container.tab-bg-success .nav-tabs .nav-item .nav-link { - color: #047006 -} - -.tab-container.tab-bg-success .nav-pills .nav-item .nav-link i, -.tab-container.tab-bg-success .nav-tabs .nav-item .nav-link i { - color: inherit -} - -.tab-container.tab-bg-success .nav-pills .nav-item .nav-link.active, -.tab-container.tab-bg-success .nav-tabs .nav-item .nav-link.active { - background: #047006; - color: #fff -} - -.tab-container.tab-bg-success .tab-content { - background: #047006; - color: #fff -} - -.tab-container.tab-bg-info .nav-pills .nav-item .nav-link, -.tab-container.tab-bg-info .nav-tabs .nav-item .nav-link { - color: #6c61f6 -} - -.tab-container.tab-bg-info .nav-pills .nav-item .nav-link i, -.tab-container.tab-bg-info .nav-tabs .nav-item .nav-link i { - color: inherit -} - -.tab-container.tab-bg-info .nav-pills .nav-item .nav-link.active, -.tab-container.tab-bg-info .nav-tabs .nav-item .nav-link.active { - background: #6c61f6; - color: #fff -} - -.tab-container.tab-bg-info .tab-content { - background: #6c61f6; - color: #fff -} - -.tab-container.tab-bg-warning .nav-pills .nav-item .nav-link, -.tab-container.tab-bg-warning .nav-tabs .nav-item .nav-link { - color: #f0825f -} - -.tab-container.tab-bg-warning .nav-pills .nav-item .nav-link i, -.tab-container.tab-bg-warning .nav-tabs .nav-item .nav-link i { - color: inherit -} - -.tab-container.tab-bg-warning .nav-pills .nav-item .nav-link.active, -.tab-container.tab-bg-warning .nav-tabs .nav-item .nav-link.active { - background: #f0825f; - color: #fff -} - -.tab-container.tab-bg-warning .tab-content { - background: #f0825f; - color: #fff -} - -.tab-container.tab-bg-danger .nav-pills .nav-item .nav-link, -.tab-container.tab-bg-danger .nav-tabs .nav-item .nav-link { - color: #ff5f66 -} - -.tab-container.tab-bg-danger .nav-pills .nav-item .nav-link i, -.tab-container.tab-bg-danger .nav-tabs .nav-item .nav-link i { - color: inherit -} - -.tab-container.tab-bg-danger .nav-pills .nav-item .nav-link.active, -.tab-container.tab-bg-danger .nav-tabs .nav-item .nav-link.active { - background: #ff5f66; - color: #fff -} - -.tab-container.tab-bg-danger .tab-content { - background: #ff5f66; - color: #fff -} - -.tab-container.tab-bg-light .nav-pills .nav-item .nav-link, -.tab-container.tab-bg-light .nav-tabs .nav-item .nav-link { - color: #dfdfdf -} - -.tab-container.tab-bg-light .nav-pills .nav-item .nav-link i, -.tab-container.tab-bg-light .nav-tabs .nav-item .nav-link i { - color: inherit -} - -.tab-container.tab-bg-light .nav-pills .nav-item .nav-link.active, -.tab-container.tab-bg-light .nav-tabs .nav-item .nav-link.active { - background: #dfdfdf; - color: #fff -} - -.tab-container.tab-bg-light .tab-content { - background: #dfdfdf; - color: #fff -} - -.tab-container.tab-bg-dark .nav-pills .nav-item .nav-link, -.tab-container.tab-bg-dark .nav-tabs .nav-item .nav-link { - color: #74767b -} - -.tab-container.tab-bg-dark .nav-pills .nav-item .nav-link i, -.tab-container.tab-bg-dark .nav-tabs .nav-item .nav-link i { - color: inherit -} - -.tab-container.tab-bg-dark .nav-pills .nav-item .nav-link.active, -.tab-container.tab-bg-dark .nav-tabs .nav-item .nav-link.active { - background: #74767b; - color: #fff -} - -.tab-container.tab-bg-dark .tab-content { - background: #74767b; - color: #fff -} - -.tab-container.tab-bg-white .nav-pills .nav-item .nav-link, -.tab-container.tab-bg-white .nav-tabs .nav-item .nav-link { - color: #fff -} - -.tab-container.tab-bg-white .nav-pills .nav-item .nav-link i, -.tab-container.tab-bg-white .nav-tabs .nav-item .nav-link i { - color: inherit -} - -.tab-container.tab-bg-white .nav-pills .nav-item .nav-link.active, -.tab-container.tab-bg-white .nav-tabs .nav-item .nav-link.active { - background: #fff; - color: #fff -} - -.tab-container.tab-bg-white .tab-content { - background: #fff; - color: #fff -} - -.nav-tabs { - border-bottom: 1px solid #f2f4f9 -} - -.tab-container .nav-pills, -.tab-container .nav-tabs { - border-bottom: none -} - -.tab-container .nav-pills .nav-item .nav-link, -.tab-container .nav-tabs .nav-item .nav-link { - display: -webkit-box; - display: flex; - -webkit-box-align: center; - align-items: center; - -webkit-box-pack: start; - justify-content: start; - font-family: Roboto, sans-serif; - font-weight: 500; - letter-spacing: 1; - padding: 7px 13px; - border: none; - -webkit-transition-duration: .3s; - transition-duration: .3s; - -webkit-transition-property: background, color; - transition-property: background, color -} - -.tab-container .nav-pills .nav-item .nav-link i, -.tab-container .nav-tabs .nav-item .nav-link i { - font-size: 20px; - line-height: 1 -} - -.tab-container .nav-pills .nav-item .nav-link .tab-tittle, -.tab-container .nav-tabs .nav-item .nav-link .tab-tittle { - display: inline-block -} - -.tab-container .nav-pills .nav-item .nav-link .tab-tittle.prepend, -.tab-container .nav-tabs .nav-item .nav-link .tab-tittle.prepend { - margin-left: 10px -} - -.tab-container .nav-pills .nav-item .nav-link .tab-tittle.append, -.tab-container .nav-tabs .nav-item .nav-link .tab-tittle.append { - margin-right: 10px -} - -.tab-container .tab-content { - padding: 30px 20px 20px 20px; - width: 100%; - background: #f0f2f5 -} - -.tab-container .nav-tabs .nav-link { - color: #101010 -} - -.tab-container .nav-tabs .nav-link i { - color: #101010 -} - -.tab-container .nav-tabs .nav-link.active { - background: #f7f7f7; - color: #047006 -} - -.tab-container .nav-tabs .nav-link.active i { - color: inherit -} - -.tab-container .nav-pills { - margin: 10px -} - -.tab-container .nav-pills .nav-link.active { - box-shadow: 0 0 2px 0 rgba(0, 0, 0, .2); - color: #fff -} - -.tab-container.vertical-tabs { - display: -webkit-box; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - flex-direction: row; - -webkit-box-flex: 1; - flex-grow: 1 -} - -.tab-container.vertical-tabs .nav-pills, -.tab-container.vertical-tabs .nav-tabs { - float: left; - display: -webkit-box; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - flex-direction: column -} - -.table, -table { - margin-bottom: 0 -} - -.table tfoot tr th, -.table thead tr th, -table tfoot tr th, -table thead tr th { - border-bottom-width: 1px; - font-family: Roboto, sans-serif; - font-weight: 500 -} - -.table tbody tr, -table tbody tr { - -webkit-transition-duration: .5s; - transition-duration: .5s -} - -.table tbody tr td, -table tbody tr td { - font-family: Roboto, sans-serif; - font-weight: 400; - vertical-align: middle -} - -.table tbody tr td .input-frame:after, -table tbody tr td .input-frame:after { - top: 5px -} - -.table tbody tr td span, -table tbody tr td span { - display: -webkit-box; - display: flex; - -webkit-box-align: center; - align-items: center -} - -.table tbody tr td span .status-indicator, -table tbody tr td span .status-indicator { - margin-right: 5px -} - -.table tbody tr td .image, -table tbody tr td .image { - max-width: 75px; - width: 100% -} - -.table tbody tr.text-align-edge td:first-child, -table tbody tr.text-align-edge td:first-child { - padding-left: 0; - text-align: left -} - -.table tbody tr.text-align-edge td:last-child, -table tbody tr.text-align-edge td:last-child { - padding-right: 0; - text-align: right -} - -.table td, -.table th, -table td, -table th { - white-space: nowrap -} - -.table:not(.table-dark) thead tr.solid-header th, -table:not(.table-dark) thead tr.solid-header th { - background: #fafafa; - border-top: 1px solid #f2f4f9 -} - -.table:not(.table-dark) tfoot, -.table:not(.table-dark) thead, -table:not(.table-dark) tfoot, -table:not(.table-dark) thead { - background: #e1e4e6 -} - -.table:not(.table-dark) tfoot tr th, -.table:not(.table-dark) thead tr th, -table:not(.table-dark) tfoot tr th, -table:not(.table-dark) thead tr th { - background: #fff; - color: #101010 -} - -.table:not(.table-dark) tbody tr[class*=bg], -table:not(.table-dark) tbody tr[class*=bg] { - box-shadow: 0 0 2px 0 rgba(0, 0, 0, .2) -} - -.table:not(.table-dark) tbody tr[class*=bg] td, -table:not(.table-dark) tbody tr[class*=bg] td { - color: #fff; - border: none -} - -.table:not(.table-dark) tbody tr td, -table:not(.table-dark) tbody tr td { - color: #101010 -} - -.table:not(.table-bordered) tfoot tr th, -.table:not(.table-bordered) thead tr th, -table:not(.table-bordered) tfoot tr th, -table:not(.table-bordered) thead tr th { - border-top: none -} - -.table.info-table tr td, -.table.info-table tr th, -table.info-table tr td, -table.info-table tr th { - text-align: right -} - -.table.info-table tr td:first-child, -.table.info-table tr th:first-child, -table.info-table tr td:first-child, -table.info-table tr th:first-child { - text-align: left -} - -.table.info-table tr td.actions, -.table.info-table tr th.actions, -table.info-table tr td.actions, -table.info-table tr th.actions { - padding-left: 0 -} - -.tippy-tooltip[data-animation=fade][data-state=hidden] { - opacity: 0 -} - -.tippy-iOS { - cursor: pointer !important; - -webkit-tap-highlight-color: transparent -} - -.tippy-popper { - pointer-events: none; - max-width: calc(100vw - 10px); - -webkit-transition-timing-function: cubic-bezier(.165, .84, .44, 1); - transition-timing-function: cubic-bezier(.165, .84, .44, 1); - -webkit-transition-property: -webkit-transform; - transition-property: -webkit-transform; - transition-property: transform; - transition-property: transform, -webkit-transform -} - -.tippy-tooltip { - position: relative; - color: #fff; - border-radius: 4px; - font-size: 14px; - line-height: 1.4; - background-color: #333; - -webkit-transition-property: visibility, opacity, -webkit-transform; - transition-property: visibility, opacity, -webkit-transform; - transition-property: visibility, opacity, transform; - transition-property: visibility, opacity, transform, -webkit-transform; - outline: 0 -} - -.tippy-tooltip[data-placement^=top]>.tippy-arrow { - border-width: 8px 8px 0; - border-top-color: #333; - margin: 0 3px; - -webkit-transform-origin: 50% 0; - transform-origin: 50% 0; - bottom: -7px -} - -.tippy-tooltip[data-placement^=bottom]>.tippy-arrow { - border-width: 0 8px 8px; - border-bottom-color: #333; - margin: 0 3px; - -webkit-transform-origin: 50% 7px; - transform-origin: 50% 7px; - top: -7px -} - -.tippy-tooltip[data-placement^=left]>.tippy-arrow { - border-width: 8px 0 8px 8px; - border-left-color: #333; - margin: 3px 0; - -webkit-transform-origin: 0 50%; - transform-origin: 0 50%; - right: -7px -} - -.tippy-tooltip[data-placement^=right]>.tippy-arrow { - border-width: 8px 8px 8px 0; - border-right-color: #333; - margin: 3px 0; - -webkit-transform-origin: 7px 50%; - transform-origin: 7px 50%; - left: -7px -} - -.tippy-tooltip[data-interactive][data-state=visible] { - pointer-events: auto -} - -.tippy-tooltip[data-inertia][data-state=visible] { - -webkit-transition-timing-function: cubic-bezier(.54, 1.5, .38, 1.11); - transition-timing-function: cubic-bezier(.54, 1.5, .38, 1.11) -} - -.tippy-arrow { - position: absolute; - border-color: transparent; - border-style: solid -} - -.tippy-content { - padding: 5px 9px -} - -.tippy-tooltip { - color: #101010; - background-color: #f9fafb; - border-radius: 0; - font-size: 12px -} - -.tippy-tooltip .tippy-content b { - color: #047006 -} - -.tippy-tooltip .tippy-content ul { - list-style-type: none; - padding-left: 4px -} - -.tippy-tooltip .tippy-content .mdi { - font-size: 16px -} - -.tippy-tooltip .tippy-content .grid-header { - padding: 5px 10px; - margin-bottom: 5px -} - -.page-body { - background: #fff -} - -.page-content-wrapper { - background: #f9fafb; - border-left: 1px solid #f2f4f9 -} - -@media (min-width:992px) { - .t-header .t-header-content-wrapper { - border-left: 1px solid #f2f4f9 - } - -} - -@media (min-width:768px) { - .page-body { - position: relative; - display: grid; - max-width: 100%; - grid-template-columns: 17rem calc(100vw - 17rem); - -webkit-transition: .3s; - transition: .3s - } - - .page-body .page-content-wrapper { - position: relative; - width: 100%; - min-height: 100vh; - padding: 1.5rem 2.5rem calc(90px + 1.5rem); - margin-top: 70px - } - - .page-body .page-content-wrapper .page-content-wrapper-inner { - max-width: 1140px; - margin-left: auto; - margin-right: auto - } - - .page-body .page-content-wrapper .page-content-wrapper-inner .viewport-header { - position: -webkit-sticky; - position: sticky; - top: 70px; - background: #f9fafb; - z-index: 99 - } - - .page-body .page-content-wrapper .page-content-wrapper-inner .viewport-header .breadcrumb { - padding: 1rem 1rem 1rem 21px; - margin-left: -20px; - margin-right: -20px; - background: #f9fafb - } - - .page-body .page-content-wrapper .page-content-wrapper-inner .viewport-header .breadcrumb .breadcrumb-item { - color: #565656; - letter-spacing: .03rem; - font-family: Roboto, sans-serif; - font-weight: 500 - } - - .page-body .page-content-wrapper .page-content-wrapper-inner .viewport-header .breadcrumb .breadcrumb-item a { - color: inherit - } - - .page-body .page-content-wrapper .page-content-wrapper-inner .viewport-header .breadcrumb .breadcrumb-item.active { - color: #047006 - } - - .page-body .page-content-wrapper .page-content-wrapper-inner .viewport-header .page-title-heading { - color: #565656; - font-size: 1.5rem; - font-family: Roboto, sans-serif; - font-weight: 500; - margin-bottom: 0 - } - - .page-body .page-content-wrapper .page-content-wrapper-inner .viewport-header .page-description { - opacity: .7; - margin-top: 15px - } - - body.sidebar-minimized .t-header .t-header-brand-wrapper { - background: #f9fafb - } - - body.sidebar-minimized .t-header .t-header-content-wrapper { - border-left: #f9fafb - } - - body.sidebar-minimized .page-body { - grid-template-columns: 0 100% - } - - body.sidebar-minimized .page-body .sidebar .sidebar_footer { - left: -17rem - } - - body.sidebar-minimized .page-body .sidebar .nav-category-divider { - position: initial - } - -} - -@media (max-width:991.98px) { - .t-header { - width: 100vw - } - - .t-header .t-header-brand-wrapper { - background: #f9fafb; - width: 4rem; - min-width: 4rem; - max-width: 4rem - } - - .t-header .t-header-brand-wrapper a .logo { - -webkit-animation-name: menuItemFadeIn; - animation-name: menuItemFadeIn; - -webkit-animation-duration: .25s; - animation-duration: .25s; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; - display: none - } - - @-webkit-keyframes menuItemFadeIn { - from { - -webkit-transform: translate3d(-20px, 0, 0); - transform: translate3d(-20px, 0, 0); - display: none; - opacity: 0 - } - - to { - display: block; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1 - } - - } - - @keyframes menuItemFadeIn { - from { - -webkit-transform: translate3d(-20px, 0, 0); - transform: translate3d(-20px, 0, 0); - display: none; - opacity: 0 - } - - to { - display: block; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1 - } - - } - - .t-header .t-header-brand-wrapper a .logo-mini { - display: block - } - - .page-body { - display: -webkit-box; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - flex-direction: row; - overflow: hidden; - max-width: 100% - } - - .page-body .sidebar { - position: relative; - left: 0; - z-index: 99; - width: 15rem; - min-width: 15rem; - max-width: 15rem; - margin-left: -15rem; - -webkit-transition-duration: .2s; - transition-duration: .2s; - -webkit-transition-timing-function: ease-in-out; - transition-timing-function: ease-in-out; - -webkit-transition-property: margin-left, width; - transition-property: margin-left, width - } - - .page-body .sidebar .sidebar_footer { - -webkit-transition-duration: .2s; - transition-duration: .2s; - -webkit-transition-timing-function: ease-in-out; - transition-timing-function: ease-in-out; - -webkit-transition-property: left; - transition-property: left; - left: -15rem - } - - .page-body .page-content-wrapper { - padding: 20px 20px; - min-width: 100vw; - margin-left: 0; - -webkit-transition-duration: .2s; - transition-duration: .2s; - -webkit-transition-timing-function: ease-in-out; - transition-timing-function: ease-in-out; - -webkit-transition-property: margin-left; - transition-property: margin-left - } - - .page-body .page-content-wrapper .viewport-header .breadcrumb { - background: 0 0; - padding-left: 0 - } - - .page-body .page-content-wrapper footer { - position: relative - } - - .page-body.sidebar-collpased .sidebar { - margin-left: 0; - min-width: 15rem - } - - .page-body.sidebar-collpased .sidebar .sidebar_footer { - left: 0 - } - -} - -@media (max-width:767.98px) { - .page-body .page-content-wrapper { - padding: 80px 20px 0 20px - } - -} - -.profile-img.bg-inverse-primary { - color: #047006 -} - -.profile-img.bg-inverse-secondary { - color: grey -} - -.profile-img.bg-inverse-success { - color: #047006 -} - -.profile-img.bg-inverse-info { - color: #6c61f6 -} - -.profile-img.bg-inverse-warning { - color: #f0825f -} - -.profile-img.bg-inverse-danger { - color: #ff5f66 -} - -.profile-img.bg-inverse-light { - color: #dfdfdf -} - -.profile-img.bg-inverse-dark { - color: #74767b -} - -.profile-img.bg-inverse-white { - color: #fff -} - -.notification-indicator-primary { - background: #047006 -} - -.notification-indicator-primary:before { - content: '3'; - background: rgba(4, 112, 6, .5) -} - -.notification-indicator-secondary { - background: grey -} - -.notification-indicator-secondary:before { - content: '.5'; - background: rgba(128, 128, 128, .5) -} - -.notification-indicator-success { - background: #047006 -} - -.notification-indicator-success:before { - content: 'http://www.w3.org/2000/svg'; - background: rgba(0, 224, 147, .5) -} - -.notification-indicator-info { - background: #6c61f6 -} - -.notification-indicator-info:before { - content: '0 0 4 5'; - background: rgba(108, 97, 246, .5) -} - -.notification-indicator-warning { - background: #f0825f -} - -.notification-indicator-warning:before { - content: '%23343a40'; - background: rgba(240, 130, 95, .5) -} - -.notification-indicator-danger { - background: #ff5f66 -} - -.notification-indicator-danger:before { - content: 'M2 0L0 2h4zm0 5L0 3h4z'; - background: rgba(255, 95, 102, .5) -} - -.notification-indicator-light { - background: #dfdfdf -} - -.notification-indicator-light:before { - content: 'http://www.w3.org/2000/svg'; - background: rgba(223, 223, 223, .5) -} - -.notification-indicator-dark { - background: #74767b -} - -.notification-indicator-dark:before { - content: '%23dc3545'; - background: rgba(116, 118, 123, .5) -} - -.notification-indicator-white { - background: #fff -} - -.notification-indicator-white:before { - content: '-2 -2 7 7'; - background: rgba(255, 255, 255, .5) -} - -.border-top { - border-top-style: solid; - border-top-color: #f2f4f9; - border-top-width: 1px -} - -.border-right { - border-right-style: solid; - border-right-color: #f2f4f9; - border-right-width: 1px -} - -.border-bottom { - border-bottom-style: solid; - border-bottom-color: #f2f4f9; - border-bottom-width: 1px -} - -.border-left { - border-left-style: solid; - border-left-color: #f2f4f9; - border-left-width: 1px -} - -.ellipsor { - max-width: 100%; - white-space: nowrap; - text-overflow: ellipsis; - overflow: hidden -} - -.text-gray { - color: #565656 -} - -.overflow-hidden { - overflow: hidden -} - -.pos-relative { - position: relative -} - -.profile-img { - width: 40px; - height: 40px; - overflow: hidden -} - -.profile-img:not(.component-flat) { - box-shadow: 0 0 2px 0 rgba(0, 0, 0, .2) -} - -.profile-img:not(.img-sm):not(.img-lg):not(.img-xl) img { - width: 40px; - height: 40px -} - -.profile-img:not(.img-rounded) { - border-radius: 6px -} - -.profile-img.no-avatar { - display: -webkit-box; - display: flex; - -webkit-box-align: center; - align-items: center; - -webkit-box-pack: center; - justify-content: center; - text-align: center; - text-transform: uppercase; - font-family: Roboto, sans-serif; - font-weight: 600 -} - -.profile-img.img-rounded { - border-radius: 100% -} - -.grouped-images { - display: -webkit-box; - display: flex -} - -.grouped-images .plus-text, -.grouped-images img { - display: -webkit-box; - display: flex; - -webkit-box-align: center; - align-items: center; - -webkit-box-pack: center; - justify-content: center; - text-align: center; - border-radius: 100%; - overflow: hidden; - margin-right: -10px; - margin-right: -10px; - border: 3px solid #fff; - background: #f0f2f5; - color: #565656; - font-family: Roboto, sans-serif; - font-weight: 700; - letter-spacing: .03rem -} - -.grouped-images .plus-text:not(.img-sm):not(.img-lg):not(.img-xl), -.grouped-images img:not(.img-sm):not(.img-lg):not(.img-xl) { - width: 40px; - height: 40px -} - -.img-sm { - width: 30px; - height: 30px -} - -.img-lg { - width: 80px; - height: 80px -} - -.img-xl { - width: 100px; - height: 100px -} - -.mdi.mdi-1x:before { - font-size: 1.25rem -} - -.mdi.mdi-2x:before { - font-size: 1.5625rem -} - -.mdi.mdi-3x:before { - font-size: 1.875rem -} - -.mdi.mdi-4x:before { - font-size: 2.1875rem -} - -.mdi.mdi-5x:before { - font-size: 2.5rem -} - -.mdi.mdi-6x:before { - font-size: 3.125rem -} - -.mdi.mdi-7x:before { - font-size: 3.75rem -} - -.status-indicator { - display: inline-block; - width: 12px; - min-width: 12px; - height: 12px; - border-radius: 4px -} - -.status-indicator.rounded-indicator { - border-radius: 50px -} - -.status-indicator.small { - width: 7px; - min-width: 7px; - height: 7px -} - -.text-black { - color: #101010 -} - -.notification-indicator { - display: block; - width: 7px; - height: 7px; - border-radius: 100%; - z-index: 0 -} - -.notification-indicator.notification-indicator-ripple:before { - content: '%23dc3545'; - display: block; - width: 26px; - height: 26px; - z-index: -1; - position: absolute; - top: -9px; - left: -9px; - border-radius: 100%; - opacity: 0; - -webkit-transform-origin: 50% 50%; - transform-origin: 50% 50%; - mix-blend-mode: screen; - -webkit-animation: ripple 1.2s ease-out; - animation: ripple 1.2s ease-out; - -webkit-animation-iteration-count: infinite; - animation-iteration-count: infinite -} - -.logo { - display: block; - margin: 0 auto; - width: 280px -} - -.logo img { - width: 100% -} - -.grid { - background: #fff; - border-radius: 6px; - box-shadow: 0 0 10px 0 rgba(183, 192, 206, .2); - margin-bottom: 1.5rem; - border: 1px solid rgba(238, 238, 238, .75) -} - -.grid-header { - padding: 15px 20px; - margin-bottom: 15px; - font-family: Roboto, sans-serif; - font-weight: 500; - letter-spacing: .03rem; - background: #f9fafb; - border-left: 3px solid #047006; - border-radius: 0 6px 0 0 -} - -.grid-title { - opacity: .9; - margin-bottom: 25px -} - -.close { - color: #101010 -} - -.split-header { - display: -webkit-box; - display: flex; - -webkit-box-pack: justify; - justify-content: space-between; - -webkit-box-align: center; - align-items: center -} - -.split-header .content-wrapper { - display: -webkit-box; - display: flex -} - -.split-header .content-wrapper a i, -.split-header .content-wrapper span i { - font-size: 20px; - color: #adb5bd; - -webkit-transition: .3s ease color; - transition: .3s ease color -} - -.split-header .content-wrapper a i:hover, -.split-header .content-wrapper span i:hover { - color: #047006 -} - -.split-header .content-wrapper.v-centered { - -webkit-box-align: center; - align-items: center -} - -.split-header .content-wrapper.h-centered { - -webkit-box-pack: center; - justify-content: center -} - -.grid-body { - padding: 20px 25px 20px -} - -.card-title { - font-family: Roboto, sans-serif; - font-weight: 500; - color: #313131; - margin-bottom: 0 -} - -.equel-grid { - display: -webkit-box; - display: flex; - -webkit-box-align: stretch; - align-items: stretch -} - -.equel-grid .grid { - width: 100%; - min-width: 100% -} - -.showcase_row_area { - margin-bottom: 20px -} - -.showcase_row_area .showcase_text_area { - text-align: right -} - -@media (max-width:767.98px) { - .showcase_row_area .showcase_text_area { - text-align: left - } - -} - -.showcase_row_area .showcase_content_area { - margin-bottom: -10px -} - -.showcase_row_area .showcase_content_area .btn { - margin-right: 5px; - margin-bottom: 10px -} - -.showcase_row_area:last-child { - margin-bottom: 0 -} - -.content-preview { - width: 45px; - height: 45px -} - -.content-preview.rounded { - border-radius: 100% -} - -.btn:not(.disabled),.cursor_pointer,a { - cursor: pointer -} - -.grd-positive-currency { - color: #047006 -} - -.grd-negative-currency { - color: red -} - -.color-success { - color: var(--success) -} - -.color-danger { - color: var(--danger) -} - -.color-warning { - color: var(--warning) -} - -.color-primary { - color: var(--primary) -} - -.btn-gradido-orange { - color: #fff; - background-color: #ffa600; - border-color: #ffa600 -} - -.visible-modal { - display: block -} - -.margin-top-10 { - margin-top: 10px -} - -.pull-right { - float: right -} - -.pull-right-row { - display: block; - margin-right: 10px -} - -.display-block { - display: block -} - -p.grd_small { - margin-top: 2px; - margin-bottom: 2px -} - -ul.grd-no-style { - list-style-type: none -} - -.center-ul-container ul { - padding-left: 0; - margin-bottom: 0; - text-align: center -} - -.center-ul-container ul .grd-error { - margin-top: 5px; - color: #8b0000 -} - -.grd-alert-color { - color: #ff5f66 !important -} - -.grd-success-color { - color: #047006 !important -} - -.grd-orange-color { - color: #ffa600 -} - -.hidden { - display: none -} - -.alert { - cursor: pointer -} - -.table.table-auto-break td, -.table.table-auto-break th { - white-space: pre-line -} diff --git a/community_server/webroot/css/styles.css b/community_server/webroot/css/styles.css deleted file mode 100644 index 143cbdc08..000000000 --- a/community_server/webroot/css/styles.css +++ /dev/null @@ -1,347 +0,0 @@ -/* -To change this license header, choose License Headers in Project Properties. -To change this template file, choose Tools | Templates -and open the template in the editor. -*/ -/* - Created on : 30.10.2019, 09:26:42 - Author : einhornimmond -*/ -.dev-info { - position: fixed; - color: grey; - font-size: smaller; - left: 8px; -} -.grd-time-used { - bottom: 0; -} -.versionstring { - top: 0; -} -/* -To change this license header, choose License Headers in Project Properties. -To change this template file, choose Tools | Templates -and open the template in the editor. -*/ -/* - Created on : 12.07.2019, 07:59:32 - Author : einhornimmond -*/ -div[role='grd_dialog'] { - position: fixed; - width: 100%; - height: 100%; - background-color: rgba(0, 0, 0, 0.5); - top: 0; - left: 0; -} -div.grd_modal-dialog { - margin-top: 100px; - min-height: 200px; - max-width: 1000px; - margin-left: auto; - margin-right: auto; - background-color: white; - color: black; - border: 1px solid grey; -} -div.grd_modal-dialog.grd_dialog-large { - margin-top: 5px; - width: 90%; -} -div.grd_modal-body { - padding: 25px; -} -div.grd_modal-header { - background-color: rgba(0, 0, 0, 0.1); - padding: 5px; - padding-left: 15px; - border: 1px solid grey; - color: black; -} -div.grd_modal-footer { - background-color: rgba(0, 0, 0, 0.1); - height: 40px; -} -.grd_modal-footer a, -.grd_modal-footer button { - float: right; - padding: 9px; - margin-right: 10px; - border: 1px solid grey; -} -.grd_modal-footer a:hover, -.grd_modal-footer button:hover { - background-color: rgba(255, 255, 255, 0.5); -} -/* -To change this license header, choose License Headers in Project Properties. -To change this template file, choose Tools | Templates -and open the template in the editor. -*/ -/* - Created on : 30.10.2019, 14:41:57 - Author : einhornimmond -*/ -/* Button */ -/*a.grd_bn,a.grd_bn:visited { - color:black; - text-decoration: none; -} -*/ -.grd-form-bn:hover, -.grd-active { - background-color: lightgray; - border-color: black; -} -.grd-form-bn { - padding: 5px; - border: 1px solid grey; - display: table-cell; - text-align: center; - vertical-align: middle; - color: #444; -} -a.grd-form-bn, -a.grd-form-bn:visited { - color: black; - text-decoration: none; -} -.grd-form-bn-succeed { - background-color: lightcyan; - color: green; - margin-top: 3px; - margin-bottom: 3px; -} -.grd-form-bn-succeed:not([disabled]):hover { - background-color: lightgreen; -} -.grd-form-bn-discard { - margin-left: 5px; - border: 1px solid red; - color: red; - cursor: pointer; -} -/* -.grd_large-bn { - width:100vw; - height:25vh; - font-size: 8vh; -} - -.grd_bg-bn { - width:50vw; - height:25vh; - font-size: 7vh; -} - -.gr_md-bn { - width:50vw; - height:25vh; - font-size: 6vh; -} -*/ -/* form elements */ -.grd_textarea { - border: 1px solid grey; - background-color: rgba(0, 0, 0, 0.05); - padding: 5px; - font-style: italic; -} -.grd-input label { - display: block; -} -input.grd-privkey { - width: 465px; -} -input.grd-pubkey { - width: 465px; -} -input.grd-non-der-keys { - width: 900px; -} -input:not([type='radio']) { - width: 200px; -} -label:not(.grd_radio_label) { - width: 80px; - display: inline-block; -} -/* -To change this license header, choose License Headers in Project Properties. -To change this template file, choose Tools | Templates -and open the template in the editor. -*/ -/* - Created on : 13.10.2019, 15:43:58 - Author : einhornimmond -*/ -.grd-time-used { - position: fixed; - bottom: 0; - left: 0; - color: grey; - font-size: smaller; -} -/* -To change this license header, choose License Headers in Project Properties. -To change this template file, choose Tools | Templates -and open the template in the editor. -*/ -/* - Created on : 30.10.2019, 16:04:16 - Author : einhornimmond -*/ -/* messages, update flash */ -.grd-error { - color: red; - border: 1px solid rgba(255, 0, 0, 0.5); - padding: 5px; -} -.grd-info { - border: 1px dotted gray; - padding: 5px; -} -.grd-success { - padding: 5px; - color: green; -} -.flash-messages .message { - padding: 5px; -} -.flash-messages .success { - color: green; -} -.flash-messages .error { - color: red; -} -/* -To change this license header, choose License Headers in Project Properties. -To change this template file, choose Tools | Templates -and open the template in the editor. -*/ -/* - Created on : 30.10.2019, 14:16:16 - Author : einhornimmond -*/ -/* navbar */ -nav.grd-left-bar { - position: fixed; - top: 80.5px; -} -nav .grd-nav-bn { - width: 120px; -} -nav ul { - margin-top: 0; - padding-left: 0; -} -/* buttons */ -.grd-nav-bn:hover, -.grd-active { - background-color: lightgray; - border-color: black; -} -.grd-nav-bn { - padding: 10px; - border: 1px solid grey; - display: table-cell; - text-align: center; - vertical-align: middle; - color: grey; -} -.grd-nav-without-border { - border: none; -} -.grd-nav-bn-large { - width: 40vw; - height: 18vh; - font-size: 35px; -} -a.grd-nav-bn, -a.grd-nav-bn:visited { - color: black; - text-decoration: none; -} -.grd-nav-bn-discard { - color: darkred !important; -} -/* -To change this license header, choose License Headers in Project Properties. -To change this template file, choose Tools | Templates -and open the template in the editor. -*/ -/* - Created on : 07.07.2019, 16:20:15 - Author : einhornimmond -*/ -/* content container */ -.grd_container { - max-width: 820px; - margin-left: auto; - margin-right: auto; -} -.grd_container_small { - max-width: 500px; -} -.grd_text { - max-width: 550px; - margin-bottom: 5px; -} -.grd_text-max-width { - max-width: 550px; -} -/* layout helper */ -.grd_margin_5 { - margin: 5px; -} -.grd-margin-top-10 { - margin-top: 10px; -} -.grd-width-200 { - width: 200px; -} -.grd-padding-top-bottom-5 { - padding-top: 5px; - padding-bottom: 5px; -} -.grd-padding-top-bottom-10 { - padding-top: 10px; - padding-bottom: 10px; -} -.grd_margin-bottom { - margin-bottom: 5px; -} -.grd_right { - float: right; -} -a.grd_invisible_link { - color: black; - text-decoration: none; -} -a.grd_invisible_link:hover { - color: grey; -} -.grd_clickable { - cursor: pointer; -} -ul.grd-no-style { - list-style: none; -} -p.grd_small { - margin-top: 2px; - margin-bottom: 2px; -} -.grd-default-currency { - color: grey; -} -.grd-positive-currency { - color: green; -} -.grd-negative-currency { - color: red; -} -.admin-border { - border-color: #ffa600; -} diff --git a/community_server/webroot/favicon.ico b/community_server/webroot/favicon.ico deleted file mode 100644 index 5b44f2027..000000000 Binary files a/community_server/webroot/favicon.ico and /dev/null differ diff --git a/community_server/webroot/favicon.png b/community_server/webroot/favicon.png deleted file mode 100644 index 5c437973e..000000000 Binary files a/community_server/webroot/favicon.png and /dev/null differ diff --git a/community_server/webroot/font/cakedingbats-webfont.eot b/community_server/webroot/font/cakedingbats-webfont.eot deleted file mode 100644 index e8605d926..000000000 Binary files a/community_server/webroot/font/cakedingbats-webfont.eot and /dev/null differ diff --git a/community_server/webroot/font/cakedingbats-webfont.svg b/community_server/webroot/font/cakedingbats-webfont.svg deleted file mode 100644 index d1e0c98f7..000000000 --- a/community_server/webroot/font/cakedingbats-webfont.svg +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/community_server/webroot/font/cakedingbats-webfont.ttf b/community_server/webroot/font/cakedingbats-webfont.ttf deleted file mode 100644 index 13d54454e..000000000 Binary files a/community_server/webroot/font/cakedingbats-webfont.ttf and /dev/null differ diff --git a/community_server/webroot/font/cakedingbats-webfont.woff b/community_server/webroot/font/cakedingbats-webfont.woff deleted file mode 100644 index 073baab11..000000000 Binary files a/community_server/webroot/font/cakedingbats-webfont.woff and /dev/null differ diff --git a/community_server/webroot/font/cakedingbats-webfont.woff2 b/community_server/webroot/font/cakedingbats-webfont.woff2 deleted file mode 100644 index 6e71eaf53..000000000 Binary files a/community_server/webroot/font/cakedingbats-webfont.woff2 and /dev/null differ diff --git a/community_server/webroot/fonts/MaterialIconsOutlined/Material-Icons-Outline.eot b/community_server/webroot/fonts/MaterialIconsOutlined/Material-Icons-Outline.eot deleted file mode 100644 index 3e035411c..000000000 Binary files a/community_server/webroot/fonts/MaterialIconsOutlined/Material-Icons-Outline.eot and /dev/null differ diff --git a/community_server/webroot/fonts/MaterialIconsOutlined/Material-Icons-Outline.ttf b/community_server/webroot/fonts/MaterialIconsOutlined/Material-Icons-Outline.ttf deleted file mode 100644 index db76e5796..000000000 Binary files a/community_server/webroot/fonts/MaterialIconsOutlined/Material-Icons-Outline.ttf and /dev/null differ diff --git a/community_server/webroot/fonts/MaterialIconsOutlined/Material-Icons-Outline.woff b/community_server/webroot/fonts/MaterialIconsOutlined/Material-Icons-Outline.woff deleted file mode 100644 index 5f10918f0..000000000 Binary files a/community_server/webroot/fonts/MaterialIconsOutlined/Material-Icons-Outline.woff and /dev/null differ diff --git a/community_server/webroot/fonts/MaterialIconsOutlined/Material-Icons-Outline.woff2 b/community_server/webroot/fonts/MaterialIconsOutlined/Material-Icons-Outline.woff2 deleted file mode 100644 index 34df5fe02..000000000 Binary files a/community_server/webroot/fonts/MaterialIconsOutlined/Material-Icons-Outline.woff2 and /dev/null differ diff --git a/community_server/webroot/fonts/Roboto/Roboto-Black.ttf b/community_server/webroot/fonts/Roboto/Roboto-Black.ttf deleted file mode 100644 index 689fe5cb3..000000000 Binary files a/community_server/webroot/fonts/Roboto/Roboto-Black.ttf and /dev/null differ diff --git a/community_server/webroot/fonts/Roboto/Roboto-Bold.ttf b/community_server/webroot/fonts/Roboto/Roboto-Bold.ttf deleted file mode 100644 index d3f01ad24..000000000 Binary files a/community_server/webroot/fonts/Roboto/Roboto-Bold.ttf and /dev/null differ diff --git a/community_server/webroot/fonts/Roboto/Roboto-Light.ttf b/community_server/webroot/fonts/Roboto/Roboto-Light.ttf deleted file mode 100644 index 219063a57..000000000 Binary files a/community_server/webroot/fonts/Roboto/Roboto-Light.ttf and /dev/null differ diff --git a/community_server/webroot/fonts/Roboto/Roboto-Medium.ttf b/community_server/webroot/fonts/Roboto/Roboto-Medium.ttf deleted file mode 100644 index 1a7f3b0bb..000000000 Binary files a/community_server/webroot/fonts/Roboto/Roboto-Medium.ttf and /dev/null differ diff --git a/community_server/webroot/fonts/Roboto/Roboto-Regular.ttf b/community_server/webroot/fonts/Roboto/Roboto-Regular.ttf deleted file mode 100644 index 2c97eeadf..000000000 Binary files a/community_server/webroot/fonts/Roboto/Roboto-Regular.ttf and /dev/null differ diff --git a/community_server/webroot/fonts/Roboto/Roboto-Thin.ttf b/community_server/webroot/fonts/Roboto/Roboto-Thin.ttf deleted file mode 100644 index b74a4fd1a..000000000 Binary files a/community_server/webroot/fonts/Roboto/Roboto-Thin.ttf and /dev/null differ diff --git a/community_server/webroot/fonts/materialdesignicons-webfont.eot b/community_server/webroot/fonts/materialdesignicons-webfont.eot deleted file mode 100644 index fe283ac48..000000000 Binary files a/community_server/webroot/fonts/materialdesignicons-webfont.eot and /dev/null differ diff --git a/community_server/webroot/fonts/materialdesignicons-webfont.svg b/community_server/webroot/fonts/materialdesignicons-webfont.svg deleted file mode 100644 index b356c2977..000000000 --- a/community_server/webroot/fonts/materialdesignicons-webfont.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/community_server/webroot/fonts/materialdesignicons-webfont.ttf b/community_server/webroot/fonts/materialdesignicons-webfont.ttf deleted file mode 100644 index 3219fca04..000000000 Binary files a/community_server/webroot/fonts/materialdesignicons-webfont.ttf and /dev/null differ diff --git a/community_server/webroot/fonts/materialdesignicons-webfont.woff b/community_server/webroot/fonts/materialdesignicons-webfont.woff deleted file mode 100644 index abe1e47ef..000000000 Binary files a/community_server/webroot/fonts/materialdesignicons-webfont.woff and /dev/null differ diff --git a/community_server/webroot/fonts/materialdesignicons-webfont.woff2 b/community_server/webroot/fonts/materialdesignicons-webfont.woff2 deleted file mode 100644 index 47e8a2c3e..000000000 Binary files a/community_server/webroot/fonts/materialdesignicons-webfont.woff2 and /dev/null differ diff --git a/community_server/webroot/fonts/open-sans-v18-latin-300.eot b/community_server/webroot/fonts/open-sans-v18-latin-300.eot deleted file mode 100644 index 1c0f100ba..000000000 Binary files a/community_server/webroot/fonts/open-sans-v18-latin-300.eot and /dev/null differ diff --git a/community_server/webroot/fonts/open-sans-v18-latin-300.svg b/community_server/webroot/fonts/open-sans-v18-latin-300.svg deleted file mode 100644 index c0a1c8cd7..000000000 --- a/community_server/webroot/fonts/open-sans-v18-latin-300.svg +++ /dev/null @@ -1,332 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/community_server/webroot/fonts/open-sans-v18-latin-300.ttf b/community_server/webroot/fonts/open-sans-v18-latin-300.ttf deleted file mode 100644 index dcce1bb7d..000000000 Binary files a/community_server/webroot/fonts/open-sans-v18-latin-300.ttf and /dev/null differ diff --git a/community_server/webroot/fonts/open-sans-v18-latin-300.woff b/community_server/webroot/fonts/open-sans-v18-latin-300.woff deleted file mode 100644 index 26567ff25..000000000 Binary files a/community_server/webroot/fonts/open-sans-v18-latin-300.woff and /dev/null differ diff --git a/community_server/webroot/fonts/open-sans-v18-latin-300.woff2 b/community_server/webroot/fonts/open-sans-v18-latin-300.woff2 deleted file mode 100644 index 7bf901c28..000000000 Binary files a/community_server/webroot/fonts/open-sans-v18-latin-300.woff2 and /dev/null differ diff --git a/community_server/webroot/fonts/open-sans-v18-latin-600.eot b/community_server/webroot/fonts/open-sans-v18-latin-600.eot deleted file mode 100644 index b0d46a4ce..000000000 Binary files a/community_server/webroot/fonts/open-sans-v18-latin-600.eot and /dev/null differ diff --git a/community_server/webroot/fonts/open-sans-v18-latin-600.svg b/community_server/webroot/fonts/open-sans-v18-latin-600.svg deleted file mode 100644 index 410561e78..000000000 --- a/community_server/webroot/fonts/open-sans-v18-latin-600.svg +++ /dev/null @@ -1,336 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/community_server/webroot/fonts/open-sans-v18-latin-600.ttf b/community_server/webroot/fonts/open-sans-v18-latin-600.ttf deleted file mode 100644 index 25fdf1eb3..000000000 Binary files a/community_server/webroot/fonts/open-sans-v18-latin-600.ttf and /dev/null differ diff --git a/community_server/webroot/fonts/open-sans-v18-latin-600.woff b/community_server/webroot/fonts/open-sans-v18-latin-600.woff deleted file mode 100644 index 9d0eb42db..000000000 Binary files a/community_server/webroot/fonts/open-sans-v18-latin-600.woff and /dev/null differ diff --git a/community_server/webroot/fonts/open-sans-v18-latin-600.woff2 b/community_server/webroot/fonts/open-sans-v18-latin-600.woff2 deleted file mode 100644 index 5c5d54e2f..000000000 Binary files a/community_server/webroot/fonts/open-sans-v18-latin-600.woff2 and /dev/null differ diff --git a/community_server/webroot/fonts/open-sans-v18-latin-700.eot b/community_server/webroot/fonts/open-sans-v18-latin-700.eot deleted file mode 100644 index 5b9ddb4eb..000000000 Binary files a/community_server/webroot/fonts/open-sans-v18-latin-700.eot and /dev/null differ diff --git a/community_server/webroot/fonts/open-sans-v18-latin-700.svg b/community_server/webroot/fonts/open-sans-v18-latin-700.svg deleted file mode 100644 index 8e6b61ade..000000000 --- a/community_server/webroot/fonts/open-sans-v18-latin-700.svg +++ /dev/null @@ -1,334 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/community_server/webroot/fonts/open-sans-v18-latin-700.ttf b/community_server/webroot/fonts/open-sans-v18-latin-700.ttf deleted file mode 100644 index c9a3c7a48..000000000 Binary files a/community_server/webroot/fonts/open-sans-v18-latin-700.ttf and /dev/null differ diff --git a/community_server/webroot/fonts/open-sans-v18-latin-700.woff b/community_server/webroot/fonts/open-sans-v18-latin-700.woff deleted file mode 100644 index b8b46d0b4..000000000 Binary files a/community_server/webroot/fonts/open-sans-v18-latin-700.woff and /dev/null differ diff --git a/community_server/webroot/fonts/open-sans-v18-latin-700.woff2 b/community_server/webroot/fonts/open-sans-v18-latin-700.woff2 deleted file mode 100644 index 3a38286c6..000000000 Binary files a/community_server/webroot/fonts/open-sans-v18-latin-700.woff2 and /dev/null differ diff --git a/community_server/webroot/fonts/open-sans-v18-latin-800.eot b/community_server/webroot/fonts/open-sans-v18-latin-800.eot deleted file mode 100644 index b9d7b260c..000000000 Binary files a/community_server/webroot/fonts/open-sans-v18-latin-800.eot and /dev/null differ diff --git a/community_server/webroot/fonts/open-sans-v18-latin-800.svg b/community_server/webroot/fonts/open-sans-v18-latin-800.svg deleted file mode 100644 index f2a2d9f6e..000000000 --- a/community_server/webroot/fonts/open-sans-v18-latin-800.svg +++ /dev/null @@ -1,336 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/community_server/webroot/fonts/open-sans-v18-latin-800.ttf b/community_server/webroot/fonts/open-sans-v18-latin-800.ttf deleted file mode 100644 index a62af861f..000000000 Binary files a/community_server/webroot/fonts/open-sans-v18-latin-800.ttf and /dev/null differ diff --git a/community_server/webroot/fonts/open-sans-v18-latin-800.woff b/community_server/webroot/fonts/open-sans-v18-latin-800.woff deleted file mode 100644 index bdac80d5c..000000000 Binary files a/community_server/webroot/fonts/open-sans-v18-latin-800.woff and /dev/null differ diff --git a/community_server/webroot/fonts/open-sans-v18-latin-800.woff2 b/community_server/webroot/fonts/open-sans-v18-latin-800.woff2 deleted file mode 100644 index 86a8a8757..000000000 Binary files a/community_server/webroot/fonts/open-sans-v18-latin-800.woff2 and /dev/null differ diff --git a/community_server/webroot/fonts/open-sans-v18-latin-regular.eot b/community_server/webroot/fonts/open-sans-v18-latin-regular.eot deleted file mode 100644 index 8f3becf66..000000000 Binary files a/community_server/webroot/fonts/open-sans-v18-latin-regular.eot and /dev/null differ diff --git a/community_server/webroot/fonts/open-sans-v18-latin-regular.svg b/community_server/webroot/fonts/open-sans-v18-latin-regular.svg deleted file mode 100644 index 78eb653a7..000000000 --- a/community_server/webroot/fonts/open-sans-v18-latin-regular.svg +++ /dev/null @@ -1,336 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/community_server/webroot/fonts/open-sans-v18-latin-regular.ttf b/community_server/webroot/fonts/open-sans-v18-latin-regular.ttf deleted file mode 100644 index fb23764c1..000000000 Binary files a/community_server/webroot/fonts/open-sans-v18-latin-regular.ttf and /dev/null differ diff --git a/community_server/webroot/fonts/open-sans-v18-latin-regular.woff b/community_server/webroot/fonts/open-sans-v18-latin-regular.woff deleted file mode 100644 index 39e88ed92..000000000 Binary files a/community_server/webroot/fonts/open-sans-v18-latin-regular.woff and /dev/null differ diff --git a/community_server/webroot/fonts/open-sans-v18-latin-regular.woff2 b/community_server/webroot/fonts/open-sans-v18-latin-regular.woff2 deleted file mode 100644 index e9f58b775..000000000 Binary files a/community_server/webroot/fonts/open-sans-v18-latin-regular.woff2 and /dev/null differ diff --git a/community_server/webroot/img/50x50.png b/community_server/webroot/img/50x50.png deleted file mode 100644 index 7eb2b9ad8..000000000 Binary files a/community_server/webroot/img/50x50.png and /dev/null differ diff --git a/community_server/webroot/img/cake-logo.png b/community_server/webroot/img/cake-logo.png deleted file mode 100644 index 41939ef5a..000000000 Binary files a/community_server/webroot/img/cake-logo.png and /dev/null differ diff --git a/community_server/webroot/img/cake.icon.png b/community_server/webroot/img/cake.icon.png deleted file mode 100644 index 394fa42d5..000000000 Binary files a/community_server/webroot/img/cake.icon.png and /dev/null differ diff --git a/community_server/webroot/img/cake.logo.svg b/community_server/webroot/img/cake.logo.svg deleted file mode 100644 index e73abb54b..000000000 --- a/community_server/webroot/img/cake.logo.svg +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/community_server/webroot/img/cake.power.gif b/community_server/webroot/img/cake.power.gif deleted file mode 100644 index 8f8d570a2..000000000 Binary files a/community_server/webroot/img/cake.power.gif and /dev/null differ diff --git a/community_server/webroot/img/gradido_logo_web.png b/community_server/webroot/img/gradido_logo_web.png deleted file mode 100644 index 062997764..000000000 Binary files a/community_server/webroot/img/gradido_logo_web.png and /dev/null differ diff --git a/community_server/webroot/img/gradido_logo_web.webp b/community_server/webroot/img/gradido_logo_web.webp deleted file mode 100644 index bff8a245d..000000000 Binary files a/community_server/webroot/img/gradido_logo_web.webp and /dev/null differ diff --git a/community_server/webroot/img/logo_half.png b/community_server/webroot/img/logo_half.png deleted file mode 100644 index d6852eab8..000000000 Binary files a/community_server/webroot/img/logo_half.png and /dev/null differ diff --git a/community_server/webroot/img/logo_half.webp b/community_server/webroot/img/logo_half.webp deleted file mode 100644 index d0e6c245b..000000000 Binary files a/community_server/webroot/img/logo_half.webp and /dev/null differ diff --git a/community_server/webroot/img/logo_schrift.png b/community_server/webroot/img/logo_schrift.png deleted file mode 100644 index 062997764..000000000 Binary files a/community_server/webroot/img/logo_schrift.png and /dev/null differ diff --git a/community_server/webroot/img/logo_schrift.webp b/community_server/webroot/img/logo_schrift.webp deleted file mode 100644 index bff8a245d..000000000 Binary files a/community_server/webroot/img/logo_schrift.webp and /dev/null differ diff --git a/community_server/webroot/index.php b/community_server/webroot/index.php deleted file mode 100644 index 2e697aedc..000000000 --- a/community_server/webroot/index.php +++ /dev/null @@ -1,41 +0,0 @@ -emit($server->run()); - diff --git a/community_server/webroot/js/basic.js b/community_server/webroot/js/basic.js deleted file mode 100644 index df53065fe..000000000 --- a/community_server/webroot/js/basic.js +++ /dev/null @@ -1,116 +0,0 @@ -// cross browser dom is ready module from: -// https://www.competa.com/blog/cross-browser-document-ready-with-vanilla-javascript/ -var domIsReady = (function(domIsReady) { - var isBrowserIeOrNot = function() { - return (!document.attachEvent || typeof document.attachEvent === "undefined" ? 'not-ie' : 'ie'); - } - - domIsReady = function(callback) { - if (callback && typeof callback === 'function') { - if (isBrowserIeOrNot() !== 'ie') { - document.addEventListener("DOMContentLoaded", function() { - return callback(); - }); - } else { - document.attachEvent("onreadystatechange", function() { - if (document.readyState === "complete") { - return callback(); - } - }); - } - } else { - console.error('The callback is not a function!'); - } - } - - return domIsReady; -})(domIsReady || {}); - - -// vanilla ajax request, json get -function getJson(basisUrl, method, successFunction, errorFunction, timeoutFunction) { - var xhr = new XMLHttpRequest(); - - xhr.onload = function(e) { - var xhr = e.target; - //console.log(xhr); - var jsonReturn = []; - if (xhr.responseType === 'json') { - jsonReturn = xhr.response; - } else { - jsonReturn = JSON.parse(xhr.responseText); - } - successFunction(jsonReturn); - } - xhr.onerror = function(e) { - errorFunction(e); - } - xhr.ontimeout = function(e) { - timeoutFunction(e); - } - - var bustCache = '&' + new Date().getTime(); - //oReq.open('GET', e.target.dataset.url + bustCache, true); - xhr.open('GET', basisUrl + '?method=' + method + bustCache, true); - xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); - xhr.responseType = 'json'; - xhr.send(); -} - -// cross browser dom is ready -(function(document, window, domIsReady, undefined) { - domIsReady(function() { - var DesktopToggler = document.querySelector('#nav-action'); - var MobileToggler = document.querySelector('#nav-action-mobile'); - var HeaderToggle = document.querySelector('.t-header-toggler'); - - // SIDEBAR TOGGLE FUNCTION FOR LARGE SCREENS (SCREEN "LG" AND UP) - if (DesktopToggler) { - DesktopToggler.addEventListener('click', function() { - console.log('toggler clicked / Desktop'); - if (document.querySelector('.nav-menu').classList.contains('initial')) { - document.querySelector('.nav-menu').classList.remove('initial'); - document.querySelector('.nav-menu').classList.add('nav-menu-minimized'); - } else { - document.querySelector('.nav-menu').classList.toggle('nav-menu-minimized'); - document.querySelector('.nav-menu').classList.toggle('nav-menu-maximized'); - } - let big = document.querySelectorAll('.logo.big'); - big.forEach(function(el) { - el.classList.toggle('visible'); - }); - let small = document.querySelectorAll('.logo.small'); - small.forEach(function(el) { - el.classList.toggle('visible'); - }); - }); - } - - // SIDEBAR TOGGLE FUNCTION FOR MOBILE (SCREEN "MD" AND DOWN) - if (MobileToggler) { - MobileToggler.addEventListener('click', function() { - console.log('toggler clicked / Desktop'); - if (document.querySelector('.nav-menu').classList.contains('initial')) { - document.querySelector('.nav-menu').classList.remove('initial'); - document.querySelector('.nav-menu').classList.toggle('nav-menu-maximized'); - } else { - document.querySelector('.nav-menu').classList.toggle('nav-menu-minimized'); - document.querySelector('.nav-menu').classList.toggle('nav-menu-maximized'); - } - let big = document.querySelectorAll('.logo.big'); - big.forEach(function(el) { - el.classList.toggle('visible'); - }); - let small = document.querySelectorAll('.logo.small'); - small.forEach(function(el) { - el.classList.toggle('visible'); - }); - }); - } - if (HeaderToggle) { - HeaderToggle.addEventListener('click', function() { - HeaderToggle.classList.toggle('arrow'); - }); - } - }); -})(document, window, domIsReady); \ No newline at end of file diff --git a/community_server/webroot/js/core.js b/community_server/webroot/js/core.js deleted file mode 100644 index 9678001c2..000000000 --- a/community_server/webroot/js/core.js +++ /dev/null @@ -1 +0,0 @@ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(T,e){"use strict";var t=[],x=T.document,i=Object.getPrototypeOf,a=t.slice,g=t.concat,l=t.push,r=t.indexOf,n={},o=n.toString,m=n.hasOwnProperty,s=m.toString,u=s.call(Object),v={},y=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},_=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,noModule:!0};function b(e,t,n){var i,r=(t=t||x).createElement("script");if(r.text=e,n)for(i in c)n[i]&&(r[i]=n[i]);t.head.appendChild(r).parentNode.removeChild(r)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var C=function(e,t){return new C.fn.init(e,t)},f=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function h(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!y(e)&&!_(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+P+")"+P+"*"),K=new RegExp("="+P+"*([^\\]'\"]*?)"+P+"*\\]","g"),$=new RegExp(F),Q=new RegExp("^"+q+"$"),V={ID:new RegExp("^#("+q+")"),CLASS:new RegExp("^\\.("+q+")"),TAG:new RegExp("^("+q+"|[*])"),ATTR:new RegExp("^"+R),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:new RegExp("^(?:"+H+")$","i"),needsContext:new RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},z=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,X=/^[^{]+\{\s*\[native \w/,G=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,J=/[+~]/,Z=new RegExp("\\\\([\\da-f]{1,6}"+P+"?|("+P+")|.)","ig"),ee=function(e,t,n){var i="0x"+t-65536;return i!=i||n?t:i<0?String.fromCharCode(i+65536):String.fromCharCode(i>>10|55296,1023&i|56320)},te=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ne=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},ie=function(){E()},re=ye(function(e){return!0===e.disabled&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{O.apply(t=j.call(y.childNodes),y.childNodes),t[y.childNodes.length].nodeType}catch(n){O={apply:t.length?function(e,t){k.apply(e,j.call(t))}:function(e,t){for(var n=e.length,i=0;e[n++]=t[i++];);e.length=n-1}}}function oe(e,t,n,i){var r,o,s,a,l,u,c,f=t&&t.ownerDocument,h=t?t.nodeType:9;if(n=n||[],"string"!=typeof e||!e||1!==h&&9!==h&&11!==h)return n;if(!i&&((t?t.ownerDocument||t:y)!==T&&E(t),t=t||T,x)){if(11!==h&&(l=G.exec(e)))if(r=l[1]){if(9===h){if(!(s=t.getElementById(r)))return n;if(s.id===r)return n.push(s),n}else if(f&&(s=f.getElementById(r))&&v(t,s)&&s.id===r)return n.push(s),n}else{if(l[2])return O.apply(n,t.getElementsByTagName(e)),n;if((r=l[3])&&d.getElementsByClassName&&t.getElementsByClassName)return O.apply(n,t.getElementsByClassName(r)),n}if(d.qsa&&!D[e+" "]&&(!m||!m.test(e))){if(1!==h)f=t,c=e;else if("object"!==t.nodeName.toLowerCase()){for((a=t.getAttribute("id"))?a=a.replace(te,ne):t.setAttribute("id",a=C),o=(u=p(e)).length;o--;)u[o]="#"+a+" "+ve(u[o]);c=u.join(","),f=J.test(e)&&ge(t.parentNode)||t}if(c)try{return O.apply(n,f.querySelectorAll(c)),n}catch(e){}finally{a===C&&t.removeAttribute("id")}}}return g(e.replace(W,"$1"),t,n,i)}function se(){var i=[];return function e(t,n){return i.push(t+" ")>b.cacheLength&&delete e[i.shift()],e[t+" "]=n}}function ae(e){return e[C]=!0,e}function le(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ue(e,t){for(var n=e.split("|"),i=n.length;i--;)b.attrHandle[n[i]]=t}function ce(e,t){var n=t&&e,i=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(i)return i;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function fe(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function de(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&re(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function pe(s){return ae(function(o){return o=+o,ae(function(e,t){for(var n,i=s([],e.length,o),r=i.length;r--;)e[n=i[r]]&&(e[n]=!(t[n]=e[n]))})})}function ge(e){return e&&void 0!==e.getElementsByTagName&&e}for(e in d=oe.support={},r=oe.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},E=oe.setDocument=function(e){var t,n,i=e?e.ownerDocument||e:y;return i!==T&&9===i.nodeType&&i.documentElement&&(s=(T=i).documentElement,x=!r(T),y!==T&&(n=T.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",ie,!1):n.attachEvent&&n.attachEvent("onunload",ie)),d.attributes=le(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=le(function(e){return e.appendChild(T.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=X.test(T.getElementsByClassName),d.getById=le(function(e){return s.appendChild(e).id=C,!T.getElementsByName||!T.getElementsByName(C).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if(void 0!==t.getElementById&&x){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(Z,ee);return function(e){var t=void 0!==e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if(void 0!==t.getElementById&&x){var n,i,r,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];for(r=t.getElementsByName(e),i=0;o=r[i++];)if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,i=[],r=0,o=t.getElementsByTagName(e);if("*"!==e)return o;for(;n=o[r++];)1===n.nodeType&&i.push(n);return i},b.find.CLASS=d.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&x)return t.getElementsByClassName(e)},a=[],m=[],(d.qsa=X.test(T.querySelectorAll))&&(le(function(e){s.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&m.push("[*^$]="+P+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||m.push("\\["+P+"*(?:value|"+H+")"),e.querySelectorAll("[id~="+C+"-]").length||m.push("~="),e.querySelectorAll(":checked").length||m.push(":checked"),e.querySelectorAll("a#"+C+"+*").length||m.push(".#.+[+~]")}),le(function(e){e.innerHTML="";var t=T.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&m.push("name"+P+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&m.push(":enabled",":disabled"),s.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&m.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),m.push(",.*:")})),(d.matchesSelector=X.test(c=s.matches||s.webkitMatchesSelector||s.mozMatchesSelector||s.oMatchesSelector||s.msMatchesSelector))&&le(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),a.push("!=",F)}),m=m.length&&new RegExp(m.join("|")),a=a.length&&new RegExp(a.join("|")),t=X.test(s.compareDocumentPosition),v=t||X.test(s.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,i=t&&t.parentNode;return e===i||!(!i||1!==i.nodeType||!(n.contains?n.contains(i):e.compareDocumentPosition&&16&e.compareDocumentPosition(i)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},A=t?function(e,t){if(e===t)return u=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===T||e.ownerDocument===y&&v(y,e)?-1:t===T||t.ownerDocument===y&&v(y,t)?1:l?L(l,e)-L(l,t):0:4&n?-1:1)}:function(e,t){if(e===t)return u=!0,0;var n,i=0,r=e.parentNode,o=t.parentNode,s=[e],a=[t];if(!r||!o)return e===T?-1:t===T?1:r?-1:o?1:l?L(l,e)-L(l,t):0;if(r===o)return ce(e,t);for(n=e;n=n.parentNode;)s.unshift(n);for(n=t;n=n.parentNode;)a.unshift(n);for(;s[i]===a[i];)i++;return i?ce(s[i],a[i]):s[i]===y?-1:a[i]===y?1:0}),T},oe.matches=function(e,t){return oe(e,null,null,t)},oe.matchesSelector=function(e,t){if((e.ownerDocument||e)!==T&&E(e),t=t.replace(K,"='$1']"),d.matchesSelector&&x&&!D[t+" "]&&(!a||!a.test(t))&&(!m||!m.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Z,ee),e[3]=(e[3]||e[4]||e[5]||"").replace(Z,ee),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||oe.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&oe.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return V.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&$.test(n)&&(t=p(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Z,ee).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=h[e+" "];return t||(t=new RegExp("(^|"+P+")"+e+"("+P+"|$)"))&&h(e,function(e){return t.test("string"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,i,r){return function(e){var t=oe.attr(e,n);return null==t?"!="===i:!i||(t+="","="===i?t===r:"!="===i?t!==r:"^="===i?r&&0===t.indexOf(r):"*="===i?r&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function N(e,n,i){return y(n)?C.grep(e,function(e,t){return!!n.call(e,t,e)!==i}):n.nodeType?C.grep(e,function(e){return e===n!==i}):"string"!=typeof n?C.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(C.fn.init=function(e,t,n){var i,r;if(!e)return this;if(n=n||I,"string"!=typeof e)return e.nodeType?(this[0]=e,this.length=1,this):y(e)?void 0!==n.ready?n.ready(e):e(C):C.makeArray(e,this);if(!(i="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:k.exec(e))||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof C?t[0]:t,C.merge(this,C.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:x,!0)),A.test(i[1])&&C.isPlainObject(t))for(i in t)y(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}return(r=x.getElementById(i[2]))&&(this[0]=r,this.length=1),this}).prototype=C.fn,I=C(x);var O=/^(?:parents|prev(?:Until|All))/,j={children:!0,contents:!0,next:!0,prev:!0};function L(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}C.fn.extend({has:function(e){var t=C(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]+)/i,ce=/^$|^module$|\/(?:java|ecma)script/i,fe={option:[1,""],thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function he(e,t){var n;return n=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||"*"):void 0!==e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&D(e,t)?C.merge([e],n):n}function de(e,t){for(var n=0,i=e.length;nx",v.noCloneChecked=!!pe.cloneNode(!0).lastChild.defaultValue;var ye=x.documentElement,_e=/^key/,be=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,we=/^([^.]*)(?:\.(.+)|)/;function Ee(){return!0}function Te(){return!1}function xe(){try{return x.activeElement}catch(e){}}function Ce(e,t,n,i,r,o){var s,a;if("object"==typeof t){for(a in"string"!=typeof n&&(i=i||n,n=void 0),t)Ce(e,a,n,i,t[a],o);return e}if(null==i&&null==r?(r=n,i=n=void 0):null==r&&("string"==typeof n?(r=i,i=void 0):(r=i,i=n,n=void 0)),!1===r)r=Te;else if(!r)return e;return 1===o&&(s=r,(r=function(e){return C().off(e),s.apply(this,arguments)}).guid=s.guid||(s.guid=C.guid++)),e.each(function(){C.event.add(this,t,r,i,n)})}C.event={global:{},add:function(t,e,n,i,r){var o,s,a,l,u,c,f,h,d,p,g,m=Y.get(t);if(m)for(n.handler&&(n=(o=n).handler,r=o.selector),r&&C.find.matchesSelector(ye,r),n.guid||(n.guid=C.guid++),(l=m.events)||(l=m.events={}),(s=m.handle)||(s=m.handle=function(e){return void 0!==C&&C.event.triggered!==e.type?C.event.dispatch.apply(t,arguments):void 0}),u=(e=(e||"").match(H)||[""]).length;u--;)d=g=(a=we.exec(e[u])||[])[1],p=(a[2]||"").split(".").sort(),d&&(f=C.event.special[d]||{},d=(r?f.delegateType:f.bindType)||d,f=C.event.special[d]||{},c=C.extend({type:d,origType:g,data:i,handler:n,guid:n.guid,selector:r,needsContext:r&&C.expr.match.needsContext.test(r),namespace:p.join(".")},o),(h=l[d])||((h=l[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,i,p,s)||t.addEventListener&&t.addEventListener(d,s)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),r?h.splice(h.delegateCount++,0,c):h.push(c),C.event.global[d]=!0)},remove:function(e,t,n,i,r){var o,s,a,l,u,c,f,h,d,p,g,m=Y.hasData(e)&&Y.get(e);if(m&&(l=m.events)){for(u=(t=(t||"").match(H)||[""]).length;u--;)if(d=g=(a=we.exec(t[u])||[])[1],p=(a[2]||"").split(".").sort(),d){for(f=C.event.special[d]||{},h=l[d=(i?f.delegateType:f.bindType)||d]||[],a=a[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),s=o=h.length;o--;)c=h[o],!r&&g!==c.origType||n&&n.guid!==c.guid||a&&!a.test(c.namespace)||i&&i!==c.selector&&("**"!==i||!c.selector)||(h.splice(o,1),c.selector&&h.delegateCount--,f.remove&&f.remove.call(e,c));s&&!h.length&&(f.teardown&&!1!==f.teardown.call(e,p,m.handle)||C.removeEvent(e,d,m.handle),delete l[d])}else for(d in l)C.event.remove(e,d+t[u],n,i,!0);C.isEmptyObject(l)&&Y.remove(e,"handle events")}},dispatch:function(e){var t,n,i,r,o,s,a=C.event.fix(e),l=new Array(arguments.length),u=(Y.get(this,"events")||{})[a.type]||[],c=C.event.special[a.type]||{};for(l[0]=a,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,De=/\s*$/g;function Ie(e,t){return D(e,"table")&&D(11!==t.nodeType?t:t.firstChild,"tr")&&C(e).children("tbody")[0]||e}function ke(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Oe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function je(e,t){var n,i,r,o,s,a,l,u;if(1===t.nodeType){if(Y.hasData(e)&&(o=Y.access(e),s=Y.set(t,o),u=o.events))for(r in delete s.handle,s.events={},u)for(n=0,i=u[r].length;n")},clone:function(e,t,n){var i,r,o,s,a,l,u,c=e.cloneNode(!0),f=C.contains(e.ownerDocument,e);if(!(v.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||C.isXMLDoc(e)))for(s=he(c),i=0,r=(o=he(e)).length;i").prop({charset:n.scriptCharset,src:n.url}).on("load error",r=function(e){i.remove(),r=null,e&&t("error"===e.type?404:200,e.type)}),x.head.appendChild(i[0])},abort:function(){r&&r()}}});var Bt,Ut=[],Kt=/(=)\?(?=&|$)|\?\?/;C.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Ut.pop()||C.expando+"_"+bt++;return this[e]=!0,e}}),C.ajaxPrefilter("json jsonp",function(e,t,n){var i,r,o,s=!1!==e.jsonp&&(Kt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Kt.test(e.data)&&"data");if(s||"jsonp"===e.dataTypes[0])return i=e.jsonpCallback=y(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,s?e[s]=e[s].replace(Kt,"$1"+i):!1!==e.jsonp&&(e.url+=(wt.test(e.url)?"&":"?")+e.jsonp+"="+i),e.converters["script json"]=function(){return o||C.error(i+" was not called"),o[0]},e.dataTypes[0]="json",r=T[i],T[i]=function(){o=arguments},n.always(function(){void 0===r?C(T).removeProp(i):T[i]=r,e[i]&&(e.jsonpCallback=t.jsonpCallback,Ut.push(i)),o&&y(r)&&r(o[0]),o=r=void 0}),"script"}),v.createHTMLDocument=((Bt=x.implementation.createHTMLDocument("").body).innerHTML="
    ",2===Bt.childNodes.length),C.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(v.createHTMLDocument?((i=(t=x.implementation.createHTMLDocument("")).createElement("base")).href=x.location.href,t.head.appendChild(i)):t=x),o=!n&&[],(r=A.exec(e))?[t.createElement(r[1])]:(r=ve([e],t,o),o&&o.length&&C(o).remove(),C.merge([],r.childNodes)));var i,r,o},C.fn.load=function(e,t,n){var i,r,o,s=this,a=e.indexOf(" ");return-1").append(C.parseHTML(e)).find(i):e)}).always(n&&function(e,t){s.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},C.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){C.fn[t]=function(e){return this.on(t,e)}}),C.expr.pseudos.animated=function(t){return C.grep(C.timers,function(e){return t===e.elem}).length},C.offset={setOffset:function(e,t,n){var i,r,o,s,a,l,u=C.css(e,"position"),c=C(e),f={};"static"===u&&(e.style.position="relative"),a=c.offset(),o=C.css(e,"top"),l=C.css(e,"left"),r=("absolute"===u||"fixed"===u)&&-1<(o+l).indexOf("auto")?(s=(i=c.position()).top,i.left):(s=parseFloat(o)||0,parseFloat(l)||0),y(t)&&(t=t.call(e,n,C.extend({},a))),null!=t.top&&(f.top=t.top-a.top+s),null!=t.left&&(f.left=t.left-a.left+r),"using"in t?t.using.call(e,f):c.css(f)}},C.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){C.offset.setOffset(this,t,e)});var e,n,i=this[0];return i?i.getClientRects().length?(e=i.getBoundingClientRect(),n=i.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,i=this[0],r={top:0,left:0};if("fixed"===C.css(i,"position"))t=i.getBoundingClientRect();else{for(t=this.offset(),n=i.ownerDocument,e=i.offsetParent||n.documentElement;e&&(e===n.body||e===n.documentElement)&&"static"===C.css(e,"position");)e=e.parentNode;e&&e!==i&&1===e.nodeType&&((r=C(e).offset()).top+=C.css(e,"borderTopWidth",!0),r.left+=C.css(e,"borderLeftWidth",!0))}return{top:t.top-r.top-C.css(i,"marginTop",!0),left:t.left-r.left-C.css(i,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent;e&&"static"===C.css(e,"position");)e=e.offsetParent;return e||ye})}}),C.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,r){var o="pageYOffset"===r;C.fn[t]=function(e){return B(this,function(e,t,n){var i;if(_(e)?i=e:9===e.nodeType&&(i=e.defaultView),void 0===n)return i?i[r]:e[t];i?i.scrollTo(o?i.pageXOffset:n,o?n:i.pageYOffset):e[t]=n},t,e,arguments.length)}}),C.each(["top","left"],function(e,n){C.cssHooks[n]=Me(v.pixelPosition,function(e,t){if(t)return t=Fe(e,n),Pe.test(t)?C(e).position()[n]+"px":t})}),C.each({Height:"height",Width:"width"},function(s,a){C.each({padding:"inner"+s,content:a,"":"outer"+s},function(i,o){C.fn[o]=function(e,t){var n=arguments.length&&(i||"boolean"!=typeof e),r=i||(!0===e||!0===t?"margin":"border");return B(this,function(e,t,n){var i;return _(e)?0===o.indexOf("outer")?e["inner"+s]:e.document.documentElement["client"+s]:9===e.nodeType?(i=e.documentElement,Math.max(e.body["scroll"+s],i["scroll"+s],e.body["offset"+s],i["offset"+s],i["client"+s])):void 0===n?C.css(e,t,r):C.style(e,t,n,r)},a,n?e:void 0,n)}})}),C.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){C.fn[n]=function(e,t){return 0=i.clientWidth&&n>=i.clientHeight}),c=0l[e]&&!i.escapeWithReference&&(n=I(c[t],l[e]-("right"===e?c.width:c.height))),Q({},t,n)}};return u.forEach(function(e){var t=-1===["left","top"].indexOf(e)?"secondary":"primary";c=V({},c,f[t](e))}),e.offsets.popper=c,e},priority:["left","right","top","bottom"],padding:5,boundariesElement:"scrollParent"},keepTogether:{order:400,enabled:!0,fn:function(e){var t=e.offsets,n=t.popper,i=t.reference,r=e.placement.split("-")[0],o=P,s=-1!==["top","bottom"].indexOf(r),a=s?"right":"bottom",l=s?"left":"top",u=s?"width":"height";return n[a]o(i[a])&&(e.offsets.popper[l]=o(i[a])),e}},arrow:{order:500,enabled:!0,fn:function(e,t){var n;if(!A(e.instance.modifiers,"arrow","keepTogether"))return e;var i=t.element;if("string"==typeof i){if(!(i=e.instance.popper.querySelector(i)))return e}else if(!e.instance.popper.contains(i))return console.warn("WARNING: `arrow.element` must be child of its popper element!"),e;var r=e.placement.split("-")[0],o=e.offsets,s=o.popper,a=o.reference,l=-1!==["left","right"].indexOf(r),u=l?"height":"width",c=l?"Top":"Left",f=c.toLowerCase(),h=l?"left":"top",d=l?"bottom":"right",p=T(i)[u];a[d]-ps[d]&&(e.offsets.popper[f]+=a[f]+p-s[d]),e.offsets.popper=w(e.offsets.popper);var g=a[f]+a[u]/2-p/2,m=b(e.instance.popper),v=parseFloat(m["margin"+c],10),y=parseFloat(m["border"+c+"Width"],10),_=g-e.offsets.popper[f]-v-y;return _=k(I(s[u]-p,_),0),e.arrowElement=i,e.offsets.arrow=(Q(n={},f,q(_)),Q(n,h,""),n),e},element:"[x-arrow]"},flip:{order:600,enabled:!0,fn:function(p,g){if(e(p.instance.modifiers,"inner"))return p;if(p.flipped&&p.placement===p.originalPlacement)return p;var m=h(p.instance.popper,p.instance.reference,g.padding,g.boundariesElement,p.positionFixed),v=p.placement.split("-")[0],y=x(v),_=p.placement.split("-")[1]||"",b=[];switch(g.behavior){case G:b=[v,y];break;case J:b=i(v);break;case Z:b=i(v,!0);break;default:b=g.behavior}return b.forEach(function(e,t){if(v!==e||b.length===t+1)return p;v=p.placement.split("-")[0],y=x(v);var n,i=p.offsets.popper,r=p.offsets.reference,o=P,s="left"===v&&o(i.right)>o(r.left)||"right"===v&&o(i.left)o(r.top)||"bottom"===v&&o(i.top)o(m.right),u=o(i.top)o(m.bottom),f="left"===v&&a||"right"===v&&l||"top"===v&&u||"bottom"===v&&c,h=-1!==["top","bottom"].indexOf(v),d=!!g.flipVariations&&(h&&"start"===_&&a||h&&"end"===_&&l||!h&&"start"===_&&u||!h&&"end"===_&&c);(s||f||d)&&(p.flipped=!0,(s||f)&&(v=b[t+1]),d&&(_="end"===(n=_)?"start":"start"===n?"end":n),p.placement=v+(_?"-"+_:""),p.offsets.popper=V({},p.offsets.popper,C(p.instance.popper,p.offsets.reference,p.placement)),p=S(p.instance.modifiers,p,"flip"))}),p},behavior:"flip",padding:5,boundariesElement:"viewport"},inner:{order:700,enabled:!1,fn:function(e){var t=e.placement,n=t.split("-")[0],i=e.offsets,r=i.popper,o=i.reference,s=-1!==["left","right"].indexOf(n),a=-1===["top","left"].indexOf(n);return r[s?"left":"top"]=o[n]-(a?r[s?"width":"height"]:0),e.placement=x(t),e.offsets.popper=w(r),e}},hide:{order:800,enabled:!0,fn:function(e){if(!A(e.instance.modifiers,"hide","preventOverflow"))return e;var t=e.offsets.reference,n=L(e.instance.modifiers,function(e){return"preventOverflow"===e.name}).boundaries;if(t.bottomn.right||t.top>n.bottom||t.rightthis._items.length-1||e<0))if(this._isSliding)p(this._element).one(O.SLID,function(){return t.to(e)});else{if(n===e)return this.pause(),void this.cycle();var i=ndocument.documentElement.clientHeight;!this._isBodyOverflowing&&e&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!e&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},e._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},e._checkScrollbar=function(){var e=document.body.getBoundingClientRect();this._isBodyOverflowing=e.left+e.right
    ',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent",sanitize:!0,sanitizeFn:null,whiteList:{"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]}},Re="show",Fe={HIDE:"hide"+Ie,HIDDEN:"hidden"+Ie,SHOW:"show"+Ie,SHOWN:"shown"+Ie,INSERTED:"inserted"+Ie,CLICK:"click"+Ie,FOCUSIN:"focusin"+Ie,FOCUSOUT:"focusout"+Ie,MOUSEENTER:"mouseenter"+Ie,MOUSELEAVE:"mouseleave"+Ie},Me="fade",We="show",Be="hover",Ue="focus",Ke=function(){function i(e,t){if(void 0===f)throw new TypeError("Bootstrap's tooltips require Popper.js (https://popper.js.org/)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=e,this.config=this._getConfig(t),this.tip=null,this._setListeners()}var e=i.prototype;return e.enable=function(){this._isEnabled=!0},e.disable=function(){this._isEnabled=!1},e.toggleEnabled=function(){this._isEnabled=!this._isEnabled},e.toggle=function(e){if(this._isEnabled)if(e){var t=this.constructor.DATA_KEY,n=p(e.currentTarget).data(t);n||(n=new this.constructor(e.currentTarget,this._getDelegateConfig()),p(e.currentTarget).data(t,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(p(this.getTipElement()).hasClass(We))return void this._leave(null,this);this._enter(null,this)}},e.dispose=function(){clearTimeout(this._timeout),p.removeData(this.element,this.constructor.DATA_KEY),p(this.element).off(this.constructor.EVENT_KEY),p(this.element).closest(".modal").off("hide.bs.modal"),this.tip&&p(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,(this._activeTrigger=null)!==this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},e.show=function(){var t=this;if("none"===p(this.element).css("display"))throw new Error("Please use show on visible elements");var e=p.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){p(this.element).trigger(e);var n=g.findShadowRoot(this.element),i=p.contains(null!==n?n:this.element.ownerDocument.documentElement,this.element);if(e.isDefaultPrevented()||!i)return;var r=this.getTipElement(),o=g.getUID(this.constructor.NAME);r.setAttribute("id",o),this.element.setAttribute("aria-describedby",o),this.setContent(),this.config.animation&&p(r).addClass(Me);var s="function"==typeof this.config.placement?this.config.placement.call(this,r,this.element):this.config.placement,a=this._getAttachment(s);this.addAttachmentClass(a);var l=this._getContainer();p(r).data(this.constructor.DATA_KEY,this),p.contains(this.element.ownerDocument.documentElement,this.tip)||p(r).appendTo(l),p(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new f(this.element,r,{placement:a,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:".arrow"},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(e){e.originalPlacement!==e.placement&&t._handlePopperPlacementChange(e)},onUpdate:function(e){return t._handlePopperPlacementChange(e)}}),p(r).addClass(We),"ontouchstart"in document.documentElement&&p(document.body).children().on("mouseover",null,p.noop);var u=function(){t.config.animation&&t._fixTransition();var e=t._hoverState;t._hoverState=null,p(t.element).trigger(t.constructor.Event.SHOWN),"out"===e&&t._leave(null,t)};if(p(this.tip).hasClass(Me)){var c=g.getTransitionDurationFromElement(this.tip);p(this.tip).one(g.TRANSITION_END,u).emulateTransitionEnd(c)}else u()}},e.hide=function(e){var t=this,n=this.getTipElement(),i=p.Event(this.constructor.Event.HIDE),r=function(){t._hoverState!==Re&&n.parentNode&&n.parentNode.removeChild(n),t._cleanTipClass(),t.element.removeAttribute("aria-describedby"),p(t.element).trigger(t.constructor.Event.HIDDEN),null!==t._popper&&t._popper.destroy(),e&&e()};if(p(this.element).trigger(i),!i.isDefaultPrevented()){if(p(n).removeClass(We),"ontouchstart"in document.documentElement&&p(document.body).children().off("mouseover",null,p.noop),this._activeTrigger.click=!1,this._activeTrigger[Ue]=!1,this._activeTrigger[Be]=!1,p(this.tip).hasClass(Me)){var o=g.getTransitionDurationFromElement(n);p(n).one(g.TRANSITION_END,r).emulateTransitionEnd(o)}else r();this._hoverState=""}},e.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},e.isWithContent=function(){return Boolean(this.getTitle())},e.addAttachmentClass=function(e){p(this.getTipElement()).addClass(Oe+"-"+e)},e.getTipElement=function(){return this.tip=this.tip||p(this.config.template)[0],this.tip},e.setContent=function(){var e=this.getTipElement();this.setElementContent(p(e.querySelectorAll(".tooltip-inner")),this.getTitle()),p(e).removeClass(Me+" "+We)},e.setElementContent=function(e,t){"object"!=typeof t||!t.nodeType&&!t.jquery?this.config.html?(this.config.sanitize&&(t=De(t,this.config.whiteList,this.config.sanitizeFn)),e.html(t)):e.text(t):this.config.html?p(t).parent().is(e)||e.empty().append(t):e.text(p(t).text())},e.getTitle=function(){var e=this.element.getAttribute("data-original-title");return e||(e="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),e},e._getOffset=function(){var t=this,e={};return"function"==typeof this.config.offset?e.fn=function(e){return e.offsets=l({},e.offsets,t.config.offset(e.offsets,t.element)||{}),e}:e.offset=this.config.offset,e},e._getContainer=function(){return!1===this.config.container?document.body:g.isElement(this.config.container)?p(this.config.container):p(document).find(this.config.container)},e._getAttachment=function(e){return Pe[e.toUpperCase()]},e._setListeners=function(){var i=this;this.config.trigger.split(" ").forEach(function(e){if("click"===e)p(i.element).on(i.constructor.Event.CLICK,i.config.selector,function(e){return i.toggle(e)});else if("manual"!==e){var t=e===Be?i.constructor.Event.MOUSEENTER:i.constructor.Event.FOCUSIN,n=e===Be?i.constructor.Event.MOUSELEAVE:i.constructor.Event.FOCUSOUT;p(i.element).on(t,i.config.selector,function(e){return i._enter(e)}).on(n,i.config.selector,function(e){return i._leave(e)})}}),p(this.element).closest(".modal").on("hide.bs.modal",function(){i.element&&i.hide()}),this.config.selector?this.config=l({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},e._fixTitle=function(){var e=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==e)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},e._enter=function(e,t){var n=this.constructor.DATA_KEY;(t=t||p(e.currentTarget).data(n))||(t=new this.constructor(e.currentTarget,this._getDelegateConfig()),p(e.currentTarget).data(n,t)),e&&(t._activeTrigger["focusin"===e.type?Ue:Be]=!0),p(t.getTipElement()).hasClass(We)||t._hoverState===Re?t._hoverState=Re:(clearTimeout(t._timeout),t._hoverState=Re,t.config.delay&&t.config.delay.show?t._timeout=setTimeout(function(){t._hoverState===Re&&t.show()},t.config.delay.show):t.show())},e._leave=function(e,t){var n=this.constructor.DATA_KEY;(t=t||p(e.currentTarget).data(n))||(t=new this.constructor(e.currentTarget,this._getDelegateConfig()),p(e.currentTarget).data(n,t)),e&&(t._activeTrigger["focusout"===e.type?Ue:Be]=!1),t._isWithActiveTrigger()||(clearTimeout(t._timeout),t._hoverState="out",t.config.delay&&t.config.delay.hide?t._timeout=setTimeout(function(){"out"===t._hoverState&&t.hide()},t.config.delay.hide):t.hide())},e._isWithActiveTrigger=function(){for(var e in this._activeTrigger)if(this._activeTrigger[e])return!0;return!1},e._getConfig=function(e){var t=p(this.element).data();return Object.keys(t).forEach(function(e){-1!==Le.indexOf(e)&&delete t[e]}),"number"==typeof(e=l({},this.constructor.Default,t,"object"==typeof e&&e?e:{})).delay&&(e.delay={show:e.delay,hide:e.delay}),"number"==typeof e.title&&(e.title=e.title.toString()),"number"==typeof e.content&&(e.content=e.content.toString()),g.typeCheckConfig(Ae,e,this.constructor.DefaultType),e.sanitize&&(e.template=De(e.template,e.whiteList,e.sanitizeFn)),e},e._getDelegateConfig=function(){var e={};if(this.config)for(var t in this.config)this.constructor.Default[t]!==this.config[t]&&(e[t]=this.config[t]);return e},e._cleanTipClass=function(){var e=p(this.getTipElement()),t=e.attr("class").match(je);null!==t&&t.length&&e.removeClass(t.join(""))},e._handlePopperPlacementChange=function(e){var t=e.instance;this.tip=t.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(e.placement))},e._fixTransition=function(){var e=this.getTipElement(),t=this.config.animation;null===e.getAttribute("x-placement")&&(p(e).removeClass(Me),this.config.animation=!1,this.hide(),this.show(),this.config.animation=t)},i._jQueryInterface=function(n){return this.each(function(){var e=p(this).data(Ne),t="object"==typeof n&&n;if((e||!/dispose|hide/.test(n))&&(e||(e=new i(this,t),p(this).data(Ne,e)),"string"==typeof n)){if(void 0===e[n])throw new TypeError('No method named "'+n+'"');e[n]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return qe}},{key:"NAME",get:function(){return Ae}},{key:"DATA_KEY",get:function(){return Ne}},{key:"Event",get:function(){return Fe}},{key:"EVENT_KEY",get:function(){return Ie}},{key:"DefaultType",get:function(){return He}}]),i}();p.fn[Ae]=Ke._jQueryInterface,p.fn[Ae].Constructor=Ke,p.fn[Ae].noConflict=function(){return p.fn[Ae]=ke,Ke._jQueryInterface};var $e="popover",Qe="bs.popover",Ve="."+Qe,ze=p.fn[$e],Ye="bs-popover",Xe=new RegExp("(^|\\s)"+Ye+"\\S+","g"),Ge=l({},Ke.Default,{placement:"right",trigger:"click",content:"",template:''}),Je=l({},Ke.DefaultType,{content:"(string|element|function)"}),Ze={HIDE:"hide"+Ve,HIDDEN:"hidden"+Ve,SHOW:"show"+Ve,SHOWN:"shown"+Ve,INSERTED:"inserted"+Ve,CLICK:"click"+Ve,FOCUSIN:"focusin"+Ve,FOCUSOUT:"focusout"+Ve,MOUSEENTER:"mouseenter"+Ve,MOUSELEAVE:"mouseleave"+Ve},et=function(e){var t,n;function i(){return e.apply(this,arguments)||this}n=e,(t=i).prototype=Object.create(n.prototype),(t.prototype.constructor=t).__proto__=n;var r=i.prototype;return r.isWithContent=function(){return this.getTitle()||this._getContent()},r.addAttachmentClass=function(e){p(this.getTipElement()).addClass(Ye+"-"+e)},r.getTipElement=function(){return this.tip=this.tip||p(this.config.template)[0],this.tip},r.setContent=function(){var e=p(this.getTipElement());this.setElementContent(e.find(".popover-header"),this.getTitle());var t=this._getContent();"function"==typeof t&&(t=t.call(this.element)),this.setElementContent(e.find(".popover-body"),t),e.removeClass("fade show")},r._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},r._cleanTipClass=function(){var e=p(this.getTipElement()),t=e.attr("class").match(Xe);null!==t&&0=this._offsets[r]&&(void 0===this._offsets[r+1]||e li > .active",wt=function(){function i(e){this._element=e}var e=i.prototype;return e.show=function(){var n=this;if(!(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&p(this._element).hasClass(yt)||p(this._element).hasClass("disabled"))){var e,i,t=p(this._element).closest(".nav, .list-group")[0],r=g.getSelectorFromElement(this._element);if(t){var o="UL"===t.nodeName||"OL"===t.nodeName?bt:_t;i=(i=p.makeArray(p(t).find(o)))[i.length-1]}var s=p.Event(vt.HIDE,{relatedTarget:this._element}),a=p.Event(vt.SHOW,{relatedTarget:i});if(i&&p(i).trigger(s),p(this._element).trigger(a),!a.isDefaultPrevented()&&!s.isDefaultPrevented()){r&&(e=document.querySelector(r)),this._activate(this._element,t);var l=function(){var e=p.Event(vt.HIDDEN,{relatedTarget:n._element}),t=p.Event(vt.SHOWN,{relatedTarget:i});p(i).trigger(e),p(n._element).trigger(t)};e?this._activate(e,e.parentNode,l):l()}}},e.dispose=function(){p.removeData(this._element,pt),this._element=null},e._activate=function(e,t,n){var i=this,r=(!t||"UL"!==t.nodeName&&"OL"!==t.nodeName?p(t).children(_t):p(t).find(bt))[0],o=n&&r&&p(r).hasClass("fade"),s=function(){return i._transitionComplete(e,r,n)};if(r&&o){var a=g.getTransitionDurationFromElement(r);p(r).removeClass("show").one(g.TRANSITION_END,s).emulateTransitionEnd(a)}else s()},e._transitionComplete=function(e,t,n){if(t){p(t).removeClass(yt);var i=p(t.parentNode).find("> .dropdown-menu .active")[0];i&&p(i).removeClass(yt),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!1)}if(p(e).addClass(yt),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!0),g.reflow(e),e.classList.contains("fade")&&e.classList.add("show"),e.parentNode&&p(e.parentNode).hasClass("dropdown-menu")){var r=p(e).closest(".dropdown")[0];if(r){var o=[].slice.call(r.querySelectorAll(".dropdown-toggle"));p(o).addClass(yt)}e.setAttribute("aria-expanded",!0)}n&&n()},i._jQueryInterface=function(n){return this.each(function(){var e=p(this),t=e.data(pt);if(t||(t=new i(this),e.data(pt,t)),"string"==typeof n){if(void 0===t[n])throw new TypeError('No method named "'+n+'"');t[n]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.3.1"}}]),i}();p(document).on(vt.CLICK_DATA_API,'[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',function(e){e.preventDefault(),wt._jQueryInterface.call(p(this),"show")}),p.fn.tab=wt._jQueryInterface,p.fn.tab.Constructor=wt,p.fn.tab.noConflict=function(){return p.fn.tab=mt,wt._jQueryInterface};var Et="toast",Tt="bs.toast",xt="."+Tt,Ct=p.fn[Et],St={CLICK_DISMISS:"click.dismiss"+xt,HIDE:"hide"+xt,HIDDEN:"hidden"+xt,SHOW:"show"+xt,SHOWN:"shown"+xt},Dt="show",At="showing",Nt={animation:"boolean",autohide:"boolean",delay:"number"},It={animation:!0,autohide:!0,delay:500},kt=function(){function i(e,t){this._element=e,this._config=this._getConfig(t),this._timeout=null,this._setListeners()}var e=i.prototype;return e.show=function(){var e=this;p(this._element).trigger(St.SHOW),this._config.animation&&this._element.classList.add("fade");var t=function(){e._element.classList.remove(At),e._element.classList.add(Dt),p(e._element).trigger(St.SHOWN),e._config.autohide&&e.hide()};if(this._element.classList.remove("hide"),this._element.classList.add(At),this._config.animation){var n=g.getTransitionDurationFromElement(this._element);p(this._element).one(g.TRANSITION_END,t).emulateTransitionEnd(n)}else t()},e.hide=function(e){var t=this;this._element.classList.contains(Dt)&&(p(this._element).trigger(St.HIDE),e?this._close():this._timeout=setTimeout(function(){t._close()},this._config.delay))},e.dispose=function(){clearTimeout(this._timeout),this._timeout=null,this._element.classList.contains(Dt)&&this._element.classList.remove(Dt),p(this._element).off(St.CLICK_DISMISS),p.removeData(this._element,Tt),this._element=null,this._config=null},e._getConfig=function(e){return e=l({},It,p(this._element).data(),"object"==typeof e&&e?e:{}),g.typeCheckConfig(Et,e,this.constructor.DefaultType),e},e._setListeners=function(){var e=this;p(this._element).on(St.CLICK_DISMISS,'[data-dismiss="toast"]',function(){return e.hide(!0)})},e._close=function(){var e=this,t=function(){e._element.classList.add("hide"),p(e._element).trigger(St.HIDDEN)};if(this._element.classList.remove(Dt),this._config.animation){var n=g.getTransitionDurationFromElement(this._element);p(this._element).one(g.TRANSITION_END,t).emulateTransitionEnd(n)}else t()},i._jQueryInterface=function(n){return this.each(function(){var e=p(this),t=e.data(Tt);if(t||(t=new i(this,"object"==typeof n&&n),e.data(Tt,t)),"string"==typeof n){if(void 0===t[n])throw new TypeError('No method named "'+n+'"');t[n](this)}})},s(i,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"DefaultType",get:function(){return Nt}},{key:"Default",get:function(){return It}}]),i}();p.fn[Et]=kt._jQueryInterface,p.fn[Et].Constructor=kt,p.fn[Et].noConflict=function(){return p.fn[Et]=Ct,kt._jQueryInterface},function(){if(void 0===p)throw new TypeError("Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript.");var e=p.fn.jquery.split(" ")[0].split(".");if(e[0]<2&&e[1]<9||1===e[0]&&9===e[1]&&e[2]<1||4<=e[0])throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}(),e.Util=g,e.Alert=c,e.Button=E,e.Carousel=P,e.Collapse=Y,e.Dropdown=ce,e.Modal=Te,e.Popover=et,e.Scrollspy=dt,e.Tab=wt,e.Toast=kt,e.Tooltip=Ke,Object.defineProperty(e,"__esModule",{value:!0})}); \ No newline at end of file diff --git a/community_server/webroot/js/ensurePassphrase.js b/community_server/webroot/js/ensurePassphrase.js deleted file mode 100644 index e2f7a98bb..000000000 --- a/community_server/webroot/js/ensurePassphrase.js +++ /dev/null @@ -1,1927 +0,0 @@ -(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i 1) { - for (var i = 1; i < arguments.length; i++) { - args[i - 1] = arguments[i]; - } - } - queue.push(new Item(fun, args)); - if (queue.length === 1 && !draining) { - runTimeout(drainQueue); - } -}; - -// v8 likes predictible objects -function Item(fun, array) { - this.fun = fun; - this.array = array; -} -Item.prototype.run = function () { - this.fun.apply(null, this.array); -}; -process.title = 'browser'; -process.browser = true; -process.env = {}; -process.argv = []; -process.version = ''; // empty string to avoid regexp issues -process.versions = {}; - -function noop() {} - -process.on = noop; -process.addListener = noop; -process.once = noop; -process.off = noop; -process.removeListener = noop; -process.removeAllListeners = noop; -process.emit = noop; -process.prependListener = noop; -process.prependOnceListener = noop; - -process.listeners = function (name) { return [] } - -process.binding = function (name) { - throw new Error('process.binding is not supported'); -}; - -process.cwd = function () { return '/' }; -process.chdir = function (dir) { - throw new Error('process.chdir is not supported'); -}; -process.umask = function() { return 0; }; - -},{}],2:[function(require,module,exports){ -(function (setImmediate,clearImmediate){ -var nextTick = require('process/browser.js').nextTick; -var apply = Function.prototype.apply; -var slice = Array.prototype.slice; -var immediateIds = {}; -var nextImmediateId = 0; - -// DOM APIs, for completeness - -exports.setTimeout = function() { - return new Timeout(apply.call(setTimeout, window, arguments), clearTimeout); -}; -exports.setInterval = function() { - return new Timeout(apply.call(setInterval, window, arguments), clearInterval); -}; -exports.clearTimeout = -exports.clearInterval = function(timeout) { timeout.close(); }; - -function Timeout(id, clearFn) { - this._id = id; - this._clearFn = clearFn; -} -Timeout.prototype.unref = Timeout.prototype.ref = function() {}; -Timeout.prototype.close = function() { - this._clearFn.call(window, this._id); -}; - -// Does not start the time, just sets up the members needed. -exports.enroll = function(item, msecs) { - clearTimeout(item._idleTimeoutId); - item._idleTimeout = msecs; -}; - -exports.unenroll = function(item) { - clearTimeout(item._idleTimeoutId); - item._idleTimeout = -1; -}; - -exports._unrefActive = exports.active = function(item) { - clearTimeout(item._idleTimeoutId); - - var msecs = item._idleTimeout; - if (msecs >= 0) { - item._idleTimeoutId = setTimeout(function onTimeout() { - if (item._onTimeout) - item._onTimeout(); - }, msecs); - } -}; - -// That's not how node.js implements it but the exposed api is the same. -exports.setImmediate = typeof setImmediate === "function" ? setImmediate : function(fn) { - var id = nextImmediateId++; - var args = arguments.length < 2 ? false : slice.call(arguments, 1); - - immediateIds[id] = true; - - nextTick(function onNextTick() { - if (immediateIds[id]) { - // fn.call() is faster so we optimize for the common use-case - // @see http://jsperf.com/call-apply-segu - if (args) { - fn.apply(null, args); - } else { - fn.call(null); - } - // Prevent ids from leaking - exports.clearImmediate(id); - } - }); - - return id; -}; - -exports.clearImmediate = typeof clearImmediate === "function" ? clearImmediate : function(id) { - delete immediateIds[id]; -}; -}).call(this,require("timers").setImmediate,require("timers").clearImmediate) -},{"process/browser.js":1,"timers":2}],3:[function(require,module,exports){ -(function (global,setImmediate){ -new function() { - -function Vnode(tag, key, attrs0, children, text, dom) { - return {tag: tag, key: key, attrs: attrs0, children: children, text: text, dom: dom, domSize: undefined, state: {}, events: undefined, instance: undefined, skip: false} -} -Vnode.normalize = function(node) { - if (Array.isArray(node)) return Vnode("[", undefined, undefined, Vnode.normalizeChildren(node), undefined, undefined) - if (node != null && typeof node !== "object") return Vnode("#", undefined, undefined, node === false ? "" : node, undefined, undefined) - return node -} -Vnode.normalizeChildren = function normalizeChildren(children) { - for (var i = 0; i < children.length; i++) { - children[i] = Vnode.normalize(children[i]) - } - return children -} -var selectorParser = /(?:(^|#|\.)([^#\.\[\]]+))|(\[(.+?)(?:\s*=\s*("|'|)((?:\\["'\]]|.)*?)\5)?\])/g -var selectorCache = {} -function hyperscript(selector) { - if (selector == null || typeof selector !== "string" && typeof selector.view !== "function") { - throw Error("The selector must be either a string or a component."); - } - if (typeof selector === "string" && selectorCache[selector] === undefined) { - var match, tag, classes = [], attributes = {} - while (match = selectorParser.exec(selector)) { - var type = match[1], value = match[2] - if (type === "" && value !== "") tag = value - else if (type === "#") attributes.id = value - else if (type === ".") classes.push(value) - else if (match[3][0] === "[") { - var attrValue = match[6] - if (attrValue) attrValue = attrValue.replace(/\\(["'])/g, "$1").replace(/\\\\/g, "\\") - if (match[4] === "class") classes.push(attrValue) - else attributes[match[4]] = attrValue || true - } - } - if (classes.length > 0) attributes.className = classes.join(" ") - selectorCache[selector] = function(attrs, children) { - var hasAttrs = false, childList, text - var className = attrs.className || attrs.class - for (var key in attributes) attrs[key] = attributes[key] - if (className !== undefined) { - if (attrs.class !== undefined) { - attrs.class = undefined - attrs.className = className - } - if (attributes.className !== undefined) attrs.className = attributes.className + " " + className - } - for (var key in attrs) { - if (key !== "key") { - hasAttrs = true - break - } - } - if (Array.isArray(children) && children.length == 1 && children[0] != null && children[0].tag === "#") text = children[0].children - else childList = children - return Vnode(tag || "div", attrs.key, hasAttrs ? attrs : undefined, childList, text, undefined) - } - } - var attrs, children, childrenIndex - if (arguments[1] == null || typeof arguments[1] === "object" && arguments[1].tag === undefined && !Array.isArray(arguments[1])) { - attrs = arguments[1] - childrenIndex = 2 - } - else childrenIndex = 1 - if (arguments.length === childrenIndex + 1) { - children = Array.isArray(arguments[childrenIndex]) ? arguments[childrenIndex] : [arguments[childrenIndex]] - } - else { - children = [] - for (var i = childrenIndex; i < arguments.length; i++) children.push(arguments[i]) - } - if (typeof selector === "string") return selectorCache[selector](attrs || {}, Vnode.normalizeChildren(children)) - return Vnode(selector, attrs && attrs.key, attrs || {}, Vnode.normalizeChildren(children), undefined, undefined) -} -hyperscript.trust = function(html) { - if (html == null) html = "" - return Vnode("<", undefined, undefined, html, undefined, undefined) -} -hyperscript.fragment = function(attrs1, children) { - return Vnode("[", attrs1.key, attrs1, Vnode.normalizeChildren(children), undefined, undefined) -} -var m = hyperscript -/** @constructor */ -var PromisePolyfill = function(executor) { - if (!(this instanceof PromisePolyfill)) throw new Error("Promise must be called with `new`") - if (typeof executor !== "function") throw new TypeError("executor must be a function") - var self = this, resolvers = [], rejectors = [], resolveCurrent = handler(resolvers, true), rejectCurrent = handler(rejectors, false) - var instance = self._instance = {resolvers: resolvers, rejectors: rejectors} - var callAsync = typeof setImmediate === "function" ? setImmediate : setTimeout - function handler(list, shouldAbsorb) { - return function execute(value) { - var then - try { - if (shouldAbsorb && value != null && (typeof value === "object" || typeof value === "function") && typeof (then = value.then) === "function") { - if (value === self) throw new TypeError("Promise can't be resolved w/ itself") - executeOnce(then.bind(value)) - } - else { - callAsync(function() { - if (!shouldAbsorb && list.length === 0) console.error("Possible unhandled promise rejection:", value) - for (var i = 0; i < list.length; i++) list[i](value) - resolvers.length = 0, rejectors.length = 0 - instance.state = shouldAbsorb - instance.retry = function() {execute(value)} - }) - } - } - catch (e) { - rejectCurrent(e) - } - } - } - function executeOnce(then) { - var runs = 0 - function run(fn) { - return function(value) { - if (runs++ > 0) return - fn(value) - } - } - var onerror = run(rejectCurrent) - try {then(run(resolveCurrent), onerror)} catch (e) {onerror(e)} - } - executeOnce(executor) -} -PromisePolyfill.prototype.then = function(onFulfilled, onRejection) { - var self = this, instance = self._instance - function handle(callback, list, next, state) { - list.push(function(value) { - if (typeof callback !== "function") next(value) - else try {resolveNext(callback(value))} catch (e) {if (rejectNext) rejectNext(e)} - }) - if (typeof instance.retry === "function" && state === instance.state) instance.retry() - } - var resolveNext, rejectNext - var promise = new PromisePolyfill(function(resolve, reject) {resolveNext = resolve, rejectNext = reject}) - handle(onFulfilled, instance.resolvers, resolveNext, true), handle(onRejection, instance.rejectors, rejectNext, false) - return promise -} -PromisePolyfill.prototype.catch = function(onRejection) { - return this.then(null, onRejection) -} -PromisePolyfill.resolve = function(value) { - if (value instanceof PromisePolyfill) return value - return new PromisePolyfill(function(resolve) {resolve(value)}) -} -PromisePolyfill.reject = function(value) { - return new PromisePolyfill(function(resolve, reject) {reject(value)}) -} -PromisePolyfill.all = function(list) { - return new PromisePolyfill(function(resolve, reject) { - var total = list.length, count = 0, values = [] - if (list.length === 0) resolve([]) - else for (var i = 0; i < list.length; i++) { - (function(i) { - function consume(value) { - count++ - values[i] = value - if (count === total) resolve(values) - } - if (list[i] != null && (typeof list[i] === "object" || typeof list[i] === "function") && typeof list[i].then === "function") { - list[i].then(consume, reject) - } - else consume(list[i]) - })(i) - } - }) -} -PromisePolyfill.race = function(list) { - return new PromisePolyfill(function(resolve, reject) { - for (var i = 0; i < list.length; i++) { - list[i].then(resolve, reject) - } - }) -} -if (typeof window !== "undefined") { - if (typeof window.Promise === "undefined") window.Promise = PromisePolyfill - var PromisePolyfill = window.Promise -} else if (typeof global !== "undefined") { - if (typeof global.Promise === "undefined") global.Promise = PromisePolyfill - var PromisePolyfill = global.Promise -} else { -} -var buildQueryString = function(object) { - if (Object.prototype.toString.call(object) !== "[object Object]") return "" - var args = [] - for (var key0 in object) { - destructure(key0, object[key0]) - } - return args.join("&") - function destructure(key0, value) { - if (Array.isArray(value)) { - for (var i = 0; i < value.length; i++) { - destructure(key0 + "[" + i + "]", value[i]) - } - } - else if (Object.prototype.toString.call(value) === "[object Object]") { - for (var i in value) { - destructure(key0 + "[" + i + "]", value[i]) - } - } - else args.push(encodeURIComponent(key0) + (value != null && value !== "" ? "=" + encodeURIComponent(value) : "")) - } -} -var _8 = function($window, Promise) { - var callbackCount = 0 - var oncompletion - function setCompletionCallback(callback) {oncompletion = callback} - function finalizer() { - var count = 0 - function complete() {if (--count === 0 && typeof oncompletion === "function") oncompletion()} - return function finalize(promise0) { - var then0 = promise0.then - promise0.then = function() { - count++ - var next = then0.apply(promise0, arguments) - next.then(complete, function(e) { - complete() - if (count === 0) throw e - }) - return finalize(next) - } - return promise0 - } - } - function normalize(args, extra) { - if (typeof args === "string") { - var url = args - args = extra || {} - if (args.url == null) args.url = url - } - return args - } - function request(args, extra) { - var finalize = finalizer() - args = normalize(args, extra) - var promise0 = new Promise(function(resolve, reject) { - if (args.method == null) args.method = "GET" - args.method = args.method.toUpperCase() - var useBody = typeof args.useBody === "boolean" ? args.useBody : args.method !== "GET" && args.method !== "TRACE" - if (typeof args.serialize !== "function") args.serialize = typeof FormData !== "undefined" && args.data instanceof FormData ? function(value) {return value} : JSON.stringify - if (typeof args.deserialize !== "function") args.deserialize = deserialize - if (typeof args.extract !== "function") args.extract = extract - args.url = interpolate(args.url, args.data) - if (useBody) args.data = args.serialize(args.data) - else args.url = assemble(args.url, args.data) - var xhr = new $window.XMLHttpRequest() - xhr.open(args.method, args.url, typeof args.async === "boolean" ? args.async : true, typeof args.user === "string" ? args.user : undefined, typeof args.password === "string" ? args.password : undefined) - if (args.serialize === JSON.stringify && useBody) { - xhr.setRequestHeader("Content-Type", "application/json; charset=utf-8") - } - if (args.deserialize === deserialize) { - xhr.setRequestHeader("Accept", "application/json, text/*") - } - if (args.withCredentials) xhr.withCredentials = args.withCredentials - for (var key in args.headers) if ({}.hasOwnProperty.call(args.headers, key)) { - xhr.setRequestHeader(key, args.headers[key]) - } - if (typeof args.config === "function") xhr = args.config(xhr, args) || xhr - xhr.onreadystatechange = function() { - // Don't throw errors on xhr.abort(). XMLHttpRequests ends up in a state of - // xhr.status == 0 and xhr.readyState == 4 if aborted after open, but before completion. - if (xhr.status && xhr.readyState === 4) { - try { - var response = (args.extract !== extract) ? args.extract(xhr, args) : args.deserialize(args.extract(xhr, args)) - if ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304) { - resolve(cast(args.type, response)) - } - else { - var error = new Error(xhr.responseText) - for (var key in response) error[key] = response[key] - reject(error) - } - } - catch (e) { - reject(e) - } - } - } - if (useBody && (args.data != null)) xhr.send(args.data) - else xhr.send() - }) - return args.background === true ? promise0 : finalize(promise0) - } - function jsonp(args, extra) { - var finalize = finalizer() - args = normalize(args, extra) - var promise0 = new Promise(function(resolve, reject) { - var callbackName = args.callbackName || "_mithril_" + Math.round(Math.random() * 1e16) + "_" + callbackCount++ - var script = $window.document.createElement("script") - $window[callbackName] = function(data) { - script.parentNode.removeChild(script) - resolve(cast(args.type, data)) - delete $window[callbackName] - } - script.onerror = function() { - script.parentNode.removeChild(script) - reject(new Error("JSONP request failed")) - delete $window[callbackName] - } - if (args.data == null) args.data = {} - args.url = interpolate(args.url, args.data) - args.data[args.callbackKey || "callback"] = callbackName - script.src = assemble(args.url, args.data) - $window.document.documentElement.appendChild(script) - }) - return args.background === true? promise0 : finalize(promise0) - } - function interpolate(url, data) { - if (data == null) return url - var tokens = url.match(/:[^\/]+/gi) || [] - for (var i = 0; i < tokens.length; i++) { - var key = tokens[i].slice(1) - if (data[key] != null) { - url = url.replace(tokens[i], data[key]) - } - } - return url - } - function assemble(url, data) { - var querystring = buildQueryString(data) - if (querystring !== "") { - var prefix = url.indexOf("?") < 0 ? "?" : "&" - url += prefix + querystring - } - return url - } - function deserialize(data) { - try {return data !== "" ? JSON.parse(data) : null} - catch (e) {throw new Error(data)} - } - function extract(xhr) {return xhr.responseText} - function cast(type0, data) { - if (typeof type0 === "function") { - if (Array.isArray(data)) { - for (var i = 0; i < data.length; i++) { - data[i] = new type0(data[i]) - } - } - else return new type0(data) - } - return data - } - return {request: request, jsonp: jsonp, setCompletionCallback: setCompletionCallback} -} -var requestService = _8(window, PromisePolyfill) -var coreRenderer = function($window) { - var $doc = $window.document - var $emptyFragment = $doc.createDocumentFragment() - var onevent - function setEventCallback(callback) {return onevent = callback} - //create - function createNodes(parent, vnodes, start, end, hooks, nextSibling, ns) { - for (var i = start; i < end; i++) { - var vnode = vnodes[i] - if (vnode != null) { - insertNode(parent, createNode(vnode, hooks, ns), nextSibling) - } - } - } - function createNode(vnode, hooks, ns) { - var tag = vnode.tag - if (vnode.attrs != null) initLifecycle(vnode.attrs, vnode, hooks) - if (typeof tag === "string") { - switch (tag) { - case "#": return createText(vnode) - case "<": return createHTML(vnode) - case "[": return createFragment(vnode, hooks, ns) - default: return createElement(vnode, hooks, ns) - } - } - else return createComponent(vnode, hooks, ns) - } - function createText(vnode) { - return vnode.dom = $doc.createTextNode(vnode.children) - } - function createHTML(vnode) { - var match1 = vnode.children.match(/^\s*?<(\w+)/im) || [] - var parent = {caption: "table", thead: "table", tbody: "table", tfoot: "table", tr: "tbody", th: "tr", td: "tr", colgroup: "table", col: "colgroup"}[match1[1]] || "div" - var temp = $doc.createElement(parent) - temp.innerHTML = vnode.children - vnode.dom = temp.firstChild - vnode.domSize = temp.childNodes.length - var fragment = $doc.createDocumentFragment() - var child - while (child = temp.firstChild) { - fragment.appendChild(child) - } - return fragment - } - function createFragment(vnode, hooks, ns) { - var fragment = $doc.createDocumentFragment() - if (vnode.children != null) { - var children = vnode.children - createNodes(fragment, children, 0, children.length, hooks, null, ns) - } - vnode.dom = fragment.firstChild - vnode.domSize = fragment.childNodes.length - return fragment - } - function createElement(vnode, hooks, ns) { - var tag = vnode.tag - switch (vnode.tag) { - case "svg": ns = "http://www.w3.org/2000/svg"; break - case "math": ns = "http://www.w3.org/1998/Math/MathML"; break - } - var attrs2 = vnode.attrs - var is = attrs2 && attrs2.is - var element = ns ? - is ? $doc.createElementNS(ns, tag, {is: is}) : $doc.createElementNS(ns, tag) : - is ? $doc.createElement(tag, {is: is}) : $doc.createElement(tag) - vnode.dom = element - if (attrs2 != null) { - setAttrs(vnode, attrs2, ns) - } - if (vnode.attrs != null && vnode.attrs.contenteditable != null) { - setContentEditable(vnode) - } - else { - if (vnode.text != null) { - if (vnode.text !== "") element.textContent = vnode.text - else vnode.children = [Vnode("#", undefined, undefined, vnode.text, undefined, undefined)] - } - if (vnode.children != null) { - var children = vnode.children - createNodes(element, children, 0, children.length, hooks, null, ns) - setLateAttrs(vnode) - } - } - return element - } - function createComponent(vnode, hooks, ns) { - vnode.state = Object.create(vnode.tag) - var view = vnode.tag.view - if (view.reentrantLock != null) return $emptyFragment - view.reentrantLock = true - initLifecycle(vnode.tag, vnode, hooks) - vnode.instance = Vnode.normalize(view.call(vnode.state, vnode)) - view.reentrantLock = null - if (vnode.instance != null) { - if (vnode.instance === vnode) throw Error("A view cannot return the vnode it received as arguments") - var element = createNode(vnode.instance, hooks, ns) - vnode.dom = vnode.instance.dom - vnode.domSize = vnode.dom != null ? vnode.instance.domSize : 0 - return element - } - else { - vnode.domSize = 0 - return $emptyFragment - } - } - //update - function updateNodes(parent, old, vnodes, hooks, nextSibling, ns) { - if (old === vnodes || old == null && vnodes == null) return - else if (old == null) createNodes(parent, vnodes, 0, vnodes.length, hooks, nextSibling, undefined) - else if (vnodes == null) removeNodes(old, 0, old.length, vnodes) - else { - if (old.length === vnodes.length) { - var isUnkeyed = false - for (var i = 0; i < vnodes.length; i++) { - if (vnodes[i] != null && old[i] != null) { - isUnkeyed = vnodes[i].key == null && old[i].key == null - break - } - } - if (isUnkeyed) { - for (var i = 0; i < old.length; i++) { - if (old[i] === vnodes[i]) continue - else if (old[i] == null && vnodes[i] != null) insertNode(parent, createNode(vnodes[i], hooks, ns), getNextSibling(old, i + 1, nextSibling)) - else if (vnodes[i] == null) removeNodes(old, i, i + 1, vnodes) - else updateNode(parent, old[i], vnodes[i], hooks, getNextSibling(old, i + 1, nextSibling), false, ns) - } - return - } - } - var recycling = isRecyclable(old, vnodes) - if (recycling) old = old.concat(old.pool) - var oldStart = 0, start = 0, oldEnd = old.length - 1, end = vnodes.length - 1, map - while (oldEnd >= oldStart && end >= start) { - var o = old[oldStart], v = vnodes[start] - if (o === v && !recycling) oldStart++, start++ - else if (o == null) oldStart++ - else if (v == null) start++ - else if (o.key === v.key) { - oldStart++, start++ - updateNode(parent, o, v, hooks, getNextSibling(old, oldStart, nextSibling), recycling, ns) - if (recycling && o.tag === v.tag) insertNode(parent, toFragment(o), nextSibling) - } - else { - var o = old[oldEnd] - if (o === v && !recycling) oldEnd--, start++ - else if (o == null) oldEnd-- - else if (v == null) start++ - else if (o.key === v.key) { - updateNode(parent, o, v, hooks, getNextSibling(old, oldEnd + 1, nextSibling), recycling, ns) - if (recycling || start < end) insertNode(parent, toFragment(o), getNextSibling(old, oldStart, nextSibling)) - oldEnd--, start++ - } - else break - } - } - while (oldEnd >= oldStart && end >= start) { - var o = old[oldEnd], v = vnodes[end] - if (o === v && !recycling) oldEnd--, end-- - else if (o == null) oldEnd-- - else if (v == null) end-- - else if (o.key === v.key) { - updateNode(parent, o, v, hooks, getNextSibling(old, oldEnd + 1, nextSibling), recycling, ns) - if (recycling && o.tag === v.tag) insertNode(parent, toFragment(o), nextSibling) - if (o.dom != null) nextSibling = o.dom - oldEnd--, end-- - } - else { - if (!map) map = getKeyMap(old, oldEnd) - if (v != null) { - var oldIndex = map[v.key] - if (oldIndex != null) { - var movable = old[oldIndex] - updateNode(parent, movable, v, hooks, getNextSibling(old, oldEnd + 1, nextSibling), recycling, ns) - insertNode(parent, toFragment(movable), nextSibling) - old[oldIndex].skip = true - if (movable.dom != null) nextSibling = movable.dom - } - else { - var dom = createNode(v, hooks, undefined) - insertNode(parent, dom, nextSibling) - nextSibling = dom - } - } - end-- - } - if (end < start) break - } - createNodes(parent, vnodes, start, end + 1, hooks, nextSibling, ns) - removeNodes(old, oldStart, oldEnd + 1, vnodes) - } - } - function updateNode(parent, old, vnode, hooks, nextSibling, recycling, ns) { - var oldTag = old.tag, tag = vnode.tag - if (oldTag === tag) { - vnode.state = old.state - vnode.events = old.events - if (shouldUpdate(vnode, old)) return - if (vnode.attrs != null) { - updateLifecycle(vnode.attrs, vnode, hooks, recycling) - } - if (typeof oldTag === "string") { - switch (oldTag) { - case "#": updateText(old, vnode); break - case "<": updateHTML(parent, old, vnode, nextSibling); break - case "[": updateFragment(parent, old, vnode, hooks, nextSibling, ns); break - default: updateElement(old, vnode, hooks, ns) - } - } - else updateComponent(parent, old, vnode, hooks, nextSibling, recycling, ns) - } - else { - removeNode(old, null) - insertNode(parent, createNode(vnode, hooks, ns), nextSibling) - } - } - function updateText(old, vnode) { - if (old.children.toString() !== vnode.children.toString()) { - old.dom.nodeValue = vnode.children - } - vnode.dom = old.dom - } - function updateHTML(parent, old, vnode, nextSibling) { - if (old.children !== vnode.children) { - toFragment(old) - insertNode(parent, createHTML(vnode), nextSibling) - } - else vnode.dom = old.dom, vnode.domSize = old.domSize - } - function updateFragment(parent, old, vnode, hooks, nextSibling, ns) { - updateNodes(parent, old.children, vnode.children, hooks, nextSibling, ns) - var domSize = 0, children = vnode.children - vnode.dom = null - if (children != null) { - for (var i = 0; i < children.length; i++) { - var child = children[i] - if (child != null && child.dom != null) { - if (vnode.dom == null) vnode.dom = child.dom - domSize += child.domSize || 1 - } - } - if (domSize !== 1) vnode.domSize = domSize - } - } - function updateElement(old, vnode, hooks, ns) { - var element = vnode.dom = old.dom - switch (vnode.tag) { - case "svg": ns = "http://www.w3.org/2000/svg"; break - case "math": ns = "http://www.w3.org/1998/Math/MathML"; break - } - if (vnode.tag === "textarea") { - if (vnode.attrs == null) vnode.attrs = {} - if (vnode.text != null) { - vnode.attrs.value = vnode.text //FIXME handle0 multiple children - vnode.text = undefined - } - } - updateAttrs(vnode, old.attrs, vnode.attrs, ns) - if (vnode.attrs != null && vnode.attrs.contenteditable != null) { - setContentEditable(vnode) - } - else if (old.text != null && vnode.text != null && vnode.text !== "") { - if (old.text.toString() !== vnode.text.toString()) old.dom.firstChild.nodeValue = vnode.text - } - else { - if (old.text != null) old.children = [Vnode("#", undefined, undefined, old.text, undefined, old.dom.firstChild)] - if (vnode.text != null) vnode.children = [Vnode("#", undefined, undefined, vnode.text, undefined, undefined)] - updateNodes(element, old.children, vnode.children, hooks, null, ns) - } - } - function updateComponent(parent, old, vnode, hooks, nextSibling, recycling, ns) { - vnode.instance = Vnode.normalize(vnode.tag.view.call(vnode.state, vnode)) - updateLifecycle(vnode.tag, vnode, hooks, recycling) - if (vnode.instance != null) { - if (old.instance == null) insertNode(parent, createNode(vnode.instance, hooks, ns), nextSibling) - else updateNode(parent, old.instance, vnode.instance, hooks, nextSibling, recycling, ns) - vnode.dom = vnode.instance.dom - vnode.domSize = vnode.instance.domSize - } - else if (old.instance != null) { - removeNode(old.instance, null) - vnode.dom = undefined - vnode.domSize = 0 - } - else { - vnode.dom = old.dom - vnode.domSize = old.domSize - } - } - function isRecyclable(old, vnodes) { - if (old.pool != null && Math.abs(old.pool.length - vnodes.length) <= Math.abs(old.length - vnodes.length)) { - var oldChildrenLength = old[0] && old[0].children && old[0].children.length || 0 - var poolChildrenLength = old.pool[0] && old.pool[0].children && old.pool[0].children.length || 0 - var vnodesChildrenLength = vnodes[0] && vnodes[0].children && vnodes[0].children.length || 0 - if (Math.abs(poolChildrenLength - vnodesChildrenLength) <= Math.abs(oldChildrenLength - vnodesChildrenLength)) { - return true - } - } - return false - } - function getKeyMap(vnodes, end) { - var map = {}, i = 0 - for (var i = 0; i < end; i++) { - var vnode = vnodes[i] - if (vnode != null) { - var key2 = vnode.key - if (key2 != null) map[key2] = i - } - } - return map - } - function toFragment(vnode) { - var count0 = vnode.domSize - if (count0 != null || vnode.dom == null) { - var fragment = $doc.createDocumentFragment() - if (count0 > 0) { - var dom = vnode.dom - while (--count0) fragment.appendChild(dom.nextSibling) - fragment.insertBefore(dom, fragment.firstChild) - } - return fragment - } - else return vnode.dom - } - function getNextSibling(vnodes, i, nextSibling) { - for (; i < vnodes.length; i++) { - if (vnodes[i] != null && vnodes[i].dom != null) return vnodes[i].dom - } - return nextSibling - } - function insertNode(parent, dom, nextSibling) { - if (nextSibling && nextSibling.parentNode) parent.insertBefore(dom, nextSibling) - else parent.appendChild(dom) - } - function setContentEditable(vnode) { - var children = vnode.children - if (children != null && children.length === 1 && children[0].tag === "<") { - var content = children[0].children - if (vnode.dom.innerHTML !== content) vnode.dom.innerHTML = content - } - else if (vnode.text != null || children != null && children.length !== 0) throw new Error("Child node of a contenteditable must be trusted") - } - //remove - function removeNodes(vnodes, start, end, context) { - for (var i = start; i < end; i++) { - var vnode = vnodes[i] - if (vnode != null) { - if (vnode.skip) vnode.skip = false - else removeNode(vnode, context) - } - } - } - function removeNode(vnode, context) { - var expected = 1, called = 0 - if (vnode.attrs && vnode.attrs.onbeforeremove) { - var result = vnode.attrs.onbeforeremove.call(vnode.state, vnode) - if (result != null && typeof result.then === "function") { - expected++ - result.then(continuation, continuation) - } - } - if (typeof vnode.tag !== "string" && vnode.tag.onbeforeremove) { - var result = vnode.tag.onbeforeremove.call(vnode.state, vnode) - if (result != null && typeof result.then === "function") { - expected++ - result.then(continuation, continuation) - } - } - continuation() - function continuation() { - if (++called === expected) { - onremove(vnode) - if (vnode.dom) { - var count0 = vnode.domSize || 1 - if (count0 > 1) { - var dom = vnode.dom - while (--count0) { - removeNodeFromDOM(dom.nextSibling) - } - } - removeNodeFromDOM(vnode.dom) - if (context != null && vnode.domSize == null && !hasIntegrationMethods(vnode.attrs) && typeof vnode.tag === "string") { //TODO test custom elements - if (!context.pool) context.pool = [vnode] - else context.pool.push(vnode) - } - } - } - } - } - function removeNodeFromDOM(node) { - var parent = node.parentNode - if (parent != null) parent.removeChild(node) - } - function onremove(vnode) { - if (vnode.attrs && vnode.attrs.onremove) vnode.attrs.onremove.call(vnode.state, vnode) - if (typeof vnode.tag !== "string" && vnode.tag.onremove) vnode.tag.onremove.call(vnode.state, vnode) - if (vnode.instance != null) onremove(vnode.instance) - else { - var children = vnode.children - if (Array.isArray(children)) { - for (var i = 0; i < children.length; i++) { - var child = children[i] - if (child != null) onremove(child) - } - } - } - } - //attrs2 - function setAttrs(vnode, attrs2, ns) { - for (var key2 in attrs2) { - setAttr(vnode, key2, null, attrs2[key2], ns) - } - } - function setAttr(vnode, key2, old, value, ns) { - var element = vnode.dom - if (key2 === "key" || key2 === "is" || (old === value && !isFormAttribute(vnode, key2)) && typeof value !== "object" || typeof value === "undefined" || isLifecycleMethod(key2)) return - var nsLastIndex = key2.indexOf(":") - if (nsLastIndex > -1 && key2.substr(0, nsLastIndex) === "xlink") { - element.setAttributeNS("http://www.w3.org/1999/xlink", key2.slice(nsLastIndex + 1), value) - } - else if (key2[0] === "o" && key2[1] === "n" && typeof value === "function") updateEvent(vnode, key2, value) - else if (key2 === "style") updateStyle(element, old, value) - else if (key2 in element && !isAttribute(key2) && ns === undefined && !isCustomElement(vnode)) { - //setting input[value] to same value by typing on focused element moves cursor to end in Chrome - if (vnode.tag === "input" && key2 === "value" && vnode.dom.value === value && vnode.dom === $doc.activeElement) return - //setting select[value] to same value while having select open blinks select dropdown in Chrome - if (vnode.tag === "select" && key2 === "value" && vnode.dom.value === value && vnode.dom === $doc.activeElement) return - //setting option[value] to same value while having select open blinks select dropdown in Chrome - if (vnode.tag === "option" && key2 === "value" && vnode.dom.value === value) return - element[key2] = value - } - else { - if (typeof value === "boolean") { - if (value) element.setAttribute(key2, "") - else element.removeAttribute(key2) - } - else element.setAttribute(key2 === "className" ? "class" : key2, value) - } - } - function setLateAttrs(vnode) { - var attrs2 = vnode.attrs - if (vnode.tag === "select" && attrs2 != null) { - if ("value" in attrs2) setAttr(vnode, "value", null, attrs2.value, undefined) - if ("selectedIndex" in attrs2) setAttr(vnode, "selectedIndex", null, attrs2.selectedIndex, undefined) - } - } - function updateAttrs(vnode, old, attrs2, ns) { - if (attrs2 != null) { - for (var key2 in attrs2) { - setAttr(vnode, key2, old && old[key2], attrs2[key2], ns) - } - } - if (old != null) { - for (var key2 in old) { - if (attrs2 == null || !(key2 in attrs2)) { - if (key2 === "className") key2 = "class" - if (key2[0] === "o" && key2[1] === "n" && !isLifecycleMethod(key2)) updateEvent(vnode, key2, undefined) - else if (key2 !== "key") vnode.dom.removeAttribute(key2) - } - } - } - } - function isFormAttribute(vnode, attr) { - return attr === "value" || attr === "checked" || attr === "selectedIndex" || attr === "selected" && vnode.dom === $doc.activeElement - } - function isLifecycleMethod(attr) { - return attr === "oninit" || attr === "oncreate" || attr === "onupdate" || attr === "onremove" || attr === "onbeforeremove" || attr === "onbeforeupdate" - } - function isAttribute(attr) { - return attr === "href" || attr === "list" || attr === "form" || attr === "width" || attr === "height"// || attr === "type" - } - function isCustomElement(vnode){ - return vnode.attrs.is || vnode.tag.indexOf("-") > -1 - } - function hasIntegrationMethods(source) { - return source != null && (source.oncreate || source.onupdate || source.onbeforeremove || source.onremove) - } - //style - function updateStyle(element, old, style) { - if (old === style) element.style.cssText = "", old = null - if (style == null) element.style.cssText = "" - else if (typeof style === "string") element.style.cssText = style - else { - if (typeof old === "string") element.style.cssText = "" - for (var key2 in style) { - element.style[key2] = style[key2] - } - if (old != null && typeof old !== "string") { - for (var key2 in old) { - if (!(key2 in style)) element.style[key2] = "" - } - } - } - } - //event - function updateEvent(vnode, key2, value) { - var element = vnode.dom - var callback = typeof onevent !== "function" ? value : function(e) { - var result = value.call(element, e) - onevent.call(element, e) - return result - } - if (key2 in element) element[key2] = typeof value === "function" ? callback : null - else { - var eventName = key2.slice(2) - if (vnode.events === undefined) vnode.events = {} - if (vnode.events[key2] === callback) return - if (vnode.events[key2] != null) element.removeEventListener(eventName, vnode.events[key2], false) - if (typeof value === "function") { - vnode.events[key2] = callback - element.addEventListener(eventName, vnode.events[key2], false) - } - } - } - //lifecycle - function initLifecycle(source, vnode, hooks) { - if (typeof source.oninit === "function") source.oninit.call(vnode.state, vnode) - if (typeof source.oncreate === "function") hooks.push(source.oncreate.bind(vnode.state, vnode)) - } - function updateLifecycle(source, vnode, hooks, recycling) { - if (recycling) initLifecycle(source, vnode, hooks) - else if (typeof source.onupdate === "function") hooks.push(source.onupdate.bind(vnode.state, vnode)) - } - function shouldUpdate(vnode, old) { - var forceVnodeUpdate, forceComponentUpdate - if (vnode.attrs != null && typeof vnode.attrs.onbeforeupdate === "function") forceVnodeUpdate = vnode.attrs.onbeforeupdate.call(vnode.state, vnode, old) - if (typeof vnode.tag !== "string" && typeof vnode.tag.onbeforeupdate === "function") forceComponentUpdate = vnode.tag.onbeforeupdate.call(vnode.state, vnode, old) - if (!(forceVnodeUpdate === undefined && forceComponentUpdate === undefined) && !forceVnodeUpdate && !forceComponentUpdate) { - vnode.dom = old.dom - vnode.domSize = old.domSize - vnode.instance = old.instance - return true - } - return false - } - function render(dom, vnodes) { - if (!dom) throw new Error("Ensure the DOM element being passed to m.route/m.mount/m.render is not undefined.") - var hooks = [] - var active = $doc.activeElement - // First time0 rendering into a node clears it out - if (dom.vnodes == null) dom.textContent = "" - if (!Array.isArray(vnodes)) vnodes = [vnodes] - updateNodes(dom, dom.vnodes, Vnode.normalizeChildren(vnodes), hooks, null, undefined) - dom.vnodes = vnodes - for (var i = 0; i < hooks.length; i++) hooks[i]() - if ($doc.activeElement !== active) active.focus() - } - return {render: render, setEventCallback: setEventCallback} -} -function throttle(callback) { - //60fps translates to 16.6ms, round it down since setTimeout requires int - var time = 16 - var last = 0, pending = null - var timeout = typeof requestAnimationFrame === "function" ? requestAnimationFrame : setTimeout - return function() { - var now = Date.now() - if (last === 0 || now - last >= time) { - last = now - callback() - } - else if (pending === null) { - pending = timeout(function() { - pending = null - callback() - last = Date.now() - }, time - (now - last)) - } - } -} -var _11 = function($window) { - var renderService = coreRenderer($window) - renderService.setEventCallback(function(e) { - if (e.redraw !== false) redraw() - }) - - var callbacks = [] - function subscribe(key1, callback) { - unsubscribe(key1) - callbacks.push(key1, throttle(callback)) - } - function unsubscribe(key1) { - var index = callbacks.indexOf(key1) - if (index > -1) callbacks.splice(index, 2) - } - function redraw() { - for (var i = 1; i < callbacks.length; i += 2) { - callbacks[i]() - } - } - return {subscribe: subscribe, unsubscribe: unsubscribe, redraw: redraw, render: renderService.render} -} -var redrawService = _11(window) -requestService.setCompletionCallback(redrawService.redraw) -var _16 = function(redrawService0) { - return function(root, component) { - if (component === null) { - redrawService0.render(root, []) - redrawService0.unsubscribe(root) - return - } - - if (component.view == null) throw new Error("m.mount(element, component) expects a component, not a vnode") - - var run0 = function() { - redrawService0.render(root, Vnode(component)) - } - redrawService0.subscribe(root, run0) - redrawService0.redraw() - } -} -m.mount = _16(redrawService) -var Promise = PromisePolyfill -var parseQueryString = function(string) { - if (string === "" || string == null) return {} - if (string.charAt(0) === "?") string = string.slice(1) - var entries = string.split("&"), data0 = {}, counters = {} - for (var i = 0; i < entries.length; i++) { - var entry = entries[i].split("=") - var key5 = decodeURIComponent(entry[0]) - var value = entry.length === 2 ? decodeURIComponent(entry[1]) : "" - if (value === "true") value = true - else if (value === "false") value = false - var levels = key5.split(/\]\[?|\[/) - var cursor = data0 - if (key5.indexOf("[") > -1) levels.pop() - for (var j = 0; j < levels.length; j++) { - var level = levels[j], nextLevel = levels[j + 1] - var isNumber = nextLevel == "" || !isNaN(parseInt(nextLevel, 10)) - var isValue = j === levels.length - 1 - if (level === "") { - var key5 = levels.slice(0, j).join() - if (counters[key5] == null) counters[key5] = 0 - level = counters[key5]++ - } - if (cursor[level] == null) { - cursor[level] = isValue ? value : isNumber ? [] : {} - } - cursor = cursor[level] - } - } - return data0 -} -var coreRouter = function($window) { - var supportsPushState = typeof $window.history.pushState === "function" - var callAsync0 = typeof setImmediate === "function" ? setImmediate : setTimeout - function normalize1(fragment0) { - var data = $window.location[fragment0].replace(/(?:%[a-f89][a-f0-9])+/gim, decodeURIComponent) - if (fragment0 === "pathname" && data[0] !== "/") data = "/" + data - return data - } - var asyncId - function debounceAsync(callback0) { - return function() { - if (asyncId != null) return - asyncId = callAsync0(function() { - asyncId = null - callback0() - }) - } - } - function parsePath(path, queryData, hashData) { - var queryIndex = path.indexOf("?") - var hashIndex = path.indexOf("#") - var pathEnd = queryIndex > -1 ? queryIndex : hashIndex > -1 ? hashIndex : path.length - if (queryIndex > -1) { - var queryEnd = hashIndex > -1 ? hashIndex : path.length - var queryParams = parseQueryString(path.slice(queryIndex + 1, queryEnd)) - for (var key4 in queryParams) queryData[key4] = queryParams[key4] - } - if (hashIndex > -1) { - var hashParams = parseQueryString(path.slice(hashIndex + 1)) - for (var key4 in hashParams) hashData[key4] = hashParams[key4] - } - return path.slice(0, pathEnd) - } - var router = {prefix: "#!"} - router.getPath = function() { - var type2 = router.prefix.charAt(0) - switch (type2) { - case "#": return normalize1("hash").slice(router.prefix.length) - case "?": return normalize1("search").slice(router.prefix.length) + normalize1("hash") - default: return normalize1("pathname").slice(router.prefix.length) + normalize1("search") + normalize1("hash") - } - } - router.setPath = function(path, data, options) { - var queryData = {}, hashData = {} - path = parsePath(path, queryData, hashData) - if (data != null) { - for (var key4 in data) queryData[key4] = data[key4] - path = path.replace(/:([^\/]+)/g, function(match2, token) { - delete queryData[token] - return data[token] - }) - } - var query = buildQueryString(queryData) - if (query) path += "?" + query - var hash = buildQueryString(hashData) - if (hash) path += "#" + hash - if (supportsPushState) { - var state = options ? options.state : null - var title = options ? options.title : null - $window.onpopstate() - if (options && options.replace) $window.history.replaceState(state, title, router.prefix + path) - else $window.history.pushState(state, title, router.prefix + path) - } - else $window.location.href = router.prefix + path - } - router.defineRoutes = function(routes, resolve, reject) { - function resolveRoute() { - var path = router.getPath() - var params = {} - var pathname = parsePath(path, params, params) - - var state = $window.history.state - if (state != null) { - for (var k in state) params[k] = state[k] - } - for (var route0 in routes) { - var matcher = new RegExp("^" + route0.replace(/:[^\/]+?\.{3}/g, "(.*?)").replace(/:[^\/]+/g, "([^\\/]+)") + "\/?$") - if (matcher.test(pathname)) { - pathname.replace(matcher, function() { - var keys = route0.match(/:[^\/]+/g) || [] - var values = [].slice.call(arguments, 1, -2) - for (var i = 0; i < keys.length; i++) { - params[keys[i].replace(/:|\./g, "")] = decodeURIComponent(values[i]) - } - resolve(routes[route0], params, path, route0) - }) - return - } - } - reject(path, params) - } - - if (supportsPushState) $window.onpopstate = debounceAsync(resolveRoute) - else if (router.prefix.charAt(0) === "#") $window.onhashchange = resolveRoute - resolveRoute() - } - - return router -} -var _20 = function($window, redrawService0) { - var routeService = coreRouter($window) - var identity = function(v) {return v} - var render1, component, attrs3, currentPath, lastUpdate - var route = function(root, defaultRoute, routes) { - if (root == null) throw new Error("Ensure the DOM element that was passed to `m.route` is not undefined") - var run1 = function() { - if (render1 != null) redrawService0.render(root, render1(Vnode(component, attrs3.key, attrs3))) - } - var bail = function() { - routeService.setPath(defaultRoute, null, {replace: true}) - } - routeService.defineRoutes(routes, function(payload, params, path) { - var update = lastUpdate = function(routeResolver, comp) { - if (update !== lastUpdate) return - component = comp != null && typeof comp.view === "function" ? comp : "div", attrs3 = params, currentPath = path, lastUpdate = null - render1 = (routeResolver.render || identity).bind(routeResolver) - run1() - } - if (payload.view) update({}, payload) - else { - if (payload.onmatch) { - Promise.resolve(payload.onmatch(params, path)).then(function(resolved) { - update(payload, resolved) - }, bail) - } - else update(payload, "div") - } - }, bail) - redrawService0.subscribe(root, run1) - } - route.set = function(path, data, options) { - if (lastUpdate != null) options = {replace: true} - lastUpdate = null - routeService.setPath(path, data, options) - } - route.get = function() {return currentPath} - route.prefix = function(prefix0) {routeService.prefix = prefix0} - route.link = function(vnode1) { - vnode1.dom.setAttribute("href", routeService.prefix + vnode1.attrs.href) - vnode1.dom.onclick = function(e) { - if (e.ctrlKey || e.metaKey || e.shiftKey || e.which === 2) return - e.preventDefault() - e.redraw = false - var href = this.getAttribute("href") - if (href.indexOf(routeService.prefix) === 0) href = href.slice(routeService.prefix.length) - route.set(href, undefined, undefined) - } - } - route.param = function(key3) { - if(typeof attrs3 !== "undefined" && typeof key3 !== "undefined") return attrs3[key3] - return attrs3 - } - return route -} -m.route = _20(window, redrawService) -m.withAttr = function(attrName, callback1, context) { - return function(e) { - callback1.call(context || this, attrName in e.currentTarget ? e.currentTarget[attrName] : e.currentTarget.getAttribute(attrName)) - } -} -var _28 = coreRenderer(window) -m.render = _28.render -m.redraw = redrawService.redraw -m.request = requestService.request -m.jsonp = requestService.jsonp -m.parseQueryString = parseQueryString -m.buildQueryString = buildQueryString -m.version = "1.0.0" -m.vnode = Vnode -if (typeof module !== "undefined") module["exports"] = m -else window.m = m -} -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("timers").setImmediate) -},{"timers":2}],4:[function(require,module,exports){ -'use strict'; - -var _mithril = _interopRequireDefault(require("mithril")); - -var _view = _interopRequireDefault(require("./view")); - -var _de = _interopRequireDefault(require("./texte/de")); - -var _en = _interopRequireDefault(require("./texte/en")); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } - -function launch() { - //m.mount(window.document.getElementById('canvas'), view) - if (window.language === 'en') { - window.texte = _en["default"]; - } else { - window.texte = _de["default"]; - } - - _mithril["default"].mount(window.document.getElementById('gradido-mithril-passphrase'), _view["default"]); -} // cross browser dom is ready module from: -// https://www.competa.com/blog/cross-browser-document-ready-with-vanilla-javascript/ - - -var domIsReady = function (domIsReady) { - var isBrowserIeOrNot = function isBrowserIeOrNot() { - return !document.attachEvent || typeof document.attachEvent === "undefined" ? 'not-ie' : 'ie'; - }; - - domIsReady = function domIsReady(callback) { - if (callback && typeof callback === 'function') { - if (isBrowserIeOrNot() !== 'ie') { - document.addEventListener("DOMContentLoaded", function () { - return callback(); - }); - } else { - document.attachEvent("onreadystatechange", function () { - if (document.readyState === "complete") { - return callback(); - } - }); - } - } else { - console.error('The callback is not a function!'); - } - }; - - return domIsReady; -}(domIsReady || {}); // DOM ready without jquery, loaded from basic.js -// cross browser dom is ready - - -(function (document, window, domIsReady, undefined) { - domIsReady(function () { - launch(); - }); -})(document, window, domIsReady); - -},{"./texte/de":7,"./texte/en":8,"./view":10,"mithril":3}],5:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; - -var _mithril = _interopRequireDefault(require("mithril")); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } - -function oninit(vnode) {} - -function view(vnode) { - return (0, _mithril["default"])('div.modal.visible-modal', { - tabindex: '-1', - role: 'dialog' - }, (0, _mithril["default"])('div.modal-dialog', { - role: 'document' - }, (0, _mithril["default"])('div.modal-content', [(0, _mithril["default"])('p.grid-header', vnode.attrs.title), (0, _mithril["default"])('div.modal-body', vnode.attrs.body), (0, _mithril["default"])('div.modal-footer', [(0, _mithril["default"])('button.btn.btn-primary', { - type: 'button', - 'data-dismiss': 'modal', - onclick: vnode.attrs.dismiss - }, 'Ok')])]))); -} - -var _default = { - view: view, - oninit: oninit -}; -exports["default"] = _default; - -},{"mithril":3}],6:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; - -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ -function getEntities() { - return [['auml', 'ä'], ['ouml', 'ö'], ['uuml', 'ü'], ['Auml', 'Ä'], ['Ouml', 'Ö'], ['Uuml', 'Ü'], ['szlig', 'ß']]; -} - -function decodeHTMLEntities(text) { - var entities = getEntities(); - - for (var i = 0, max = entities.length; i < max; ++i) { - text = text.replace(new RegExp('&' + entities[i][0] + ';', 'g'), entities[i][1]); - } - - return text; -} - -function encodeHTMLEntities(text) { - var entities = getEntities(); - - for (var i = 0, max = entities.length; i < max; ++i) { - //text = text.replace(new RegExp('&'+entities[i][0]+';', 'g'), entities[i][1]); - text = text.replace(new RegExp(entities[i][1], 'g'), '&' + entities[i][0] + ';'); - } - - return text; -} - -var _default = { - decodeHTMLEntities: decodeHTMLEntities, - encodeHTMLEntities: encodeHTMLEntities -}; -exports["default"] = _default; - -},{}],7:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; - -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ -var _default = { - INVALID_PASSPHRASE: 'Das ist nicht deine Passphrase, Möchtest du nochmal schauen wie sie hieß?', - SHOW_PASSPHRASE: 'Passphrase nochmal anzeigen', - DIALOG_SHOW_PASSPHRASE_TITLE: 'Passphrase', - YES: 'Ja', - NEXT: 'Weiter' -}; -exports["default"] = _default; - -},{}],8:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; - -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ -var _default = { - INVALID_PASSPHRASE: 'This is not the correct passphrase. This is not your passphrase, would you like to see what its name was again?', - SHOW_PASSPHRASE: 'Show Passphrase again', - DIALOG_SHOW_PASSPHRASE_TITLE: 'Passphrase', - YES: 'Yes', - NEXT: 'Next' -}; -exports["default"] = _default; - -},{}],9:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; - -var _mithril = _interopRequireDefault(require("mithril")); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } - -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ -function oninit(vnode) {//vnode.state.disabled = false -} - -function clickHandler(vnode) { - vnode.attrs.addWordCallback(vnode.attrs.word); //vnode.state.disabled = true -} - -function view(vnode) { - var classes = '.btn.btn-sm'; - - if (vnode.attrs.disabled) { - classes += '.disabled'; - return (0, _mithril["default"])('span'); - } else { - if (vnode.attrs.btnColor !== undefined) { - classes += '.' + vnode.attrs.btnColor; - } - } - - return (0, _mithril["default"])('button' + classes, { - type: 'button', - disabled: vnode.attrs.disabled, - onclick: function onclick(e) { - clickHandler(vnode); - } - }, vnode.attrs.word); -} - -var _default = { - view: view, - oninit: oninit -}; -exports["default"] = _default; - -},{"mithril":3}],10:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; - -var _mithril = _interopRequireDefault(require("mithril")); - -var _button = _interopRequireDefault(require("./button")); - -var _dialog = _interopRequireDefault(require("../lib/dialog")); - -var _htmlEntities = _interopRequireDefault(require("../lib/htmlEntities")); - -var _passphrase = _interopRequireDefault(require("./passphrase")); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } - -function oninit(vnode) { - vnode.state.passphraseIndices = []; - vnode.state.passphraseIndicesSorted = []; - vnode.state.textboxContent = ''; - vnode.state.btnDisableArray = []; - vnode.state.countValidWords = 0; - var passphraseArray = passphrase.split(' '); - - for (var i in passphraseArray) { - var word = passphraseArray[i]; - var index = mnemonicWords.indexOf(word); - - if (-1 === index) { - if (65533 !== word.charCodeAt(0)) { - console.error("invalid index: %o for word: %o", index, word); - } - } else { - vnode.state.passphraseIndices[i] = index; - } - } - - passphraseArray.sort(); - - for (var _i in passphraseArray) { - var _word = passphraseArray[_i]; - - var _index = mnemonicWords.indexOf(_word); - - if (-1 === _index) { - if (65533 !== _word.charCodeAt(0)) { - console.error("invalid index: %o for word: %o", _index, _word); - } - } else { - vnode.state.passphraseIndicesSorted[_i] = _index; - vnode.state.btnDisableArray[_i] = false; - } - } //console.log("Passphrase: %s", passphrase) - //console.log("Passphrase indices: %o", vnode.state.passphraseIndices) - //console.log("Passphrase sorted indices: %o", vnode.state.passphraseIndicesSorted) - - - vnode.state.valid = true; - vnode.state.complete = false; - vnode.state.showPassphrase = false; -} -/* - *
    - - - - - - -
    -
    -
    - -
    -
    - - Weiter - */ - - -function addWordToTextbox(vnode, word) { - if (vnode.state.textboxContent.length > 1 && vnode.state.textboxContent.slice(-1) != ' ') { - vnode.state.textboxContent += ' '; - } - - vnode.state.textboxContent += word; - checkValidationTextbox(vnode); -} - -function onUpdateText(vnode, newContent) { - //console.log("e: %o", newContent.target.value) - vnode.state.textboxContent = newContent.replace(/[^\S ]+/g, ''); - - if (newContent === '') { - vnode.state.valid = true; - } else { - //if(newContent.slice(-1) === ' ') { - //const words = newContent.split(' ') - checkValidationTextbox(vnode); - } //} - -} - -function checkValidationTextbox(vnode) { - //console.log('checkValidationTextbox') - var words = vnode.state.textboxContent.split(' '); - var countValidWords = 0; - vnode.state.valid = true; //console.log("words: %o", words) - - for (var i in vnode.state.btnDisableArray) { - vnode.state.btnDisableArray[i] = false; - } - - for (var _i2 in words) { - var word = _htmlEntities["default"].encodeHTMLEntities(words[_i2]); - - if (word === "") continue; - var index = mnemonicWords.indexOf(word); //console.log("index of word: %o = %o", word, index) - - if (index !== -1) { - if (vnode.state.passphraseIndices[countValidWords] !== index) { - vnode.state.valid = false; - break; - } else { - countValidWords++; - } - - var sortedIndex = vnode.state.passphraseIndicesSorted.indexOf(index); //console.log("sortedIndex: %o", sortedIndex) - - if (-1 !== sortedIndex) { - vnode.state.btnDisableArray[sortedIndex] = true; - } - } - } - - if (countValidWords === vnode.state.passphraseIndices.length) { - vnode.state.complete = true; - } else { - vnode.state.complete = false; - } - - vnode.state.countValidWords = countValidWords; //console.log("count valid words: %o / %o", countValidWords, vnode.state.passphraseIndices.length) -} - -function view(vnode) { - var classes = '.form-control'; - - if (vnode.state.valid === false) { - classes += '.is-invalid'; - } else if (vnode.state.complete) { - classes += '.is-valid'; - } - - var choosenWords = []; - - for (var i = 0; i < vnode.state.countValidWords; i++) { - choosenWords.push(vnode.state.passphraseIndices[i]); - } - - return (0, _mithril["default"])('div', [(0, _mithril["default"])('div.col-md-12.showcase_content_area.mb-0', [vnode.state.passphraseIndicesSorted.map(function (val, i) { - return (0, _mithril["default"])(_button["default"], { - btnColor: 'btn-outline-warning', - word: _htmlEntities["default"].decodeHTMLEntities(mnemonicWords[val]), - addWordCallback: function addWordCallback(word) { - addWordToTextbox(vnode, word); - }, - disabled: vnode.state.btnDisableArray[i] - }); - }), choosenWords.map(function (val) { - return (0, _mithril["default"])('button.btn.btn-sm.btn-outline-success.disabled', { - disabled: true - }, _htmlEntities["default"].decodeHTMLEntities(mnemonicWords[val])); - })]), (0, _mithril["default"])('div.form-group.row-showcase_row_area', (0, _mithril["default"])('div.col-lg-8.col-md-9.mx-auto', [(0, _mithril["default"])('textarea' + classes + '#inputPassphrase', { - name: 'inputPassphrase', - cols: 10, - rows: 5, - value: vnode.state.textboxContent, - onchange: function onchange(e) { - onUpdateText(vnode, e.target.value); - }, - onkeyup: function onkeyup(e) { - onUpdateText(vnode, e.target.value); - }, - onpaste: function onpaste(e) { - onUpdateText(vnode, e.target.value); - } - }), vnode.state.valid === false ? (0, _mithril["default"])('.invalid-feedback', [window.texte.INVALID_PASSPHRASE, (0, _mithril["default"])('button.btn.btn-primary', { - onclick: function onclick() { - vnode.state.showPassphrase = true; - return false; - } - }, [(0, _mithril["default"])('i.mdi.mdi-eye'), (0, _mithril["default"])('span', _mithril["default"].trust(' ')), (0, _mithril["default"])('span', window.texte.SHOW_PASSPHRASE)])]) : null])), //Weiter - //<%= gettext("Ja") %> - vnode.state.complete ? (0, _mithril["default"])('input.btn.btn-sm.btn-success.pull-right', { - name: 'btnChecked', - type: 'submit', - value: window.texte.NEXT - }) : null], vnode.state.showPassphrase === true ? (0, _mithril["default"])(_dialog["default"], { - title: window.texte.DIALOG_SHOW_PASSPHRASE_TITLE, - body: (0, _mithril["default"])(_passphrase["default"]), - dismiss: function dismiss() { - vnode.state.showPassphrase = false; - } - }) : null); -} - -var _default = { - view: view, - oninit: oninit -}; -exports["default"] = _default; - -},{"../lib/dialog":5,"../lib/htmlEntities":6,"./button":9,"./passphrase":11,"mithril":3}],11:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; - -var _mithril = _interopRequireDefault(require("mithril")); - -var _htmlEntities = _interopRequireDefault(require("../lib/htmlEntities")); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } - -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ - -/* - *
    -
    Passphrase
    -

    Hallo Miau Das sind Wörter einer Passphrase Miau Hilfe Ich mag dich nicht Abenteuer Haus Zoo Garten Ziegel Tisch Auto Husten Hüpfburg Teezeit

    -
    - * - */ -function oninit(vnode) {//vnode.state.disabled = false -} - -function view(vnode) { - var passphraseString = passphrase; - - if (passphrase.slice(-1).charCodeAt(0) === 65533) { - passphraseString = passphrase.substring(0, passphrase.length - 1); - } - - return (0, _mithril["default"])('.col-lg-8.col-md-10.mx-auto.alert.alert-primary', { - style: { - 'text-align': 'center' - } - }, _htmlEntities["default"].decodeHTMLEntities(passphraseString)); -} - -var _default = { - view: view, - oninit: oninit -}; -exports["default"] = _default; - -},{"../lib/htmlEntities":6,"mithril":3}]},{},[4]); diff --git a/community_server/webroot/js/ensurePassphrase.min.js b/community_server/webroot/js/ensurePassphrase.min.js deleted file mode 100644 index 37ae8461f..000000000 --- a/community_server/webroot/js/ensurePassphrase.min.js +++ /dev/null @@ -1 +0,0 @@ -!function i(a,l,u){function s(t,e){if(!l[t]){if(!a[t]){var n="function"==typeof require&&require;if(!e&&n)return n(t,!0);if(c)return c(t,!0);var r=new Error("Cannot find module '"+t+"'");throw r.code="MODULE_NOT_FOUND",r}var o=l[t]={exports:{}};a[t][0].call(o.exports,function(e){return s(a[t][1][e]||e)},o,o.exports,i,a,l,u)}return l[t].exports}for(var c="function"==typeof require&&require,e=0;e(g.devicePixelRatio||1)?"translate("+e+"px, "+u+"px)":"translate3d("+e+"px, "+u+"px, 0)",l)):Object.assign({},r,((t={})[h]=a?u+"px":"",t[m]=d?e+"px":"",t.transform="",t))}function E(e){return e.replace(/left|right|bottom|top/g,(function(e){return _[e]}))}function D(e){return e.replace(/start|end/g,(function(e){return U[e]}))}function P(e,t){var n=!(!t.getRootNode||!t.getRootNode().host);if(e.contains(t))return!0;if(n)do{if(t&&e.isSameNode(t))return!0;t=t.parentNode||t.host}while(t);return!1}function L(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function k(e,o){if("viewport"===o){var a=n(e);e=a.visualViewport,o=a.innerWidth,a=a.innerHeight,e&&/iPhone|iPod|iPad/.test(navigator.platform)&&(o=e.width,a=e.height),e=L({width:o,height:a,x:0,y:0})}else i(o)?e=t(o):(e=n(a=s(e)),o=r(a),(a=u(s(a),e)).height=Math.max(a.height,e.innerHeight),a.width=Math.max(a.width,e.innerWidth),a.x=-o.scrollLeft,a.y=-o.scrollTop,e=L(a));return e}function B(e,t,r){return t="clippingParents"===t?function(e){var t=m(e),n=0<=["absolute","fixed"].indexOf(p(e).position)&&i(e)?v(e):e;return o(n)?t.filter((function(e){return o(e)&&P(e,n)})):[]}(e):[].concat(t),(r=(r=[].concat(t,[r])).reduce((function(t,r){var o=k(e,r),c=n(r=i(r)?r:s(e)),u=i(r)?p(r):{};parseFloat(u.borderTopWidth);var d=parseFloat(u.borderRightWidth)||0,l=parseFloat(u.borderBottomWidth)||0,m=parseFloat(u.borderLeftWidth)||0;u="html"===a(r);var h=f(r),v=r.clientWidth+d,g=r.clientHeight+l;return u&&50m?d:u?c.innerWidth-v-h:r.offsetWidth-v,c=u?c.innerHeight-g:r.offsetHeight-g,r=u?h:r.clientLeft,t.top=Math.max(o.top+l,t.top),t.right=Math.min(o.right-d,t.right),t.bottom=Math.min(o.bottom-c,t.bottom),t.left=Math.max(o.left+r,t.left),t}),k(e,r[0]))).width=r.right-r.left,r.height=r.bottom-r.top,r.x=r.left,r.y=r.top,r}function W(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},{},e)}function A(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}function H(e,n){void 0===n&&(n={});var r=n;n=void 0===(n=r.placement)?e.placement:n;var i=r.boundary,a=void 0===i?"clippingParents":i,f=void 0===(i=r.rootBoundary)?"viewport":i;i=void 0===(i=r.elementContext)?"popper":i;var p=r.altBoundary,c=void 0!==p&&p;r=W("number"!=typeof(r=void 0===(r=r.padding)?0:r)?r:A(r,q));var u=e.elements.reference;p=e.rects.popper,a=B(o(c=e.elements[c?"popper"===i?"reference":"popper":i])?c:c.contextElement||s(e.elements.popper),a,f),c=M({reference:f=t(u),element:p,strategy:"absolute",placement:n}),p=L(Object.assign({},p,{},c)),f="popper"===i?p:f;var d={top:a.top-f.top+r.top,bottom:f.bottom-a.bottom+r.bottom,left:a.left-f.left+r.left,right:f.right-a.right+r.right};if(e=e.modifiersData.offset,"popper"===i&&e){var l=e[n];Object.keys(d).forEach((function(e){var t=0<=["right","bottom"].indexOf(e)?1:-1,n=0<=["top","bottom"].indexOf(e)?"y":"x";d[e]+=l[n]*t}))}return d}function T(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function R(e){return["top","right","bottom","left"].some((function(t){return 0<=e[t]}))}var q=["top","bottom","right","left"],S=q.reduce((function(e,t){return e.concat([t+"-start",t+"-end"])}),[]),C=[].concat(q,["auto"]).reduce((function(e,t){return e.concat([t,t+"-start",t+"-end"])}),[]),F="beforeRead read afterRead beforeMain main afterMain beforeWrite write afterWrite".split(" "),N={placement:"bottom",modifiers:[],strategy:"absolute"},V={passive:!0},I={top:"auto",right:"auto",bottom:"auto",left:"auto"},_={left:"right",right:"left",bottom:"top",top:"bottom"},U={start:"end",end:"start"},z=[{name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var t=e.state,r=e.instance,o=(e=e.options).scroll,i=void 0===o||o,a=void 0===(e=e.resize)||e,s=n(t.elements.popper),f=[].concat(t.scrollParents.reference,t.scrollParents.popper);return i&&f.forEach((function(e){e.addEventListener("scroll",r.update,V)})),a&&s.addEventListener("resize",r.update,V),function(){i&&f.forEach((function(e){e.removeEventListener("scroll",r.update,V)})),a&&s.removeEventListener("resize",r.update,V)}},data:{}},{name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state;t.modifiersData[e.name]=M({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})},data:{}},{name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,n=e.options;e=void 0===(e=n.gpuAcceleration)||e,n=void 0===(n=n.adaptive)||n,e={placement:y(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:e},null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,{},j(Object.assign({},e,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:n})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,{},j(Object.assign({},e,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}},{name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach((function(e){var n=t.styles[e]||{},r=t.attributes[e]||{},o=t.elements[e];i(o)&&a(o)&&(Object.assign(o.style,n),Object.keys(r).forEach((function(e){var t=r[e];!1===t?o.removeAttribute(e):o.setAttribute(e,!0===t?"":t)})))}))},effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach((function(e){var r=t.elements[e],o=t.attributes[e]||{};e=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce((function(e,t){return e[t]="",e}),{}),i(r)&&a(r)&&(Object.assign(r.style,e),Object.keys(o).forEach((function(e){r.removeAttribute(e)})))}))}},requires:["computeStyles"]},{name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,n=e.name,r=void 0===(e=e.options.offset)?[0,0]:e,o=(e=C.reduce((function(e,n){var o=t.rects,i=y(n),a=0<=["left","top"].indexOf(i)?-1:1,s="function"==typeof r?r(Object.assign({},o,{placement:n})):r;return o=(o=s[0])||0,s=((s=s[1])||0)*a,i=0<=["left","right"].indexOf(i)?{x:s,y:o}:{x:o,y:s},e[n]=i,e}),{}))[t.placement],i=o.x;o=o.y,null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=i,t.modifiersData.popperOffsets.y+=o),t.modifiersData[n]=e}},{name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options;if(e=e.name,!t.modifiersData[e]._skip){var r=n.mainAxis;r=void 0===r||r;var o=n.altAxis;o=void 0===o||o;var i=n.fallbackPlacements,a=n.padding,s=n.boundary,f=n.rootBoundary,p=n.altBoundary,c=n.flipVariations,u=void 0===c||c,d=n.allowedAutoPlacements;c=y(n=t.options.placement),i=i||(c!==n&&u?function(e){if("auto"===y(e))return[];var t=E(e);return[D(e),t,D(t)]}(n):[E(n)]);var l=[n].concat(i).reduce((function(e,n){return e.concat("auto"===y(n)?function(e,t){void 0===t&&(t={});var n=t.boundary,r=t.rootBoundary,o=t.padding,i=t.flipVariations,a=t.allowedAutoPlacements,s=void 0===a?C:a,f=t.placement.split("-")[1],p=(f?i?S:S.filter((function(e){return e.split("-")[1]===f})):q).filter((function(e){return 0<=s.indexOf(e)})).reduce((function(t,i){return t[i]=H(e,{placement:i,boundary:n,rootBoundary:r,padding:o})[y(i)],t}),{});return Object.keys(p).sort((function(e,t){return p[e]-p[t]}))}(t,{placement:n,boundary:s,rootBoundary:f,padding:a,flipVariations:u,allowedAutoPlacements:d}):n)}),[]);n=t.rects.reference,i=t.rects.popper;var m=new Map;c=!0;for(var h=l[0],v=0;vi[O]&&(x=E(x)),O=E(x),w=[],r&&w.push(0>=M[b]),o&&w.push(0>=M[x],0>=M[O]),w.every((function(e){return e}))){h=g,c=!1;break}m.set(g,w)}if(c)for(r=function(e){var t=l.find((function(t){if(t=m.get(t))return t.slice(0,e).every((function(e){return e}))}));if(t)return h=t,"break"},o=u?3:1;0 SECONDS_TO[i]) { - var partIndexName = i.toLowerCase() + 's'; - parts[partIndexName] = Math.floor(parts.seconds / SECONDS_TO[i]); - parts.seconds -= parts[partIndexName] * SECONDS_TO[i]; - if(durationString.length > 0) { - durationString += ', '; - } - var unitName = partIndexName; - if(parts[partIndexName] === 1) { - unitName = partIndexName.substring(0, partIndexName.length-1); - } - durationString += parts[partIndexName] + ' ' + unitName; - break; - } - - } - return durationString; - -} \ No newline at end of file diff --git a/community_server/webroot/js/tippy-bundle.umd.min.js b/community_server/webroot/js/tippy-bundle.umd.min.js deleted file mode 100644 index e0c7b943a..000000000 --- a/community_server/webroot/js/tippy-bundle.umd.min.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("@popperjs/core")):"function"==typeof define&&define.amd?define(["@popperjs/core"],e):(t=t||self).tippy=e(t.Popper)}(this,(function(t){"use strict";var e="undefined"!=typeof window&&"undefined"!=typeof document,n=e?navigator.userAgent:"",i=/MSIE |Trident\//.test(n),r={passive:!0,capture:!0};function o(t,e,n){if(Array.isArray(t)){var i=t[e];return null==i?Array.isArray(n)?n[e]:n:i}return t}function a(t,e){var n={}.toString.call(t);return 0===n.indexOf("[object")&&n.indexOf(e+"]")>-1}function s(t,e){return"function"==typeof t?t.apply(void 0,e):t}function p(t,e){return 0===e?t:function(i){clearTimeout(n),n=setTimeout((function(){t(i)}),e)};var n}function u(t,e){var n=Object.assign({},t);return e.forEach((function(t){delete n[t]})),n}function c(t){return[].concat(t)}function f(t,e){-1===t.indexOf(e)&&t.push(e)}function l(t){return t.split("-")[0]}function d(t){return[].slice.call(t)}function v(){return document.createElement("div")}function m(t){return["Element","Fragment"].some((function(e){return a(t,e)}))}function g(t){return a(t,"MouseEvent")}function h(t){return!(!t||!t._tippy||t._tippy.reference!==t)}function b(t){return m(t)?[t]:function(t){return a(t,"NodeList")}(t)?d(t):Array.isArray(t)?t:d(document.querySelectorAll(t))}function y(t,e){t.forEach((function(t){t&&(t.style.transitionDuration=e+"ms")}))}function x(t,e){t.forEach((function(t){t&&t.setAttribute("data-state",e)}))}function w(t){var e=c(t)[0];return e&&e.ownerDocument||document}function E(t,e,n){var i=e+"EventListener";["transitionend","webkitTransitionEnd"].forEach((function(e){t[i](e,n)}))}var T={isTouch:!1},A=0;function C(){T.isTouch||(T.isTouch=!0,window.performance&&document.addEventListener("mousemove",O))}function O(){var t=performance.now();t-A<20&&(T.isTouch=!1,document.removeEventListener("mousemove",O)),A=t}function L(){var t=document.activeElement;if(h(t)){var e=t._tippy;t.blur&&!e.state.isVisible&&t.blur()}}var D=Object.assign({appendTo:function(){return document.body},aria:{content:"auto",expanded:"auto"},delay:0,duration:[300,250],getReferenceClientRect:null,hideOnClick:!0,ignoreAttributes:!1,interactive:!1,interactiveBorder:2,interactiveDebounce:0,moveTransition:"",offset:[0,10],onAfterUpdate:function(){},onBeforeUpdate:function(){},onCreate:function(){},onDestroy:function(){},onHidden:function(){},onHide:function(){},onMount:function(){},onShow:function(){},onShown:function(){},onTrigger:function(){},onUntrigger:function(){},onClickOutside:function(){},placement:"top",plugins:[],popperOptions:{},render:null,showOnCreate:!1,touch:!0,trigger:"mouseenter focus",triggerTarget:null},{animateFill:!1,followCursor:!1,inlinePositioning:!1,sticky:!1},{},{allowHTML:!1,animation:"fade",arrow:!0,content:"",inertia:!1,maxWidth:350,role:"tooltip",theme:"",zIndex:9999}),k=Object.keys(D);function M(t){var e=(t.plugins||[]).reduce((function(e,n){var i=n.name,r=n.defaultValue;return i&&(e[i]=void 0!==t[i]?t[i]:r),e}),{});return Object.assign({},t,{},e)}function V(t,e){var n=Object.assign({},e,{content:s(e.content,[t])},e.ignoreAttributes?{}:function(t,e){return(e?Object.keys(M(Object.assign({},D,{plugins:e}))):k).reduce((function(e,n){var i=(t.getAttribute("data-tippy-"+n)||"").trim();if(!i)return e;if("content"===n)e[n]=i;else try{e[n]=JSON.parse(i)}catch(t){e[n]=i}return e}),{})}(t,e.plugins));return n.aria=Object.assign({},D.aria,{},n.aria),n.aria={expanded:"auto"===n.aria.expanded?e.interactive:n.aria.expanded,content:"auto"===n.aria.content?e.interactive?null:"describedby":n.aria.content},n}function R(t,e){t.innerHTML=e}function j(t){var e=v();return!0===t?e.className="tippy-arrow":(e.className="tippy-svg-arrow",m(t)?e.appendChild(t):R(e,t)),e}function P(t,e){m(e.content)?(R(t,""),t.appendChild(e.content)):"function"!=typeof e.content&&(e.allowHTML?R(t,e.content):t.textContent=e.content)}function I(t){var e=t.firstElementChild,n=d(e.children);return{box:e,content:n.find((function(t){return t.classList.contains("tippy-content")})),arrow:n.find((function(t){return t.classList.contains("tippy-arrow")||t.classList.contains("tippy-svg-arrow")})),backdrop:n.find((function(t){return t.classList.contains("tippy-backdrop")}))}}function S(t){var e=v(),n=v();n.className="tippy-box",n.setAttribute("data-state","hidden"),n.setAttribute("tabindex","-1");var i=v();function r(n,i){var r=I(e),o=r.box,a=r.content,s=r.arrow;i.theme?o.setAttribute("data-theme",i.theme):o.removeAttribute("data-theme"),"string"==typeof i.animation?o.setAttribute("data-animation",i.animation):o.removeAttribute("data-animation"),i.inertia?o.setAttribute("data-inertia",""):o.removeAttribute("data-inertia"),o.style.maxWidth="number"==typeof i.maxWidth?i.maxWidth+"px":i.maxWidth,i.role?o.setAttribute("role",i.role):o.removeAttribute("role"),n.content===i.content&&n.allowHTML===i.allowHTML||P(a,t.props),i.arrow?s?n.arrow!==i.arrow&&(o.removeChild(s),o.appendChild(j(i.arrow))):o.appendChild(j(i.arrow)):s&&o.removeChild(s)}return i.className="tippy-content",i.setAttribute("data-state","hidden"),P(i,t.props),e.appendChild(n),n.appendChild(i),r(t.props,t.props),{popper:e,onUpdate:r}}S.$$tippy=!0;var B=1,H=[],U=[];function N(e,n){var a,u,m,h,b,A,C,O,L=V(e,Object.assign({},D,{},M(n))),k=!1,R=!1,j=!1,P=!1,S=[],N=p(ht,L.interactiveDebounce),X=w(L.triggerTarget||e),Y=B++,_=(O=L.plugins).filter((function(t,e){return O.indexOf(t)===e})),z={id:Y,reference:e,popper:v(),popperInstance:null,props:L,state:{isEnabled:!0,isVisible:!1,isDestroyed:!1,isMounted:!1,isShown:!1},plugins:_,clearDelayTimeouts:function(){clearTimeout(a),clearTimeout(u),cancelAnimationFrame(m)},setProps:function(t){if(z.state.isDestroyed)return;it("onBeforeUpdate",[z,t]),mt();var n=z.props,i=V(e,Object.assign({},z.props,{},t,{ignoreAttributes:!0}));z.props=i,vt(),n.interactiveDebounce!==i.interactiveDebounce&&(at(),N=p(ht,i.interactiveDebounce));n.triggerTarget&&!i.triggerTarget?c(n.triggerTarget).forEach((function(t){t.removeAttribute("aria-expanded")})):i.triggerTarget&&e.removeAttribute("aria-expanded");ot(),nt(),q&&q(n,i);z.popperInstance&&(wt(),Tt().forEach((function(t){requestAnimationFrame(t._tippy.popperInstance.forceUpdate)})));it("onAfterUpdate",[z,t])},setContent:function(t){z.setProps({content:t})},show:function(){var t=z.state.isVisible,e=z.state.isDestroyed,n=!z.state.isEnabled,i=T.isTouch&&!z.props.touch,r=o(z.props.duration,0,D.duration);if(t||e||n||i)return;if(Z().hasAttribute("disabled"))return;if(it("onShow",[z],!1),!1===z.props.onShow(z))return;z.state.isVisible=!0,Q()&&(W.style.visibility="visible");nt(),ct(),z.state.isMounted||(W.style.transition="none");if(Q()){var a=tt(),p=a.box,u=a.content;y([p,u],0)}A=function(){if(z.state.isVisible&&!P){if(P=!0,W.offsetHeight,W.style.transition=z.props.moveTransition,Q()&&z.props.animation){var t=tt(),e=t.box,n=t.content;y([e,n],r),x([e,n],"visible")}rt(),ot(),f(U,z),z.state.isMounted=!0,it("onMount",[z]),z.props.animation&&Q()&&function(t,e){lt(t,e)}(r,(function(){z.state.isShown=!0,it("onShown",[z])}))}},function(){var t,e=z.props.appendTo,n=Z();t=z.props.interactive&&e===D.appendTo||"parent"===e?n.parentNode:s(e,[n]);t.contains(W)||t.appendChild(W);wt()}()},hide:function(){var t=!z.state.isVisible,e=z.state.isDestroyed,n=!z.state.isEnabled,i=o(z.props.duration,1,D.duration);if(t||e||n)return;if(it("onHide",[z],!1),!1===z.props.onHide(z))return;z.state.isVisible=!1,z.state.isShown=!1,P=!1,Q()&&(W.style.visibility="hidden");if(at(),ft(),nt(),Q()){var r=tt(),a=r.box,s=r.content;z.props.animation&&(y([a,s],i),x([a,s],"hidden"))}rt(),ot(),z.props.animation?Q()&&function(t,e){lt(t,(function(){!z.state.isVisible&&W.parentNode&&W.parentNode.contains(W)&&e()}))}(i,z.unmount):z.unmount()},hideWithInteractivity:function(t){X.body.addEventListener("mouseleave",Ct),X.addEventListener("mousemove",N),f(H,N),N(t)},enable:function(){z.state.isEnabled=!0},disable:function(){z.hide(),z.state.isEnabled=!1},unmount:function(){z.state.isVisible&&z.hide();if(!z.state.isMounted)return;Et(),Tt().forEach((function(t){t._tippy.unmount()})),W.parentNode&&W.parentNode.removeChild(W);U=U.filter((function(t){return t!==z})),z.state.isMounted=!1,it("onHidden",[z])},destroy:function(){if(z.state.isDestroyed)return;z.clearDelayTimeouts(),z.unmount(),mt(),delete e._tippy,z.state.isDestroyed=!0,it("onDestroy",[z])}};if(!L.render)return z;var F=L.render(z),W=F.popper,q=F.onUpdate;W.setAttribute("data-tippy-root",""),W.id="tippy-"+z.id,z.popper=W,e._tippy=z,W._tippy=z;var $=_.map((function(t){return t.fn(z)})),J=e.hasAttribute("aria-expanded");return vt(),ot(),nt(),it("onCreate",[z]),L.showOnCreate&&At(),W.addEventListener("mouseenter",(function(){z.props.interactive&&z.state.isVisible&&z.clearDelayTimeouts()})),W.addEventListener("mouseleave",(function(t){z.props.interactive&&z.props.trigger.indexOf("mouseenter")>=0&&(X.addEventListener("mousemove",N),N(t))})),z;function G(){var t=z.props.touch;return Array.isArray(t)?t:[t,0]}function K(){return"hold"===G()[0]}function Q(){var t;return!!(null==(t=z.props.render)?void 0:t.$$tippy)}function Z(){return C||e}function tt(){return I(W)}function et(t){return z.state.isMounted&&!z.state.isVisible||T.isTouch||h&&"focus"===h.type?0:o(z.props.delay,t?0:1,D.delay)}function nt(){W.style.pointerEvents=z.props.interactive&&z.state.isVisible?"":"none",W.style.zIndex=""+z.props.zIndex}function it(t,e,n){var i;(void 0===n&&(n=!0),$.forEach((function(n){n[t]&&n[t].apply(void 0,e)})),n)&&(i=z.props)[t].apply(i,e)}function rt(){var t=z.props.aria;if(t.content){var n="aria-"+t.content,i=W.id;c(z.props.triggerTarget||e).forEach((function(t){var e=t.getAttribute(n);if(z.state.isVisible)t.setAttribute(n,e?e+" "+i:i);else{var r=e&&e.replace(i,"").trim();r?t.setAttribute(n,r):t.removeAttribute(n)}}))}}function ot(){!J&&z.props.aria.expanded&&c(z.props.triggerTarget||e).forEach((function(t){z.props.interactive?t.setAttribute("aria-expanded",z.state.isVisible&&t===Z()?"true":"false"):t.removeAttribute("aria-expanded")}))}function at(){X.body.removeEventListener("mouseleave",Ct),X.removeEventListener("mousemove",N),H=H.filter((function(t){return t!==N}))}function st(t){if(!(T.isTouch&&(j||"mousedown"===t.type)||z.props.interactive&&W.contains(t.target))){if(Z().contains(t.target)){if(T.isTouch)return;if(z.state.isVisible&&z.props.trigger.indexOf("click")>=0)return}else it("onClickOutside",[z,t]);!0===z.props.hideOnClick&&(k=!1,z.clearDelayTimeouts(),z.hide(),R=!0,setTimeout((function(){R=!1})),z.state.isMounted||ft())}}function pt(){j=!0}function ut(){j=!1}function ct(){X.addEventListener("mousedown",st,!0),X.addEventListener("touchend",st,r),X.addEventListener("touchstart",ut,r),X.addEventListener("touchmove",pt,r)}function ft(){X.removeEventListener("mousedown",st,!0),X.removeEventListener("touchend",st,r),X.removeEventListener("touchstart",ut,r),X.removeEventListener("touchmove",pt,r)}function lt(t,e){var n=tt().box;function i(t){t.target===n&&(E(n,"remove",i),e())}if(0===t)return e();E(n,"remove",b),E(n,"add",i),b=i}function dt(t,n,i){void 0===i&&(i=!1),c(z.props.triggerTarget||e).forEach((function(e){e.addEventListener(t,n,i),S.push({node:e,eventType:t,handler:n,options:i})}))}function vt(){var t;K()&&(dt("touchstart",gt,{passive:!0}),dt("touchend",bt,{passive:!0})),(t=z.props.trigger,t.split(/\s+/).filter(Boolean)).forEach((function(t){if("manual"!==t)switch(dt(t,gt),t){case"mouseenter":dt("mouseleave",bt);break;case"focus":dt(i?"focusout":"blur",yt);break;case"focusin":dt("focusout",yt)}}))}function mt(){S.forEach((function(t){var e=t.node,n=t.eventType,i=t.handler,r=t.options;e.removeEventListener(n,i,r)})),S=[]}function gt(t){var e,n=!1;if(z.state.isEnabled&&!xt(t)&&!R){var i="focus"===(null==(e=h)?void 0:e.type);h=t,C=t.currentTarget,ot(),!z.state.isVisible&&g(t)&&H.forEach((function(e){return e(t)})),"click"===t.type&&(z.props.trigger.indexOf("mouseenter")<0||k)&&!1!==z.props.hideOnClick&&z.state.isVisible?n=!0:At(t),"click"===t.type&&(k=!n),n&&!i&&Ct(t)}}function ht(t){var n=t.target,i=e.contains(n)||W.contains(n);"mousemove"===t.type&&i||function(t,e){var n=e.clientX,i=e.clientY;return t.every((function(t){var e=t.popperRect,r=t.popperState,o=t.props.interactiveBorder,a=l(r.placement),s=r.modifiersData.offset;if(!s)return!0;var p="bottom"===a?s.top.y:0,u="top"===a?s.bottom.y:0,c="right"===a?s.left.x:0,f="left"===a?s.right.x:0,d=e.top-i+p>o,v=i-e.bottom-u>o,m=e.left-n+c>o,g=n-e.right-f>o;return d||v||m||g}))}(Tt().concat(W).map((function(t){var e,n=null==(e=t._tippy.popperInstance)?void 0:e.state;return n?{popperRect:t.getBoundingClientRect(),popperState:n,props:L}:null})).filter(Boolean),t)&&(at(),Ct(t))}function bt(t){xt(t)||z.props.trigger.indexOf("click")>=0&&k||(z.props.interactive?z.hideWithInteractivity(t):Ct(t))}function yt(t){z.props.trigger.indexOf("focusin")<0&&t.target!==Z()||z.props.interactive&&t.relatedTarget&&W.contains(t.relatedTarget)||Ct(t)}function xt(t){return!!T.isTouch&&K()!==t.type.indexOf("touch")>=0}function wt(){Et();var n=z.props,i=n.popperOptions,r=n.placement,o=n.offset,a=n.getReferenceClientRect,s=n.moveTransition,p=Q()?I(W).arrow:null,u=a?{getBoundingClientRect:a,contextElement:a.contextElement||Z()}:e,c=[{name:"offset",options:{offset:o}},{name:"preventOverflow",options:{padding:{top:2,bottom:2,left:5,right:5}}},{name:"flip",options:{padding:5}},{name:"computeStyles",options:{adaptive:!s}},{name:"$$tippy",enabled:!0,phase:"beforeWrite",requires:["computeStyles"],fn:function(t){var e=t.state;if(Q()){var n=tt().box;["placement","reference-hidden","escaped"].forEach((function(t){"placement"===t?n.setAttribute("data-placement",e.placement):e.attributes.popper["data-popper-"+t]?n.setAttribute("data-"+t,""):n.removeAttribute("data-"+t)})),e.attributes.popper={}}}}];Q()&&p&&c.push({name:"arrow",options:{element:p,padding:3}}),c.push.apply(c,(null==i?void 0:i.modifiers)||[]),z.popperInstance=t.createPopper(u,W,Object.assign({},i,{placement:r,onFirstUpdate:A,modifiers:c}))}function Et(){z.popperInstance&&(z.popperInstance.destroy(),z.popperInstance=null)}function Tt(){return d(W.querySelectorAll("[data-tippy-root]"))}function At(t){z.clearDelayTimeouts(),t&&it("onTrigger",[z,t]),ct();var e=et(!0),n=G(),i=n[0],r=n[1];T.isTouch&&"hold"===i&&r&&(e=r),e?a=setTimeout((function(){z.show()}),e):z.show()}function Ct(t){if(z.clearDelayTimeouts(),it("onUntrigger",[z,t]),z.state.isVisible){if(!(z.props.trigger.indexOf("mouseenter")>=0&&z.props.trigger.indexOf("click")>=0&&["mouseleave","mousemove"].indexOf(t.type)>=0&&k)){var e=et(!1);e?u=setTimeout((function(){z.state.isVisible&&z.hide()}),e):m=requestAnimationFrame((function(){z.hide()}))}}else ft()}}function X(t,e){void 0===e&&(e={});var n=D.plugins.concat(e.plugins||[]);document.addEventListener("touchstart",C,r),window.addEventListener("blur",L);var i=Object.assign({},e,{plugins:n}),o=b(t).reduce((function(t,e){var n=e&&N(e,i);return n&&t.push(n),t}),[]);return m(t)?o[0]:o}X.defaultProps=D,X.setDefaultProps=function(t){Object.keys(t).forEach((function(e){D[e]=t[e]}))},X.currentInput=T;var Y={mouseover:"mouseenter",focusin:"focus",click:"click"};var _={name:"animateFill",defaultValue:!1,fn:function(t){var e;if(!(null==(e=t.props.render)?void 0:e.$$tippy))return{};var n=I(t.popper),i=n.box,r=n.content,o=t.props.animateFill?function(){var t=v();return t.className="tippy-backdrop",x([t],"hidden"),t}():null;return{onCreate:function(){o&&(i.insertBefore(o,i.firstElementChild),i.setAttribute("data-animatefill",""),i.style.overflow="hidden",t.setProps({arrow:!1,animation:"shift-away"}))},onMount:function(){if(o){var t=i.style.transitionDuration,e=Number(t.replace("ms",""));r.style.transitionDelay=Math.round(e/10)+"ms",o.style.transitionDuration=t,x([o],"visible")}},onShow:function(){o&&(o.style.transitionDuration="0ms")},onHide:function(){o&&x([o],"hidden")}}}};var z={name:"followCursor",defaultValue:!1,fn:function(t){var e=t.reference,n=w(t.props.triggerTarget||e),i=null;function r(){return"manual"===t.props.trigger.trim()}function o(){var e=!!r()||null!==i&&!(0===i.clientX&&0===i.clientY);return t.props.followCursor&&e}function a(e){e&&t.setProps({getReferenceClientRect:null})}function s(){o()?n.addEventListener("mousemove",u):a(t.props.followCursor)}function p(){n.removeEventListener("mousemove",u)}function u(n){i={clientX:n.clientX,clientY:n.clientY};var r=!n.target||e.contains(n.target),o=t.props.followCursor,a=n.clientX,s=n.clientY,u=e.getBoundingClientRect(),c=a-u.left,f=s-u.top;!r&&t.props.interactive||t.setProps({getReferenceClientRect:function(){var t=e.getBoundingClientRect(),n=a,i=s;"initial"===o&&(n=t.left+c,i=t.top+f);var r="horizontal"===o?t.top:i,p="vertical"===o?t.right:n,u="horizontal"===o?t.bottom:i,l="vertical"===o?t.left:n;return{width:p-l,height:u-r,top:r,right:p,bottom:u,left:l}}}),(T.isTouch||"initial"===t.props.followCursor&&t.state.isVisible)&&p()}return{onAfterUpdate:function(t,e){var n=e.followCursor;void 0===n||n||a(!0)},onMount:function(){o()&&u(i)},onShow:function(){r()&&(i={clientX:0,clientY:0},s())},onTrigger:function(t,e){i||(g(e)&&(i={clientX:e.clientX,clientY:e.clientY}),s())},onUntrigger:function(){t.state.isVisible||(p(),i=null)},onHidden:function(){p(),i=null}}}};var F={name:"inlinePositioning",defaultValue:!1,fn:function(t){var e,n=t.reference;var i=-1,r=!1,o={name:"tippyInlinePositioning",enabled:!0,phase:"afterWrite",fn:function(r){var o=r.state;t.props.inlinePositioning&&(e!==o.placement&&t.setProps({getReferenceClientRect:function(){return function(t){return function(t,e,n,i){if(n.length<2||null===t)return e;if(2===n.length&&i>=0&&n[0].left>n[1].right)return n[i]||e;switch(t){case"top":case"bottom":var r=n[0],o=n[n.length-1],a="top"===t,s=r.top,p=o.bottom,u=a?r.left:o.left,c=a?r.right:o.right;return{top:s,bottom:p,left:u,right:c,width:c-u,height:p-s};case"left":case"right":var f=Math.min.apply(Math,n.map((function(t){return t.left}))),l=Math.max.apply(Math,n.map((function(t){return t.right}))),d=n.filter((function(e){return"left"===t?e.left===f:e.right===l})),v=d[0].top,m=d[d.length-1].bottom;return{top:v,bottom:m,left:f,right:l,width:l-f,height:m-v};default:return e}}(l(t),n.getBoundingClientRect(),d(n.getClientRects()),i)}(o.placement)}}),e=o.placement)}};function a(){var e;r||(e=function(t,e){var n;return{popperOptions:Object.assign({},t.popperOptions,{modifiers:[].concat(((null==(n=t.popperOptions)?void 0:n.modifiers)||[]).filter((function(t){return t.name!==e.name})),[e])})}}(t.props,o),r=!0,t.setProps(e),r=!1)}return{onCreate:a,onAfterUpdate:a,onTrigger:function(e,n){if(g(n)){var r=d(t.reference.getClientRects()),o=r.find((function(t){return t.left-2<=n.clientX&&t.right+2>=n.clientX&&t.top-2<=n.clientY&&t.bottom+2>=n.clientY}));i=r.indexOf(o)}},onUntrigger:function(){i=-1}}}};var W={name:"sticky",defaultValue:!1,fn:function(t){var e=t.reference,n=t.popper;function i(e){return!0===t.props.sticky||t.props.sticky===e}var r=null,o=null;function a(){var s=i("reference")?(t.popperInstance?t.popperInstance.state.elements.reference:e).getBoundingClientRect():null,p=i("popper")?n.getBoundingClientRect():null;(s&&q(r,s)||p&&q(o,p))&&t.popperInstance&&t.popperInstance.update(),r=s,o=p,t.state.isMounted&&requestAnimationFrame(a)}return{onMount:function(){t.props.sticky&&a()}}}};function q(t,e){return!t||!e||(t.top!==e.top||t.right!==e.right||t.bottom!==e.bottom||t.left!==e.left)}return e&&function(t){var e=document.createElement("style");e.textContent=t,e.setAttribute("data-tippy-stylesheet","");var n=document.head,i=document.querySelector("head>style,head>link");i?n.insertBefore(e,i):n.appendChild(e)}('.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}'),X.setDefaultProps({plugins:[_,z,F,W],render:S}),X.createSingleton=function(t,e){void 0===e&&(e={});var n,i=t,r=[],o=e.overrides;function a(){r=i.map((function(t){return t.reference}))}function s(t){i.forEach((function(e){t?e.enable():e.disable()}))}s(!1),a();var p={fn:function(){return{onDestroy:function(){s(!0)},onTrigger:function(t,e){var a=e.currentTarget,s=r.indexOf(a);if(a!==n){n=a;var p=(o||[]).concat("content").reduce((function(t,e){return t[e]=i[s].props[e],t}),{});t.setProps(Object.assign({},p,{getReferenceClientRect:function(){return a.getBoundingClientRect()}}))}}}}},c=X(v(),Object.assign({},u(e,["overrides"]),{plugins:[p].concat(e.plugins||[]),triggerTarget:r})),f=c.setProps;return c.setProps=function(t){o=t.overrides||o,f(t)},c.setInstances=function(t){s(!0),i=t,s(!1),a(),c.setProps({triggerTarget:r})},c},X.delegate=function(t,e){var n=[],i=[],r=e.target,o=u(e,["target"]),a=Object.assign({},o,{trigger:"manual",touch:!1}),s=Object.assign({},o,{showOnCreate:!0}),p=X(t,a);function f(t){if(t.target){var n=t.target.closest(r);if(n){var o=n.getAttribute("data-tippy-trigger")||e.trigger||D.trigger;if(!n._tippy&&!("touchstart"===t.type&&"boolean"==typeof s.touch||"touchstart"!==t.type&&o.indexOf(Y[t.type]))){var a=X(n,s);a&&(i=i.concat(a))}}}}function l(t,e,i,r){void 0===r&&(r=!1),t.addEventListener(e,i,r),n.push({node:t,eventType:e,handler:i,options:r})}return c(p).forEach((function(t){var e=t.destroy;t.destroy=function(t){void 0===t&&(t=!0),t&&i.forEach((function(t){t.destroy()})),i=[],n.forEach((function(t){var e=t.node,n=t.eventType,i=t.handler,r=t.options;e.removeEventListener(n,i,r)})),n=[],e()},function(t){var e=t.reference;l(e,"touchstart",f),l(e,"mouseover",f),l(e,"focusin",f),l(e,"click",f)}(t)})),p},X.hideAll=function(t){var e=void 0===t?{}:t,n=e.exclude,i=e.duration;U.forEach((function(t){var e=!1;if(n&&(e=h(n)?t.reference===n:t.popper===n.popper),!e){var r=t.props.duration;t.setProps({duration:i}),t.hide(),t.state.isDestroyed||t.setProps({duration:r})}}))},X.roundArrow='',X})); -//# sourceMappingURL=tippy-bundle.umd.min.js.map diff --git a/community_server/webroot/js/userSearch.js b/community_server/webroot/js/userSearch.js deleted file mode 100644 index 993c05ab0..000000000 --- a/community_server/webroot/js/userSearch.js +++ /dev/null @@ -1,9185 +0,0 @@ -(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i 1) { - for (var i = 1; i < arguments.length; i++) { - args[i - 1] = arguments[i]; - } - } - queue.push(new Item(fun, args)); - if (queue.length === 1 && !draining) { - runTimeout(drainQueue); - } -}; - -// v8 likes predictible objects -function Item(fun, array) { - this.fun = fun; - this.array = array; -} -Item.prototype.run = function () { - this.fun.apply(null, this.array); -}; -process.title = 'browser'; -process.browser = true; -process.env = {}; -process.argv = []; -process.version = ''; // empty string to avoid regexp issues -process.versions = {}; - -function noop() {} - -process.on = noop; -process.addListener = noop; -process.once = noop; -process.off = noop; -process.removeListener = noop; -process.removeAllListeners = noop; -process.emit = noop; -process.prependListener = noop; -process.prependOnceListener = noop; - -process.listeners = function (name) { return [] } - -process.binding = function (name) { - throw new Error('process.binding is not supported'); -}; - -process.cwd = function () { return '/' }; -process.chdir = function (dir) { - throw new Error('process.chdir is not supported'); -}; -process.umask = function() { return 0; }; - -},{}],2:[function(require,module,exports){ -(function (setImmediate,clearImmediate){(function (){ -var nextTick = require('process/browser.js').nextTick; -var apply = Function.prototype.apply; -var slice = Array.prototype.slice; -var immediateIds = {}; -var nextImmediateId = 0; - -// DOM APIs, for completeness - -exports.setTimeout = function() { - return new Timeout(apply.call(setTimeout, window, arguments), clearTimeout); -}; -exports.setInterval = function() { - return new Timeout(apply.call(setInterval, window, arguments), clearInterval); -}; -exports.clearTimeout = -exports.clearInterval = function(timeout) { timeout.close(); }; - -function Timeout(id, clearFn) { - this._id = id; - this._clearFn = clearFn; -} -Timeout.prototype.unref = Timeout.prototype.ref = function() {}; -Timeout.prototype.close = function() { - this._clearFn.call(window, this._id); -}; - -// Does not start the time, just sets up the members needed. -exports.enroll = function(item, msecs) { - clearTimeout(item._idleTimeoutId); - item._idleTimeout = msecs; -}; - -exports.unenroll = function(item) { - clearTimeout(item._idleTimeoutId); - item._idleTimeout = -1; -}; - -exports._unrefActive = exports.active = function(item) { - clearTimeout(item._idleTimeoutId); - - var msecs = item._idleTimeout; - if (msecs >= 0) { - item._idleTimeoutId = setTimeout(function onTimeout() { - if (item._onTimeout) - item._onTimeout(); - }, msecs); - } -}; - -// That's not how node.js implements it but the exposed api is the same. -exports.setImmediate = typeof setImmediate === "function" ? setImmediate : function(fn) { - var id = nextImmediateId++; - var args = arguments.length < 2 ? false : slice.call(arguments, 1); - - immediateIds[id] = true; - - nextTick(function onNextTick() { - if (immediateIds[id]) { - // fn.call() is faster so we optimize for the common use-case - // @see http://jsperf.com/call-apply-segu - if (args) { - fn.apply(null, args); - } else { - fn.call(null); - } - // Prevent ids from leaking - exports.clearImmediate(id); - } - }); - - return id; -}; - -exports.clearImmediate = typeof clearImmediate === "function" ? clearImmediate : function(id) { - delete immediateIds[id]; -}; -}).call(this)}).call(this,require("timers").setImmediate,require("timers").clearImmediate) -},{"process/browser.js":1,"timers":2}],3:[function(require,module,exports){ -(function (global,setImmediate){(function (){ -new function() { - -function Vnode(tag, key, attrs0, children, text, dom) { - return {tag: tag, key: key, attrs: attrs0, children: children, text: text, dom: dom, domSize: undefined, state: {}, events: undefined, instance: undefined, skip: false} -} -Vnode.normalize = function(node) { - if (Array.isArray(node)) return Vnode("[", undefined, undefined, Vnode.normalizeChildren(node), undefined, undefined) - if (node != null && typeof node !== "object") return Vnode("#", undefined, undefined, node === false ? "" : node, undefined, undefined) - return node -} -Vnode.normalizeChildren = function normalizeChildren(children) { - for (var i = 0; i < children.length; i++) { - children[i] = Vnode.normalize(children[i]) - } - return children -} -var selectorParser = /(?:(^|#|\.)([^#\.\[\]]+))|(\[(.+?)(?:\s*=\s*("|'|)((?:\\["'\]]|.)*?)\5)?\])/g -var selectorCache = {} -function hyperscript(selector) { - if (selector == null || typeof selector !== "string" && typeof selector.view !== "function") { - throw Error("The selector must be either a string or a component."); - } - if (typeof selector === "string" && selectorCache[selector] === undefined) { - var match, tag, classes = [], attributes = {} - while (match = selectorParser.exec(selector)) { - var type = match[1], value = match[2] - if (type === "" && value !== "") tag = value - else if (type === "#") attributes.id = value - else if (type === ".") classes.push(value) - else if (match[3][0] === "[") { - var attrValue = match[6] - if (attrValue) attrValue = attrValue.replace(/\\(["'])/g, "$1").replace(/\\\\/g, "\\") - if (match[4] === "class") classes.push(attrValue) - else attributes[match[4]] = attrValue || true - } - } - if (classes.length > 0) attributes.className = classes.join(" ") - selectorCache[selector] = function(attrs, children) { - var hasAttrs = false, childList, text - var className = attrs.className || attrs.class - for (var key in attributes) attrs[key] = attributes[key] - if (className !== undefined) { - if (attrs.class !== undefined) { - attrs.class = undefined - attrs.className = className - } - if (attributes.className !== undefined) attrs.className = attributes.className + " " + className - } - for (var key in attrs) { - if (key !== "key") { - hasAttrs = true - break - } - } - if (Array.isArray(children) && children.length == 1 && children[0] != null && children[0].tag === "#") text = children[0].children - else childList = children - return Vnode(tag || "div", attrs.key, hasAttrs ? attrs : undefined, childList, text, undefined) - } - } - var attrs, children, childrenIndex - if (arguments[1] == null || typeof arguments[1] === "object" && arguments[1].tag === undefined && !Array.isArray(arguments[1])) { - attrs = arguments[1] - childrenIndex = 2 - } - else childrenIndex = 1 - if (arguments.length === childrenIndex + 1) { - children = Array.isArray(arguments[childrenIndex]) ? arguments[childrenIndex] : [arguments[childrenIndex]] - } - else { - children = [] - for (var i = childrenIndex; i < arguments.length; i++) children.push(arguments[i]) - } - if (typeof selector === "string") return selectorCache[selector](attrs || {}, Vnode.normalizeChildren(children)) - return Vnode(selector, attrs && attrs.key, attrs || {}, Vnode.normalizeChildren(children), undefined, undefined) -} -hyperscript.trust = function(html) { - if (html == null) html = "" - return Vnode("<", undefined, undefined, html, undefined, undefined) -} -hyperscript.fragment = function(attrs1, children) { - return Vnode("[", attrs1.key, attrs1, Vnode.normalizeChildren(children), undefined, undefined) -} -var m = hyperscript -/** @constructor */ -var PromisePolyfill = function(executor) { - if (!(this instanceof PromisePolyfill)) throw new Error("Promise must be called with `new`") - if (typeof executor !== "function") throw new TypeError("executor must be a function") - var self = this, resolvers = [], rejectors = [], resolveCurrent = handler(resolvers, true), rejectCurrent = handler(rejectors, false) - var instance = self._instance = {resolvers: resolvers, rejectors: rejectors} - var callAsync = typeof setImmediate === "function" ? setImmediate : setTimeout - function handler(list, shouldAbsorb) { - return function execute(value) { - var then - try { - if (shouldAbsorb && value != null && (typeof value === "object" || typeof value === "function") && typeof (then = value.then) === "function") { - if (value === self) throw new TypeError("Promise can't be resolved w/ itself") - executeOnce(then.bind(value)) - } - else { - callAsync(function() { - if (!shouldAbsorb && list.length === 0) console.error("Possible unhandled promise rejection:", value) - for (var i = 0; i < list.length; i++) list[i](value) - resolvers.length = 0, rejectors.length = 0 - instance.state = shouldAbsorb - instance.retry = function() {execute(value)} - }) - } - } - catch (e) { - rejectCurrent(e) - } - } - } - function executeOnce(then) { - var runs = 0 - function run(fn) { - return function(value) { - if (runs++ > 0) return - fn(value) - } - } - var onerror = run(rejectCurrent) - try {then(run(resolveCurrent), onerror)} catch (e) {onerror(e)} - } - executeOnce(executor) -} -PromisePolyfill.prototype.then = function(onFulfilled, onRejection) { - var self = this, instance = self._instance - function handle(callback, list, next, state) { - list.push(function(value) { - if (typeof callback !== "function") next(value) - else try {resolveNext(callback(value))} catch (e) {if (rejectNext) rejectNext(e)} - }) - if (typeof instance.retry === "function" && state === instance.state) instance.retry() - } - var resolveNext, rejectNext - var promise = new PromisePolyfill(function(resolve, reject) {resolveNext = resolve, rejectNext = reject}) - handle(onFulfilled, instance.resolvers, resolveNext, true), handle(onRejection, instance.rejectors, rejectNext, false) - return promise -} -PromisePolyfill.prototype.catch = function(onRejection) { - return this.then(null, onRejection) -} -PromisePolyfill.resolve = function(value) { - if (value instanceof PromisePolyfill) return value - return new PromisePolyfill(function(resolve) {resolve(value)}) -} -PromisePolyfill.reject = function(value) { - return new PromisePolyfill(function(resolve, reject) {reject(value)}) -} -PromisePolyfill.all = function(list) { - return new PromisePolyfill(function(resolve, reject) { - var total = list.length, count = 0, values = [] - if (list.length === 0) resolve([]) - else for (var i = 0; i < list.length; i++) { - (function(i) { - function consume(value) { - count++ - values[i] = value - if (count === total) resolve(values) - } - if (list[i] != null && (typeof list[i] === "object" || typeof list[i] === "function") && typeof list[i].then === "function") { - list[i].then(consume, reject) - } - else consume(list[i]) - })(i) - } - }) -} -PromisePolyfill.race = function(list) { - return new PromisePolyfill(function(resolve, reject) { - for (var i = 0; i < list.length; i++) { - list[i].then(resolve, reject) - } - }) -} -if (typeof window !== "undefined") { - if (typeof window.Promise === "undefined") window.Promise = PromisePolyfill - var PromisePolyfill = window.Promise -} else if (typeof global !== "undefined") { - if (typeof global.Promise === "undefined") global.Promise = PromisePolyfill - var PromisePolyfill = global.Promise -} else { -} -var buildQueryString = function(object) { - if (Object.prototype.toString.call(object) !== "[object Object]") return "" - var args = [] - for (var key0 in object) { - destructure(key0, object[key0]) - } - return args.join("&") - function destructure(key0, value) { - if (Array.isArray(value)) { - for (var i = 0; i < value.length; i++) { - destructure(key0 + "[" + i + "]", value[i]) - } - } - else if (Object.prototype.toString.call(value) === "[object Object]") { - for (var i in value) { - destructure(key0 + "[" + i + "]", value[i]) - } - } - else args.push(encodeURIComponent(key0) + (value != null && value !== "" ? "=" + encodeURIComponent(value) : "")) - } -} -var _8 = function($window, Promise) { - var callbackCount = 0 - var oncompletion - function setCompletionCallback(callback) {oncompletion = callback} - function finalizer() { - var count = 0 - function complete() {if (--count === 0 && typeof oncompletion === "function") oncompletion()} - return function finalize(promise0) { - var then0 = promise0.then - promise0.then = function() { - count++ - var next = then0.apply(promise0, arguments) - next.then(complete, function(e) { - complete() - if (count === 0) throw e - }) - return finalize(next) - } - return promise0 - } - } - function normalize(args, extra) { - if (typeof args === "string") { - var url = args - args = extra || {} - if (args.url == null) args.url = url - } - return args - } - function request(args, extra) { - var finalize = finalizer() - args = normalize(args, extra) - var promise0 = new Promise(function(resolve, reject) { - if (args.method == null) args.method = "GET" - args.method = args.method.toUpperCase() - var useBody = typeof args.useBody === "boolean" ? args.useBody : args.method !== "GET" && args.method !== "TRACE" - if (typeof args.serialize !== "function") args.serialize = typeof FormData !== "undefined" && args.data instanceof FormData ? function(value) {return value} : JSON.stringify - if (typeof args.deserialize !== "function") args.deserialize = deserialize - if (typeof args.extract !== "function") args.extract = extract - args.url = interpolate(args.url, args.data) - if (useBody) args.data = args.serialize(args.data) - else args.url = assemble(args.url, args.data) - var xhr = new $window.XMLHttpRequest() - xhr.open(args.method, args.url, typeof args.async === "boolean" ? args.async : true, typeof args.user === "string" ? args.user : undefined, typeof args.password === "string" ? args.password : undefined) - if (args.serialize === JSON.stringify && useBody) { - xhr.setRequestHeader("Content-Type", "application/json; charset=utf-8") - } - if (args.deserialize === deserialize) { - xhr.setRequestHeader("Accept", "application/json, text/*") - } - if (args.withCredentials) xhr.withCredentials = args.withCredentials - for (var key in args.headers) if ({}.hasOwnProperty.call(args.headers, key)) { - xhr.setRequestHeader(key, args.headers[key]) - } - if (typeof args.config === "function") xhr = args.config(xhr, args) || xhr - xhr.onreadystatechange = function() { - // Don't throw errors on xhr.abort(). XMLHttpRequests ends up in a state of - // xhr.status == 0 and xhr.readyState == 4 if aborted after open, but before completion. - if (xhr.status && xhr.readyState === 4) { - try { - var response = (args.extract !== extract) ? args.extract(xhr, args) : args.deserialize(args.extract(xhr, args)) - if ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304) { - resolve(cast(args.type, response)) - } - else { - var error = new Error(xhr.responseText) - for (var key in response) error[key] = response[key] - reject(error) - } - } - catch (e) { - reject(e) - } - } - } - if (useBody && (args.data != null)) xhr.send(args.data) - else xhr.send() - }) - return args.background === true ? promise0 : finalize(promise0) - } - function jsonp(args, extra) { - var finalize = finalizer() - args = normalize(args, extra) - var promise0 = new Promise(function(resolve, reject) { - var callbackName = args.callbackName || "_mithril_" + Math.round(Math.random() * 1e16) + "_" + callbackCount++ - var script = $window.document.createElement("script") - $window[callbackName] = function(data) { - script.parentNode.removeChild(script) - resolve(cast(args.type, data)) - delete $window[callbackName] - } - script.onerror = function() { - script.parentNode.removeChild(script) - reject(new Error("JSONP request failed")) - delete $window[callbackName] - } - if (args.data == null) args.data = {} - args.url = interpolate(args.url, args.data) - args.data[args.callbackKey || "callback"] = callbackName - script.src = assemble(args.url, args.data) - $window.document.documentElement.appendChild(script) - }) - return args.background === true? promise0 : finalize(promise0) - } - function interpolate(url, data) { - if (data == null) return url - var tokens = url.match(/:[^\/]+/gi) || [] - for (var i = 0; i < tokens.length; i++) { - var key = tokens[i].slice(1) - if (data[key] != null) { - url = url.replace(tokens[i], data[key]) - } - } - return url - } - function assemble(url, data) { - var querystring = buildQueryString(data) - if (querystring !== "") { - var prefix = url.indexOf("?") < 0 ? "?" : "&" - url += prefix + querystring - } - return url - } - function deserialize(data) { - try {return data !== "" ? JSON.parse(data) : null} - catch (e) {throw new Error(data)} - } - function extract(xhr) {return xhr.responseText} - function cast(type0, data) { - if (typeof type0 === "function") { - if (Array.isArray(data)) { - for (var i = 0; i < data.length; i++) { - data[i] = new type0(data[i]) - } - } - else return new type0(data) - } - return data - } - return {request: request, jsonp: jsonp, setCompletionCallback: setCompletionCallback} -} -var requestService = _8(window, PromisePolyfill) -var coreRenderer = function($window) { - var $doc = $window.document - var $emptyFragment = $doc.createDocumentFragment() - var onevent - function setEventCallback(callback) {return onevent = callback} - //create - function createNodes(parent, vnodes, start, end, hooks, nextSibling, ns) { - for (var i = start; i < end; i++) { - var vnode = vnodes[i] - if (vnode != null) { - insertNode(parent, createNode(vnode, hooks, ns), nextSibling) - } - } - } - function createNode(vnode, hooks, ns) { - var tag = vnode.tag - if (vnode.attrs != null) initLifecycle(vnode.attrs, vnode, hooks) - if (typeof tag === "string") { - switch (tag) { - case "#": return createText(vnode) - case "<": return createHTML(vnode) - case "[": return createFragment(vnode, hooks, ns) - default: return createElement(vnode, hooks, ns) - } - } - else return createComponent(vnode, hooks, ns) - } - function createText(vnode) { - return vnode.dom = $doc.createTextNode(vnode.children) - } - function createHTML(vnode) { - var match1 = vnode.children.match(/^\s*?<(\w+)/im) || [] - var parent = {caption: "table", thead: "table", tbody: "table", tfoot: "table", tr: "tbody", th: "tr", td: "tr", colgroup: "table", col: "colgroup"}[match1[1]] || "div" - var temp = $doc.createElement(parent) - temp.innerHTML = vnode.children - vnode.dom = temp.firstChild - vnode.domSize = temp.childNodes.length - var fragment = $doc.createDocumentFragment() - var child - while (child = temp.firstChild) { - fragment.appendChild(child) - } - return fragment - } - function createFragment(vnode, hooks, ns) { - var fragment = $doc.createDocumentFragment() - if (vnode.children != null) { - var children = vnode.children - createNodes(fragment, children, 0, children.length, hooks, null, ns) - } - vnode.dom = fragment.firstChild - vnode.domSize = fragment.childNodes.length - return fragment - } - function createElement(vnode, hooks, ns) { - var tag = vnode.tag - switch (vnode.tag) { - case "svg": ns = "http://www.w3.org/2000/svg"; break - case "math": ns = "http://www.w3.org/1998/Math/MathML"; break - } - var attrs2 = vnode.attrs - var is = attrs2 && attrs2.is - var element = ns ? - is ? $doc.createElementNS(ns, tag, {is: is}) : $doc.createElementNS(ns, tag) : - is ? $doc.createElement(tag, {is: is}) : $doc.createElement(tag) - vnode.dom = element - if (attrs2 != null) { - setAttrs(vnode, attrs2, ns) - } - if (vnode.attrs != null && vnode.attrs.contenteditable != null) { - setContentEditable(vnode) - } - else { - if (vnode.text != null) { - if (vnode.text !== "") element.textContent = vnode.text - else vnode.children = [Vnode("#", undefined, undefined, vnode.text, undefined, undefined)] - } - if (vnode.children != null) { - var children = vnode.children - createNodes(element, children, 0, children.length, hooks, null, ns) - setLateAttrs(vnode) - } - } - return element - } - function createComponent(vnode, hooks, ns) { - vnode.state = Object.create(vnode.tag) - var view = vnode.tag.view - if (view.reentrantLock != null) return $emptyFragment - view.reentrantLock = true - initLifecycle(vnode.tag, vnode, hooks) - vnode.instance = Vnode.normalize(view.call(vnode.state, vnode)) - view.reentrantLock = null - if (vnode.instance != null) { - if (vnode.instance === vnode) throw Error("A view cannot return the vnode it received as arguments") - var element = createNode(vnode.instance, hooks, ns) - vnode.dom = vnode.instance.dom - vnode.domSize = vnode.dom != null ? vnode.instance.domSize : 0 - return element - } - else { - vnode.domSize = 0 - return $emptyFragment - } - } - //update - function updateNodes(parent, old, vnodes, hooks, nextSibling, ns) { - if (old === vnodes || old == null && vnodes == null) return - else if (old == null) createNodes(parent, vnodes, 0, vnodes.length, hooks, nextSibling, undefined) - else if (vnodes == null) removeNodes(old, 0, old.length, vnodes) - else { - if (old.length === vnodes.length) { - var isUnkeyed = false - for (var i = 0; i < vnodes.length; i++) { - if (vnodes[i] != null && old[i] != null) { - isUnkeyed = vnodes[i].key == null && old[i].key == null - break - } - } - if (isUnkeyed) { - for (var i = 0; i < old.length; i++) { - if (old[i] === vnodes[i]) continue - else if (old[i] == null && vnodes[i] != null) insertNode(parent, createNode(vnodes[i], hooks, ns), getNextSibling(old, i + 1, nextSibling)) - else if (vnodes[i] == null) removeNodes(old, i, i + 1, vnodes) - else updateNode(parent, old[i], vnodes[i], hooks, getNextSibling(old, i + 1, nextSibling), false, ns) - } - return - } - } - var recycling = isRecyclable(old, vnodes) - if (recycling) old = old.concat(old.pool) - var oldStart = 0, start = 0, oldEnd = old.length - 1, end = vnodes.length - 1, map - while (oldEnd >= oldStart && end >= start) { - var o = old[oldStart], v = vnodes[start] - if (o === v && !recycling) oldStart++, start++ - else if (o == null) oldStart++ - else if (v == null) start++ - else if (o.key === v.key) { - oldStart++, start++ - updateNode(parent, o, v, hooks, getNextSibling(old, oldStart, nextSibling), recycling, ns) - if (recycling && o.tag === v.tag) insertNode(parent, toFragment(o), nextSibling) - } - else { - var o = old[oldEnd] - if (o === v && !recycling) oldEnd--, start++ - else if (o == null) oldEnd-- - else if (v == null) start++ - else if (o.key === v.key) { - updateNode(parent, o, v, hooks, getNextSibling(old, oldEnd + 1, nextSibling), recycling, ns) - if (recycling || start < end) insertNode(parent, toFragment(o), getNextSibling(old, oldStart, nextSibling)) - oldEnd--, start++ - } - else break - } - } - while (oldEnd >= oldStart && end >= start) { - var o = old[oldEnd], v = vnodes[end] - if (o === v && !recycling) oldEnd--, end-- - else if (o == null) oldEnd-- - else if (v == null) end-- - else if (o.key === v.key) { - updateNode(parent, o, v, hooks, getNextSibling(old, oldEnd + 1, nextSibling), recycling, ns) - if (recycling && o.tag === v.tag) insertNode(parent, toFragment(o), nextSibling) - if (o.dom != null) nextSibling = o.dom - oldEnd--, end-- - } - else { - if (!map) map = getKeyMap(old, oldEnd) - if (v != null) { - var oldIndex = map[v.key] - if (oldIndex != null) { - var movable = old[oldIndex] - updateNode(parent, movable, v, hooks, getNextSibling(old, oldEnd + 1, nextSibling), recycling, ns) - insertNode(parent, toFragment(movable), nextSibling) - old[oldIndex].skip = true - if (movable.dom != null) nextSibling = movable.dom - } - else { - var dom = createNode(v, hooks, undefined) - insertNode(parent, dom, nextSibling) - nextSibling = dom - } - } - end-- - } - if (end < start) break - } - createNodes(parent, vnodes, start, end + 1, hooks, nextSibling, ns) - removeNodes(old, oldStart, oldEnd + 1, vnodes) - } - } - function updateNode(parent, old, vnode, hooks, nextSibling, recycling, ns) { - var oldTag = old.tag, tag = vnode.tag - if (oldTag === tag) { - vnode.state = old.state - vnode.events = old.events - if (shouldUpdate(vnode, old)) return - if (vnode.attrs != null) { - updateLifecycle(vnode.attrs, vnode, hooks, recycling) - } - if (typeof oldTag === "string") { - switch (oldTag) { - case "#": updateText(old, vnode); break - case "<": updateHTML(parent, old, vnode, nextSibling); break - case "[": updateFragment(parent, old, vnode, hooks, nextSibling, ns); break - default: updateElement(old, vnode, hooks, ns) - } - } - else updateComponent(parent, old, vnode, hooks, nextSibling, recycling, ns) - } - else { - removeNode(old, null) - insertNode(parent, createNode(vnode, hooks, ns), nextSibling) - } - } - function updateText(old, vnode) { - if (old.children.toString() !== vnode.children.toString()) { - old.dom.nodeValue = vnode.children - } - vnode.dom = old.dom - } - function updateHTML(parent, old, vnode, nextSibling) { - if (old.children !== vnode.children) { - toFragment(old) - insertNode(parent, createHTML(vnode), nextSibling) - } - else vnode.dom = old.dom, vnode.domSize = old.domSize - } - function updateFragment(parent, old, vnode, hooks, nextSibling, ns) { - updateNodes(parent, old.children, vnode.children, hooks, nextSibling, ns) - var domSize = 0, children = vnode.children - vnode.dom = null - if (children != null) { - for (var i = 0; i < children.length; i++) { - var child = children[i] - if (child != null && child.dom != null) { - if (vnode.dom == null) vnode.dom = child.dom - domSize += child.domSize || 1 - } - } - if (domSize !== 1) vnode.domSize = domSize - } - } - function updateElement(old, vnode, hooks, ns) { - var element = vnode.dom = old.dom - switch (vnode.tag) { - case "svg": ns = "http://www.w3.org/2000/svg"; break - case "math": ns = "http://www.w3.org/1998/Math/MathML"; break - } - if (vnode.tag === "textarea") { - if (vnode.attrs == null) vnode.attrs = {} - if (vnode.text != null) { - vnode.attrs.value = vnode.text //FIXME handle0 multiple children - vnode.text = undefined - } - } - updateAttrs(vnode, old.attrs, vnode.attrs, ns) - if (vnode.attrs != null && vnode.attrs.contenteditable != null) { - setContentEditable(vnode) - } - else if (old.text != null && vnode.text != null && vnode.text !== "") { - if (old.text.toString() !== vnode.text.toString()) old.dom.firstChild.nodeValue = vnode.text - } - else { - if (old.text != null) old.children = [Vnode("#", undefined, undefined, old.text, undefined, old.dom.firstChild)] - if (vnode.text != null) vnode.children = [Vnode("#", undefined, undefined, vnode.text, undefined, undefined)] - updateNodes(element, old.children, vnode.children, hooks, null, ns) - } - } - function updateComponent(parent, old, vnode, hooks, nextSibling, recycling, ns) { - vnode.instance = Vnode.normalize(vnode.tag.view.call(vnode.state, vnode)) - updateLifecycle(vnode.tag, vnode, hooks, recycling) - if (vnode.instance != null) { - if (old.instance == null) insertNode(parent, createNode(vnode.instance, hooks, ns), nextSibling) - else updateNode(parent, old.instance, vnode.instance, hooks, nextSibling, recycling, ns) - vnode.dom = vnode.instance.dom - vnode.domSize = vnode.instance.domSize - } - else if (old.instance != null) { - removeNode(old.instance, null) - vnode.dom = undefined - vnode.domSize = 0 - } - else { - vnode.dom = old.dom - vnode.domSize = old.domSize - } - } - function isRecyclable(old, vnodes) { - if (old.pool != null && Math.abs(old.pool.length - vnodes.length) <= Math.abs(old.length - vnodes.length)) { - var oldChildrenLength = old[0] && old[0].children && old[0].children.length || 0 - var poolChildrenLength = old.pool[0] && old.pool[0].children && old.pool[0].children.length || 0 - var vnodesChildrenLength = vnodes[0] && vnodes[0].children && vnodes[0].children.length || 0 - if (Math.abs(poolChildrenLength - vnodesChildrenLength) <= Math.abs(oldChildrenLength - vnodesChildrenLength)) { - return true - } - } - return false - } - function getKeyMap(vnodes, end) { - var map = {}, i = 0 - for (var i = 0; i < end; i++) { - var vnode = vnodes[i] - if (vnode != null) { - var key2 = vnode.key - if (key2 != null) map[key2] = i - } - } - return map - } - function toFragment(vnode) { - var count0 = vnode.domSize - if (count0 != null || vnode.dom == null) { - var fragment = $doc.createDocumentFragment() - if (count0 > 0) { - var dom = vnode.dom - while (--count0) fragment.appendChild(dom.nextSibling) - fragment.insertBefore(dom, fragment.firstChild) - } - return fragment - } - else return vnode.dom - } - function getNextSibling(vnodes, i, nextSibling) { - for (; i < vnodes.length; i++) { - if (vnodes[i] != null && vnodes[i].dom != null) return vnodes[i].dom - } - return nextSibling - } - function insertNode(parent, dom, nextSibling) { - if (nextSibling && nextSibling.parentNode) parent.insertBefore(dom, nextSibling) - else parent.appendChild(dom) - } - function setContentEditable(vnode) { - var children = vnode.children - if (children != null && children.length === 1 && children[0].tag === "<") { - var content = children[0].children - if (vnode.dom.innerHTML !== content) vnode.dom.innerHTML = content - } - else if (vnode.text != null || children != null && children.length !== 0) throw new Error("Child node of a contenteditable must be trusted") - } - //remove - function removeNodes(vnodes, start, end, context) { - for (var i = start; i < end; i++) { - var vnode = vnodes[i] - if (vnode != null) { - if (vnode.skip) vnode.skip = false - else removeNode(vnode, context) - } - } - } - function removeNode(vnode, context) { - var expected = 1, called = 0 - if (vnode.attrs && vnode.attrs.onbeforeremove) { - var result = vnode.attrs.onbeforeremove.call(vnode.state, vnode) - if (result != null && typeof result.then === "function") { - expected++ - result.then(continuation, continuation) - } - } - if (typeof vnode.tag !== "string" && vnode.tag.onbeforeremove) { - var result = vnode.tag.onbeforeremove.call(vnode.state, vnode) - if (result != null && typeof result.then === "function") { - expected++ - result.then(continuation, continuation) - } - } - continuation() - function continuation() { - if (++called === expected) { - onremove(vnode) - if (vnode.dom) { - var count0 = vnode.domSize || 1 - if (count0 > 1) { - var dom = vnode.dom - while (--count0) { - removeNodeFromDOM(dom.nextSibling) - } - } - removeNodeFromDOM(vnode.dom) - if (context != null && vnode.domSize == null && !hasIntegrationMethods(vnode.attrs) && typeof vnode.tag === "string") { //TODO test custom elements - if (!context.pool) context.pool = [vnode] - else context.pool.push(vnode) - } - } - } - } - } - function removeNodeFromDOM(node) { - var parent = node.parentNode - if (parent != null) parent.removeChild(node) - } - function onremove(vnode) { - if (vnode.attrs && vnode.attrs.onremove) vnode.attrs.onremove.call(vnode.state, vnode) - if (typeof vnode.tag !== "string" && vnode.tag.onremove) vnode.tag.onremove.call(vnode.state, vnode) - if (vnode.instance != null) onremove(vnode.instance) - else { - var children = vnode.children - if (Array.isArray(children)) { - for (var i = 0; i < children.length; i++) { - var child = children[i] - if (child != null) onremove(child) - } - } - } - } - //attrs2 - function setAttrs(vnode, attrs2, ns) { - for (var key2 in attrs2) { - setAttr(vnode, key2, null, attrs2[key2], ns) - } - } - function setAttr(vnode, key2, old, value, ns) { - var element = vnode.dom - if (key2 === "key" || key2 === "is" || (old === value && !isFormAttribute(vnode, key2)) && typeof value !== "object" || typeof value === "undefined" || isLifecycleMethod(key2)) return - var nsLastIndex = key2.indexOf(":") - if (nsLastIndex > -1 && key2.substr(0, nsLastIndex) === "xlink") { - element.setAttributeNS("http://www.w3.org/1999/xlink", key2.slice(nsLastIndex + 1), value) - } - else if (key2[0] === "o" && key2[1] === "n" && typeof value === "function") updateEvent(vnode, key2, value) - else if (key2 === "style") updateStyle(element, old, value) - else if (key2 in element && !isAttribute(key2) && ns === undefined && !isCustomElement(vnode)) { - //setting input[value] to same value by typing on focused element moves cursor to end in Chrome - if (vnode.tag === "input" && key2 === "value" && vnode.dom.value === value && vnode.dom === $doc.activeElement) return - //setting select[value] to same value while having select open blinks select dropdown in Chrome - if (vnode.tag === "select" && key2 === "value" && vnode.dom.value === value && vnode.dom === $doc.activeElement) return - //setting option[value] to same value while having select open blinks select dropdown in Chrome - if (vnode.tag === "option" && key2 === "value" && vnode.dom.value === value) return - element[key2] = value - } - else { - if (typeof value === "boolean") { - if (value) element.setAttribute(key2, "") - else element.removeAttribute(key2) - } - else element.setAttribute(key2 === "className" ? "class" : key2, value) - } - } - function setLateAttrs(vnode) { - var attrs2 = vnode.attrs - if (vnode.tag === "select" && attrs2 != null) { - if ("value" in attrs2) setAttr(vnode, "value", null, attrs2.value, undefined) - if ("selectedIndex" in attrs2) setAttr(vnode, "selectedIndex", null, attrs2.selectedIndex, undefined) - } - } - function updateAttrs(vnode, old, attrs2, ns) { - if (attrs2 != null) { - for (var key2 in attrs2) { - setAttr(vnode, key2, old && old[key2], attrs2[key2], ns) - } - } - if (old != null) { - for (var key2 in old) { - if (attrs2 == null || !(key2 in attrs2)) { - if (key2 === "className") key2 = "class" - if (key2[0] === "o" && key2[1] === "n" && !isLifecycleMethod(key2)) updateEvent(vnode, key2, undefined) - else if (key2 !== "key") vnode.dom.removeAttribute(key2) - } - } - } - } - function isFormAttribute(vnode, attr) { - return attr === "value" || attr === "checked" || attr === "selectedIndex" || attr === "selected" && vnode.dom === $doc.activeElement - } - function isLifecycleMethod(attr) { - return attr === "oninit" || attr === "oncreate" || attr === "onupdate" || attr === "onremove" || attr === "onbeforeremove" || attr === "onbeforeupdate" - } - function isAttribute(attr) { - return attr === "href" || attr === "list" || attr === "form" || attr === "width" || attr === "height"// || attr === "type" - } - function isCustomElement(vnode){ - return vnode.attrs.is || vnode.tag.indexOf("-") > -1 - } - function hasIntegrationMethods(source) { - return source != null && (source.oncreate || source.onupdate || source.onbeforeremove || source.onremove) - } - //style - function updateStyle(element, old, style) { - if (old === style) element.style.cssText = "", old = null - if (style == null) element.style.cssText = "" - else if (typeof style === "string") element.style.cssText = style - else { - if (typeof old === "string") element.style.cssText = "" - for (var key2 in style) { - element.style[key2] = style[key2] - } - if (old != null && typeof old !== "string") { - for (var key2 in old) { - if (!(key2 in style)) element.style[key2] = "" - } - } - } - } - //event - function updateEvent(vnode, key2, value) { - var element = vnode.dom - var callback = typeof onevent !== "function" ? value : function(e) { - var result = value.call(element, e) - onevent.call(element, e) - return result - } - if (key2 in element) element[key2] = typeof value === "function" ? callback : null - else { - var eventName = key2.slice(2) - if (vnode.events === undefined) vnode.events = {} - if (vnode.events[key2] === callback) return - if (vnode.events[key2] != null) element.removeEventListener(eventName, vnode.events[key2], false) - if (typeof value === "function") { - vnode.events[key2] = callback - element.addEventListener(eventName, vnode.events[key2], false) - } - } - } - //lifecycle - function initLifecycle(source, vnode, hooks) { - if (typeof source.oninit === "function") source.oninit.call(vnode.state, vnode) - if (typeof source.oncreate === "function") hooks.push(source.oncreate.bind(vnode.state, vnode)) - } - function updateLifecycle(source, vnode, hooks, recycling) { - if (recycling) initLifecycle(source, vnode, hooks) - else if (typeof source.onupdate === "function") hooks.push(source.onupdate.bind(vnode.state, vnode)) - } - function shouldUpdate(vnode, old) { - var forceVnodeUpdate, forceComponentUpdate - if (vnode.attrs != null && typeof vnode.attrs.onbeforeupdate === "function") forceVnodeUpdate = vnode.attrs.onbeforeupdate.call(vnode.state, vnode, old) - if (typeof vnode.tag !== "string" && typeof vnode.tag.onbeforeupdate === "function") forceComponentUpdate = vnode.tag.onbeforeupdate.call(vnode.state, vnode, old) - if (!(forceVnodeUpdate === undefined && forceComponentUpdate === undefined) && !forceVnodeUpdate && !forceComponentUpdate) { - vnode.dom = old.dom - vnode.domSize = old.domSize - vnode.instance = old.instance - return true - } - return false - } - function render(dom, vnodes) { - if (!dom) throw new Error("Ensure the DOM element being passed to m.route/m.mount/m.render is not undefined.") - var hooks = [] - var active = $doc.activeElement - // First time0 rendering into a node clears it out - if (dom.vnodes == null) dom.textContent = "" - if (!Array.isArray(vnodes)) vnodes = [vnodes] - updateNodes(dom, dom.vnodes, Vnode.normalizeChildren(vnodes), hooks, null, undefined) - dom.vnodes = vnodes - for (var i = 0; i < hooks.length; i++) hooks[i]() - if ($doc.activeElement !== active) active.focus() - } - return {render: render, setEventCallback: setEventCallback} -} -function throttle(callback) { - //60fps translates to 16.6ms, round it down since setTimeout requires int - var time = 16 - var last = 0, pending = null - var timeout = typeof requestAnimationFrame === "function" ? requestAnimationFrame : setTimeout - return function() { - var now = Date.now() - if (last === 0 || now - last >= time) { - last = now - callback() - } - else if (pending === null) { - pending = timeout(function() { - pending = null - callback() - last = Date.now() - }, time - (now - last)) - } - } -} -var _11 = function($window) { - var renderService = coreRenderer($window) - renderService.setEventCallback(function(e) { - if (e.redraw !== false) redraw() - }) - - var callbacks = [] - function subscribe(key1, callback) { - unsubscribe(key1) - callbacks.push(key1, throttle(callback)) - } - function unsubscribe(key1) { - var index = callbacks.indexOf(key1) - if (index > -1) callbacks.splice(index, 2) - } - function redraw() { - for (var i = 1; i < callbacks.length; i += 2) { - callbacks[i]() - } - } - return {subscribe: subscribe, unsubscribe: unsubscribe, redraw: redraw, render: renderService.render} -} -var redrawService = _11(window) -requestService.setCompletionCallback(redrawService.redraw) -var _16 = function(redrawService0) { - return function(root, component) { - if (component === null) { - redrawService0.render(root, []) - redrawService0.unsubscribe(root) - return - } - - if (component.view == null) throw new Error("m.mount(element, component) expects a component, not a vnode") - - var run0 = function() { - redrawService0.render(root, Vnode(component)) - } - redrawService0.subscribe(root, run0) - redrawService0.redraw() - } -} -m.mount = _16(redrawService) -var Promise = PromisePolyfill -var parseQueryString = function(string) { - if (string === "" || string == null) return {} - if (string.charAt(0) === "?") string = string.slice(1) - var entries = string.split("&"), data0 = {}, counters = {} - for (var i = 0; i < entries.length; i++) { - var entry = entries[i].split("=") - var key5 = decodeURIComponent(entry[0]) - var value = entry.length === 2 ? decodeURIComponent(entry[1]) : "" - if (value === "true") value = true - else if (value === "false") value = false - var levels = key5.split(/\]\[?|\[/) - var cursor = data0 - if (key5.indexOf("[") > -1) levels.pop() - for (var j = 0; j < levels.length; j++) { - var level = levels[j], nextLevel = levels[j + 1] - var isNumber = nextLevel == "" || !isNaN(parseInt(nextLevel, 10)) - var isValue = j === levels.length - 1 - if (level === "") { - var key5 = levels.slice(0, j).join() - if (counters[key5] == null) counters[key5] = 0 - level = counters[key5]++ - } - if (cursor[level] == null) { - cursor[level] = isValue ? value : isNumber ? [] : {} - } - cursor = cursor[level] - } - } - return data0 -} -var coreRouter = function($window) { - var supportsPushState = typeof $window.history.pushState === "function" - var callAsync0 = typeof setImmediate === "function" ? setImmediate : setTimeout - function normalize1(fragment0) { - var data = $window.location[fragment0].replace(/(?:%[a-f89][a-f0-9])+/gim, decodeURIComponent) - if (fragment0 === "pathname" && data[0] !== "/") data = "/" + data - return data - } - var asyncId - function debounceAsync(callback0) { - return function() { - if (asyncId != null) return - asyncId = callAsync0(function() { - asyncId = null - callback0() - }) - } - } - function parsePath(path, queryData, hashData) { - var queryIndex = path.indexOf("?") - var hashIndex = path.indexOf("#") - var pathEnd = queryIndex > -1 ? queryIndex : hashIndex > -1 ? hashIndex : path.length - if (queryIndex > -1) { - var queryEnd = hashIndex > -1 ? hashIndex : path.length - var queryParams = parseQueryString(path.slice(queryIndex + 1, queryEnd)) - for (var key4 in queryParams) queryData[key4] = queryParams[key4] - } - if (hashIndex > -1) { - var hashParams = parseQueryString(path.slice(hashIndex + 1)) - for (var key4 in hashParams) hashData[key4] = hashParams[key4] - } - return path.slice(0, pathEnd) - } - var router = {prefix: "#!"} - router.getPath = function() { - var type2 = router.prefix.charAt(0) - switch (type2) { - case "#": return normalize1("hash").slice(router.prefix.length) - case "?": return normalize1("search").slice(router.prefix.length) + normalize1("hash") - default: return normalize1("pathname").slice(router.prefix.length) + normalize1("search") + normalize1("hash") - } - } - router.setPath = function(path, data, options) { - var queryData = {}, hashData = {} - path = parsePath(path, queryData, hashData) - if (data != null) { - for (var key4 in data) queryData[key4] = data[key4] - path = path.replace(/:([^\/]+)/g, function(match2, token) { - delete queryData[token] - return data[token] - }) - } - var query = buildQueryString(queryData) - if (query) path += "?" + query - var hash = buildQueryString(hashData) - if (hash) path += "#" + hash - if (supportsPushState) { - var state = options ? options.state : null - var title = options ? options.title : null - $window.onpopstate() - if (options && options.replace) $window.history.replaceState(state, title, router.prefix + path) - else $window.history.pushState(state, title, router.prefix + path) - } - else $window.location.href = router.prefix + path - } - router.defineRoutes = function(routes, resolve, reject) { - function resolveRoute() { - var path = router.getPath() - var params = {} - var pathname = parsePath(path, params, params) - - var state = $window.history.state - if (state != null) { - for (var k in state) params[k] = state[k] - } - for (var route0 in routes) { - var matcher = new RegExp("^" + route0.replace(/:[^\/]+?\.{3}/g, "(.*?)").replace(/:[^\/]+/g, "([^\\/]+)") + "\/?$") - if (matcher.test(pathname)) { - pathname.replace(matcher, function() { - var keys = route0.match(/:[^\/]+/g) || [] - var values = [].slice.call(arguments, 1, -2) - for (var i = 0; i < keys.length; i++) { - params[keys[i].replace(/:|\./g, "")] = decodeURIComponent(values[i]) - } - resolve(routes[route0], params, path, route0) - }) - return - } - } - reject(path, params) - } - - if (supportsPushState) $window.onpopstate = debounceAsync(resolveRoute) - else if (router.prefix.charAt(0) === "#") $window.onhashchange = resolveRoute - resolveRoute() - } - - return router -} -var _20 = function($window, redrawService0) { - var routeService = coreRouter($window) - var identity = function(v) {return v} - var render1, component, attrs3, currentPath, lastUpdate - var route = function(root, defaultRoute, routes) { - if (root == null) throw new Error("Ensure the DOM element that was passed to `m.route` is not undefined") - var run1 = function() { - if (render1 != null) redrawService0.render(root, render1(Vnode(component, attrs3.key, attrs3))) - } - var bail = function() { - routeService.setPath(defaultRoute, null, {replace: true}) - } - routeService.defineRoutes(routes, function(payload, params, path) { - var update = lastUpdate = function(routeResolver, comp) { - if (update !== lastUpdate) return - component = comp != null && typeof comp.view === "function" ? comp : "div", attrs3 = params, currentPath = path, lastUpdate = null - render1 = (routeResolver.render || identity).bind(routeResolver) - run1() - } - if (payload.view) update({}, payload) - else { - if (payload.onmatch) { - Promise.resolve(payload.onmatch(params, path)).then(function(resolved) { - update(payload, resolved) - }, bail) - } - else update(payload, "div") - } - }, bail) - redrawService0.subscribe(root, run1) - } - route.set = function(path, data, options) { - if (lastUpdate != null) options = {replace: true} - lastUpdate = null - routeService.setPath(path, data, options) - } - route.get = function() {return currentPath} - route.prefix = function(prefix0) {routeService.prefix = prefix0} - route.link = function(vnode1) { - vnode1.dom.setAttribute("href", routeService.prefix + vnode1.attrs.href) - vnode1.dom.onclick = function(e) { - if (e.ctrlKey || e.metaKey || e.shiftKey || e.which === 2) return - e.preventDefault() - e.redraw = false - var href = this.getAttribute("href") - if (href.indexOf(routeService.prefix) === 0) href = href.slice(routeService.prefix.length) - route.set(href, undefined, undefined) - } - } - route.param = function(key3) { - if(typeof attrs3 !== "undefined" && typeof key3 !== "undefined") return attrs3[key3] - return attrs3 - } - return route -} -m.route = _20(window, redrawService) -m.withAttr = function(attrName, callback1, context) { - return function(e) { - callback1.call(context || this, attrName in e.currentTarget ? e.currentTarget[attrName] : e.currentTarget.getAttribute(attrName)) - } -} -var _28 = coreRenderer(window) -m.render = _28.render -m.redraw = redrawService.redraw -m.request = requestService.request -m.jsonp = requestService.jsonp -m.parseQueryString = parseQueryString -m.buildQueryString = buildQueryString -m.version = "1.0.0" -m.vnode = Vnode -if (typeof module !== "undefined") module["exports"] = m -else window.m = m -} -}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("timers").setImmediate) -},{"timers":2}],4:[function(require,module,exports){ -/*! @preserve - * numeral.js - * version : 2.0.6 - * author : Adam Draper - * license : MIT - * http://adamwdraper.github.com/Numeral-js/ - */ - -(function (global, factory) { - if (typeof define === 'function' && define.amd) { - define(factory); - } else if (typeof module === 'object' && module.exports) { - module.exports = factory(); - } else { - global.numeral = factory(); - } -}(this, function () { - /************************************ - Variables - ************************************/ - - var numeral, - _, - VERSION = '2.0.6', - formats = {}, - locales = {}, - defaults = { - currentLocale: 'en', - zeroFormat: null, - nullFormat: null, - defaultFormat: '0,0', - scalePercentBy100: true - }, - options = { - currentLocale: defaults.currentLocale, - zeroFormat: defaults.zeroFormat, - nullFormat: defaults.nullFormat, - defaultFormat: defaults.defaultFormat, - scalePercentBy100: defaults.scalePercentBy100 - }; - - - /************************************ - Constructors - ************************************/ - - // Numeral prototype object - function Numeral(input, number) { - this._input = input; - - this._value = number; - } - - numeral = function(input) { - var value, - kind, - unformatFunction, - regexp; - - if (numeral.isNumeral(input)) { - value = input.value(); - } else if (input === 0 || typeof input === 'undefined') { - value = 0; - } else if (input === null || _.isNaN(input)) { - value = null; - } else if (typeof input === 'string') { - if (options.zeroFormat && input === options.zeroFormat) { - value = 0; - } else if (options.nullFormat && input === options.nullFormat || !input.replace(/[^0-9]+/g, '').length) { - value = null; - } else { - for (kind in formats) { - regexp = typeof formats[kind].regexps.unformat === 'function' ? formats[kind].regexps.unformat() : formats[kind].regexps.unformat; - - if (regexp && input.match(regexp)) { - unformatFunction = formats[kind].unformat; - - break; - } - } - - unformatFunction = unformatFunction || numeral._.stringToNumber; - - value = unformatFunction(input); - } - } else { - value = Number(input)|| null; - } - - return new Numeral(input, value); - }; - - // version number - numeral.version = VERSION; - - // compare numeral object - numeral.isNumeral = function(obj) { - return obj instanceof Numeral; - }; - - // helper functions - numeral._ = _ = { - // formats numbers separators, decimals places, signs, abbreviations - numberToFormat: function(value, format, roundingFunction) { - var locale = locales[numeral.options.currentLocale], - negP = false, - optDec = false, - leadingCount = 0, - abbr = '', - trillion = 1000000000000, - billion = 1000000000, - million = 1000000, - thousand = 1000, - decimal = '', - neg = false, - abbrForce, // force abbreviation - abs, - min, - max, - power, - int, - precision, - signed, - thousands, - output; - - // make sure we never format a null value - value = value || 0; - - abs = Math.abs(value); - - // see if we should use parentheses for negative number or if we should prefix with a sign - // if both are present we default to parentheses - if (numeral._.includes(format, '(')) { - negP = true; - format = format.replace(/[\(|\)]/g, ''); - } else if (numeral._.includes(format, '+') || numeral._.includes(format, '-')) { - signed = numeral._.includes(format, '+') ? format.indexOf('+') : value < 0 ? format.indexOf('-') : -1; - format = format.replace(/[\+|\-]/g, ''); - } - - // see if abbreviation is wanted - if (numeral._.includes(format, 'a')) { - abbrForce = format.match(/a(k|m|b|t)?/); - - abbrForce = abbrForce ? abbrForce[1] : false; - - // check for space before abbreviation - if (numeral._.includes(format, ' a')) { - abbr = ' '; - } - - format = format.replace(new RegExp(abbr + 'a[kmbt]?'), ''); - - if (abs >= trillion && !abbrForce || abbrForce === 't') { - // trillion - abbr += locale.abbreviations.trillion; - value = value / trillion; - } else if (abs < trillion && abs >= billion && !abbrForce || abbrForce === 'b') { - // billion - abbr += locale.abbreviations.billion; - value = value / billion; - } else if (abs < billion && abs >= million && !abbrForce || abbrForce === 'm') { - // million - abbr += locale.abbreviations.million; - value = value / million; - } else if (abs < million && abs >= thousand && !abbrForce || abbrForce === 'k') { - // thousand - abbr += locale.abbreviations.thousand; - value = value / thousand; - } - } - - // check for optional decimals - if (numeral._.includes(format, '[.]')) { - optDec = true; - format = format.replace('[.]', '.'); - } - - // break number and format - int = value.toString().split('.')[0]; - precision = format.split('.')[1]; - thousands = format.indexOf(','); - leadingCount = (format.split('.')[0].split(',')[0].match(/0/g) || []).length; - - if (precision) { - if (numeral._.includes(precision, '[')) { - precision = precision.replace(']', ''); - precision = precision.split('['); - decimal = numeral._.toFixed(value, (precision[0].length + precision[1].length), roundingFunction, precision[1].length); - } else { - decimal = numeral._.toFixed(value, precision.length, roundingFunction); - } - - int = decimal.split('.')[0]; - - if (numeral._.includes(decimal, '.')) { - decimal = locale.delimiters.decimal + decimal.split('.')[1]; - } else { - decimal = ''; - } - - if (optDec && Number(decimal.slice(1)) === 0) { - decimal = ''; - } - } else { - int = numeral._.toFixed(value, 0, roundingFunction); - } - - // check abbreviation again after rounding - if (abbr && !abbrForce && Number(int) >= 1000 && abbr !== locale.abbreviations.trillion) { - int = String(Number(int) / 1000); - - switch (abbr) { - case locale.abbreviations.thousand: - abbr = locale.abbreviations.million; - break; - case locale.abbreviations.million: - abbr = locale.abbreviations.billion; - break; - case locale.abbreviations.billion: - abbr = locale.abbreviations.trillion; - break; - } - } - - - // format number - if (numeral._.includes(int, '-')) { - int = int.slice(1); - neg = true; - } - - if (int.length < leadingCount) { - for (var i = leadingCount - int.length; i > 0; i--) { - int = '0' + int; - } - } - - if (thousands > -1) { - int = int.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1' + locale.delimiters.thousands); - } - - if (format.indexOf('.') === 0) { - int = ''; - } - - output = int + decimal + (abbr ? abbr : ''); - - if (negP) { - output = (negP && neg ? '(' : '') + output + (negP && neg ? ')' : ''); - } else { - if (signed >= 0) { - output = signed === 0 ? (neg ? '-' : '+') + output : output + (neg ? '-' : '+'); - } else if (neg) { - output = '-' + output; - } - } - - return output; - }, - // unformats numbers separators, decimals places, signs, abbreviations - stringToNumber: function(string) { - var locale = locales[options.currentLocale], - stringOriginal = string, - abbreviations = { - thousand: 3, - million: 6, - billion: 9, - trillion: 12 - }, - abbreviation, - value, - i, - regexp; - - if (options.zeroFormat && string === options.zeroFormat) { - value = 0; - } else if (options.nullFormat && string === options.nullFormat || !string.replace(/[^0-9]+/g, '').length) { - value = null; - } else { - value = 1; - - if (locale.delimiters.decimal !== '.') { - string = string.replace(/\./g, '').replace(locale.delimiters.decimal, '.'); - } - - for (abbreviation in abbreviations) { - regexp = new RegExp('[^a-zA-Z]' + locale.abbreviations[abbreviation] + '(?:\\)|(\\' + locale.currency.symbol + ')?(?:\\))?)?$'); - - if (stringOriginal.match(regexp)) { - value *= Math.pow(10, abbreviations[abbreviation]); - break; - } - } - - // check for negative number - value *= (string.split('-').length + Math.min(string.split('(').length - 1, string.split(')').length - 1)) % 2 ? 1 : -1; - - // remove non numbers - string = string.replace(/[^0-9\.]+/g, ''); - - value *= Number(string); - } - - return value; - }, - isNaN: function(value) { - return typeof value === 'number' && isNaN(value); - }, - includes: function(string, search) { - return string.indexOf(search) !== -1; - }, - insert: function(string, subString, start) { - return string.slice(0, start) + subString + string.slice(start); - }, - reduce: function(array, callback /*, initialValue*/) { - if (this === null) { - throw new TypeError('Array.prototype.reduce called on null or undefined'); - } - - if (typeof callback !== 'function') { - throw new TypeError(callback + ' is not a function'); - } - - var t = Object(array), - len = t.length >>> 0, - k = 0, - value; - - if (arguments.length === 3) { - value = arguments[2]; - } else { - while (k < len && !(k in t)) { - k++; - } - - if (k >= len) { - throw new TypeError('Reduce of empty array with no initial value'); - } - - value = t[k++]; - } - for (; k < len; k++) { - if (k in t) { - value = callback(value, t[k], k, t); - } - } - return value; - }, - /** - * Computes the multiplier necessary to make x >= 1, - * effectively eliminating miscalculations caused by - * finite precision. - */ - multiplier: function (x) { - var parts = x.toString().split('.'); - - return parts.length < 2 ? 1 : Math.pow(10, parts[1].length); - }, - /** - * Given a variable number of arguments, returns the maximum - * multiplier that must be used to normalize an operation involving - * all of them. - */ - correctionFactor: function () { - var args = Array.prototype.slice.call(arguments); - - return args.reduce(function(accum, next) { - var mn = _.multiplier(next); - return accum > mn ? accum : mn; - }, 1); - }, - /** - * Implementation of toFixed() that treats floats more like decimals - * - * Fixes binary rounding issues (eg. (0.615).toFixed(2) === '0.61') that present - * problems for accounting- and finance-related software. - */ - toFixed: function(value, maxDecimals, roundingFunction, optionals) { - var splitValue = value.toString().split('.'), - minDecimals = maxDecimals - (optionals || 0), - boundedPrecision, - optionalsRegExp, - power, - output; - - // Use the smallest precision value possible to avoid errors from floating point representation - if (splitValue.length === 2) { - boundedPrecision = Math.min(Math.max(splitValue[1].length, minDecimals), maxDecimals); - } else { - boundedPrecision = minDecimals; - } - - power = Math.pow(10, boundedPrecision); - - // Multiply up by precision, round accurately, then divide and use native toFixed(): - output = (roundingFunction(value + 'e+' + boundedPrecision) / power).toFixed(boundedPrecision); - - if (optionals > maxDecimals - boundedPrecision) { - optionalsRegExp = new RegExp('\\.?0{1,' + (optionals - (maxDecimals - boundedPrecision)) + '}$'); - output = output.replace(optionalsRegExp, ''); - } - - return output; - } - }; - - // avaliable options - numeral.options = options; - - // avaliable formats - numeral.formats = formats; - - // avaliable formats - numeral.locales = locales; - - // This function sets the current locale. If - // no arguments are passed in, it will simply return the current global - // locale key. - numeral.locale = function(key) { - if (key) { - options.currentLocale = key.toLowerCase(); - } - - return options.currentLocale; - }; - - // This function provides access to the loaded locale data. If - // no arguments are passed in, it will simply return the current - // global locale object. - numeral.localeData = function(key) { - if (!key) { - return locales[options.currentLocale]; - } - - key = key.toLowerCase(); - - if (!locales[key]) { - throw new Error('Unknown locale : ' + key); - } - - return locales[key]; - }; - - numeral.reset = function() { - for (var property in defaults) { - options[property] = defaults[property]; - } - }; - - numeral.zeroFormat = function(format) { - options.zeroFormat = typeof(format) === 'string' ? format : null; - }; - - numeral.nullFormat = function (format) { - options.nullFormat = typeof(format) === 'string' ? format : null; - }; - - numeral.defaultFormat = function(format) { - options.defaultFormat = typeof(format) === 'string' ? format : '0.0'; - }; - - numeral.register = function(type, name, format) { - name = name.toLowerCase(); - - if (this[type + 's'][name]) { - throw new TypeError(name + ' ' + type + ' already registered.'); - } - - this[type + 's'][name] = format; - - return format; - }; - - - numeral.validate = function(val, culture) { - var _decimalSep, - _thousandSep, - _currSymbol, - _valArray, - _abbrObj, - _thousandRegEx, - localeData, - temp; - - //coerce val to string - if (typeof val !== 'string') { - val += ''; - - if (console.warn) { - console.warn('Numeral.js: Value is not string. It has been co-erced to: ', val); - } - } - - //trim whitespaces from either sides - val = val.trim(); - - //if val is just digits return true - if (!!val.match(/^\d+$/)) { - return true; - } - - //if val is empty return false - if (val === '') { - return false; - } - - //get the decimal and thousands separator from numeral.localeData - try { - //check if the culture is understood by numeral. if not, default it to current locale - localeData = numeral.localeData(culture); - } catch (e) { - localeData = numeral.localeData(numeral.locale()); - } - - //setup the delimiters and currency symbol based on culture/locale - _currSymbol = localeData.currency.symbol; - _abbrObj = localeData.abbreviations; - _decimalSep = localeData.delimiters.decimal; - if (localeData.delimiters.thousands === '.') { - _thousandSep = '\\.'; - } else { - _thousandSep = localeData.delimiters.thousands; - } - - // validating currency symbol - temp = val.match(/^[^\d]+/); - if (temp !== null) { - val = val.substr(1); - if (temp[0] !== _currSymbol) { - return false; - } - } - - //validating abbreviation symbol - temp = val.match(/[^\d]+$/); - if (temp !== null) { - val = val.slice(0, -1); - if (temp[0] !== _abbrObj.thousand && temp[0] !== _abbrObj.million && temp[0] !== _abbrObj.billion && temp[0] !== _abbrObj.trillion) { - return false; - } - } - - _thousandRegEx = new RegExp(_thousandSep + '{2}'); - - if (!val.match(/[^\d.,]/g)) { - _valArray = val.split(_decimalSep); - if (_valArray.length > 2) { - return false; - } else { - if (_valArray.length < 2) { - return ( !! _valArray[0].match(/^\d+.*\d$/) && !_valArray[0].match(_thousandRegEx)); - } else { - if (_valArray[0].length === 1) { - return ( !! _valArray[0].match(/^\d+$/) && !_valArray[0].match(_thousandRegEx) && !! _valArray[1].match(/^\d+$/)); - } else { - return ( !! _valArray[0].match(/^\d+.*\d$/) && !_valArray[0].match(_thousandRegEx) && !! _valArray[1].match(/^\d+$/)); - } - } - } - } - - return false; - }; - - - /************************************ - Numeral Prototype - ************************************/ - - numeral.fn = Numeral.prototype = { - clone: function() { - return numeral(this); - }, - format: function(inputString, roundingFunction) { - var value = this._value, - format = inputString || options.defaultFormat, - kind, - output, - formatFunction; - - // make sure we have a roundingFunction - roundingFunction = roundingFunction || Math.round; - - // format based on value - if (value === 0 && options.zeroFormat !== null) { - output = options.zeroFormat; - } else if (value === null && options.nullFormat !== null) { - output = options.nullFormat; - } else { - for (kind in formats) { - if (format.match(formats[kind].regexps.format)) { - formatFunction = formats[kind].format; - - break; - } - } - - formatFunction = formatFunction || numeral._.numberToFormat; - - output = formatFunction(value, format, roundingFunction); - } - - return output; - }, - value: function() { - return this._value; - }, - input: function() { - return this._input; - }, - set: function(value) { - this._value = Number(value); - - return this; - }, - add: function(value) { - var corrFactor = _.correctionFactor.call(null, this._value, value); - - function cback(accum, curr, currI, O) { - return accum + Math.round(corrFactor * curr); - } - - this._value = _.reduce([this._value, value], cback, 0) / corrFactor; - - return this; - }, - subtract: function(value) { - var corrFactor = _.correctionFactor.call(null, this._value, value); - - function cback(accum, curr, currI, O) { - return accum - Math.round(corrFactor * curr); - } - - this._value = _.reduce([value], cback, Math.round(this._value * corrFactor)) / corrFactor; - - return this; - }, - multiply: function(value) { - function cback(accum, curr, currI, O) { - var corrFactor = _.correctionFactor(accum, curr); - return Math.round(accum * corrFactor) * Math.round(curr * corrFactor) / Math.round(corrFactor * corrFactor); - } - - this._value = _.reduce([this._value, value], cback, 1); - - return this; - }, - divide: function(value) { - function cback(accum, curr, currI, O) { - var corrFactor = _.correctionFactor(accum, curr); - return Math.round(accum * corrFactor) / Math.round(curr * corrFactor); - } - - this._value = _.reduce([this._value, value], cback); - - return this; - }, - difference: function(value) { - return Math.abs(numeral(this._value).subtract(value).value()); - } - }; - - /************************************ - Default Locale && Format - ************************************/ - - numeral.register('locale', 'en', { - delimiters: { - thousands: ',', - decimal: '.' - }, - abbreviations: { - thousand: 'k', - million: 'm', - billion: 'b', - trillion: 't' - }, - ordinal: function(number) { - var b = number % 10; - return (~~(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - }, - currency: { - symbol: '$' - } - }); - - - -(function() { - numeral.register('format', 'bps', { - regexps: { - format: /(BPS)/, - unformat: /(BPS)/ - }, - format: function(value, format, roundingFunction) { - var space = numeral._.includes(format, ' BPS') ? ' ' : '', - output; - - value = value * 10000; - - // check for space before BPS - format = format.replace(/\s?BPS/, ''); - - output = numeral._.numberToFormat(value, format, roundingFunction); - - if (numeral._.includes(output, ')')) { - output = output.split(''); - - output.splice(-1, 0, space + 'BPS'); - - output = output.join(''); - } else { - output = output + space + 'BPS'; - } - - return output; - }, - unformat: function(string) { - return +(numeral._.stringToNumber(string) * 0.0001).toFixed(15); - } - }); -})(); - - -(function() { - var decimal = { - base: 1000, - suffixes: ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'] - }, - binary = { - base: 1024, - suffixes: ['B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB'] - }; - - var allSuffixes = decimal.suffixes.concat(binary.suffixes.filter(function (item) { - return decimal.suffixes.indexOf(item) < 0; - })); - var unformatRegex = allSuffixes.join('|'); - // Allow support for BPS (http://www.investopedia.com/terms/b/basispoint.asp) - unformatRegex = '(' + unformatRegex.replace('B', 'B(?!PS)') + ')'; - - numeral.register('format', 'bytes', { - regexps: { - format: /([0\s]i?b)/, - unformat: new RegExp(unformatRegex) - }, - format: function(value, format, roundingFunction) { - var output, - bytes = numeral._.includes(format, 'ib') ? binary : decimal, - suffix = numeral._.includes(format, ' b') || numeral._.includes(format, ' ib') ? ' ' : '', - power, - min, - max; - - // check for space before - format = format.replace(/\s?i?b/, ''); - - for (power = 0; power <= bytes.suffixes.length; power++) { - min = Math.pow(bytes.base, power); - max = Math.pow(bytes.base, power + 1); - - if (value === null || value === 0 || value >= min && value < max) { - suffix += bytes.suffixes[power]; - - if (min > 0) { - value = value / min; - } - - break; - } - } - - output = numeral._.numberToFormat(value, format, roundingFunction); - - return output + suffix; - }, - unformat: function(string) { - var value = numeral._.stringToNumber(string), - power, - bytesMultiplier; - - if (value) { - for (power = decimal.suffixes.length - 1; power >= 0; power--) { - if (numeral._.includes(string, decimal.suffixes[power])) { - bytesMultiplier = Math.pow(decimal.base, power); - - break; - } - - if (numeral._.includes(string, binary.suffixes[power])) { - bytesMultiplier = Math.pow(binary.base, power); - - break; - } - } - - value *= (bytesMultiplier || 1); - } - - return value; - } - }); -})(); - - -(function() { - numeral.register('format', 'currency', { - regexps: { - format: /(\$)/ - }, - format: function(value, format, roundingFunction) { - var locale = numeral.locales[numeral.options.currentLocale], - symbols = { - before: format.match(/^([\+|\-|\(|\s|\$]*)/)[0], - after: format.match(/([\+|\-|\)|\s|\$]*)$/)[0] - }, - output, - symbol, - i; - - // strip format of spaces and $ - format = format.replace(/\s?\$\s?/, ''); - - // format the number - output = numeral._.numberToFormat(value, format, roundingFunction); - - // update the before and after based on value - if (value >= 0) { - symbols.before = symbols.before.replace(/[\-\(]/, ''); - symbols.after = symbols.after.replace(/[\-\)]/, ''); - } else if (value < 0 && (!numeral._.includes(symbols.before, '-') && !numeral._.includes(symbols.before, '('))) { - symbols.before = '-' + symbols.before; - } - - // loop through each before symbol - for (i = 0; i < symbols.before.length; i++) { - symbol = symbols.before[i]; - - switch (symbol) { - case '$': - output = numeral._.insert(output, locale.currency.symbol, i); - break; - case ' ': - output = numeral._.insert(output, ' ', i + locale.currency.symbol.length - 1); - break; - } - } - - // loop through each after symbol - for (i = symbols.after.length - 1; i >= 0; i--) { - symbol = symbols.after[i]; - - switch (symbol) { - case '$': - output = i === symbols.after.length - 1 ? output + locale.currency.symbol : numeral._.insert(output, locale.currency.symbol, -(symbols.after.length - (1 + i))); - break; - case ' ': - output = i === symbols.after.length - 1 ? output + ' ' : numeral._.insert(output, ' ', -(symbols.after.length - (1 + i) + locale.currency.symbol.length - 1)); - break; - } - } - - - return output; - } - }); -})(); - - -(function() { - numeral.register('format', 'exponential', { - regexps: { - format: /(e\+|e-)/, - unformat: /(e\+|e-)/ - }, - format: function(value, format, roundingFunction) { - var output, - exponential = typeof value === 'number' && !numeral._.isNaN(value) ? value.toExponential() : '0e+0', - parts = exponential.split('e'); - - format = format.replace(/e[\+|\-]{1}0/, ''); - - output = numeral._.numberToFormat(Number(parts[0]), format, roundingFunction); - - return output + 'e' + parts[1]; - }, - unformat: function(string) { - var parts = numeral._.includes(string, 'e+') ? string.split('e+') : string.split('e-'), - value = Number(parts[0]), - power = Number(parts[1]); - - power = numeral._.includes(string, 'e-') ? power *= -1 : power; - - function cback(accum, curr, currI, O) { - var corrFactor = numeral._.correctionFactor(accum, curr), - num = (accum * corrFactor) * (curr * corrFactor) / (corrFactor * corrFactor); - return num; - } - - return numeral._.reduce([value, Math.pow(10, power)], cback, 1); - } - }); -})(); - - -(function() { - numeral.register('format', 'ordinal', { - regexps: { - format: /(o)/ - }, - format: function(value, format, roundingFunction) { - var locale = numeral.locales[numeral.options.currentLocale], - output, - ordinal = numeral._.includes(format, ' o') ? ' ' : ''; - - // check for space before - format = format.replace(/\s?o/, ''); - - ordinal += locale.ordinal(value); - - output = numeral._.numberToFormat(value, format, roundingFunction); - - return output + ordinal; - } - }); -})(); - - -(function() { - numeral.register('format', 'percentage', { - regexps: { - format: /(%)/, - unformat: /(%)/ - }, - format: function(value, format, roundingFunction) { - var space = numeral._.includes(format, ' %') ? ' ' : '', - output; - - if (numeral.options.scalePercentBy100) { - value = value * 100; - } - - // check for space before % - format = format.replace(/\s?\%/, ''); - - output = numeral._.numberToFormat(value, format, roundingFunction); - - if (numeral._.includes(output, ')')) { - output = output.split(''); - - output.splice(-1, 0, space + '%'); - - output = output.join(''); - } else { - output = output + space + '%'; - } - - return output; - }, - unformat: function(string) { - var number = numeral._.stringToNumber(string); - if (numeral.options.scalePercentBy100) { - return number * 0.01; - } - return number; - } - }); -})(); - - -(function() { - numeral.register('format', 'time', { - regexps: { - format: /(:)/, - unformat: /(:)/ - }, - format: function(value, format, roundingFunction) { - var hours = Math.floor(value / 60 / 60), - minutes = Math.floor((value - (hours * 60 * 60)) / 60), - seconds = Math.round(value - (hours * 60 * 60) - (minutes * 60)); - - return hours + ':' + (minutes < 10 ? '0' + minutes : minutes) + ':' + (seconds < 10 ? '0' + seconds : seconds); - }, - unformat: function(string) { - var timeArray = string.split(':'), - seconds = 0; - - // turn hours and minutes into seconds and add them all up - if (timeArray.length === 3) { - // hours - seconds = seconds + (Number(timeArray[0]) * 60 * 60); - // minutes - seconds = seconds + (Number(timeArray[1]) * 60); - // seconds - seconds = seconds + Number(timeArray[2]); - } else if (timeArray.length === 2) { - // minutes - seconds = seconds + (Number(timeArray[0]) * 60); - // seconds - seconds = seconds + Number(timeArray[1]); - } - return Number(seconds); - } - }); -})(); - -return numeral; -})); - -},{}],5:[function(require,module,exports){ -(function (global){(function (){ -/**! - * @fileOverview Kickass library to create and place poppers near their reference elements. - * @version 1.16.1 - * @license - * Copyright (c) 2016 Federico Zivolo and contributors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global.Popper = factory()); -}(this, (function () { 'use strict'; - -var isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined'; - -var timeoutDuration = function () { - var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox']; - for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) { - if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) { - return 1; - } - } - return 0; -}(); - -function microtaskDebounce(fn) { - var called = false; - return function () { - if (called) { - return; - } - called = true; - window.Promise.resolve().then(function () { - called = false; - fn(); - }); - }; -} - -function taskDebounce(fn) { - var scheduled = false; - return function () { - if (!scheduled) { - scheduled = true; - setTimeout(function () { - scheduled = false; - fn(); - }, timeoutDuration); - } - }; -} - -var supportsMicroTasks = isBrowser && window.Promise; - -/** -* Create a debounced version of a method, that's asynchronously deferred -* but called in the minimum time possible. -* -* @method -* @memberof Popper.Utils -* @argument {Function} fn -* @returns {Function} -*/ -var debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce; - -/** - * Check if the given variable is a function - * @method - * @memberof Popper.Utils - * @argument {Any} functionToCheck - variable to check - * @returns {Boolean} answer to: is a function? - */ -function isFunction(functionToCheck) { - var getType = {}; - return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]'; -} - -/** - * Get CSS computed property of the given element - * @method - * @memberof Popper.Utils - * @argument {Eement} element - * @argument {String} property - */ -function getStyleComputedProperty(element, property) { - if (element.nodeType !== 1) { - return []; - } - // NOTE: 1 DOM access here - var window = element.ownerDocument.defaultView; - var css = window.getComputedStyle(element, null); - return property ? css[property] : css; -} - -/** - * Returns the parentNode or the host of the element - * @method - * @memberof Popper.Utils - * @argument {Element} element - * @returns {Element} parent - */ -function getParentNode(element) { - if (element.nodeName === 'HTML') { - return element; - } - return element.parentNode || element.host; -} - -/** - * Returns the scrolling parent of the given element - * @method - * @memberof Popper.Utils - * @argument {Element} element - * @returns {Element} scroll parent - */ -function getScrollParent(element) { - // Return body, `getScroll` will take care to get the correct `scrollTop` from it - if (!element) { - return document.body; - } - - switch (element.nodeName) { - case 'HTML': - case 'BODY': - return element.ownerDocument.body; - case '#document': - return element.body; - } - - // Firefox want us to check `-x` and `-y` variations as well - - var _getStyleComputedProp = getStyleComputedProperty(element), - overflow = _getStyleComputedProp.overflow, - overflowX = _getStyleComputedProp.overflowX, - overflowY = _getStyleComputedProp.overflowY; - - if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) { - return element; - } - - return getScrollParent(getParentNode(element)); -} - -/** - * Returns the reference node of the reference object, or the reference object itself. - * @method - * @memberof Popper.Utils - * @param {Element|Object} reference - the reference element (the popper will be relative to this) - * @returns {Element} parent - */ -function getReferenceNode(reference) { - return reference && reference.referenceNode ? reference.referenceNode : reference; -} - -var isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode); -var isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent); - -/** - * Determines if the browser is Internet Explorer - * @method - * @memberof Popper.Utils - * @param {Number} version to check - * @returns {Boolean} isIE - */ -function isIE(version) { - if (version === 11) { - return isIE11; - } - if (version === 10) { - return isIE10; - } - return isIE11 || isIE10; -} - -/** - * Returns the offset parent of the given element - * @method - * @memberof Popper.Utils - * @argument {Element} element - * @returns {Element} offset parent - */ -function getOffsetParent(element) { - if (!element) { - return document.documentElement; - } - - var noOffsetParent = isIE(10) ? document.body : null; - - // NOTE: 1 DOM access here - var offsetParent = element.offsetParent || null; - // Skip hidden elements which don't have an offsetParent - while (offsetParent === noOffsetParent && element.nextElementSibling) { - offsetParent = (element = element.nextElementSibling).offsetParent; - } - - var nodeName = offsetParent && offsetParent.nodeName; - - if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') { - return element ? element.ownerDocument.documentElement : document.documentElement; - } - - // .offsetParent will return the closest TH, TD or TABLE in case - // no offsetParent is present, I hate this job... - if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') { - return getOffsetParent(offsetParent); - } - - return offsetParent; -} - -function isOffsetContainer(element) { - var nodeName = element.nodeName; - - if (nodeName === 'BODY') { - return false; - } - return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element; -} - -/** - * Finds the root node (document, shadowDOM root) of the given element - * @method - * @memberof Popper.Utils - * @argument {Element} node - * @returns {Element} root node - */ -function getRoot(node) { - if (node.parentNode !== null) { - return getRoot(node.parentNode); - } - - return node; -} - -/** - * Finds the offset parent common to the two provided nodes - * @method - * @memberof Popper.Utils - * @argument {Element} element1 - * @argument {Element} element2 - * @returns {Element} common offset parent - */ -function findCommonOffsetParent(element1, element2) { - // This check is needed to avoid errors in case one of the elements isn't defined for any reason - if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) { - return document.documentElement; - } - - // Here we make sure to give as "start" the element that comes first in the DOM - var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING; - var start = order ? element1 : element2; - var end = order ? element2 : element1; - - // Get common ancestor container - var range = document.createRange(); - range.setStart(start, 0); - range.setEnd(end, 0); - var commonAncestorContainer = range.commonAncestorContainer; - - // Both nodes are inside #document - - if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) { - if (isOffsetContainer(commonAncestorContainer)) { - return commonAncestorContainer; - } - - return getOffsetParent(commonAncestorContainer); - } - - // one of the nodes is inside shadowDOM, find which one - var element1root = getRoot(element1); - if (element1root.host) { - return findCommonOffsetParent(element1root.host, element2); - } else { - return findCommonOffsetParent(element1, getRoot(element2).host); - } -} - -/** - * Gets the scroll value of the given element in the given side (top and left) - * @method - * @memberof Popper.Utils - * @argument {Element} element - * @argument {String} side `top` or `left` - * @returns {number} amount of scrolled pixels - */ -function getScroll(element) { - var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top'; - - var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft'; - var nodeName = element.nodeName; - - if (nodeName === 'BODY' || nodeName === 'HTML') { - var html = element.ownerDocument.documentElement; - var scrollingElement = element.ownerDocument.scrollingElement || html; - return scrollingElement[upperSide]; - } - - return element[upperSide]; -} - -/* - * Sum or subtract the element scroll values (left and top) from a given rect object - * @method - * @memberof Popper.Utils - * @param {Object} rect - Rect object you want to change - * @param {HTMLElement} element - The element from the function reads the scroll values - * @param {Boolean} subtract - set to true if you want to subtract the scroll values - * @return {Object} rect - The modifier rect object - */ -function includeScroll(rect, element) { - var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - - var scrollTop = getScroll(element, 'top'); - var scrollLeft = getScroll(element, 'left'); - var modifier = subtract ? -1 : 1; - rect.top += scrollTop * modifier; - rect.bottom += scrollTop * modifier; - rect.left += scrollLeft * modifier; - rect.right += scrollLeft * modifier; - return rect; -} - -/* - * Helper to detect borders of a given element - * @method - * @memberof Popper.Utils - * @param {CSSStyleDeclaration} styles - * Result of `getStyleComputedProperty` on the given element - * @param {String} axis - `x` or `y` - * @return {number} borders - The borders size of the given axis - */ - -function getBordersSize(styles, axis) { - var sideA = axis === 'x' ? 'Left' : 'Top'; - var sideB = sideA === 'Left' ? 'Right' : 'Bottom'; - - return parseFloat(styles['border' + sideA + 'Width']) + parseFloat(styles['border' + sideB + 'Width']); -} - -function getSize(axis, body, html, computedStyle) { - return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0); -} - -function getWindowSizes(document) { - var body = document.body; - var html = document.documentElement; - var computedStyle = isIE(10) && getComputedStyle(html); - - return { - height: getSize('Height', body, html, computedStyle), - width: getSize('Width', body, html, computedStyle) - }; -} - -var classCallCheck = function (instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } -}; - -var createClass = function () { - function defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - return function (Constructor, protoProps, staticProps) { - if (protoProps) defineProperties(Constructor.prototype, protoProps); - if (staticProps) defineProperties(Constructor, staticProps); - return Constructor; - }; -}(); - - - - - -var defineProperty = function (obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { - value: value, - enumerable: true, - configurable: true, - writable: true - }); - } else { - obj[key] = value; - } - - return obj; -}; - -var _extends = Object.assign || function (target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i]; - - for (var key in source) { - if (Object.prototype.hasOwnProperty.call(source, key)) { - target[key] = source[key]; - } - } - } - - return target; -}; - -/** - * Given element offsets, generate an output similar to getBoundingClientRect - * @method - * @memberof Popper.Utils - * @argument {Object} offsets - * @returns {Object} ClientRect like output - */ -function getClientRect(offsets) { - return _extends({}, offsets, { - right: offsets.left + offsets.width, - bottom: offsets.top + offsets.height - }); -} - -/** - * Get bounding client rect of given element - * @method - * @memberof Popper.Utils - * @param {HTMLElement} element - * @return {Object} client rect - */ -function getBoundingClientRect(element) { - var rect = {}; - - // IE10 10 FIX: Please, don't ask, the element isn't - // considered in DOM in some circumstances... - // This isn't reproducible in IE10 compatibility mode of IE11 - try { - if (isIE(10)) { - rect = element.getBoundingClientRect(); - var scrollTop = getScroll(element, 'top'); - var scrollLeft = getScroll(element, 'left'); - rect.top += scrollTop; - rect.left += scrollLeft; - rect.bottom += scrollTop; - rect.right += scrollLeft; - } else { - rect = element.getBoundingClientRect(); - } - } catch (e) {} - - var result = { - left: rect.left, - top: rect.top, - width: rect.right - rect.left, - height: rect.bottom - rect.top - }; - - // subtract scrollbar size from sizes - var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {}; - var width = sizes.width || element.clientWidth || result.width; - var height = sizes.height || element.clientHeight || result.height; - - var horizScrollbar = element.offsetWidth - width; - var vertScrollbar = element.offsetHeight - height; - - // if an hypothetical scrollbar is detected, we must be sure it's not a `border` - // we make this check conditional for performance reasons - if (horizScrollbar || vertScrollbar) { - var styles = getStyleComputedProperty(element); - horizScrollbar -= getBordersSize(styles, 'x'); - vertScrollbar -= getBordersSize(styles, 'y'); - - result.width -= horizScrollbar; - result.height -= vertScrollbar; - } - - return getClientRect(result); -} - -function getOffsetRectRelativeToArbitraryNode(children, parent) { - var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - - var isIE10 = isIE(10); - var isHTML = parent.nodeName === 'HTML'; - var childrenRect = getBoundingClientRect(children); - var parentRect = getBoundingClientRect(parent); - var scrollParent = getScrollParent(children); - - var styles = getStyleComputedProperty(parent); - var borderTopWidth = parseFloat(styles.borderTopWidth); - var borderLeftWidth = parseFloat(styles.borderLeftWidth); - - // In cases where the parent is fixed, we must ignore negative scroll in offset calc - if (fixedPosition && isHTML) { - parentRect.top = Math.max(parentRect.top, 0); - parentRect.left = Math.max(parentRect.left, 0); - } - var offsets = getClientRect({ - top: childrenRect.top - parentRect.top - borderTopWidth, - left: childrenRect.left - parentRect.left - borderLeftWidth, - width: childrenRect.width, - height: childrenRect.height - }); - offsets.marginTop = 0; - offsets.marginLeft = 0; - - // Subtract margins of documentElement in case it's being used as parent - // we do this only on HTML because it's the only element that behaves - // differently when margins are applied to it. The margins are included in - // the box of the documentElement, in the other cases not. - if (!isIE10 && isHTML) { - var marginTop = parseFloat(styles.marginTop); - var marginLeft = parseFloat(styles.marginLeft); - - offsets.top -= borderTopWidth - marginTop; - offsets.bottom -= borderTopWidth - marginTop; - offsets.left -= borderLeftWidth - marginLeft; - offsets.right -= borderLeftWidth - marginLeft; - - // Attach marginTop and marginLeft because in some circumstances we may need them - offsets.marginTop = marginTop; - offsets.marginLeft = marginLeft; - } - - if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') { - offsets = includeScroll(offsets, parent); - } - - return offsets; -} - -function getViewportOffsetRectRelativeToArtbitraryNode(element) { - var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - - var html = element.ownerDocument.documentElement; - var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html); - var width = Math.max(html.clientWidth, window.innerWidth || 0); - var height = Math.max(html.clientHeight, window.innerHeight || 0); - - var scrollTop = !excludeScroll ? getScroll(html) : 0; - var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0; - - var offset = { - top: scrollTop - relativeOffset.top + relativeOffset.marginTop, - left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft, - width: width, - height: height - }; - - return getClientRect(offset); -} - -/** - * Check if the given element is fixed or is inside a fixed parent - * @method - * @memberof Popper.Utils - * @argument {Element} element - * @argument {Element} customContainer - * @returns {Boolean} answer to "isFixed?" - */ -function isFixed(element) { - var nodeName = element.nodeName; - if (nodeName === 'BODY' || nodeName === 'HTML') { - return false; - } - if (getStyleComputedProperty(element, 'position') === 'fixed') { - return true; - } - var parentNode = getParentNode(element); - if (!parentNode) { - return false; - } - return isFixed(parentNode); -} - -/** - * Finds the first parent of an element that has a transformed property defined - * @method - * @memberof Popper.Utils - * @argument {Element} element - * @returns {Element} first transformed parent or documentElement - */ - -function getFixedPositionOffsetParent(element) { - // This check is needed to avoid errors in case one of the elements isn't defined for any reason - if (!element || !element.parentElement || isIE()) { - return document.documentElement; - } - var el = element.parentElement; - while (el && getStyleComputedProperty(el, 'transform') === 'none') { - el = el.parentElement; - } - return el || document.documentElement; -} - -/** - * Computed the boundaries limits and return them - * @method - * @memberof Popper.Utils - * @param {HTMLElement} popper - * @param {HTMLElement} reference - * @param {number} padding - * @param {HTMLElement} boundariesElement - Element used to define the boundaries - * @param {Boolean} fixedPosition - Is in fixed position mode - * @returns {Object} Coordinates of the boundaries - */ -function getBoundaries(popper, reference, padding, boundariesElement) { - var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; - - // NOTE: 1 DOM access here - - var boundaries = { top: 0, left: 0 }; - var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference)); - - // Handle viewport case - if (boundariesElement === 'viewport') { - boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition); - } else { - // Handle other cases based on DOM element used as boundaries - var boundariesNode = void 0; - if (boundariesElement === 'scrollParent') { - boundariesNode = getScrollParent(getParentNode(reference)); - if (boundariesNode.nodeName === 'BODY') { - boundariesNode = popper.ownerDocument.documentElement; - } - } else if (boundariesElement === 'window') { - boundariesNode = popper.ownerDocument.documentElement; - } else { - boundariesNode = boundariesElement; - } - - var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition); - - // In case of HTML, we need a different computation - if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) { - var _getWindowSizes = getWindowSizes(popper.ownerDocument), - height = _getWindowSizes.height, - width = _getWindowSizes.width; - - boundaries.top += offsets.top - offsets.marginTop; - boundaries.bottom = height + offsets.top; - boundaries.left += offsets.left - offsets.marginLeft; - boundaries.right = width + offsets.left; - } else { - // for all the other DOM elements, this one is good - boundaries = offsets; - } - } - - // Add paddings - padding = padding || 0; - var isPaddingNumber = typeof padding === 'number'; - boundaries.left += isPaddingNumber ? padding : padding.left || 0; - boundaries.top += isPaddingNumber ? padding : padding.top || 0; - boundaries.right -= isPaddingNumber ? padding : padding.right || 0; - boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0; - - return boundaries; -} - -function getArea(_ref) { - var width = _ref.width, - height = _ref.height; - - return width * height; -} - -/** - * Utility used to transform the `auto` placement to the placement with more - * available space. - * @method - * @memberof Popper.Utils - * @argument {Object} data - The data object generated by update method - * @argument {Object} options - Modifiers configuration and options - * @returns {Object} The data object, properly modified - */ -function computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) { - var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0; - - if (placement.indexOf('auto') === -1) { - return placement; - } - - var boundaries = getBoundaries(popper, reference, padding, boundariesElement); - - var rects = { - top: { - width: boundaries.width, - height: refRect.top - boundaries.top - }, - right: { - width: boundaries.right - refRect.right, - height: boundaries.height - }, - bottom: { - width: boundaries.width, - height: boundaries.bottom - refRect.bottom - }, - left: { - width: refRect.left - boundaries.left, - height: boundaries.height - } - }; - - var sortedAreas = Object.keys(rects).map(function (key) { - return _extends({ - key: key - }, rects[key], { - area: getArea(rects[key]) - }); - }).sort(function (a, b) { - return b.area - a.area; - }); - - var filteredAreas = sortedAreas.filter(function (_ref2) { - var width = _ref2.width, - height = _ref2.height; - return width >= popper.clientWidth && height >= popper.clientHeight; - }); - - var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key; - - var variation = placement.split('-')[1]; - - return computedPlacement + (variation ? '-' + variation : ''); -} - -/** - * Get offsets to the reference element - * @method - * @memberof Popper.Utils - * @param {Object} state - * @param {Element} popper - the popper element - * @param {Element} reference - the reference element (the popper will be relative to this) - * @param {Element} fixedPosition - is in fixed position mode - * @returns {Object} An object containing the offsets which will be applied to the popper - */ -function getReferenceOffsets(state, popper, reference) { - var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; - - var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference)); - return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition); -} - -/** - * Get the outer sizes of the given element (offset size + margins) - * @method - * @memberof Popper.Utils - * @argument {Element} element - * @returns {Object} object containing width and height properties - */ -function getOuterSizes(element) { - var window = element.ownerDocument.defaultView; - var styles = window.getComputedStyle(element); - var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0); - var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0); - var result = { - width: element.offsetWidth + y, - height: element.offsetHeight + x - }; - return result; -} - -/** - * Get the opposite placement of the given one - * @method - * @memberof Popper.Utils - * @argument {String} placement - * @returns {String} flipped placement - */ -function getOppositePlacement(placement) { - var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' }; - return placement.replace(/left|right|bottom|top/g, function (matched) { - return hash[matched]; - }); -} - -/** - * Get offsets to the popper - * @method - * @memberof Popper.Utils - * @param {Object} position - CSS position the Popper will get applied - * @param {HTMLElement} popper - the popper element - * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this) - * @param {String} placement - one of the valid placement options - * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper - */ -function getPopperOffsets(popper, referenceOffsets, placement) { - placement = placement.split('-')[0]; - - // Get popper node sizes - var popperRect = getOuterSizes(popper); - - // Add position, width and height to our offsets object - var popperOffsets = { - width: popperRect.width, - height: popperRect.height - }; - - // depending by the popper placement we have to compute its offsets slightly differently - var isHoriz = ['right', 'left'].indexOf(placement) !== -1; - var mainSide = isHoriz ? 'top' : 'left'; - var secondarySide = isHoriz ? 'left' : 'top'; - var measurement = isHoriz ? 'height' : 'width'; - var secondaryMeasurement = !isHoriz ? 'height' : 'width'; - - popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2; - if (placement === secondarySide) { - popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement]; - } else { - popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)]; - } - - return popperOffsets; -} - -/** - * Mimics the `find` method of Array - * @method - * @memberof Popper.Utils - * @argument {Array} arr - * @argument prop - * @argument value - * @returns index or -1 - */ -function find(arr, check) { - // use native find if supported - if (Array.prototype.find) { - return arr.find(check); - } - - // use `filter` to obtain the same behavior of `find` - return arr.filter(check)[0]; -} - -/** - * Return the index of the matching object - * @method - * @memberof Popper.Utils - * @argument {Array} arr - * @argument prop - * @argument value - * @returns index or -1 - */ -function findIndex(arr, prop, value) { - // use native findIndex if supported - if (Array.prototype.findIndex) { - return arr.findIndex(function (cur) { - return cur[prop] === value; - }); - } - - // use `find` + `indexOf` if `findIndex` isn't supported - var match = find(arr, function (obj) { - return obj[prop] === value; - }); - return arr.indexOf(match); -} - -/** - * Loop trough the list of modifiers and run them in order, - * each of them will then edit the data object. - * @method - * @memberof Popper.Utils - * @param {dataObject} data - * @param {Array} modifiers - * @param {String} ends - Optional modifier name used as stopper - * @returns {dataObject} - */ -function runModifiers(modifiers, data, ends) { - var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends)); - - modifiersToRun.forEach(function (modifier) { - if (modifier['function']) { - // eslint-disable-line dot-notation - console.warn('`modifier.function` is deprecated, use `modifier.fn`!'); - } - var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation - if (modifier.enabled && isFunction(fn)) { - // Add properties to offsets to make them a complete clientRect object - // we do this before each modifier to make sure the previous one doesn't - // mess with these values - data.offsets.popper = getClientRect(data.offsets.popper); - data.offsets.reference = getClientRect(data.offsets.reference); - - data = fn(data, modifier); - } - }); - - return data; -} - -/** - * Updates the position of the popper, computing the new offsets and applying - * the new style.
    - * Prefer `scheduleUpdate` over `update` because of performance reasons. - * @method - * @memberof Popper - */ -function update() { - // if popper is destroyed, don't perform any further update - if (this.state.isDestroyed) { - return; - } - - var data = { - instance: this, - styles: {}, - arrowStyles: {}, - attributes: {}, - flipped: false, - offsets: {} - }; - - // compute reference element offsets - data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed); - - // compute auto placement, store placement inside the data object, - // modifiers will be able to edit `placement` if needed - // and refer to originalPlacement to know the original value - data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding); - - // store the computed placement inside `originalPlacement` - data.originalPlacement = data.placement; - - data.positionFixed = this.options.positionFixed; - - // compute the popper offsets - data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement); - - data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute'; - - // run the modifiers - data = runModifiers(this.modifiers, data); - - // the first `update` will call `onCreate` callback - // the other ones will call `onUpdate` callback - if (!this.state.isCreated) { - this.state.isCreated = true; - this.options.onCreate(data); - } else { - this.options.onUpdate(data); - } -} - -/** - * Helper used to know if the given modifier is enabled. - * @method - * @memberof Popper.Utils - * @returns {Boolean} - */ -function isModifierEnabled(modifiers, modifierName) { - return modifiers.some(function (_ref) { - var name = _ref.name, - enabled = _ref.enabled; - return enabled && name === modifierName; - }); -} - -/** - * Get the prefixed supported property name - * @method - * @memberof Popper.Utils - * @argument {String} property (camelCase) - * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix) - */ -function getSupportedPropertyName(property) { - var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O']; - var upperProp = property.charAt(0).toUpperCase() + property.slice(1); - - for (var i = 0; i < prefixes.length; i++) { - var prefix = prefixes[i]; - var toCheck = prefix ? '' + prefix + upperProp : property; - if (typeof document.body.style[toCheck] !== 'undefined') { - return toCheck; - } - } - return null; -} - -/** - * Destroys the popper. - * @method - * @memberof Popper - */ -function destroy() { - this.state.isDestroyed = true; - - // touch DOM only if `applyStyle` modifier is enabled - if (isModifierEnabled(this.modifiers, 'applyStyle')) { - this.popper.removeAttribute('x-placement'); - this.popper.style.position = ''; - this.popper.style.top = ''; - this.popper.style.left = ''; - this.popper.style.right = ''; - this.popper.style.bottom = ''; - this.popper.style.willChange = ''; - this.popper.style[getSupportedPropertyName('transform')] = ''; - } - - this.disableEventListeners(); - - // remove the popper if user explicitly asked for the deletion on destroy - // do not use `remove` because IE11 doesn't support it - if (this.options.removeOnDestroy) { - this.popper.parentNode.removeChild(this.popper); - } - return this; -} - -/** - * Get the window associated with the element - * @argument {Element} element - * @returns {Window} - */ -function getWindow(element) { - var ownerDocument = element.ownerDocument; - return ownerDocument ? ownerDocument.defaultView : window; -} - -function attachToScrollParents(scrollParent, event, callback, scrollParents) { - var isBody = scrollParent.nodeName === 'BODY'; - var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent; - target.addEventListener(event, callback, { passive: true }); - - if (!isBody) { - attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents); - } - scrollParents.push(target); -} - -/** - * Setup needed event listeners used to update the popper position - * @method - * @memberof Popper.Utils - * @private - */ -function setupEventListeners(reference, options, state, updateBound) { - // Resize event listener on window - state.updateBound = updateBound; - getWindow(reference).addEventListener('resize', state.updateBound, { passive: true }); - - // Scroll event listener on scroll parents - var scrollElement = getScrollParent(reference); - attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents); - state.scrollElement = scrollElement; - state.eventsEnabled = true; - - return state; -} - -/** - * It will add resize/scroll events and start recalculating - * position of the popper element when they are triggered. - * @method - * @memberof Popper - */ -function enableEventListeners() { - if (!this.state.eventsEnabled) { - this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate); - } -} - -/** - * Remove event listeners used to update the popper position - * @method - * @memberof Popper.Utils - * @private - */ -function removeEventListeners(reference, state) { - // Remove resize event listener on window - getWindow(reference).removeEventListener('resize', state.updateBound); - - // Remove scroll event listener on scroll parents - state.scrollParents.forEach(function (target) { - target.removeEventListener('scroll', state.updateBound); - }); - - // Reset state - state.updateBound = null; - state.scrollParents = []; - state.scrollElement = null; - state.eventsEnabled = false; - return state; -} - -/** - * It will remove resize/scroll events and won't recalculate popper position - * when they are triggered. It also won't trigger `onUpdate` callback anymore, - * unless you call `update` method manually. - * @method - * @memberof Popper - */ -function disableEventListeners() { - if (this.state.eventsEnabled) { - cancelAnimationFrame(this.scheduleUpdate); - this.state = removeEventListeners(this.reference, this.state); - } -} - -/** - * Tells if a given input is a number - * @method - * @memberof Popper.Utils - * @param {*} input to check - * @return {Boolean} - */ -function isNumeric(n) { - return n !== '' && !isNaN(parseFloat(n)) && isFinite(n); -} - -/** - * Set the style to the given popper - * @method - * @memberof Popper.Utils - * @argument {Element} element - Element to apply the style to - * @argument {Object} styles - * Object with a list of properties and values which will be applied to the element - */ -function setStyles(element, styles) { - Object.keys(styles).forEach(function (prop) { - var unit = ''; - // add unit if the value is numeric and is one of the following - if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) { - unit = 'px'; - } - element.style[prop] = styles[prop] + unit; - }); -} - -/** - * Set the attributes to the given popper - * @method - * @memberof Popper.Utils - * @argument {Element} element - Element to apply the attributes to - * @argument {Object} styles - * Object with a list of properties and values which will be applied to the element - */ -function setAttributes(element, attributes) { - Object.keys(attributes).forEach(function (prop) { - var value = attributes[prop]; - if (value !== false) { - element.setAttribute(prop, attributes[prop]); - } else { - element.removeAttribute(prop); - } - }); -} - -/** - * @function - * @memberof Modifiers - * @argument {Object} data - The data object generated by `update` method - * @argument {Object} data.styles - List of style properties - values to apply to popper element - * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element - * @argument {Object} options - Modifiers configuration and options - * @returns {Object} The same data object - */ -function applyStyle(data) { - // any property present in `data.styles` will be applied to the popper, - // in this way we can make the 3rd party modifiers add custom styles to it - // Be aware, modifiers could override the properties defined in the previous - // lines of this modifier! - setStyles(data.instance.popper, data.styles); - - // any property present in `data.attributes` will be applied to the popper, - // they will be set as HTML attributes of the element - setAttributes(data.instance.popper, data.attributes); - - // if arrowElement is defined and arrowStyles has some properties - if (data.arrowElement && Object.keys(data.arrowStyles).length) { - setStyles(data.arrowElement, data.arrowStyles); - } - - return data; -} - -/** - * Set the x-placement attribute before everything else because it could be used - * to add margins to the popper margins needs to be calculated to get the - * correct popper offsets. - * @method - * @memberof Popper.modifiers - * @param {HTMLElement} reference - The reference element used to position the popper - * @param {HTMLElement} popper - The HTML element used as popper - * @param {Object} options - Popper.js options - */ -function applyStyleOnLoad(reference, popper, options, modifierOptions, state) { - // compute reference element offsets - var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed); - - // compute auto placement, store placement inside the data object, - // modifiers will be able to edit `placement` if needed - // and refer to originalPlacement to know the original value - var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding); - - popper.setAttribute('x-placement', placement); - - // Apply `position` to popper before anything else because - // without the position applied we can't guarantee correct computations - setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' }); - - return options; -} - -/** - * @function - * @memberof Popper.Utils - * @argument {Object} data - The data object generated by `update` method - * @argument {Boolean} shouldRound - If the offsets should be rounded at all - * @returns {Object} The popper's position offsets rounded - * - * The tale of pixel-perfect positioning. It's still not 100% perfect, but as - * good as it can be within reason. - * Discussion here: https://github.com/FezVrasta/popper.js/pull/715 - * - * Low DPI screens cause a popper to be blurry if not using full pixels (Safari - * as well on High DPI screens). - * - * Firefox prefers no rounding for positioning and does not have blurriness on - * high DPI screens. - * - * Only horizontal placement and left/right values need to be considered. - */ -function getRoundedOffsets(data, shouldRound) { - var _data$offsets = data.offsets, - popper = _data$offsets.popper, - reference = _data$offsets.reference; - var round = Math.round, - floor = Math.floor; - - var noRound = function noRound(v) { - return v; - }; - - var referenceWidth = round(reference.width); - var popperWidth = round(popper.width); - - var isVertical = ['left', 'right'].indexOf(data.placement) !== -1; - var isVariation = data.placement.indexOf('-') !== -1; - var sameWidthParity = referenceWidth % 2 === popperWidth % 2; - var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1; - - var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor; - var verticalToInteger = !shouldRound ? noRound : round; - - return { - left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left), - top: verticalToInteger(popper.top), - bottom: verticalToInteger(popper.bottom), - right: horizontalToInteger(popper.right) - }; -} - -var isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent); - -/** - * @function - * @memberof Modifiers - * @argument {Object} data - The data object generated by `update` method - * @argument {Object} options - Modifiers configuration and options - * @returns {Object} The data object, properly modified - */ -function computeStyle(data, options) { - var x = options.x, - y = options.y; - var popper = data.offsets.popper; - - // Remove this legacy support in Popper.js v2 - - var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) { - return modifier.name === 'applyStyle'; - }).gpuAcceleration; - if (legacyGpuAccelerationOption !== undefined) { - console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!'); - } - var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration; - - var offsetParent = getOffsetParent(data.instance.popper); - var offsetParentRect = getBoundingClientRect(offsetParent); - - // Styles - var styles = { - position: popper.position - }; - - var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox); - - var sideA = x === 'bottom' ? 'top' : 'bottom'; - var sideB = y === 'right' ? 'left' : 'right'; - - // if gpuAcceleration is set to `true` and transform is supported, - // we use `translate3d` to apply the position to the popper we - // automatically use the supported prefixed version if needed - var prefixedProperty = getSupportedPropertyName('transform'); - - // now, let's make a step back and look at this code closely (wtf?) - // If the content of the popper grows once it's been positioned, it - // may happen that the popper gets misplaced because of the new content - // overflowing its reference element - // To avoid this problem, we provide two options (x and y), which allow - // the consumer to define the offset origin. - // If we position a popper on top of a reference element, we can set - // `x` to `top` to make the popper grow towards its top instead of - // its bottom. - var left = void 0, - top = void 0; - if (sideA === 'bottom') { - // when offsetParent is the positioning is relative to the bottom of the screen (excluding the scrollbar) - // and not the bottom of the html element - if (offsetParent.nodeName === 'HTML') { - top = -offsetParent.clientHeight + offsets.bottom; - } else { - top = -offsetParentRect.height + offsets.bottom; - } - } else { - top = offsets.top; - } - if (sideB === 'right') { - if (offsetParent.nodeName === 'HTML') { - left = -offsetParent.clientWidth + offsets.right; - } else { - left = -offsetParentRect.width + offsets.right; - } - } else { - left = offsets.left; - } - if (gpuAcceleration && prefixedProperty) { - styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)'; - styles[sideA] = 0; - styles[sideB] = 0; - styles.willChange = 'transform'; - } else { - // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties - var invertTop = sideA === 'bottom' ? -1 : 1; - var invertLeft = sideB === 'right' ? -1 : 1; - styles[sideA] = top * invertTop; - styles[sideB] = left * invertLeft; - styles.willChange = sideA + ', ' + sideB; - } - - // Attributes - var attributes = { - 'x-placement': data.placement - }; - - // Update `data` attributes, styles and arrowStyles - data.attributes = _extends({}, attributes, data.attributes); - data.styles = _extends({}, styles, data.styles); - data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles); - - return data; -} - -/** - * Helper used to know if the given modifier depends from another one.
    - * It checks if the needed modifier is listed and enabled. - * @method - * @memberof Popper.Utils - * @param {Array} modifiers - list of modifiers - * @param {String} requestingName - name of requesting modifier - * @param {String} requestedName - name of requested modifier - * @returns {Boolean} - */ -function isModifierRequired(modifiers, requestingName, requestedName) { - var requesting = find(modifiers, function (_ref) { - var name = _ref.name; - return name === requestingName; - }); - - var isRequired = !!requesting && modifiers.some(function (modifier) { - return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order; - }); - - if (!isRequired) { - var _requesting = '`' + requestingName + '`'; - var requested = '`' + requestedName + '`'; - console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!'); - } - return isRequired; -} - -/** - * @function - * @memberof Modifiers - * @argument {Object} data - The data object generated by update method - * @argument {Object} options - Modifiers configuration and options - * @returns {Object} The data object, properly modified - */ -function arrow(data, options) { - var _data$offsets$arrow; - - // arrow depends on keepTogether in order to work - if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) { - return data; - } - - var arrowElement = options.element; - - // if arrowElement is a string, suppose it's a CSS selector - if (typeof arrowElement === 'string') { - arrowElement = data.instance.popper.querySelector(arrowElement); - - // if arrowElement is not found, don't run the modifier - if (!arrowElement) { - return data; - } - } else { - // if the arrowElement isn't a query selector we must check that the - // provided DOM node is child of its popper node - if (!data.instance.popper.contains(arrowElement)) { - console.warn('WARNING: `arrow.element` must be child of its popper element!'); - return data; - } - } - - var placement = data.placement.split('-')[0]; - var _data$offsets = data.offsets, - popper = _data$offsets.popper, - reference = _data$offsets.reference; - - var isVertical = ['left', 'right'].indexOf(placement) !== -1; - - var len = isVertical ? 'height' : 'width'; - var sideCapitalized = isVertical ? 'Top' : 'Left'; - var side = sideCapitalized.toLowerCase(); - var altSide = isVertical ? 'left' : 'top'; - var opSide = isVertical ? 'bottom' : 'right'; - var arrowElementSize = getOuterSizes(arrowElement)[len]; - - // - // extends keepTogether behavior making sure the popper and its - // reference have enough pixels in conjunction - // - - // top/left side - if (reference[opSide] - arrowElementSize < popper[side]) { - data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize); - } - // bottom/right side - if (reference[side] + arrowElementSize > popper[opSide]) { - data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide]; - } - data.offsets.popper = getClientRect(data.offsets.popper); - - // compute center of the popper - var center = reference[side] + reference[len] / 2 - arrowElementSize / 2; - - // Compute the sideValue using the updated popper offsets - // take popper margin in account because we don't have this info available - var css = getStyleComputedProperty(data.instance.popper); - var popperMarginSide = parseFloat(css['margin' + sideCapitalized]); - var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width']); - var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide; - - // prevent arrowElement from being placed not contiguously to its popper - sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0); - - data.arrowElement = arrowElement; - data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow); - - return data; -} - -/** - * Get the opposite placement variation of the given one - * @method - * @memberof Popper.Utils - * @argument {String} placement variation - * @returns {String} flipped placement variation - */ -function getOppositeVariation(variation) { - if (variation === 'end') { - return 'start'; - } else if (variation === 'start') { - return 'end'; - } - return variation; -} - -/** - * List of accepted placements to use as values of the `placement` option.
    - * Valid placements are: - * - `auto` - * - `top` - * - `right` - * - `bottom` - * - `left` - * - * Each placement can have a variation from this list: - * - `-start` - * - `-end` - * - * Variations are interpreted easily if you think of them as the left to right - * written languages. Horizontally (`top` and `bottom`), `start` is left and `end` - * is right.
    - * Vertically (`left` and `right`), `start` is top and `end` is bottom. - * - * Some valid examples are: - * - `top-end` (on top of reference, right aligned) - * - `right-start` (on right of reference, top aligned) - * - `bottom` (on bottom, centered) - * - `auto-end` (on the side with more space available, alignment depends by placement) - * - * @static - * @type {Array} - * @enum {String} - * @readonly - * @method placements - * @memberof Popper - */ -var placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start']; - -// Get rid of `auto` `auto-start` and `auto-end` -var validPlacements = placements.slice(3); - -/** - * Given an initial placement, returns all the subsequent placements - * clockwise (or counter-clockwise). - * - * @method - * @memberof Popper.Utils - * @argument {String} placement - A valid placement (it accepts variations) - * @argument {Boolean} counter - Set to true to walk the placements counterclockwise - * @returns {Array} placements including their variations - */ -function clockwise(placement) { - var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - - var index = validPlacements.indexOf(placement); - var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index)); - return counter ? arr.reverse() : arr; -} - -var BEHAVIORS = { - FLIP: 'flip', - CLOCKWISE: 'clockwise', - COUNTERCLOCKWISE: 'counterclockwise' -}; - -/** - * @function - * @memberof Modifiers - * @argument {Object} data - The data object generated by update method - * @argument {Object} options - Modifiers configuration and options - * @returns {Object} The data object, properly modified - */ -function flip(data, options) { - // if `inner` modifier is enabled, we can't use the `flip` modifier - if (isModifierEnabled(data.instance.modifiers, 'inner')) { - return data; - } - - if (data.flipped && data.placement === data.originalPlacement) { - // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides - return data; - } - - var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed); - - var placement = data.placement.split('-')[0]; - var placementOpposite = getOppositePlacement(placement); - var variation = data.placement.split('-')[1] || ''; - - var flipOrder = []; - - switch (options.behavior) { - case BEHAVIORS.FLIP: - flipOrder = [placement, placementOpposite]; - break; - case BEHAVIORS.CLOCKWISE: - flipOrder = clockwise(placement); - break; - case BEHAVIORS.COUNTERCLOCKWISE: - flipOrder = clockwise(placement, true); - break; - default: - flipOrder = options.behavior; - } - - flipOrder.forEach(function (step, index) { - if (placement !== step || flipOrder.length === index + 1) { - return data; - } - - placement = data.placement.split('-')[0]; - placementOpposite = getOppositePlacement(placement); - - var popperOffsets = data.offsets.popper; - var refOffsets = data.offsets.reference; - - // using floor because the reference offsets may contain decimals we are not going to consider here - var floor = Math.floor; - var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom); - - var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left); - var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right); - var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top); - var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom); - - var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom; - - // flip the variation if required - var isVertical = ['top', 'bottom'].indexOf(placement) !== -1; - - // flips variation if reference element overflows boundaries - var flippedVariationByRef = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom); - - // flips variation if popper content overflows boundaries - var flippedVariationByContent = !!options.flipVariationsByContent && (isVertical && variation === 'start' && overflowsRight || isVertical && variation === 'end' && overflowsLeft || !isVertical && variation === 'start' && overflowsBottom || !isVertical && variation === 'end' && overflowsTop); - - var flippedVariation = flippedVariationByRef || flippedVariationByContent; - - if (overlapsRef || overflowsBoundaries || flippedVariation) { - // this boolean to detect any flip loop - data.flipped = true; - - if (overlapsRef || overflowsBoundaries) { - placement = flipOrder[index + 1]; - } - - if (flippedVariation) { - variation = getOppositeVariation(variation); - } - - data.placement = placement + (variation ? '-' + variation : ''); - - // this object contains `position`, we want to preserve it along with - // any additional property we may add in the future - data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement)); - - data = runModifiers(data.instance.modifiers, data, 'flip'); - } - }); - return data; -} - -/** - * @function - * @memberof Modifiers - * @argument {Object} data - The data object generated by update method - * @argument {Object} options - Modifiers configuration and options - * @returns {Object} The data object, properly modified - */ -function keepTogether(data) { - var _data$offsets = data.offsets, - popper = _data$offsets.popper, - reference = _data$offsets.reference; - - var placement = data.placement.split('-')[0]; - var floor = Math.floor; - var isVertical = ['top', 'bottom'].indexOf(placement) !== -1; - var side = isVertical ? 'right' : 'bottom'; - var opSide = isVertical ? 'left' : 'top'; - var measurement = isVertical ? 'width' : 'height'; - - if (popper[side] < floor(reference[opSide])) { - data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement]; - } - if (popper[opSide] > floor(reference[side])) { - data.offsets.popper[opSide] = floor(reference[side]); - } - - return data; -} - -/** - * Converts a string containing value + unit into a px value number - * @function - * @memberof {modifiers~offset} - * @private - * @argument {String} str - Value + unit string - * @argument {String} measurement - `height` or `width` - * @argument {Object} popperOffsets - * @argument {Object} referenceOffsets - * @returns {Number|String} - * Value in pixels, or original string if no values were extracted - */ -function toValue(str, measurement, popperOffsets, referenceOffsets) { - // separate value from unit - var split = str.match(/((?:\-|\+)?\d*\.?\d*)(.*)/); - var value = +split[1]; - var unit = split[2]; - - // If it's not a number it's an operator, I guess - if (!value) { - return str; - } - - if (unit.indexOf('%') === 0) { - var element = void 0; - switch (unit) { - case '%p': - element = popperOffsets; - break; - case '%': - case '%r': - default: - element = referenceOffsets; - } - - var rect = getClientRect(element); - return rect[measurement] / 100 * value; - } else if (unit === 'vh' || unit === 'vw') { - // if is a vh or vw, we calculate the size based on the viewport - var size = void 0; - if (unit === 'vh') { - size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0); - } else { - size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0); - } - return size / 100 * value; - } else { - // if is an explicit pixel unit, we get rid of the unit and keep the value - // if is an implicit unit, it's px, and we return just the value - return value; - } -} - -/** - * Parse an `offset` string to extrapolate `x` and `y` numeric offsets. - * @function - * @memberof {modifiers~offset} - * @private - * @argument {String} offset - * @argument {Object} popperOffsets - * @argument {Object} referenceOffsets - * @argument {String} basePlacement - * @returns {Array} a two cells array with x and y offsets in numbers - */ -function parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) { - var offsets = [0, 0]; - - // Use height if placement is left or right and index is 0 otherwise use width - // in this way the first offset will use an axis and the second one - // will use the other one - var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1; - - // Split the offset string to obtain a list of values and operands - // The regex addresses values with the plus or minus sign in front (+10, -20, etc) - var fragments = offset.split(/(\+|\-)/).map(function (frag) { - return frag.trim(); - }); - - // Detect if the offset string contains a pair of values or a single one - // they could be separated by comma or space - var divider = fragments.indexOf(find(fragments, function (frag) { - return frag.search(/,|\s/) !== -1; - })); - - if (fragments[divider] && fragments[divider].indexOf(',') === -1) { - console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.'); - } - - // If divider is found, we divide the list of values and operands to divide - // them by ofset X and Y. - var splitRegex = /\s*,\s*|\s+/; - var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments]; - - // Convert the values with units to absolute pixels to allow our computations - ops = ops.map(function (op, index) { - // Most of the units rely on the orientation of the popper - var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width'; - var mergeWithPrevious = false; - return op - // This aggregates any `+` or `-` sign that aren't considered operators - // e.g.: 10 + +5 => [10, +, +5] - .reduce(function (a, b) { - if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) { - a[a.length - 1] = b; - mergeWithPrevious = true; - return a; - } else if (mergeWithPrevious) { - a[a.length - 1] += b; - mergeWithPrevious = false; - return a; - } else { - return a.concat(b); - } - }, []) - // Here we convert the string values into number values (in px) - .map(function (str) { - return toValue(str, measurement, popperOffsets, referenceOffsets); - }); - }); - - // Loop trough the offsets arrays and execute the operations - ops.forEach(function (op, index) { - op.forEach(function (frag, index2) { - if (isNumeric(frag)) { - offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1); - } - }); - }); - return offsets; -} - -/** - * @function - * @memberof Modifiers - * @argument {Object} data - The data object generated by update method - * @argument {Object} options - Modifiers configuration and options - * @argument {Number|String} options.offset=0 - * The offset value as described in the modifier description - * @returns {Object} The data object, properly modified - */ -function offset(data, _ref) { - var offset = _ref.offset; - var placement = data.placement, - _data$offsets = data.offsets, - popper = _data$offsets.popper, - reference = _data$offsets.reference; - - var basePlacement = placement.split('-')[0]; - - var offsets = void 0; - if (isNumeric(+offset)) { - offsets = [+offset, 0]; - } else { - offsets = parseOffset(offset, popper, reference, basePlacement); - } - - if (basePlacement === 'left') { - popper.top += offsets[0]; - popper.left -= offsets[1]; - } else if (basePlacement === 'right') { - popper.top += offsets[0]; - popper.left += offsets[1]; - } else if (basePlacement === 'top') { - popper.left += offsets[0]; - popper.top -= offsets[1]; - } else if (basePlacement === 'bottom') { - popper.left += offsets[0]; - popper.top += offsets[1]; - } - - data.popper = popper; - return data; -} - -/** - * @function - * @memberof Modifiers - * @argument {Object} data - The data object generated by `update` method - * @argument {Object} options - Modifiers configuration and options - * @returns {Object} The data object, properly modified - */ -function preventOverflow(data, options) { - var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper); - - // If offsetParent is the reference element, we really want to - // go one step up and use the next offsetParent as reference to - // avoid to make this modifier completely useless and look like broken - if (data.instance.reference === boundariesElement) { - boundariesElement = getOffsetParent(boundariesElement); - } - - // NOTE: DOM access here - // resets the popper's position so that the document size can be calculated excluding - // the size of the popper element itself - var transformProp = getSupportedPropertyName('transform'); - var popperStyles = data.instance.popper.style; // assignment to help minification - var top = popperStyles.top, - left = popperStyles.left, - transform = popperStyles[transformProp]; - - popperStyles.top = ''; - popperStyles.left = ''; - popperStyles[transformProp] = ''; - - var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed); - - // NOTE: DOM access here - // restores the original style properties after the offsets have been computed - popperStyles.top = top; - popperStyles.left = left; - popperStyles[transformProp] = transform; - - options.boundaries = boundaries; - - var order = options.priority; - var popper = data.offsets.popper; - - var check = { - primary: function primary(placement) { - var value = popper[placement]; - if (popper[placement] < boundaries[placement] && !options.escapeWithReference) { - value = Math.max(popper[placement], boundaries[placement]); - } - return defineProperty({}, placement, value); - }, - secondary: function secondary(placement) { - var mainSide = placement === 'right' ? 'left' : 'top'; - var value = popper[mainSide]; - if (popper[placement] > boundaries[placement] && !options.escapeWithReference) { - value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height)); - } - return defineProperty({}, mainSide, value); - } - }; - - order.forEach(function (placement) { - var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary'; - popper = _extends({}, popper, check[side](placement)); - }); - - data.offsets.popper = popper; - - return data; -} - -/** - * @function - * @memberof Modifiers - * @argument {Object} data - The data object generated by `update` method - * @argument {Object} options - Modifiers configuration and options - * @returns {Object} The data object, properly modified - */ -function shift(data) { - var placement = data.placement; - var basePlacement = placement.split('-')[0]; - var shiftvariation = placement.split('-')[1]; - - // if shift shiftvariation is specified, run the modifier - if (shiftvariation) { - var _data$offsets = data.offsets, - reference = _data$offsets.reference, - popper = _data$offsets.popper; - - var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1; - var side = isVertical ? 'left' : 'top'; - var measurement = isVertical ? 'width' : 'height'; - - var shiftOffsets = { - start: defineProperty({}, side, reference[side]), - end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement]) - }; - - data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]); - } - - return data; -} - -/** - * @function - * @memberof Modifiers - * @argument {Object} data - The data object generated by update method - * @argument {Object} options - Modifiers configuration and options - * @returns {Object} The data object, properly modified - */ -function hide(data) { - if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) { - return data; - } - - var refRect = data.offsets.reference; - var bound = find(data.instance.modifiers, function (modifier) { - return modifier.name === 'preventOverflow'; - }).boundaries; - - if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) { - // Avoid unnecessary DOM access if visibility hasn't changed - if (data.hide === true) { - return data; - } - - data.hide = true; - data.attributes['x-out-of-boundaries'] = ''; - } else { - // Avoid unnecessary DOM access if visibility hasn't changed - if (data.hide === false) { - return data; - } - - data.hide = false; - data.attributes['x-out-of-boundaries'] = false; - } - - return data; -} - -/** - * @function - * @memberof Modifiers - * @argument {Object} data - The data object generated by `update` method - * @argument {Object} options - Modifiers configuration and options - * @returns {Object} The data object, properly modified - */ -function inner(data) { - var placement = data.placement; - var basePlacement = placement.split('-')[0]; - var _data$offsets = data.offsets, - popper = _data$offsets.popper, - reference = _data$offsets.reference; - - var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1; - - var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1; - - popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0); - - data.placement = getOppositePlacement(placement); - data.offsets.popper = getClientRect(popper); - - return data; -} - -/** - * Modifier function, each modifier can have a function of this type assigned - * to its `fn` property.
    - * These functions will be called on each update, this means that you must - * make sure they are performant enough to avoid performance bottlenecks. - * - * @function ModifierFn - * @argument {dataObject} data - The data object generated by `update` method - * @argument {Object} options - Modifiers configuration and options - * @returns {dataObject} The data object, properly modified - */ - -/** - * Modifiers are plugins used to alter the behavior of your poppers.
    - * Popper.js uses a set of 9 modifiers to provide all the basic functionalities - * needed by the library. - * - * Usually you don't want to override the `order`, `fn` and `onLoad` props. - * All the other properties are configurations that could be tweaked. - * @namespace modifiers - */ -var modifiers = { - /** - * Modifier used to shift the popper on the start or end of its reference - * element.
    - * It will read the variation of the `placement` property.
    - * It can be one either `-end` or `-start`. - * @memberof modifiers - * @inner - */ - shift: { - /** @prop {number} order=100 - Index used to define the order of execution */ - order: 100, - /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ - enabled: true, - /** @prop {ModifierFn} */ - fn: shift - }, - - /** - * The `offset` modifier can shift your popper on both its axis. - * - * It accepts the following units: - * - `px` or unit-less, interpreted as pixels - * - `%` or `%r`, percentage relative to the length of the reference element - * - `%p`, percentage relative to the length of the popper element - * - `vw`, CSS viewport width unit - * - `vh`, CSS viewport height unit - * - * For length is intended the main axis relative to the placement of the popper.
    - * This means that if the placement is `top` or `bottom`, the length will be the - * `width`. In case of `left` or `right`, it will be the `height`. - * - * You can provide a single value (as `Number` or `String`), or a pair of values - * as `String` divided by a comma or one (or more) white spaces.
    - * The latter is a deprecated method because it leads to confusion and will be - * removed in v2.
    - * Additionally, it accepts additions and subtractions between different units. - * Note that multiplications and divisions aren't supported. - * - * Valid examples are: - * ``` - * 10 - * '10%' - * '10, 10' - * '10%, 10' - * '10 + 10%' - * '10 - 5vh + 3%' - * '-10px + 5vh, 5px - 6%' - * ``` - * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap - * > with their reference element, unfortunately, you will have to disable the `flip` modifier. - * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373). - * - * @memberof modifiers - * @inner - */ - offset: { - /** @prop {number} order=200 - Index used to define the order of execution */ - order: 200, - /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ - enabled: true, - /** @prop {ModifierFn} */ - fn: offset, - /** @prop {Number|String} offset=0 - * The offset value as described in the modifier description - */ - offset: 0 - }, - - /** - * Modifier used to prevent the popper from being positioned outside the boundary. - * - * A scenario exists where the reference itself is not within the boundaries.
    - * We can say it has "escaped the boundaries" — or just "escaped".
    - * In this case we need to decide whether the popper should either: - * - * - detach from the reference and remain "trapped" in the boundaries, or - * - if it should ignore the boundary and "escape with its reference" - * - * When `escapeWithReference` is set to`true` and reference is completely - * outside its boundaries, the popper will overflow (or completely leave) - * the boundaries in order to remain attached to the edge of the reference. - * - * @memberof modifiers - * @inner - */ - preventOverflow: { - /** @prop {number} order=300 - Index used to define the order of execution */ - order: 300, - /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ - enabled: true, - /** @prop {ModifierFn} */ - fn: preventOverflow, - /** - * @prop {Array} [priority=['left','right','top','bottom']] - * Popper will try to prevent overflow following these priorities by default, - * then, it could overflow on the left and on top of the `boundariesElement` - */ - priority: ['left', 'right', 'top', 'bottom'], - /** - * @prop {number} padding=5 - * Amount of pixel used to define a minimum distance between the boundaries - * and the popper. This makes sure the popper always has a little padding - * between the edges of its container - */ - padding: 5, - /** - * @prop {String|HTMLElement} boundariesElement='scrollParent' - * Boundaries used by the modifier. Can be `scrollParent`, `window`, - * `viewport` or any DOM element. - */ - boundariesElement: 'scrollParent' - }, - - /** - * Modifier used to make sure the reference and its popper stay near each other - * without leaving any gap between the two. Especially useful when the arrow is - * enabled and you want to ensure that it points to its reference element. - * It cares only about the first axis. You can still have poppers with margin - * between the popper and its reference element. - * @memberof modifiers - * @inner - */ - keepTogether: { - /** @prop {number} order=400 - Index used to define the order of execution */ - order: 400, - /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ - enabled: true, - /** @prop {ModifierFn} */ - fn: keepTogether - }, - - /** - * This modifier is used to move the `arrowElement` of the popper to make - * sure it is positioned between the reference element and its popper element. - * It will read the outer size of the `arrowElement` node to detect how many - * pixels of conjunction are needed. - * - * It has no effect if no `arrowElement` is provided. - * @memberof modifiers - * @inner - */ - arrow: { - /** @prop {number} order=500 - Index used to define the order of execution */ - order: 500, - /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ - enabled: true, - /** @prop {ModifierFn} */ - fn: arrow, - /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */ - element: '[x-arrow]' - }, - - /** - * Modifier used to flip the popper's placement when it starts to overlap its - * reference element. - * - * Requires the `preventOverflow` modifier before it in order to work. - * - * **NOTE:** this modifier will interrupt the current update cycle and will - * restart it if it detects the need to flip the placement. - * @memberof modifiers - * @inner - */ - flip: { - /** @prop {number} order=600 - Index used to define the order of execution */ - order: 600, - /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ - enabled: true, - /** @prop {ModifierFn} */ - fn: flip, - /** - * @prop {String|Array} behavior='flip' - * The behavior used to change the popper's placement. It can be one of - * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid - * placements (with optional variations) - */ - behavior: 'flip', - /** - * @prop {number} padding=5 - * The popper will flip if it hits the edges of the `boundariesElement` - */ - padding: 5, - /** - * @prop {String|HTMLElement} boundariesElement='viewport' - * The element which will define the boundaries of the popper position. - * The popper will never be placed outside of the defined boundaries - * (except if `keepTogether` is enabled) - */ - boundariesElement: 'viewport', - /** - * @prop {Boolean} flipVariations=false - * The popper will switch placement variation between `-start` and `-end` when - * the reference element overlaps its boundaries. - * - * The original placement should have a set variation. - */ - flipVariations: false, - /** - * @prop {Boolean} flipVariationsByContent=false - * The popper will switch placement variation between `-start` and `-end` when - * the popper element overlaps its reference boundaries. - * - * The original placement should have a set variation. - */ - flipVariationsByContent: false - }, - - /** - * Modifier used to make the popper flow toward the inner of the reference element. - * By default, when this modifier is disabled, the popper will be placed outside - * the reference element. - * @memberof modifiers - * @inner - */ - inner: { - /** @prop {number} order=700 - Index used to define the order of execution */ - order: 700, - /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */ - enabled: false, - /** @prop {ModifierFn} */ - fn: inner - }, - - /** - * Modifier used to hide the popper when its reference element is outside of the - * popper boundaries. It will set a `x-out-of-boundaries` attribute which can - * be used to hide with a CSS selector the popper when its reference is - * out of boundaries. - * - * Requires the `preventOverflow` modifier before it in order to work. - * @memberof modifiers - * @inner - */ - hide: { - /** @prop {number} order=800 - Index used to define the order of execution */ - order: 800, - /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ - enabled: true, - /** @prop {ModifierFn} */ - fn: hide - }, - - /** - * Computes the style that will be applied to the popper element to gets - * properly positioned. - * - * Note that this modifier will not touch the DOM, it just prepares the styles - * so that `applyStyle` modifier can apply it. This separation is useful - * in case you need to replace `applyStyle` with a custom implementation. - * - * This modifier has `850` as `order` value to maintain backward compatibility - * with previous versions of Popper.js. Expect the modifiers ordering method - * to change in future major versions of the library. - * - * @memberof modifiers - * @inner - */ - computeStyle: { - /** @prop {number} order=850 - Index used to define the order of execution */ - order: 850, - /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ - enabled: true, - /** @prop {ModifierFn} */ - fn: computeStyle, - /** - * @prop {Boolean} gpuAcceleration=true - * If true, it uses the CSS 3D transformation to position the popper. - * Otherwise, it will use the `top` and `left` properties - */ - gpuAcceleration: true, - /** - * @prop {string} [x='bottom'] - * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin. - * Change this if your popper should grow in a direction different from `bottom` - */ - x: 'bottom', - /** - * @prop {string} [x='left'] - * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin. - * Change this if your popper should grow in a direction different from `right` - */ - y: 'right' - }, - - /** - * Applies the computed styles to the popper element. - * - * All the DOM manipulations are limited to this modifier. This is useful in case - * you want to integrate Popper.js inside a framework or view library and you - * want to delegate all the DOM manipulations to it. - * - * Note that if you disable this modifier, you must make sure the popper element - * has its position set to `absolute` before Popper.js can do its work! - * - * Just disable this modifier and define your own to achieve the desired effect. - * - * @memberof modifiers - * @inner - */ - applyStyle: { - /** @prop {number} order=900 - Index used to define the order of execution */ - order: 900, - /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ - enabled: true, - /** @prop {ModifierFn} */ - fn: applyStyle, - /** @prop {Function} */ - onLoad: applyStyleOnLoad, - /** - * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier - * @prop {Boolean} gpuAcceleration=true - * If true, it uses the CSS 3D transformation to position the popper. - * Otherwise, it will use the `top` and `left` properties - */ - gpuAcceleration: undefined - } -}; - -/** - * The `dataObject` is an object containing all the information used by Popper.js. - * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks. - * @name dataObject - * @property {Object} data.instance The Popper.js instance - * @property {String} data.placement Placement applied to popper - * @property {String} data.originalPlacement Placement originally defined on init - * @property {Boolean} data.flipped True if popper has been flipped by flip modifier - * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper - * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier - * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`) - * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`) - * @property {Object} data.boundaries Offsets of the popper boundaries - * @property {Object} data.offsets The measurements of popper, reference and arrow elements - * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values - * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values - * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0 - */ - -/** - * Default options provided to Popper.js constructor.
    - * These can be overridden using the `options` argument of Popper.js.
    - * To override an option, simply pass an object with the same - * structure of the `options` object, as the 3rd argument. For example: - * ``` - * new Popper(ref, pop, { - * modifiers: { - * preventOverflow: { enabled: false } - * } - * }) - * ``` - * @type {Object} - * @static - * @memberof Popper - */ -var Defaults = { - /** - * Popper's placement. - * @prop {Popper.placements} placement='bottom' - */ - placement: 'bottom', - - /** - * Set this to true if you want popper to position it self in 'fixed' mode - * @prop {Boolean} positionFixed=false - */ - positionFixed: false, - - /** - * Whether events (resize, scroll) are initially enabled. - * @prop {Boolean} eventsEnabled=true - */ - eventsEnabled: true, - - /** - * Set to true if you want to automatically remove the popper when - * you call the `destroy` method. - * @prop {Boolean} removeOnDestroy=false - */ - removeOnDestroy: false, - - /** - * Callback called when the popper is created.
    - * By default, it is set to no-op.
    - * Access Popper.js instance with `data.instance`. - * @prop {onCreate} - */ - onCreate: function onCreate() {}, - - /** - * Callback called when the popper is updated. This callback is not called - * on the initialization/creation of the popper, but only on subsequent - * updates.
    - * By default, it is set to no-op.
    - * Access Popper.js instance with `data.instance`. - * @prop {onUpdate} - */ - onUpdate: function onUpdate() {}, - - /** - * List of modifiers used to modify the offsets before they are applied to the popper. - * They provide most of the functionalities of Popper.js. - * @prop {modifiers} - */ - modifiers: modifiers -}; - -/** - * @callback onCreate - * @param {dataObject} data - */ - -/** - * @callback onUpdate - * @param {dataObject} data - */ - -// Utils -// Methods -var Popper = function () { - /** - * Creates a new Popper.js instance. - * @class Popper - * @param {Element|referenceObject} reference - The reference element used to position the popper - * @param {Element} popper - The HTML / XML element used as the popper - * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults) - * @return {Object} instance - The generated Popper.js instance - */ - function Popper(reference, popper) { - var _this = this; - - var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - classCallCheck(this, Popper); - - this.scheduleUpdate = function () { - return requestAnimationFrame(_this.update); - }; - - // make update() debounced, so that it only runs at most once-per-tick - this.update = debounce(this.update.bind(this)); - - // with {} we create a new object with the options inside it - this.options = _extends({}, Popper.Defaults, options); - - // init state - this.state = { - isDestroyed: false, - isCreated: false, - scrollParents: [] - }; - - // get reference and popper elements (allow jQuery wrappers) - this.reference = reference && reference.jquery ? reference[0] : reference; - this.popper = popper && popper.jquery ? popper[0] : popper; - - // Deep merge modifiers options - this.options.modifiers = {}; - Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) { - _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {}); - }); - - // Refactoring modifiers' list (Object => Array) - this.modifiers = Object.keys(this.options.modifiers).map(function (name) { - return _extends({ - name: name - }, _this.options.modifiers[name]); - }) - // sort the modifiers by order - .sort(function (a, b) { - return a.order - b.order; - }); - - // modifiers have the ability to execute arbitrary code when Popper.js get inited - // such code is executed in the same order of its modifier - // they could add new properties to their options configuration - // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`! - this.modifiers.forEach(function (modifierOptions) { - if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) { - modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state); - } - }); - - // fire the first update to position the popper in the right place - this.update(); - - var eventsEnabled = this.options.eventsEnabled; - if (eventsEnabled) { - // setup event listeners, they will take care of update the position in specific situations - this.enableEventListeners(); - } - - this.state.eventsEnabled = eventsEnabled; - } - - // We can't use class properties because they don't get listed in the - // class prototype and break stuff like Sinon stubs - - - createClass(Popper, [{ - key: 'update', - value: function update$$1() { - return update.call(this); - } - }, { - key: 'destroy', - value: function destroy$$1() { - return destroy.call(this); - } - }, { - key: 'enableEventListeners', - value: function enableEventListeners$$1() { - return enableEventListeners.call(this); - } - }, { - key: 'disableEventListeners', - value: function disableEventListeners$$1() { - return disableEventListeners.call(this); - } - - /** - * Schedules an update. It will run on the next UI update available. - * @method scheduleUpdate - * @memberof Popper - */ - - - /** - * Collection of utilities useful when writing custom modifiers. - * Starting from version 1.7, this method is available only if you - * include `popper-utils.js` before `popper.js`. - * - * **DEPRECATION**: This way to access PopperUtils is deprecated - * and will be removed in v2! Use the PopperUtils module directly instead. - * Due to the high instability of the methods contained in Utils, we can't - * guarantee them to follow semver. Use them at your own risk! - * @static - * @private - * @type {Object} - * @deprecated since version 1.8 - * @member Utils - * @memberof Popper - */ - - }]); - return Popper; -}(); - -/** - * The `referenceObject` is an object that provides an interface compatible with Popper.js - * and lets you use it as replacement of a real DOM node.
    - * You can use this method to position a popper relatively to a set of coordinates - * in case you don't have a DOM node to use as reference. - * - * ``` - * new Popper(referenceObject, popperNode); - * ``` - * - * NB: This feature isn't supported in Internet Explorer 10. - * @name referenceObject - * @property {Function} data.getBoundingClientRect - * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method. - * @property {number} data.clientWidth - * An ES6 getter that will return the width of the virtual reference element. - * @property {number} data.clientHeight - * An ES6 getter that will return the height of the virtual reference element. - */ - - -Popper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils; -Popper.placements = placements; -Popper.Defaults = Defaults; - -return Popper; - -}))); - - -}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{}],6:[function(require,module,exports){ -(function (process){(function (){ -/**! -* tippy.js v5.2.1 -* (c) 2017-2020 atomiks -* MIT License -*/ -'use strict'; - -function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } - -var Popper = _interopDefault(require('popper.js')); - -function _extends() { - _extends = Object.assign || function (target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i]; - - for (var key in source) { - if (Object.prototype.hasOwnProperty.call(source, key)) { - target[key] = source[key]; - } - } - } - - return target; - }; - - return _extends.apply(this, arguments); -} - -var version = "5.2.1"; - -/** - * Triggers reflow - */ -function reflow(element) { - void element.offsetHeight; -} -/** - * Sets the innerHTML of an element - */ - -function setInnerHTML(element, html) { - element[innerHTML()] = html; -} -/** - * Determines if the value is a reference element - */ - -function isReferenceElement(value) { - return !!(value && value._tippy && value._tippy.reference === value); -} -/** - * Safe .hasOwnProperty check, for prototype-less objects - */ - -function hasOwnProperty(obj, key) { - return {}.hasOwnProperty.call(obj, key); -} -/** - * Returns an array of elements based on the value - */ - -function getArrayOfElements(value) { - if (isElement(value)) { - return [value]; - } - - if (isNodeList(value)) { - return arrayFrom(value); - } - - if (Array.isArray(value)) { - return value; - } - - return arrayFrom(document.querySelectorAll(value)); -} -/** - * Returns a value at a given index depending on if it's an array or number - */ - -function getValueAtIndexOrReturn(value, index, defaultValue) { - if (Array.isArray(value)) { - var v = value[index]; - return v == null ? Array.isArray(defaultValue) ? defaultValue[index] : defaultValue : v; - } - - return value; -} -/** - * Prevents errors from being thrown while accessing nested modifier objects - * in `popperOptions` - */ - -function getModifier(obj, key) { - return obj && obj.modifiers && obj.modifiers[key]; -} -/** - * Determines if the value is of type - */ - -function isType(value, type) { - var str = {}.toString.call(value); - return str.indexOf('[object') === 0 && str.indexOf(type + "]") > -1; -} -/** - * Determines if the value is of type Element - */ - -function isElement(value) { - return isType(value, 'Element'); -} -/** - * Determines if the value is of type NodeList - */ - -function isNodeList(value) { - return isType(value, 'NodeList'); -} -/** - * Determines if the value is of type MouseEvent - */ - -function isMouseEvent(value) { - return isType(value, 'MouseEvent'); -} -/** - * Firefox extensions don't allow setting .innerHTML directly, this will trick - * it - */ - -function innerHTML() { - return 'innerHTML'; -} -/** - * Evaluates a function if one, or returns the value - */ - -function invokeWithArgsOrReturn(value, args) { - return typeof value === 'function' ? value.apply(void 0, args) : value; -} -/** - * Sets a popperInstance modifier's property to a value - */ - -function setModifierValue(modifiers, name, property, value) { - modifiers.filter(function (m) { - return m.name === name; - })[0][property] = value; -} -/** - * Returns a new `div` element - */ - -function div() { - return document.createElement('div'); -} -/** - * Applies a transition duration to a list of elements - */ - -function setTransitionDuration(els, value) { - els.forEach(function (el) { - if (el) { - el.style.transitionDuration = value + "ms"; - } - }); -} -/** - * Sets the visibility state to elements so they can begin to transition - */ - -function setVisibilityState(els, state) { - els.forEach(function (el) { - if (el) { - el.setAttribute('data-state', state); - } - }); -} -/** - * Debounce utility. To avoid bloating bundle size, we're only passing 1 - * argument here, a more generic function would pass all arguments. Only - * `onMouseMove` uses this which takes the event object for now. - */ - -function debounce(fn, ms) { - // Avoid wrapping in `setTimeout` if ms is 0 anyway - if (ms === 0) { - return fn; - } - - var timeout; - return function (arg) { - clearTimeout(timeout); - timeout = setTimeout(function () { - fn(arg); - }, ms); - }; -} -/** - * Preserves the original function invocation when another function replaces it - */ - -function preserveInvocation(originalFn, currentFn, args) { - if (originalFn && originalFn !== currentFn) { - originalFn.apply(void 0, args); - } -} -/** - * Deletes properties from an object (pure) - */ - -function removeProperties(obj, keys) { - var clone = _extends({}, obj); - - keys.forEach(function (key) { - delete clone[key]; - }); - return clone; -} -/** - * Ponyfill for Array.from - converts iterable values to an array - */ - -function arrayFrom(value) { - return [].slice.call(value); -} -/** - * Works like Element.prototype.closest, but uses a callback instead - */ - -function closestCallback(element, callback) { - while (element) { - if (callback(element)) { - return element; - } - - element = element.parentElement; - } - - return null; -} -/** - * Determines if an array or string includes a string - */ - -function includes(a, b) { - return a.indexOf(b) > -1; -} -/** - * Creates an array from string of values separated by whitespace - */ - -function splitBySpaces(value) { - return value.split(/\s+/).filter(Boolean); -} -/** - * Returns the `nextValue` if `nextValue` is not `undefined`, otherwise returns - * `currentValue` - */ - -function useIfDefined(nextValue, currentValue) { - return nextValue !== undefined ? nextValue : currentValue; -} -/** - * Converts a value that's an array or single value to an array - */ - -function normalizeToArray(value) { - return [].concat(value); -} -/** - * Returns the ownerDocument of the first available element, otherwise global - * document - */ - -function getOwnerDocument(elementOrElements) { - var _normalizeToArray = normalizeToArray(elementOrElements), - element = _normalizeToArray[0]; - - return element ? element.ownerDocument || document : document; -} -/** - * Adds item to array if array does not contain it - */ - -function pushIfUnique(arr, value) { - if (arr.indexOf(value) === -1) { - arr.push(value); - } -} -/** - * Adds `px` if value is a number, or returns it directly - */ - -function appendPxIfNumber(value) { - return typeof value === 'number' ? value + "px" : value; -} -/** - * Filters out duplicate elements in an array - */ - -function unique(arr) { - return arr.filter(function (item, index) { - return arr.indexOf(item) === index; - }); -} -/** - * Returns number from number or CSS units string - */ - -function getNumber(value) { - return typeof value === 'number' ? value : parseFloat(value); -} -/** - * Gets number or CSS string units in pixels (e.g. `1rem` -> 16) - */ - -function getUnitsInPx(doc, value) { - var isRem = typeof value === 'string' && includes(value, 'rem'); - var html = doc.documentElement; - var rootFontSize = 16; - - if (html && isRem) { - return parseFloat(getComputedStyle(html).fontSize || String(rootFontSize)) * getNumber(value); - } - - return getNumber(value); -} -/** - * Adds the `distancePx` value to the placement of a Popper.Padding object - */ - -function getComputedPadding(basePlacement, padding, distancePx) { - if (padding === void 0) { - padding = 5; - } - - var freshPaddingObject = { - top: 0, - right: 0, - bottom: 0, - left: 0 - }; - var keys = Object.keys(freshPaddingObject); - return keys.reduce(function (obj, key) { - obj[key] = typeof padding === 'number' ? padding : padding[key]; - - if (basePlacement === key) { - obj[key] = typeof padding === 'number' ? padding + distancePx : padding[basePlacement] + distancePx; - } - - return obj; - }, freshPaddingObject); -} - -function createMemoryLeakWarning(method) { - var txt = method === 'destroy' ? 'n already-' : ' '; - return "\n " + method + "() was called on a" + txt + "destroyed instance. This is a no-op but\n indicates a potential memory leak.\n "; -} -function clean(value) { - var spacesAndTabs = /[ \t]{2,}/g; - var lineStartWithSpaces = /^[ \t]*/gm; - return value.replace(spacesAndTabs, ' ').replace(lineStartWithSpaces, '').trim(); -} - -function getDevMessage(message) { - return clean("\n %ctippy.js\n\n %c" + clean(message) + "\n\n %c\uD83D\uDC77\u200D This is a development-only message. It will be removed in production.\n "); -} - -function getFormattedMessage(message) { - return [getDevMessage(message), // title - 'color: #00C584; font-size: 1.3em; font-weight: bold;', // message - 'line-height: 1.5', // footer - 'color: #a6a095;']; -} -/** - * Helpful wrapper around `console.warn()`. - * TODO: Should we use a cache so it only warns a single time and not spam the - * console? (Need to consider hot reloading and invalidation though). Chrome - * already batches warnings as well. - */ - -function warnWhen(condition, message) { - if (condition) { - var _console; - - (_console = console).warn.apply(_console, getFormattedMessage(message)); - } -} -/** - * Helpful wrapper around `console.error()` - */ - -function errorWhen(condition, message) { - if (condition) { - var _console2; - - (_console2 = console).error.apply(_console2, getFormattedMessage(message)); - } -} -/** - * Validates the `targets` value passed to `tippy()` - */ - -function validateTargets(targets) { - var didPassFalsyValue = !targets; - var didPassPlainObject = Object.prototype.toString.call(targets) === '[object Object]' && !targets.addEventListener; - errorWhen(didPassFalsyValue, ['tippy() was passed', '`' + String(targets) + '`', 'as its targets (first) argument. Valid types are: String, Element, Element[],', 'or NodeList.'].join(' ')); - errorWhen(didPassPlainObject, ['tippy() was passed a plain object which is no longer supported as an argument.', 'See: https://atomiks.github.io/tippyjs/misc/#custom-position'].join(' ')); -} - -var pluginProps = { - animateFill: false, - followCursor: false, - inlinePositioning: false, - sticky: false -}; -var defaultProps = _extends({ - allowHTML: true, - animation: 'fade', - appendTo: function appendTo() { - return document.body; - }, - aria: 'describedby', - arrow: true, - boundary: 'scrollParent', - content: '', - delay: 0, - distance: 10, - duration: [300, 250], - flip: true, - flipBehavior: 'flip', - flipOnUpdate: false, - hideOnClick: true, - ignoreAttributes: false, - inertia: false, - interactive: false, - interactiveBorder: 2, - interactiveDebounce: 0, - lazy: true, - maxWidth: 350, - multiple: false, - offset: 0, - onAfterUpdate: function onAfterUpdate() {}, - onBeforeUpdate: function onBeforeUpdate() {}, - onCreate: function onCreate() {}, - onDestroy: function onDestroy() {}, - onHidden: function onHidden() {}, - onHide: function onHide() {}, - onMount: function onMount() {}, - onShow: function onShow() {}, - onShown: function onShown() {}, - onTrigger: function onTrigger() {}, - onUntrigger: function onUntrigger() {}, - placement: 'top', - plugins: [], - popperOptions: {}, - role: 'tooltip', - showOnCreate: false, - theme: '', - touch: true, - trigger: 'mouseenter focus', - triggerTarget: null, - updateDuration: 0, - zIndex: 9999 -}, pluginProps); -var defaultKeys = Object.keys(defaultProps); -/** - * If the setProps() method encounters one of these, the popperInstance must be - * recreated - */ - -var POPPER_INSTANCE_DEPENDENCIES = ['arrow', 'boundary', 'distance', 'flip', 'flipBehavior', 'flipOnUpdate', 'offset', 'placement', 'popperOptions']; -/** - * Mutates the defaultProps object by setting the props specified - */ - -var setDefaultProps = function setDefaultProps(partialProps) { - if (process.env.NODE_ENV !== "production") { - validateProps(partialProps, []); - } - - var keys = Object.keys(partialProps); - keys.forEach(function (key) { - defaultProps[key] = partialProps[key]; - }); -}; -/** - * Returns an extended props object including plugin props - */ - -function getExtendedPassedProps(passedProps) { - var plugins = passedProps.plugins || []; - var pluginProps = plugins.reduce(function (acc, plugin) { - var name = plugin.name, - defaultValue = plugin.defaultValue; - - if (name) { - acc[name] = passedProps[name] !== undefined ? passedProps[name] : defaultValue; - } - - return acc; - }, {}); - return _extends({}, passedProps, {}, pluginProps); -} -/** - * Returns an object of optional props from data-tippy-* attributes - */ - -function getDataAttributeProps(reference, plugins) { - var propKeys = plugins ? Object.keys(getExtendedPassedProps(_extends({}, defaultProps, { - plugins: plugins - }))) : defaultKeys; - var props = propKeys.reduce(function (acc, key) { - var valueAsString = (reference.getAttribute("data-tippy-" + key) || '').trim(); - - if (!valueAsString) { - return acc; - } - - if (key === 'content') { - acc[key] = valueAsString; - } else { - try { - acc[key] = JSON.parse(valueAsString); - } catch (e) { - acc[key] = valueAsString; - } - } - - return acc; - }, {}); - return props; -} -/** - * Evaluates the props object by merging data attributes and disabling - * conflicting props where necessary - */ - -function evaluateProps(reference, props) { - var out = _extends({}, props, { - content: invokeWithArgsOrReturn(props.content, [reference]) - }, props.ignoreAttributes ? {} : getDataAttributeProps(reference, props.plugins)); - - if (out.interactive) { - out.aria = null; - } - - return out; -} -/** - * Validates props with the valid `defaultProps` object - */ - -function validateProps(partialProps, plugins) { - if (partialProps === void 0) { - partialProps = {}; - } - - if (plugins === void 0) { - plugins = []; - } - - var keys = Object.keys(partialProps); - keys.forEach(function (prop) { - var value = partialProps[prop]; - var didSpecifyPlacementInPopperOptions = prop === 'popperOptions' && value !== null && typeof value === 'object' && hasOwnProperty(value, 'placement'); - var nonPluginProps = removeProperties(defaultProps, ['animateFill', 'followCursor', 'inlinePositioning', 'sticky']); // These props have custom warnings - - var customWarningProps = ['a11y', 'arrowType', 'showOnInit', 'size', 'target', 'touchHold']; - var didPassUnknownProp = !hasOwnProperty(nonPluginProps, prop) && !includes(customWarningProps, prop); // Check if the prop exists in `plugins` - - if (didPassUnknownProp) { - didPassUnknownProp = plugins.filter(function (plugin) { - return plugin.name === prop; - }).length === 0; - } - - warnWhen(prop === 'target', ['The `target` prop was removed in v5 and replaced with the delegate() addon', 'in order to conserve bundle size.', 'See: https://atomiks.github.io/tippyjs/addons/#event-delegation'].join(' ')); - warnWhen(prop === 'a11y', ['The `a11y` prop was removed in v5. Make sure the element you are giving a', 'tippy to is natively focusable, such as ").text(this.options.lang.next).addClass("btn btn-secondary sw-btn-next").attr("type","button"):null,n=!1!==this.options.toolbarSettings.showPreviousButton?l("").text(this.options.lang.previous).addClass("btn btn-secondary sw-btn-prev").attr("type","button"):null,r=l("
    ").addClass("btn-group mr-2 sw-btn-group").attr("role","group").append(n,i),s=null;switch(this.options.toolbarSettings.toolbarExtraButtons&&0").addClass("btn-group mr-2 sw-btn-group-extra").attr("role","group"),l.each(this.options.toolbarSettings.toolbarExtraButtons,function(t,e){s.append(e.clone(!0))})),this.options.toolbarSettings.toolbarPosition){case"top":(t=l("
    ").addClass("btn-toolbar sw-toolbar sw-toolbar-top justify-content-"+this.options.toolbarSettings.toolbarButtonPosition)).append(r),"start"===this.options.toolbarSettings.toolbarButtonPosition?t.prepend(s):t.append(s),this.container.before(t);break;case"bottom":(e=l("
    ").addClass("btn-toolbar sw-toolbar sw-toolbar-bottom justify-content-"+this.options.toolbarSettings.toolbarButtonPosition)).append(r),"start"===this.options.toolbarSettings.toolbarButtonPosition?e.prepend(s):e.append(s),this.container.after(e);break;case"both":(t=l("
    ").addClass("btn-toolbar sw-toolbar sw-toolbar-top justify-content-"+this.options.toolbarSettings.toolbarButtonPosition)).append(r),"start"===this.options.toolbarSettings.toolbarButtonPosition?t.prepend(s):t.append(s),this.container.before(t),(e=l("
    ").addClass("btn-toolbar sw-toolbar sw-toolbar-bottom justify-content-"+this.options.toolbarSettings.toolbarButtonPosition)).append(r.clone(!0)),null!==s&&("start"===this.options.toolbarSettings.toolbarButtonPosition?e.prepend(s.clone(!0)):e.append(s.clone(!0))),this.container.after(e);break;default:(e=l("
    ").addClass("btn-toolbar sw-toolbar sw-toolbar-bottom justify-content-"+this.options.toolbarSettings.toolbarButtonPosition)).append(r),this.options.toolbarSettings.toolbarButtonPosition,e.append(s),this.container.after(e)}return!0},_setEvents:function(){var i=this;return l(this.steps).on("click",function(t){if(t.preventDefault(),!1===i.options.anchorSettings.anchorClickable)return!0;var e=i.steps.index(this);if(!1===i.options.anchorSettings.enableAnchorOnDoneStep&&i.steps.eq(e).parent("li").hasClass("done"))return!0;e!==i.current_index&&(!1!==i.options.anchorSettings.enableAllAnchors&&!1!==i.options.anchorSettings.anchorClickable?i._showStep(e):i.steps.eq(e).parent("li").hasClass("done")&&i._showStep(e))}),l(".sw-btn-next",this.main).on("click",function(t){t.preventDefault(),i._showNext()}),l(".sw-btn-prev",this.main).on("click",function(t){t.preventDefault(),i._showPrevious()}),this.options.keyNavigation&&l(t).keyup(function(t){i._keyNav(t)}),this.options.backButtonSupport&&l(r).on("hashchange",function(t){if(!i.options.useURLhash)return!0;if(r.location.hash){var e=l("a[href*='"+r.location.hash+"']",i.nav);e&&0")["prepend"==this.insertMode?"prependTo":"appendTo"](this.el)[0]);var t=this.canvas;if(t.width=this.size,t.height=this.size,this.ctx=t.getContext("2d"),1")[0];t.width=i.size,t.height=i.size,t.getContext("2d").drawImage(e,0,0,s,s),i.arcFill=i.ctx.createPattern(t,"no-repeat"),i.drawFrame(i.lastFrameValue)}var e,i=this,n=this.fill,r=this.ctx,s=this.size;if(!n)throw Error("The fill is not specified!");if("string"==typeof n&&(n={color:n}),n.color&&(this.arcFill=n.color),n.gradient){var a=n.gradient;if(1==a.length)this.arcFill=a[0];else if(1n.oldScroll?n.forward:n.backward;for(var s in this.waypoints[i]){var a=this.waypoints[i][s];if(null!==a.triggerPoint){var o=n.oldScroll=a.triggerPoint;(o&&l||!o&&!l)&&(a.queueTrigger(r),t[a.group.id]=a.group)}}}for(var h in t)t[h].flushTriggers();this.oldScroll={x:e.horizontal.newScroll,y:e.vertical.newScroll}},e.prototype.innerHeight=function(){return this.element==this.element.window?m.viewportHeight():this.adapter.innerHeight()},e.prototype.remove=function(t){delete this.waypoints[t.axis][t.key],this.checkEmpty()},e.prototype.innerWidth=function(){return this.element==this.element.window?m.viewportWidth():this.adapter.innerWidth()},e.prototype.destroy=function(){var t=[];for(var e in this.waypoints)for(var i in this.waypoints[e])t.push(this.waypoints[e][i]);for(var n=0,r=t.length;n=s.oldScroll,u=!l&&!h,!g&&l&&h?(c.queueTrigger(s.backward),n[c.group.id]=c.group):!g&&u?(c.queueTrigger(s.forward),n[c.group.id]=c.group):g&&s.oldScroll>=c.triggerPoint&&(c.queueTrigger(s.forward),n[c.group.id]=c.group)}}return m.requestAnimationFrame(function(){for(var t in n)n[t].flushTriggers()}),this},e.findOrCreateByElement=function(t){return e.findByElement(t)||new e(t)},e.refreshAll=function(){for(var t in n)n[t].refresh()},e.findByElement=function(t){return n[t.waypointContextKey]},window.onload=function(){t&&t(),e.refreshAll()},m.requestAnimationFrame=function(t){(window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||function(t){window.setTimeout(t,1e3/60)}).call(window,t)},m.Context=e}(),function(){"use strict";function a(t,e){return t.triggerPoint-e.triggerPoint}function o(t,e){return e.triggerPoint-t.triggerPoint}function e(t){this.name=t.name,this.axis=t.axis,this.id=this.name+"-"+this.axis,this.waypoints=[],this.clearTriggerQueues(),i[this.axis][this.name]=this}var i={vertical:{},horizontal:{}},n=window.Waypoint;e.prototype.add=function(t){this.waypoints.push(t)},e.prototype.clearTriggerQueues=function(){this.triggerQueues={up:[],down:[],left:[],right:[]}},e.prototype.flushTriggers=function(){for(var t in this.triggerQueues){var e=this.triggerQueues[t],i="up"===t||"left"===t;e.sort(i?o:a);for(var n=0,r=e.length;n - - - - - - Gradido Login Server: Überprüfe Transaktion - - - - - - - -
    - - -
    - -
    -
    -

    Transaktion unterzeichnen

    -
    -

    Überweisung

    -
    -
    - Konto - Gradido -
    -
    - Normaler User <info@software-labor.de> - -10 GDD -
    -
    - dario frodo <dariofrodo@gmx.de> - 10 GDD -
    -
    -
    -
    - Aktives Konto -
    -
    - Normaler User <info@software-labor.de> -
    -
    -
    -
    - Verwendungszweck -
    -
    -   -
    -
    -
    - - -
    -
    -
    -
    -
    -
    - - -
    - 98.597 ms -
    -
    -

    Community Server in Entwicklung

    -

    Alpha 0.21.KW21.05

    -
    - - - - \ No newline at end of file diff --git a/community_server/websrc/gulpfile.js b/community_server/websrc/gulpfile.js deleted file mode 100644 index a1cd459f7..000000000 --- a/community_server/websrc/gulpfile.js +++ /dev/null @@ -1,58 +0,0 @@ -var gulp = require('gulp'); -var less = require('gulp-less'); -var concat = require('gulp-concat'); -var merge = require('merge-stream'); -var watch = require('gulp-watch'); -//var minify = require('gulp-minify'); -var cleanCSS = require('gulp-clean-css'); - -var bundleStyles = function() { - - var lessStream = gulp.src('src/less/*.less') - .pipe(concat('src/less-files.less')) - .pipe(less()) - .pipe(gulp.dest('./')) - ; - - var mergedStream = merge(lessStream) - .pipe(concat('grd_styles.css')) - //.pipe(minify()) - .pipe(gulp.dest('../webroot/css/')); - - return mergedStream; -}; - -var compressStyles = function() { - var lessStream = gulp.src('src/less/*.less') - .pipe(concat('src/less-files.less')) - .pipe(less()) - .pipe(gulp.dest('./')) - ; - - var mergedStream = merge(lessStream) - .pipe(concat('grd_styles.min.css')) - .pipe(cleanCSS({ - compatibility: 'ie8', - level: { - 1: { - all: true - }, - 2: { - all: true - } - } - })) - .pipe(gulp.dest('../webroot/css/')); - - return mergedStream; -}; - -gulp.task("bundleStyles", bundleStyles); -gulp.task("compressStyles", compressStyles); - -gulp.task('watchStyles', function() { - bundleStyles(); - watch("src/less/*.less", function() { - bundleStyles(); - }); -}); \ No newline at end of file diff --git a/community_server/websrc/package.json b/community_server/websrc/package.json deleted file mode 100644 index 8d456e83b..000000000 --- a/community_server/websrc/package.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "name": "gradido_mithriljs_client", - "version": "0.0.1", - "description": "Webinterface Client for Gradido Websites written with mithrilJS", - "main": "app.js", - "scripts": { - "watch:js": "watchify ./src/js/app.js -t [ babelify --presets [ @babel/preset-env ] ] -o ../webroot/js/app.js -v", - "watch:css": "gulp watchStyles", - "bundle:css": "gulp bundleStyles", - "prebuild": "browserify ./src/js/app.js -t [ babelify --presets [ @babel/preset-env ] ] -o ./public/app.rl.js -v", - "build": "gulp compressStyles && browserify ./public/app.rl.js -g uglifyify -p bundle-collapser/plugin | uglifyjs --compress --mangle toplevel,eval > ../webroot/js/app.min.js" - }, - "author": "Dario Rekowski", - "license": "ISC", - "dependencies": { - "google-protobuf": "^3.10.0-rc.1", - "mithril": "github:StephanHoyer/mithril.js#rewrite" - }, - "devDependencies": { - "@babel/core": "^7.6.0", - "@babel/preset-env": "^7.6.0", - "babelify": "^10.0.0", - "browserify": "^16.5.0", - "bs58check": "^2.1.2", - "bundle-collapser": "^1.3.0", - "gulp": "^4.0.2", - "gulp-clean-css": "^4.3.0", - "gulp-concat": "^2.6.1", - "gulp-less": "^4.0.1", - "gulp-minify": "^3.1.0", - "gulp-watch": "^5.0.1", - "merge-stream": "^2.0.0", - "uglify-js": "^3.6.0", - "uglifyify": "^5.0.2" - } -} diff --git a/community_server/websrc/src/less/01-layout.less b/community_server/websrc/src/less/01-layout.less deleted file mode 100644 index 2aed60860..000000000 --- a/community_server/websrc/src/less/01-layout.less +++ /dev/null @@ -1,113 +0,0 @@ -/* ============================================================ - - Grid Layout Page - - Datei : layout.less - Datum : 2020-04-30 - Autor : Christine Slotty - Copyright : Gradio - - ============================================================*/ - -/*==================================== -= BREAK POINTS = -====================================*/ - -/* https://scotch.io/courses/getting-started-with-less/responsive-and-media-queries */ -@wide-screen-down: ~'(max-width:1199px)'; -@desktop-down: ~'(max-width:991px)'; -@tablet-down: ~'(max-width:767px)'; -@phone-down: ~'(max-width:480px)'; -@small-phone-down: ~'(max-width:320px)'; - -/* GRID */ -.layout { - display: grid; - grid-template-rows: [top] 8vh [line2] 86vh [footer1] 3vh [footer2] 5vh [end]; - grid-template-columns: [left1] auto [left2] 1fr [left3] 12fr [right3] 1fr [right2] auto [right1]; - grid-template-areas: "header header header header header" - "left . center center ." - "footer footer footer footer footer" - "bottom bottom bottom bottom bottom"; - margin: 0; - padding: 0; -} - -@media @wide-screen-down { - .layout { - grid-template-areas: "header header header header header" - "left . center center center" - "footer footer footer footer footer" - "bottom bottom bottom bottom bottom"; - } - -} - -@media @tablet-down { - .layout { - position: relative; - display: grid; - grid-template-rows: [top] 12vh [line2] 80vh [footer1] 3vh [footer2] 8vh [end]; - grid-template-columns: [left1] 100vw [right1]; - grid-template-areas: "header" - "center" - "footer" - "bottom"; - margin: 0; - padding: 0; - } - -} - -.header-notify { - grid-area: header; - grid-column-start: right3; - grid-column-end: right2; -} - -.header-user { - grid-area: header; - grid-column-start: right2; - grid-column-end: right1; -} - -.sidebar1 { - grid-area: left; - grid-row-start: top; - grid-row-end: end; -} - -@media @tablet-down { - .sidebar1 { - position: relative; - grid-area: header; - z-index: 2; - top: -300px; - right: 0px; - } - - .header-user, - .header-notify { - grid-area: header; - } - -} - -.center-form-single, -.content { - grid-area: center; - grid-row-start: line2; - grid-row-end: footer1; -} - -.footer { - grid-area: footer; - grid-row-start: footer1; - grid-row-end: footer2; -} - -.nav-bottom { - grid-area: bottom; - grid-row-start: footer2; - grid-row-end: end; -} diff --git a/community_server/websrc/src/less/02-colors.less b/community_server/websrc/src/less/02-colors.less deleted file mode 100644 index 90eff9346..000000000 --- a/community_server/websrc/src/less/02-colors.less +++ /dev/null @@ -1,160 +0,0 @@ -/* ============================================================ - - Generic Color Definitions - - Vars and some generic CSS rules. - - Datei : colors.less - Datum : 2020-05-26 - Autor : Christine Slotty - Copyright : Gradio - - ============================================================*/ - -/* MAIN */ -@main-background: #f9fafb; -@main-text: #212529; -@main-link-text: #000; - -/* MENU */ -@menu-background: #fff; -@menu-link-text: #4F4F4F; -@menu-link-selected: #047006; -@menu-border-color: #f2f4f5; - -/* CONTENT */ -@container-background: #fff; -@container-text: #212529; -@container-header: #21252969; -@container-shadow: rgba(183, 192, 206, .2); -@container-border: rgba(238, 238, 238, .75); - -/* CONTENT-NAV */ -@content-nav: #565656; - -/* CONTENT-ITEMS */ -@action-button-text: #fff; -@action-button-border: #047006; -@action-button-background1: #047006; -@action-button-background: #f9fafb; -@info-item-border: grey; -@form-header-border: #047006; -@form-header-background: #f9fafb; - -/* CONTENT-TABLE */ -@content-table-title: #313131; -@content-table-header: #101010; -@content-table-header-bg: #fafafa; -@content-table-header-border: #f2f4f9; -@content-row-bg: #f0f2f5; - -/* FORMS */ -@form-label: #212529; -@badge-color-warning: #fff; -@badge-background-warning: #00e093; -@badge-color-error: #fff; -@badge-background-error: #ff5f66; - -/* VARIOUS INDIVIDUAL */ -@orange: #ffa600; - -/* XXX TODO XXX */ -@dialog-background: #fff; - -/*rgba(0, 0, 0, 0.5) ??? */ -@dialog-text: #000; -@dialog-background-extra: rgba(0, 0, 0, 0.1); -@dialog-border: grey; -@form-text-background: rgba(0, 0, 0, 0.05); -@form-button-border: grey; -@form-button-text: #444; -@button-text: #000; -@button-border-color: #000; -@button-background-active: lightgray; -@print-background: #111; -@print-text: #000; -@print-link-text: #06c; -@gdt-text: #a27824; - -/* NOTIFICATION */ -@info: grey; -@info-border: gray; -@info-background: #80808026; -@info-background-icon: #80808026; -@error: red; -@error-border: rgba(255, 0, 0, 0.5); -@success: #047006; -@success-message: #1A1A1A; -@success-message-background: #06c50a; -@success-border: #04700675; -@success-background-icon: rgba(4, 112, 6, 0.2); -@success-background-hover: lightgreen; -@alert: #ff5f66; -@alert-color: #fff; -@alert-background: #ff5f669e; -@alert-background-icon: #ff5f662e; -@alert-blink: #ff5f669e; -@notify: #525c5d; -@notify-blink: #525c5d82; - -/* https://www.w3schools.com/colors/colors_shades.asp */ -@unobtrusive: grey; -@light: #F5F5F5; -@verylight: #fbfbfb; - -.info-color { - color: @info; -} - -.success-color { - color: @success; -} - -.alert-color { - color: @alert; -} - -.orange-color { - color: @orange -} - -.blue-color { - color: blue -} - -.unobtrusive { - color: @unobtrusive; -} - -.info-icon { - color: @info; - background-color: @info-background-icon; -} - -.success-icon { - color: @success; - background-color: @success-background-icon; -} - -.alert-icon { - color: @alert; - background-color: @alert-background-icon; -} - -/* ======================= - Gradido - =======================*/ - -/* Gradido */ -.grd-negative-currency { - color: red; -} - -/* Gradido Transform */ -.gdt-text-color { - color: @gdt-text; -} - -.grd_clickable { - cursor: pointer; -} diff --git a/community_server/websrc/src/less/03-typography.less b/community_server/websrc/src/less/03-typography.less deleted file mode 100644 index 06572c9ff..000000000 --- a/community_server/websrc/src/less/03-typography.less +++ /dev/null @@ -1,32 +0,0 @@ -/* ============================================================ - - Typography Definitions - - Datei : typography.less - Datum : 2020-05-26 - Autor : Christine Slotty - Copyright : Gradio - - ============================================================*/ -@body-fs: 100%; -@body-lh: 27px; -@content-lh: 1.75em; -@content-letter-spacing: .03rem; -@nav-fs: .8em; -@nav-bottom-fs: .9em; -@nav-bottom-fs-mobile: .8em; -@nav-btn-large-fs: 35px; -@nav-icon-fs: 1.2em; -@nav-icons-fs: 18px; -@nav-icon-main-fs: 32px; -@footer-fs: 70%; -@sidebar1-header-fs: .75em; -@sidebar1-lh: 2.5em; -@link-title-lh: normal; -@devinfo-fs: smaller; -@devinfo-fs-mobile: .7em; - -.small-font { - font-size: .75em; - font-weight: 300; -} diff --git a/community_server/websrc/src/less/05-screen.less b/community_server/websrc/src/less/05-screen.less deleted file mode 100644 index 975d57dc1..000000000 --- a/community_server/websrc/src/less/05-screen.less +++ /dev/null @@ -1,174 +0,0 @@ -/* ============================================================ - - Basic screen styles. - - Datei : screen.less - Datum : 2020-04-30 - Autor : Christine Slotty - Copyright : Gradio - - ============================================================*/ -@font-face { - font-family: 'Material Icons Outlined'; - font-style: normal; - font-weight: 400; - src: url(../fonts/MaterialIconsOutlined/Material-Icons-Outline.eot); /* For IE6-8 */ - src: local('Material Icons Outlined'), local('Material-Icons-Outlined'), url(../fonts/MaterialIconsOutlined/Material-Icons-Outline.woff2) format('woff2'), url(../fonts/MaterialIconsOutlined/Material-Icons-Outline.woff) format('woff'), url(../fonts/MaterialIconsOutlined/Material-Icons-Outline.ttf) format('truetype'); -} - -.material-icons-outlined { - font-family: 'Material Icons Outlined'; - font-weight: normal; - font-style: normal; - font-size: 24px; - line-height: 1; - letter-spacing: normal; - text-transform: none; - vertical-align: middle; - display: inline-block; - white-space: nowrap; - word-wrap: normal; - direction: ltr; - -webkit-font-feature-settings: 'liga'; - -webkit-font-smoothing: antialiased; -} - -@media screen { - - /* ======================= - Basis - =======================*/ - html, - body { - font-family: 'Roboto', sans-serif; - font-size: @body-fs; - line-height: @body-lh; - color: @main-text; - background-color: @main-background; - margin: 0; - overflow: auto; - } - - div { - border-collapse: collapse; - box-sizing: border-box; - } - - /* ======================= - Kopfbereich - =======================*/ - .header { - display: flex; - justify-content: space-between; - align-items: center; - flex: flex-grow; - width: 100%; - padding: 1em; - background-color: @menu-background; - } - - /* ======================= - Fußbereich - =======================*/ - .footer { - display: flex; - flex-direction: column; - justify-content: flex-start; - align-items: center; - font-size: @footer-fs; - font-style: italic; - line-height: 0; - } - - .bottomright { - position: fixed; - bottom: 0; - right: 0; - color: @unobtrusive; - font-size: @devinfo-fs; - line-height: .125em; - padding-right: .25em; - text-align: right; - } - - @media @tablet-down { - .bottomright { - font-size: @devinfo-fs-mobile; - font-weight: 300; - line-height: 1em; - width: 100px; - } - - .bottomright p { - margin-block-start: 0; - margin-block-end: 2px; - margin-inline-start: 0; - margin-inline-end: 0; - } - - } - - .bottomleft { - position: fixed; - bottom: 0; - left: 0; - color: @unobtrusive; - font-size: @devinfo-fs; - line-height: 1.125em; - padding-left: 0.25em; - } - - /* ======================= - Sonstige - =======================*/ - - /* Hyperlinks */ - a { - text-decoration: none; - color: inherit; - } - - main a { - text-decoration: underline; - font-style: italic; - } - - a:link, - a:visited { - color: inherit; - } - - a:hover, - a:focus { - text-decoration: underline; - } - - a:active { - background-color: @menu-background; - color: @main-link-text; - } - - a:focus, - a:active { - outline: none; - } - - a.grd_invisible_link { - color: @main-link-text; - text-decoration: none; - } - - a.grd_invisible_link:hover { - color: @unobtrusive; - } - - [type=button]:not(:disabled), - [type=reset]:not(:disabled), - [type=submit]:not(:disabled), - button:not(:disabled) { - cursor: pointer - } - -} - -/* Ende @media screen */ diff --git a/community_server/websrc/src/less/06-messages.less b/community_server/websrc/src/less/06-messages.less deleted file mode 100644 index 4c4d0fcb7..000000000 --- a/community_server/websrc/src/less/06-messages.less +++ /dev/null @@ -1,89 +0,0 @@ -/* -To change this license header, choose License Headers in Project Properties. -To change this template file, choose Tools | Templates -and open the template in the editor. -*/ - -/* ============================================================ - - Screen styles for flash messages. - - Datei : messages.css - Datum : 30.10.2019, 16:04:16 - Autor : einhornimmond, Christine Slotty - Copyright : Gradio - - ============================================================*/ -@media screen { - .flash-messages { - width: 30%; - position: absolute; - top: 57px; - left: 241px; - text-align: center; - - .alert { - margin: 0; - padding: 1em; - vertical-align: middle; - border-radius: 5px; - } - - .alert-success { - color: @success-message !important; - background-color: @success-message-background; - border: 1px solid @success-border; - } - - .alert-error { - color: @alert-color !important; - background-color: @error; - border: 1px solid @error-border; - } - - .message { - padding: 5px; - } - - .success { - color: @success; - } - - .error { - color: @error; - } - - } - - .flash-messages.hidden { - display: none; - } - - @media @tablet-down { - .flash-messages { - width: 90%; - top: 0; - left: 0; - text-align: center; - } - - } - - /* messages, update flash */ - .grd-error { - color: @error; - border: 1px solid @error-border; - padding: 5px; - } - - .grd-info { - border: 1px dotted @info-border; - padding: 5px; - } - - .grd-success { - padding: 5px; - color: @success; - } - -} diff --git a/community_server/websrc/src/less/07-user.less b/community_server/websrc/src/less/07-user.less deleted file mode 100644 index 50270ff49..000000000 --- a/community_server/websrc/src/less/07-user.less +++ /dev/null @@ -1,134 +0,0 @@ -/* ============================================================ - - User Menu - - Datei : user.less - Datum : 2020-07-03 - Autor : Christine Slotty - Copyright : Gradido - - ============================================================*/ -@media screen { - .header-user { - display: flex; - flex-direction: column; - justify-content: flex-start; - align-items: flex-end; - align-content: flex-end; - position: relative; - width: 100%; - min-width: 12em; - height: 40px; - background-color: @container-background; - border: 1px solid @menu-border-color; - border-radius: 0 0 0 18px; - } - - .user-menu-container { - display: flex; - justify-content: flex-end; - align-items: center; - font-size: .8em; - font-weight: 300; - padding: .25em .5em; - z-index: 20; - height: 40px; - } - - .user-name, - .user-icon { - display: inline-block; - vertical-align: middle; - cursor: pointer; - } - - .user-name { - padding-right: .25em; - } - - .nav-vertical.user-menu { - display: none; - background-color: @container-background; - border-left: 1px solid @menu-border-color; - border-bottom: 1px solid @menu-border-color; - border-radius: 0 0 16px 16px; - z-index: 15; - font-size: .9em; - margin-top: 0 !important; - position: fixed; - top: 39px; - right: 0; - } - - .nav-vertical.user-menu.visible { - display: inherit; - } - - .nav-vertical.user-menu > ul { - padding: 2em; - padding-top: .5em; - padding-bottom: 1em; - margin-block-end: 0; - margin-block-start: 0; - } - - .nav-vertical.user-menu li { - padding: .0125em; - } - - .nav-top > ul { - padding: 0; - padding-right: 2em; - } - - .material-icons-outlined.user-info { - color: @unobtrusive; - } - - .material-icons-outlined.user-info.success { - color: @success; - } - - @media @tablet-down { - .header-user { - position: relative; - min-width: 3em; - background-color: transparent; - justify-content: center; - height: 100%; - margin-top: -13px; - margin-left: -16px; - color: @action-button-background1; - } - - .user-menu-container { - margin: 0; - padding: 0; - } - - .user-icon { - - } - .user-name { - display: none; - } - - .nav-vertical { - margin-top: 55px; - } - - .nav-vertical.user-menu { - position: fixed; - top: 1px; - right: 0; - margin-top: 0; - } - - .nav-vertical.user-menu > ul { - padding: 1em 1em; - padding-top: 3em; - } - - } - -} diff --git a/community_server/websrc/src/less/08-navi.less b/community_server/websrc/src/less/08-navi.less deleted file mode 100644 index e71ce93a2..000000000 --- a/community_server/websrc/src/less/08-navi.less +++ /dev/null @@ -1,451 +0,0 @@ -/* ============================================================ - - Navigation - - Datei : navi.less - Datum : 2020-04-30 - Autor : einhornimmond / Christine Slotty - Copyright : Gradido - - ============================================================*/ -@media screen { - .logo { - display: none; - vertical-align: middle; - height: 30px; - padding: .5em; - } - - .logo.big.visible, - .logo.small.visible { - display: block !important; - } - - .logo.mobile { - display: none; - } - - .logo.small.visible { - padding-left: 41px; - } - - /* - SIDEBARS - */ - .sidebar1 { - background-color: @menu-background; - font-size: @nav-fs; - font-weight: 500; - line-height: @sidebar1-lh; - padding: 0; - border-right: 1px solid @menu-border-color; - } - - .sidebar2 { - padding: 1em; - background-color: @main-background; - } - - .sidebar1-header { - font-size: @sidebar1-header-fs; - font-style: italic; - color: @unobtrusive; - } - - /* set general icons size here! */ - .nav-icon { - font-size: @nav-icons-fs !important; - color: @menu-link-text; - vertical-align: middle; - padding-right: 1em; - } - - /* important! order matters! we need to overwrite the main button's size here */ - .nav-main-button { - font-size: @nav-icon-main-fs !important; - color: @unobtrusive; - margin: .3em; - } - - /* Hide mobile menu button! */ - .nav-main-button.mobile { - display: none; - } - - .nav-menu.nav-menu-maximized { - width: 280px; - height: 100%; - } - - .nav-menu.nav-menu-minimized { - width: 120px; - height: 100%; - } - - .nav-menu-maximized { - -webkit-animation: slide-out 0.5s cubic-bezier(0.250, 0.460, 0.450, 0.940) both; - animation: slide-out 0.5s cubic-bezier(0.250, 0.460, 0.450, 0.940) both; - } - - .nav-menu-minimized { - -webkit-animation: slide-in 0.1s cubic-bezier(0.250, 0.460, 0.450, 0.940) both; - animation: slide-in 0.1s cubic-bezier(0.250, 0.460, 0.450, 0.940) both; - } - - .nav-menu-minimized .link-title { - display: none; - } - - .nav-menu-minimized .nav-icon, - .nav-menu-minimized .nav-main-button { - padding-left: 72px; - } - - /** - * ---------------------------------------- - * animations slide-in / slide-out - * ---------------------------------------- - */ - - /* slide-in */ - @-webkit-keyframes slide-in { - 0% { - -webkit-transform: translateX(0); - transform: translateX(0); - opacity: 0; - } - - 100% { - -webkit-transform: translateX(-74px); - transform: translateX(-74px); - opacity: 1; - } - - } - - @keyframes slide-in { - 0% { - -webkit-transform: translateX(0); - transform: translateX(0); - opacity: 0; - } - - 100% { - -webkit-transform: translateX(-74px); - transform: translateX(-74px); - opacity: 1; - } - - } - - /* slide-out */ - @-webkit-keyframes slide-out { - 0% { - -webkit-transform: translateX(-74px); - transform: translateX(-74px); - } - - 100% { - -webkit-transform: translateX(0); - transform: translateX(0); - } - - } - - @keyframes slide-out { - 0% { - -webkit-transform: translateX(-74px); - transform: translateX(-74px); - } - - 100% { - -webkit-transform: translateX(0); - transform: translateX(0); - } - - } - - /* - NAVI MOBILE - */ - @media @tablet-down { - .logo.big, - .logo.small { - display: none; - } - - .logo.visible { - padding: 0 !important; - } - - .logo, - .logo.mobile, - .logo.mobile.visible { - display: block; - position: fixed; - top: 12px; - left: 12px; - } - - .logo.big, - .logo.big.visible { - display: none !important; - } - - .nav-main-button { - display: none; - } - - .nav-main-button.mobile { - display: block; - position: fixed; - top: 2px; - right: 46px; - z-index: 3; - } - - .nav-menu.nav-menu-minimized, - .nav-menu.nav-menu-maximized { - width: 280px; - height: 300px; - } - - /* .nav-menu-minimized .link-title { - display: inherit; - } - */ - .nav-menu-minimized .nav-icon, - .nav-menu-minimized .nav-main-button { - padding-left: 0; - } - - /* Here we "revert' maximized / minimized and change the animation */ - .nav-menu-maximized { - -webkit-animation: slide-down 0.1s cubic-bezier(0.250, 0.460, 0.450, 0.940) both; - animation: slide-down 0.1s cubic-bezier(0.250, 0.460, 0.450, 0.940) both; - } - - .nav-menu-minimized { - -webkit-animation: slide-up 0.5s cubic-bezier(0.250, 0.460, 0.450, 0.940) both; - animation: slide-up 0.5s cubic-bezier(0.250, 0.460, 0.450, 0.940) both; - } - - /** - * ---------------------------------------- - * animations slide-down / slide-up - * ---------------------------------------- - */ - - /* slide-down */ - @-webkit-keyframes slide-down { - 0% { - -webkit-transform: translateY(0); - transform: translateY(0); - opacity: 0; - } - - 100% { - -webkit-transform: translateY(300px); - transform: translateX(300px); - opacity: 1; - } - - } - - @keyframes slide-down { - 0% { - -webkit-transform: translateY(0); - transform: translateY(0); - opacity: 0; - } - - 100% { - -webkit-transform: translateY(300px); - transform: translateY(300px); - opacity: 1; - } - - } - - /* slide-up */ - @-webkit-keyframes slide-up { - 0% { - -webkit-transform: translateY(0); - transform: translateY(0); - } - - 100% { - -webkit-transform: translateY(-300px); - transform: translateY(-300px); - } - - } - - @keyframes slide-up { - 0% { - -webkit-transform: translateY(0); - transform: translateY(0); - } - - 100% { - -webkit-transform: translateY(-300px); - transform: translateY(-300px); - } - - } - - } - - /* END navi mobile base */ - .selected { - color: @menu-link-selected; - } - - .link-title { - vertical-align: middle; - line-height: @link-title-lh; - background-color: transparent; - } - - .nav-horizontal { - display: flex; - flex-direction: row; - flex-wrap: wrap; - justify-content: center; - align-items: flex-end; - list-style-type: none; - gap: 5%; - padding: 1em; - } - - .footer .nav-horizontal { - gap: 0; - padding: 0 1em; - padding-inline-start: 0 !important; - } - - .nav-top-smaller { - margin: 0; - padding: 0; - } - - .nav-smaller { - justify-content: left; - align-items: flex-start; - gap: 0; - padding: 0; - } - - .nav-smaller li { - padding: 0 !important; - padding: .2em .5em !important; - border: 1px solid @action-button-border; - margin: .1em .3em; - border-radius: 12px; - } - - .nav-smaller .heading { - font-weight: bold; - } - - .nav-vertical { - margin-top: -2em; - } - - .nav-horizontal li { - padding: .5em; - } - - .nav-vertical > ul { - display: flex; - flex-direction: column; - list-style-type: none; - gap: 5%; - padding: 1em; - } - - .nav-vertical li { - padding: .5em; - } - - .nav-top > ul { - padding: 0; - padding-right: 2em; - } - - @media @tablet-down { - .nav-vertical { - margin-top: 55px; - } - - } - - .nav-bottom { - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - list-style-type: none; - margin-bottom: 20px; - } - - .nav-bottom p { - font-size: @nav-bottom-fs; - color: @unobtrusive; - margin: 0; - } - - @media @tablet-down { - .nav-bottom p { - font-size: @nav-bottom-fs-mobile; - margin-top: -10px; - } - - } - - nav { - &.grd-left-bar { - position: fixed; - top: 80.5px; - } - - .grd-nav-bn { - width: 100px; - } - - ul { - margin-top: 0; - padding-left: 0; - } - - } - - /* buttons */ - .grd-nav-bn:hover, - .grd-active { - background-color: @button-background-active; - border-color: @main-link-text; - } - - .grd-nav-bn { - padding: 10px; - border: 1px solid @unobtrusive; - display: table-cell; - text-align: center; - vertical-align: middle; - color: @unobtrusive; - } - - .grd-nav-bn-large { - width: 40vw; - height: 18vh; - font-size: @nav-btn-large-fs; - } - - a.grd-nav-bn, - a.grd-nav-bn:visited { - color: @main-link-text; - text-decoration: none; - } - -} diff --git a/community_server/websrc/src/less/09-notification.less b/community_server/websrc/src/less/09-notification.less deleted file mode 100644 index a9bf74c0a..000000000 --- a/community_server/websrc/src/less/09-notification.less +++ /dev/null @@ -1,160 +0,0 @@ -/* ============================================================ - - Notification - - Datei : notification.css - Datum : 2020-06-10 - Autor : Christine Slotty - Copyright : Gradido - - ============================================================*/ -@media screen { - .header-notify { - display: flex; - flex-wrap: wrap; - padding-left: 0; - margin-bottom: 0; - list-style: none; - z-index: 10; - } - - @media @tablet-down { - .header-notify { - justify-content: flex-end; - margin-right: 93px; - margin-top: 8px; - } - - } - - .notify { - display: block; - padding: .5rem .3rem; - color: @notify; - animation: blinkingNotifySymbol 1.2s infinite; - } - - .notify-alert { - color: @alert; - animation: blinkingAlertSymbol 1.2s infinite; - } - - @keyframes blinkingNotifySymbol { - 0% { - color: @notify; - } - - 49% { - color: @notify; - } - - 60% { - color: @notify-blink; - } - - 99% { - color: @notify-blink; - } - - 100% { - color: @notify; - } - - } - - @keyframes blinkingAlertSymbol { - 0% { - color: @alert; - } - - 49% { - color: @alert; - } - - 60% { - color: @alert-blink; - } - - 99% { - color: @alert-blink; - } - - 100% { - color: @alert; - } - - } - - /* - .notification-indicator-primary { - background: #047006; - } - - .notification-indicator-warning { - background: #f0825f - } - .notification-indicator-secondary { - background: grey - } - - .notification-indicator-secondary:before { - content: ""; - background: rgba(128, 128, 128, .5) - } - - .notification-indicator-success { - background: #00e093 - } - - .notification-indicator-success:before { - content: ""; - background: rgba(0, 224, 147, .5) - } - - .notification-indicator-info { - background: #6c61f6 - } - - .notification-indicator-info:before { - content: ""; - background: rgba(108, 97, 246, .5) - } - - - .notification-indicator-danger { - background: #ff5f66 - } - - .notification-indicator-danger:before { - content: ""; - background: rgba(255, 95, 102, .5) - } - - .notification-indicator-light { - background: #dfdfdf - } - - .notification-indicator-light:before { - content: ""; - background: rgba(223, 223, 223, .5) - } - - .notification-indicator-dark { - background: #74767b - } - - .notification-indicator-dark:before { - content: ""; - background: rgba(116, 118, 123, .5) - } - - .notification-indicator-white { - background: #fff - } - - .notification-indicator-white:before { - content: ""; - background: rgba(255, 255, 255, .5) - } - */ -} diff --git a/community_server/websrc/src/less/10-center.less b/community_server/websrc/src/less/10-center.less deleted file mode 100644 index 3163e566e..000000000 --- a/community_server/websrc/src/less/10-center.less +++ /dev/null @@ -1,224 +0,0 @@ -/* ============================================================ - - Screen styles for the regular center part. - - Datei : center.css - Datum : 2020-04-30 - Autor : Christine Slotty - Copyright : Gradio - - ============================================================*/ -@media screen { - - /* ========= - CONTENT - =========*/ - .content-default { - display: flex; - justify-content: center; - max-width: 90%; - } - - .content { - display: flex; - justify-content: flex-start; - flex-direction: column; - overflow: auto; - width: 100%; - background-color: @main-background; - line-height: @content-lh; - letter-spacing: @content-letter-spacing; - font-family: Roboto, sans-serif; - font-weight: 500; - font-size: 1rem; - padding-right: 5em; - } - - @media @tablet-down { - .content { - padding-right: 0; - } - - } - - /* Center Navigation Top */ - .nav-content { - position: relative; - color: @content-nav; - margin: 0 .25em; - } - - .nav-content-list { - display: flex; - list-style-type: none; - padding: 0; - margin-left: .25em; - } - - .nav-content-separator { - margin: 0 1em; - } - - @media @tablet-down { - .nav-content-list { - display: flex; - font-size: small; - margin-bottom: 0; - justify-content: center; - } - - } - - /* Center Content Container */ - .content-container { - background-color: @container-background; - color: @container-text; - border-radius: .5em; - box-shadow: 0 0 10px 0 @container-shadow; - border: 1px solid @container-border; - margin: 1em .25em; - } - - /* Block Container Above Main */ - .block-container { - width: 100%; - display: flex; - } - - /* Top Info Above Main */ - .info-container { - display: flex; - justify-content: space-between; - align-items: center; - max-width: 70%; - padding: 1em 25px; - } - - @media @wide-screen-down { - .info-container { - flex-direction: column; - max-width: 90%; - line-height: .25em; - } - - } - - /* Main Container */ - .main-container { - width: 100%; - } - - @media @tablet-down { - .main-container { - max-width: 97%; - } - - } - - .default-container { - width: 90%; - margin: auto; - padding: 1em; - } - - /* Content Block */ - .content-block { - width: 170px; - padding: 20px 25px 20px; - border: 1px dashed grey; - border-radius: 16px; - margin: 1em; - display: flex; - flex-direction: column; - justify-content: center; - justify-items: center; - align-items: center; - } - - .block-img { - width: 40px; - height: 40px; - line-height: 20px; - font-size: 24px; - padding: 8px; - border-radius: 20px; - box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.2); - overflow: hidden; - border-style: none; - box-sizing: border-box; - } - - /* Generic Content */ - .content-region h3 { - color: @container-header; - } - - .content-region { - border-bottom: 1px dashed @light; - padding: 0 25px; - padding-bottom: 2em; - margin: 1em .25em; - } - - .content-collection { - display: flex; - } - - .content-item { - margin: .5em 0; - margin-right: 5em; - width: 220px; - padding: 1em 2em; - } - - .action-button { - background: @action-button-background; - border-left: 3px solid @action-button-border; - } - - .info-item { - border-left: 2px solid @info-item-border; - } - - .inline-header { - display: inline; - } - - .show-profile-img { - display: block; - height: 100px; - vertical-align: middle; - border-radius: 10px; - border: 2px dotted @info-background; - } - - @media @tablet-down { - .content-region { - padding-left: 5px; - } - - .content-collection { - flex-direction: column; - align-items: center; - } - - .content-item { - margin: .5em 0; - margin-right: 0; - width: 160px; - padding: 1em 2em; - } - - } - - /* OTHER */ - .info-item i, - .info-item-link, - .action-button i, - .action-button-link { - vertical-align: middle; - } - -} - -/* Ende @media screen */ diff --git a/community_server/websrc/src/less/12-center-form-single.less b/community_server/websrc/src/less/12-center-form-single.less deleted file mode 100644 index 8179da087..000000000 --- a/community_server/websrc/src/less/12-center-form-single.less +++ /dev/null @@ -1,164 +0,0 @@ -/* ============================================================ - - Screen styles for the simple center form. (login etc) - - Datei : center-form-single.css - Datum : 2020-07-10 - Autor : Christine Slotty - Copyright : Gradio - - ============================================================*/ -@media screen { - .center-form-single { - width: 50%; - margin: auto; - } - - .center-form-header { - margin-bottom: 50px; - } - - .center-logo { - display: block; - margin: 0 auto; - width: 280px; - } - - .center-logo img { - width: 100%; - vertical-align: middle; - border-style: none; - } - - .center-form-container { - display: flex; - flex-direction: column; - padding: 2em 8em; - background-color: @container-background; - border-radius: 6px; - box-shadow: 0 0 10px 0 rgba(183, 192, 206, .2); - margin-bottom: 1.5rem; - border: 1px solid rgba(238, 238, 238, .75); - } - - @media @tablet-down { - .center-form-header { - margin-bottom: 30px; - margin-top: -50px; - } - - .center-form-single { - width: 97%; - margin: auto; - } - - .center-form-container { - padding: 1em .5em; - } - - } - - .center-form-title h1 { - margin-block-start: 0; - } - - .center-form-selectors { - display: flex; - justify-content: flex-end; - align-items: center; - height: 38px; - padding: 5px 0; - margin-bottom: 2em; - } - - .center-form-form, - .center-form-form form { - display: flex; - flex-direction: column; - } - - .center-form-form .form-label { - text-align: left; - } - .center-form-form .form-control { - width: 100%; - margin: auto; - box-sizing: border-box; - margin-bottom: .5em; - } - - .center-form-submit { - width: 100%; - margin: 1em 0; - } - - .reset-pwd-link, - .signup-link { - padding: 0 20px; - - & a { - color: @action-button-background1; - } - - & p { - display: inline-block; - margin-block-start: 0; - margin-block-end: 0; - } - - } - - .center-bottom { - color: @unobtrusive; - text-align: center; - padding-top: 30px; - } - - .flag-btn { - text-align: center; - vertical-align: middle; - padding: 3px 11px; - } - - .flag { - display: block; - } - - .flag-germany { - background: red; - border-top: 9px solid #000; - border-bottom: 9px solid #fc0; - width: 40px; - height: 10px; - } - - .flag-england { - background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJmbGFnLWljb24tY3NzLWdiIiB2aWV3Qm94PSIwIDAgNjQwIDQ4MCI+CiAgPHBhdGggZmlsbD0iIzAxMjE2OSIgZD0iTTAgMGg2NDB2NDgwSDB6Ii8+CiAgPHBhdGggZmlsbD0iI0ZGRiIgZD0iTTc1IDBsMjQ0IDE4MUw1NjIgMGg3OHY2Mkw0MDAgMjQxbDI0MCAxNzh2NjFoLTgwTDMyMCAzMDEgODEgNDgwSDB2LTYwbDIzOS0xNzhMMCA2NFYwaDc1eiIvPgogIDxwYXRoIGZpbGw9IiNDODEwMkUiIGQ9Ik00MjQgMjgxbDIxNiAxNTl2NDBMMzY5IDI4MWg1NXptLTE4NCAyMGw2IDM1TDU0IDQ4MEgwbDI0MC0xNzl6TTY0MCAwdjNMMzkxIDE5MWwyLTQ0TDU5MCAwaDUwek0wIDBsMjM5IDE3NmgtNjBMMCA0MlYweiIvPgogIDxwYXRoIGZpbGw9IiNGRkYiIGQ9Ik0yNDEgMHY0ODBoMTYwVjBIMjQxek0wIDE2MHYxNjBoNjQwVjE2MEgweiIvPgogIDxwYXRoIGZpbGw9IiNDODEwMkUiIGQ9Ik0wIDE5M3Y5Nmg2NDB2LTk2SDB6TTI3MyAwdjQ4MGg5NlYwaC05NnoiLz4KPC9zdmc+Cg==); - background-size: cover; - width: 40px; - height: 28px; - } - - .group { - padding-left: 10px; - padding-top: 10px; - padding-bottom: 10px; - } - - .group-is-invalid { - background-color: rgba(240, 130, 95, .2); - border-color: #dc3545; - padding-right: calc(1.5em + .75rem); - background-image: url("data:image/svg+xml,%3csvg xmlns=!string!fill=!string!viewBox=!string!%3e%3cpath stroke=!string!d=!string!/%3e%3ccircle r=!string!/%3e%3ccircle cx=!string!r=!string!/%3e%3ccircle cy=!string!r=!string!/%3e%3ccircle cx=!string!cy=!string!r=!string!/%3e%3c/svg%3E"); - background-repeat: no-repeat; - background-position: center right calc(.375em + .1875rem); - background-size: calc(.75em + .375rem) calc(.75em + .375rem) - } - - .group-is-invalid .radio label .input-frame::before { - border-color: red; - } - -} - -/* Ende @media screen */ diff --git a/community_server/websrc/src/less/15-facts.less b/community_server/websrc/src/less/15-facts.less deleted file mode 100644 index 3bac37ff7..000000000 --- a/community_server/websrc/src/less/15-facts.less +++ /dev/null @@ -1,62 +0,0 @@ -/* -To change this license header, choose License Headers in Project Properties. -To change this template file, choose Tools | Templates -and open the template in the editor. -*/ - -/* ============================================================ - - Screen styles for plain facts. - - Datei : facts.css - Datum : 08.07.2020 - Autor : Christine Slotty - Copyright : Gradio - - ============================================================*/ -@media screen { - .fact-list { - display: flex; - flex-direction: column; - list-style-type: none; - width: 100%; - padding-inline-start: 0; - font-weight: 300; - } - - .fact { - display: inline-block; - padding-left: 1em; - } - - .label { - width: 150px; - text-align: right; - font-weight: bold; - } - - @media @tablet-down { - .fact-list { - margin-block-start: 0; - margin-block-end: 0; - } - - li.fact { - display: flex; - flex-direction: column; - } - - .fact { - padding-left: .5em; - } - - .label { - width: 250px; - text-align: left; - font-size: .9em; - font-weight: normal; - } - - } - -} diff --git a/community_server/websrc/src/less/20-list.less b/community_server/websrc/src/less/20-list.less deleted file mode 100644 index d09fe0594..000000000 --- a/community_server/websrc/src/less/20-list.less +++ /dev/null @@ -1,239 +0,0 @@ -/* ============================================================ - - Screen styles for lists. - - Datei : list.css - Datum : 2020-06-09 - Autor : Christine Slotty - Copyright : Gradio - - ============================================================*/ -@media screen { - - /* ========= - LISTS - =========*/ - - /* List Content */ - .content-list { - width: 100%; - } - - .content-list-title { - font-size: 1rem; - margin: 0; - padding: 20px 25px; - color: @content-table-title; - } - - .content-list-table { - display: flex; - flex-direction: column; - width: 100%; - overflow: auto; - font-size: 16px; - color: #212529; - } - - .row { - display: flex; - width: 100%; - border-top: 1px solid #f2f4f9; - -webkit-transition-duration: .5s; - transition-duration: .5s; - } - - @media @tablet-down { - .row { - flex-direction: column; - } - - } - - .row:hover { - background-color: #f6f7f9; - } - - .cell { - display: flex; - flex-wrap: wrap; - align-items: center; - padding: 1em 1.5em; - } - - .cell-dense { - padding: .1em .5em; - } - - .centered { - justify-content: center; - } - - .c0 { - flex-grow: 5; - min-width: 20%; - } - - .c1 { - min-width: 40px; - flex: 0 0 40px; - } - - .c2 { - min-width: 80px; - flex: 0 0 80px; - } - - .c3 { - min-width: 160px; - flex: 0 0 160px; - } - - .c4 { - min-width: 240px; - flex: 0 0 240px; - } - - .c5 { - min-width: 320px; - flex: 0 0 320px; - } - - .c6 { - min-width: 400px; - flex: 0 0 400px; - } - - @media @tablet-down { - .cell { - padding: .25em 1.5em; - } - - .c1 { - flex-basis: auto; - } - - .c2 { - flex-basis: auto; - } - - .c3 { - flex-basis: auto; - } - - .c4 { - flex-basis: auto; - } - - .c5 { - flex-basis: auto; - } - - .c6 { - flex-basis: auto; - } - - } - - .header-cell { - border-top: 1px solid @content-table-header-border; - background-color: @content-table-header-bg; - color: @content-table-header; - } - - .content-list-table img, - .content-list-table i { - vertical-align: middle; - } - - .content-list-table > span { - font-size: .8em; - padding: .5em 2em; - vertical-align: middle; - } - - /* Individual Tables XXX rm!! */ - .error-list { - grid-template-columns: 2fr 2fr 5fr 1fr; - } - - .transactions { - grid-template-columns: 1fr 4fr 2fr 2fr; - } - - .profile-img { - width: 30px; - height: 30px; - border-radius: 6px; - box-shadow: 0 0 2px 0 rgba(0, 0, 0, .2); - overflow: hidden; - border-style: none; - box-sizing: border-box; - margin-right: 40px; - } - - .tx-email { - cursor: pointer; - display: block; - color: @content-table-header; - font-weight: 400; - } - - .small { - font-size: 80%; - font-weight: 400; - } - - /*, - .cell-icon .material-icons-outlined */ - .cell-icon { - - /*noch ungeklärt - icon ist nicht aligned */ - - /*font-size: 1.25em;*/ - vertical-align: middle; - } - - /* ===================================== - FORM TOP CONTENT (checkTransaction) - =====================================*/ - .form-content { - padding: 35px; - padding-top: 20px; - max-width: 80%; - margin: auto; - } - - .content-table { - border: 1px solid @content-table-header-border; - border-top: none; - margin-bottom: 1.5rem; - } - - .content-row { - display: flex; - justify-content: space-between; - font-weight: 400; - border-top: 1px solid @content-table-header-border; - } - - .content-row-header { - font-weight: 500; - color: @content-table-header; - } - - .content-row-bg { - background-color: @content-row-bg; - } - - .content-cell { - display: block; - border-collapse: collapse; - padding: 10px 15px; - } - - .form-button .material-icons-outlined { - font-size: 1.25em; - } - -} diff --git a/community_server/websrc/src/less/21-tabs.less b/community_server/websrc/src/less/21-tabs.less deleted file mode 100644 index 694dd1dab..000000000 --- a/community_server/websrc/src/less/21-tabs.less +++ /dev/null @@ -1,45 +0,0 @@ -/* -To change this license header, choose License Headers in Project Properties. -To change this template file, choose Tools | Templates -and open the template in the editor. -*/ -/* - Created on : 23.11.2020, 14:04:28 - Author : einhornimmond -*/ - - /* Style the tab */ -.tab { - overflow: hidden; - border: 1px solid #ccc; - background-color: #f1f1f1; -} - -/* Style the buttons that are used to open the tab content */ -.tab button { - background-color: inherit; - float: left; - border: none; - outline: none; - cursor: pointer; - padding: 14px 16px; - transition: 0.3s; -} - -/* Change background color of buttons on hover */ -.tab button:hover { - background-color: #ddd; -} - -/* Create an active/current tablink class */ -.tab button.active { - background-color: #ccc; -} - -/* Style the tab content */ -.tabcontent { - display: none; - padding: 6px 12px; - border: 1px solid #ccc; - border-top: none; -} \ No newline at end of file diff --git a/community_server/websrc/src/less/30-form.less b/community_server/websrc/src/less/30-form.less deleted file mode 100644 index df52a684e..000000000 --- a/community_server/websrc/src/less/30-form.less +++ /dev/null @@ -1,238 +0,0 @@ -/* -To change this license header, choose License Headers in Project Properties. -To change this template file, choose Tools | Templates -and open the template in the editor. -*/ - -/* ============================================================ - - Screen styles for forms. - - Datei : form.css - Datum : 2020-06-07 - Autor : Christine Slotty - Copyright : Gradio - - ============================================================*/ -@media screen { - - /* ========= - FORMS - =========*/ - - /* Form Content */ - .action-form { - width: 100%; - } - - .form-header { - border-left: 3px solid @form-header-border; - background: @form-header-background; - padding: 15px 20px; - margin: 0; - margin-bottom: 15px; - border-radius: 0 6px 0 0; - } - - .form-label { - grid-column: 1 / 2; - font-weight: 400; - text-align: right; - padding-right: .5em; - } - - .form-control { - grid-column: 2 / 3; - display: block; - padding: .4em .75em; - padding-left: 20px; - padding-right: 20px; - margin: 0; - margin-right: .5em; - color: rgba(16, 16, 16, .8); - display: block; - font-size: 1rem; - font-weight: 400; - line-height: 1.5; - color: #6c757d; - background-color: #f6f7f9; - background-clip: padding-box; - border: 1px solid #f0f2f5; - border-radius: .25rem; - -webkit-transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out; - transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out; - } - - .form-control:focus { - color: #495057; - background-color: #f6f7f9; - border-color: #d7dee5; - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, .25); - } - - textarea { - resize: vertical; - } - - .badge { - display: inline-block; - padding: .45rem 1rem; - font-size: 80%; - font-weight: 700; - line-height: 1; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - border-radius: .25rem; - -webkit-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out; - transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out - } - - .badge-warning { - color: @badge-color-warning; - background-color: @badge-background-warning; - } - - .badge-error { - color: @badge-color-error; - background-color: @badge-background-error; - } - - .form-full-width { - grid-column-start: 1; - grid-column-end: 3; - display: flex; - flex-direction: column; - } - - .form-button { - cursor: pointer; - font: 600 13.3333px Arial; - font-size: .875rem; - line-height: 1.5; - text-align: center; - vertical-align: middle; - color: @action-button-text; - background-color: @action-button-background1; - border-color: @action-button-border; - border: 1px solid transparent; - border-radius: .2rem; - height: 35px; - max-height: 35px; - padding: 4px 15px; - margin-right: .5em; - box-shadow: 0 0 2px 0 rgba(0, 0, 0, .2); - } - - .form-button:hover { - background-color: #034b04; - border-color: #023f03; - } - - .button-cancel { - color: #fff !important; - background-color: #f0825f; - border-color: #f0825f; - } - - .button-cancel:hover { - background-color: #ec5e30; - border-color: #eb5425; - } - - .link-button { - display: inline-block; - background: @action-button-background; - color: @action-button-text; - height: 17px; - padding: 1em 2em; - line-height: 1em; - border-radius: 6px; - text-align: center; - vertical-align: middle; - } - - .action-link { - color: @action-button-background1 !important; - } - - .action-link-button { - background-color: @action-button-background1 !important; - color: @action-button-text !important; - margin-top: 1em; - padding: .5em 1em; - } - - .edit-profile-img { - width: 100px; - } - - .note-smaller { - font-size: smaller; - } - - .form-row, - .grid-row { - display: flex; - justify-content: flex-start; - align-items: center; - align-content: center; - width: 100%; - -webkit-transition-duration: .5s; - transition-duration: .5s; - } - - .justify-end { - justify-content: flex-end; - } - - @media @tablet-down { - .grid-row { - flex-direction: column; - } - - } - - .form-row { - border-top: 1px solid #f2f4f9; - } - - .form-row:hover { - background-color: #f6f7f9; - } - - /* CENTER FORM SPECIFICS */ - .form-body form { - display: grid; - grid-template-columns: 220px 1fr; - margin: 36px 75px; - grid-gap: 1em; - } - - .center-form { - width: 450px; - } - - .center-form .form-control { - width: 90%; - } - - .center-form fieldset { - margin-bottom: 1em; - } - - @media @tablet-down { - .form-body form { - grid-template-columns: 1fr; - margin: 20px; - grid-gap: .25em; - } - - .form-label { - text-align: left; - } - - } - -} diff --git a/configs/community_server/app.php b/configs/community_server/app.php deleted file mode 100644 index d56a43cc0..000000000 --- a/configs/community_server/app.php +++ /dev/null @@ -1,431 +0,0 @@ - filter_var(env('DEBUG', true), FILTER_VALIDATE_BOOLEAN), - - /** - * Configure basic information about the application. - * - * - namespace - The namespace to find app classes under. - * - defaultLocale - The default locale for translation, formatting currencies and numbers, date and time. - * - encoding - The encoding used for HTML + database connections. - * - base - The base directory the app resides in. If false this - * will be auto detected. - * - dir - Name of app directory. - * - webroot - The webroot directory. - * - wwwRoot - The file path to webroot. - * - baseUrl - To configure CakePHP to *not* use mod_rewrite and to - * use CakePHP pretty URLs, remove these .htaccess - * files: - * /.htaccess - * /webroot/.htaccess - * And uncomment the baseUrl key below. - * - fullBaseUrl - A base URL to use for absolute links. When set to false (default) - * CakePHP generates required value based on `HTTP_HOST` environment variable. - * However, you can define it manually to optimize performance or if you - * are concerned about people manipulating the `Host` header. - * - imageBaseUrl - Web path to the public images directory under webroot. - * - cssBaseUrl - Web path to the public css directory under webroot. - * - jsBaseUrl - Web path to the public js directory under webroot. - * - paths - Configure paths for non class based resources. Supports the - * `plugins`, `templates`, `locales` subkeys, which allow the definition of - * paths for plugins, view templates and locale files respectively. - */ - 'App' => [ - 'namespace' => 'App', - 'encoding' => env('APP_ENCODING', 'UTF-8'), - 'defaultLocale' => env('APP_DEFAULT_LOCALE', 'en_US'), - 'defaultTimezone' => env('APP_DEFAULT_TIMEZONE', 'UTC'), - 'base' => false, - 'dir' => 'src', - 'webroot' => 'webroot', - 'wwwRoot' => WWW_ROOT, - //'baseUrl' => env('SCRIPT_NAME'), - 'fullBaseUrl' => false, - 'imageBaseUrl' => 'img/', - 'cssBaseUrl' => 'css/', - 'jsBaseUrl' => 'js/', - 'paths' => [ - 'plugins' => [ROOT . DS . 'plugins' . DS], - 'templates' => [APP . 'Template' . DS], - 'locales' => [APP . 'Locale' . DS], - ], - ], - - /** - * Security and encryption configuration - * - * - salt - A random string used in security hashing methods. - * The salt value is also used as the encryption key. - * You should treat it as extremely sensitive data. - */ - 'Security' => [ - 'salt' => env('SECURITY_SALT', '7ddf685a27d997ef36e51bdd626e7fc6b50a3abfb2971e8e59974d421116a150'), - ], - - /** - * Apply timestamps with the last modified time to static assets (js, css, images). - * Will append a querystring parameter containing the time the file was modified. - * This is useful for busting browser caches. - * - * Set to true to apply timestamps when debug is true. Set to 'force' to always - * enable timestamping regardless of debug value. - */ - 'Asset' => [ - //'timestamp' => true, - // 'cacheTime' => '+1 year' - ], - - /** - * Configure the cache adapters. - */ - 'Cache' => [ - 'default' => [ - 'className' => FileEngine::class, - 'path' => CACHE, - 'url' => env('CACHE_DEFAULT_URL', null), - ], - - /** - * Configure the cache used for general framework caching. - * Translation cache files are stored with this configuration. - * Duration will be set to '+2 minutes' in bootstrap.php when debug = true - * If you set 'className' => 'Null' core cache will be disabled. - */ - '_cake_core_' => [ - 'className' => FileEngine::class, - 'prefix' => 'myapp_cake_core_', - 'path' => CACHE . 'persistent/', - 'serialize' => true, - 'duration' => '+1 years', - 'url' => env('CACHE_CAKECORE_URL', null), - ], - - /** - * Configure the cache for model and datasource caches. This cache - * configuration is used to store schema descriptions, and table listings - * in connections. - * Duration will be set to '+2 minutes' in bootstrap.php when debug = true - */ - '_cake_model_' => [ - 'className' => FileEngine::class, - 'prefix' => 'myapp_cake_model_', - 'path' => CACHE . 'models/', - 'serialize' => true, - 'duration' => '+1 years', - 'url' => env('CACHE_CAKEMODEL_URL', null), - ], - - /** - * Configure the cache for routes. The cached routes collection is built the - * first time the routes are processed via `config/routes.php`. - * Duration will be set to '+2 seconds' in bootstrap.php when debug = true - */ - '_cake_routes_' => [ - 'className' => FileEngine::class, - 'prefix' => 'myapp_cake_routes_', - 'path' => CACHE, - 'serialize' => true, - 'duration' => '+1 years', - 'url' => env('CACHE_CAKEROUTES_URL', null), - ], - ], - - /** - * Configure the Error and Exception handlers used by your application. - * - * By default errors are displayed using Debugger, when debug is true and logged - * by Cake\Log\Log when debug is false. - * - * In CLI environments exceptions will be printed to stderr with a backtrace. - * In web environments an HTML page will be displayed for the exception. - * With debug true, framework errors like Missing Controller will be displayed. - * When debug is false, framework errors will be coerced into generic HTTP errors. - * - * Options: - * - * - `errorLevel` - int - The level of errors you are interested in capturing. - * - `trace` - boolean - Whether or not backtraces should be included in - * logged errors/exceptions. - * - `log` - boolean - Whether or not you want exceptions logged. - * - `exceptionRenderer` - string - The class responsible for rendering - * uncaught exceptions. If you choose a custom class you should place - * the file for that class in src/Error. This class needs to implement a - * render method. - * - `skipLog` - array - List of exceptions to skip for logging. Exceptions that - * extend one of the listed exceptions will also be skipped for logging. - * E.g.: - * `'skipLog' => ['Cake\Http\Exception\NotFoundException', 'Cake\Http\Exception\UnauthorizedException']` - * - `extraFatalErrorMemory` - int - The number of megabytes to increase - * the memory limit by when a fatal error is encountered. This allows - * breathing room to complete logging or error handling. - */ - 'Error' => [ - 'errorLevel' => E_ALL, - 'exceptionRenderer' => ExceptionRenderer::class, - 'skipLog' => [], - 'log' => true, - 'trace' => true, - ], - - /** - * Email configuration. - * - * By defining transports separately from delivery profiles you can easily - * re-use transport configuration across multiple profiles. - * - * You can specify multiple configurations for production, development and - * testing. - * - * Each transport needs a `className`. Valid options are as follows: - * - * Mail - Send using PHP mail function - * Smtp - Send using SMTP - * Debug - Do not send the email, just return the result - * - * You can add custom transports (or override existing transports) by adding the - * appropriate file to src/Mailer/Transport. Transports should be named - * 'YourTransport.php', where 'Your' is the name of the transport. - */ - 'EmailTransport' => [ - 'default' => [ - 'className' => MailTransport::class, - /* - * The following keys are used in SMTP transports: - */ - 'host' => 'localhost', - 'port' => 25, - 'timeout' => 30, - 'username' => null, - 'password' => null, - 'className' => 'Smtp', - 'tls' => true - ], - ], - - /** - * Email delivery profiles - * - * Delivery profiles allow you to predefine various properties about email - * messages from your application and give the settings a name. This saves - * duplication across your application and makes maintenance and development - * easier. Each profile accepts a number of keys. See `Cake\Mailer\Email` - * for more information. - */ - 'Email' => [ - 'default' => [ - 'transport' => 'default', - 'from' => 'you@localhost', - //'charset' => 'utf-8', - //'headerCharset' => 'utf-8', - ], - ], - - /** - * Connection information used by the ORM to connect - * to your application's datastores. - * - * ### Notes - * - Drivers include Mysql Postgres Sqlite Sqlserver - * See vendor\cakephp\cakephp\src\Database\Driver for complete list - * - Do not use periods in database name - it may lead to error. - * See https://github.com/cakephp/cakephp/issues/6471 for details. - * - 'encoding' is recommended to be set to full UTF-8 4-Byte support. - * E.g set it to 'utf8mb4' in MariaDB and MySQL and 'utf8' for any - * other RDBMS. - */ - 'Datasources' => [ - 'default' => [ - 'className' => Connection::class, - 'driver' => Mysql::class, - 'persistent' => false, - 'host' => 'mariadb', - /* - * CakePHP will use the default DB port based on the driver selected - * MySQL on MAMP uses port 8889, MAMP users will want to uncomment - * the following line and set the port accordingly - */ - //'port' => 'non_standard_port_number', - 'username' => 'root', - 'password' => '', - 'database' => 'gradido_community', - /* - * You do not need to set this flag to use full utf-8 encoding (internal default since CakePHP 3.6). - */ - //'encoding' => 'utf8mb4', - 'timezone' => 'UTC', - 'flags' => [], - 'cacheMetadata' => true, - 'log' => false, - - /** - * Set identifier quoting to true if you are using reserved words or - * special characters in your table or column names. Enabling this - * setting will result in queries built using the Query Builder having - * identifiers quoted when creating SQL. It should be noted that this - * decreases performance because each query needs to be traversed and - * manipulated before being executed. - */ - 'quoteIdentifiers' => false, - - /** - * During development, if using MySQL < 5.6, uncommenting the - * following line could boost the speed at which schema metadata is - * fetched from the database. It can also be set directly with the - * mysql configuration directive 'innodb_stats_on_metadata = 0' - * which is the recommended value in production environments - */ - //'init' => ['SET GLOBAL innodb_stats_on_metadata = 0'], - - 'url' => env('DATABASE_URL', null), - ], - - /** - * The test connection is used during the test suite. - */ - 'test' => [ - 'className' => Connection::class, - 'driver' => Mysql::class, - 'persistent' => false, - 'host' => 'mariadb', - //'port' => 'non_standard_port_number', - 'username' => 'root', - 'password' => '', - 'database' => 'gradido_community_test', - //'encoding' => 'utf8mb4', - 'timezone' => 'UTC', - 'cacheMetadata' => true, - 'quoteIdentifiers' => false, - 'log' => false, - //'init' => ['SET GLOBAL innodb_stats_on_metadata = 0'], - 'url' => env('DATABASE_TEST_URL', null), - ], - ], - - /** - * Configures logging options - */ - 'Log' => [ - 'debug' => [ - 'className' => FileLog::class, - 'path' => LOGS, - 'file' => 'debug', - 'url' => env('LOG_DEBUG_URL', null), - 'scopes' => false, - 'levels' => ['notice', 'info', 'debug'], - ], - 'error' => [ - 'className' => FileLog::class, - 'path' => LOGS, - 'file' => 'error', - 'url' => env('LOG_ERROR_URL', null), - 'scopes' => false, - 'levels' => ['warning', 'error', 'critical', 'alert', 'emergency'], - ], - // To enable this dedicated query log, you need set your datasource's log flag to true - 'queries' => [ - 'className' => FileLog::class, - 'path' => LOGS, - 'file' => 'queries', - 'url' => env('LOG_QUERIES_URL', null), - 'scopes' => ['queriesLog'], - ], - ], - - /** - * Session configuration. - * - * Contains an array of settings to use for session configuration. The - * `defaults` key is used to define a default preset to use for sessions, any - * settings declared here will override the settings of the default config. - * - * ## Options - * - * - `cookie` - The name of the cookie to use. Defaults to 'CAKEPHP'. Avoid using `.` in cookie names, - * as PHP will drop sessions from cookies with `.` in the name. - * - `cookiePath` - The url path for which session cookie is set. Maps to the - * `session.cookie_path` php.ini config. Defaults to base path of app. - * - `timeout` - The time in minutes the session should be valid for. - * Pass 0 to disable checking timeout. - * Please note that php.ini's session.gc_maxlifetime must be equal to or greater - * than the largest Session['timeout'] in all served websites for it to have the - * desired effect. - * - `defaults` - The default configuration set to use as a basis for your session. - * There are four built-in options: php, cake, cache, database. - * - `handler` - Can be used to enable a custom session handler. Expects an - * array with at least the `engine` key, being the name of the Session engine - * class to use for managing the session. CakePHP bundles the `CacheSession` - * and `DatabaseSession` engines. - * - `ini` - An associative array of additional ini values to set. - * - * The built-in `defaults` options are: - * - * - 'php' - Uses settings defined in your php.ini. - * - 'cake' - Saves session files in CakePHP's /tmp directory. - * - 'database' - Uses CakePHP's database sessions. - * - 'cache' - Use the Cache class to save sessions. - * - * To define a custom session handler, save it at src/Network/Session/.php. - * Make sure the class implements PHP's `SessionHandlerInterface` and set - * Session.handler to - * - * To use database sessions, load the SQL file located at config/schema/sessions.sql - */ - 'Session' => [ - 'defaults' => 'php', - ], - // *************************************************** - // Gradido specific configuration - // *************************************************** - // Login Server ip and port - 'LoginServer' => [ - 'host' => 'http://login-server', - 'port' => 1201, - 'url' => 'http://localhost' - ], - - // login server for look up emails from other groups - // workaround for using multiple groups until every code is finished as planned - // normally node server are responsible for email look up from users from other groups - 'NeighborLoginServers' => [ - ['host' => 'login-server', 'port' => 1201] - ], - 'GradidoBlockchain' => [ - // type: - // - db: centralized blockchain in mysql db, no cross group transactions - // - hedera: send transaction over hedera - 'type' => 'db', - // gradido nodes with blockchain (if type != db) - 'nodes' => [ - ['host' => 'node', 'port' => 13702] - ] - ], - - 'GroupAlias' => 'docker', - 'GDTServer' => [ - 'host' => 'https://gdt.gradido.net' // staging - ], - 'API' => [ - 'allowedCaller' => ['login-server'] - ], - 'ServerAdminEmail' => 'info@gradido.net', - 'noReplyEmail' => 'no-reply@gradido.net', - 'disableEmail' => true - -]; diff --git a/docker-compose.override.yml b/docker-compose.override.yml index 250b392db..3d63da9e3 100644 --- a/docker-compose.override.yml +++ b/docker-compose.override.yml @@ -78,23 +78,6 @@ services: # bind the local folder to the docker to allow live reload - ./database:/app - ######################################################### - ## COMMUNITY SERVER (cakephp with php-fpm) ############## - ######################################################### - community-server: - build: - context: . - target: community_server - dockerfile: ./community_server/Dockerfile - depends_on: - - mariadb - networks: - - internal-net - - external-net - volumes: - - ./community_server/config/php-fpm/php-ini-overrides.ini:/etc/php/7.4/fpm/conf.d/99-overrides.ini - - ./community_server/src:/var/www/cakephp/src - ######################################################### ## MARIADB ############################################## ######################################################### diff --git a/docker-compose.test.yml b/docker-compose.test.yml index a719f8c36..221ecba20 100644 --- a/docker-compose.test.yml +++ b/docker-compose.test.yml @@ -35,24 +35,6 @@ services: volumes: - db_test_vol:/var/lib/mysql - ######################################################### - ## COMMUNITY SERVER (cakephp with php-fpm) ############## - ######################################################### - community-server: - build: - context: . - target: test - dockerfile: ./community_server/Dockerfile - depends_on: - - mariadb - networks: - - internal-net - volumes: - - ./community_server/config/php-fpm/php-ini-overrides.ini:/etc/php/7.4/fpm/conf.d/99-overrides.ini - - ./community_server/src:/var/www/cakephp/src - - ./coverage/community:/var/www/cakephp/webroot/coverage - - ######################################################### ## PHPMYADMIN ########################################### ######################################################### diff --git a/docker-compose.yml b/docker-compose.yml index 9c92e19ea..213b200cd 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -145,25 +145,6 @@ services: ports: - 80:80 - ######################################################### - ## COMMUNITY SERVER (cakephp with php-fpm) ############## - ######################################################### - community-server: - build: - context: . - target: community_server - dockerfile: ./community_server/Dockerfile - environment: - - DB_PASSWORD='' - - DB_USER='root' - - DB_DATABASE='gradido_community' - depends_on: - - mariadb - networks: - - internal-net - volumes: - - ./community_server/config/php-fpm/php-ini-overrides.ini:/etc/php/7.4/fpm/conf.d/99-overrides.ini - networks: external-net: internal-net: diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile deleted file mode 100644 index d648fb564..000000000 --- a/php-fpm/Dockerfile +++ /dev/null @@ -1,9 +0,0 @@ -From phpdockerio/php74-fpm as php-fpm - -# Install selected extensions and other stuff -RUN apt-get update \ - && apt-get -y --no-install-recommends install curl php7.4-curl php7.4-fpm php7.4-mbstring php7.4-intl php7.4-xml php7.4-pdo php7.4-mysql\ - && apt-get clean; rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/* - - -WORKDIR "/var/www/cakephp" \ No newline at end of file