diff --git a/.codecov.yml b/.codecov.yml new file mode 100644 index 00000000000..3fe3bc37f98 --- /dev/null +++ b/.codecov.yml @@ -0,0 +1,7 @@ +coverage: + precision: 1 + round: up + range: 50..80 +ignore: + - bootstrap/cache/* + - public/storage/* diff --git a/.dockerignore b/.dockerignore index 4d65e96f78f..aa0ca010b12 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,14 +1,46 @@ +.git/ +.gitattributes +.github/ +.gitignore +**/.gitignore +**/.gitkeep +bootstrap/cache/* +database/*.sqlite +.env +CODE_OF_CONDUCT.md +CONTRIBUTING.md +docker-compose.yml +Dockerfile +.dockerignore +docs/ +fortrabbit.yml +Homestead.* node_modules/ +npm-debug.log* persist/ -public/storage/ +phpunit* +Procfile +public/storage resources/vendor/ +results/ +.sass-lint.yml +scripts/tests +scripts/vagrant +server.php +sonar-project.properties +storage/app/public/* +storage/debugbar/* +storage/framework/cache/* +storage/framework/sessions/* +storage/framework/views/* +storage/logs/* +.styleci.yml +storage/app/public/* +storage/debugbar/* +storage/framework/cache/* +storage/framework/sessions/* +storage/framework/views/* +storage/logs/* +tests/ +.travis.yml* vendor/ -.dockerignore -.env -.gitignore -Dockerfile -Homestead.json -Homestead.yaml -docker-compose.yml -monica.sublime-workspace -readme.md diff --git a/.env.example b/.env.example index 5bf6c28aed7..9ea62667889 100644 --- a/.env.example +++ b/.env.example @@ -20,10 +20,13 @@ APP_URL=http://localhost DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 +# You can use mysql unix socket if available, it overrides DB_HOST and DB_PORT values. +#DB_UNIX_SOCKET=/var/run/mysqld/mysqld.sock DB_DATABASE=monica DB_USERNAME=homestead DB_PASSWORD=secret -DB_PREFIX='' +DB_PREFIX= +DB_TEST_HOST=127.0.0.1 DB_TEST_DATABASE=monica_test DB_TEST_USERNAME=homestead DB_TEST_PASSWORD=secret @@ -45,6 +48,9 @@ APP_EMAIL_NEW_USERS_NOTIFICATION=EmailThatWillSendNotificationsForNewUser # https://github.com/monicahq/monica/blob/master/resources/views/settings/index.blade.php#L70 APP_DEFAULT_TIMEZONE=US/Eastern +# Default locale used in the application. +APP_DEFAULT_LOCALE=en + # Ability to disable signups on your instance. # Can be true or false. Default to false. APP_DISABLE_SIGNUP=true @@ -79,9 +85,12 @@ REQUIRES_SUBSCRIPTION=false # Leave blank unless you know what you are doing. STRIPE_KEY= STRIPE_SECRET= -PAID_PLAN_FRIENDLY_NAME= -PAID_PLAN_ID= -PAID_PLAN_PRICE= +PAID_PLAN_MONTHLY_FRIENDLY_NAME= +PAID_PLAN_MONTHLY_ID= +PAID_PLAN_MONTHLY_PRICE= +PAID_PLAN_ANNUAL_FRIENDLY_NAME= +PAID_PLAN_ANNUAL_ID= +PAID_PLAN_ANNUAL_PRICE= # Change this only if you know what you are doing CACHE_DRIVER=database diff --git a/.gitignore b/.gitignore index c8abca43590..0f46dddcff9 100644 --- a/.gitignore +++ b/.gitignore @@ -6,11 +6,9 @@ Homestead.yaml Homestead.json .env -monica.sublime-workspace -/.idea /storage/oauth-private.key /storage/oauth-public.key .DS_Store -npm-debug.log.* +npm-debug.log* /results -.vscode \ No newline at end of file +.travis.deploy.json diff --git a/.travis.yml b/.travis.yml index 3948e35faa2..7b37404d6d7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,58 +1,193 @@ sudo: required language: php - -php: - - 7.1 +php: 7.1 services: - mysql + - docker + - postgresql + +matrix: + include: + - php: 7.1 + env: + - DB=mysql + - SELENIUM=1 + - COVERAGE=1 + - php: 7.0 + env: + - DB=mysql + - SELENIUM=1 + - php: 7.2 + env: + - DB=mysql + - SELENIUM=1 + - php: 7.1 + env: DB=postgres + allow_failures: + - env: DB=postgres + fast_finish: true -jdk: - - oraclejdk8 +# Run pushed branches build on master and tagged version +branches: + only: + - master + - /^v\d+\.\d+(\.\d+)?(-\S*)?$/ addons: + postgresql: "9.6" chrome: stable -before_script: - - cp .env.travis .env - - mysql -e 'create database monica;' +before_install: + - cp /home/travis/.phpenv/versions/$TRAVIS_PHP_VERSION/etc/conf.d/xdebug.ini . + - phpenv config-rm xdebug.ini + - mkdir -p $TRAVIS_BUILD_DIR/results/coverage + - cp scripts/tests/.env.$DB.travis .env + - if [[ "$DB" == "mysql" ]]; then mysql -v -e 'CREATE DATABASE monica;'; fi + - if [[ "$DB" == "postgres" ]]; then psql -e -c 'CREATE DATABASE monica;' -U postgres; fi - composer self-update - - travis_retry composer install --no-interaction --prefer-dist --no-suggest - - # Start Xvfb - - "export DISPLAY=:99.0" - - "/sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -ac -screen 0 1280x1024x24" - # Start selenium server - - vendor/bin/selenium-server-standalone -role hub -log selenium-server.log -enablePassThrough false & - - until $(echo | nc localhost 4444); do sleep 1; echo Waiting for selenium hub to start...; done; +install: + # Get packages + - travis_retry composer install --no-interaction --no-suggest --ignore-platform-reqs - # Start selenium node for headless Chrome - - export PATH="$(pwd)/vendor/bin:$PATH" - - vendor/bin/selenium-server-standalone -role node -port 8910 -log selenium-node.log -enablePassThrough false & - - until $(echo | nc localhost 8910); do sleep 1; echo Waiting for selenium node to start...; done; + # Build js and css assets + - php artisan lang:generate + - npm install + - npm run production -script: +before_script: - php artisan migrate --env=testing --no-interaction -vvv - php artisan db:seed --env=testing --no-interaction -vvv - - vendor/bin/phpunit + + # Start Xvfb + - "export DISPLAY=:99.0" + - if [[ "$SELENIUM" == "1" && "$SAUCELABS" != "1" ]]; then /sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -ac -screen 0 1280x1024x16; fi + + # Start chromedriver + - bash -c "if [[ \"$SELENIUM\" == \"1\" && \"$SAUCELABS\" != \"1\" ]]; then ./vendor/bin/chromedriver; fi" & + +script: + # Run unit tests + - phpdbg -qrr vendor/bin/phpunit -c phpunit${DB/mysql/}.xml # Start http server - - php artisan serve & - - until $(echo | nc localhost 8000); do sleep 1; echo Waiting for laravel server to start...; done; - - vendor/bin/steward run laravel chrome + - phpenv config-add xdebug.ini + - bash -c "if [[ \"$SELENIUM\" == \"1\" ]]; then php -S localhost:8000 -t $TRAVIS_BUILD_DIR/public $TRAVIS_BUILD_DIR/scripts/tests/server-cc.php 2>/dev/null; fi" & + - if [[ "$SELENIUM" == "1" ]]; then until $(nc -z localhost 8000); do sleep 1; echo Waiting for http server to start...; done; fi -after_script: - - vendor/bin/steward results -vvv - - cat selenium-server.log - - cat selenium-node.log - - ./travis-sonar.sh + # Run browser tests + - if [[ "$SELENIUM" == "1" ]]; then php artisan dusk; fi -after_success: - - bash <(curl -s https://codecov.io/bash) -f results/clover.xml +after_script: + - if [[ "$SELENIUM" == "1" ]]; then scripts/tests/travis-report.sh 2>/dev/null; fi + - if [[ "$COVERAGE" == "1" ]]; then vendor/bin/phpcov merge --clover=$TRAVIS_BUILD_DIR/results/coverage2.xml $TRAVIS_BUILD_DIR/results/coverage/; fi + - if [[ "$COVERAGE" == "1" ]]; then bash <(curl -s https://codecov.io/bash); fi + - if [[ "$COVERAGE" == "1" ]]; then scripts/tests/travis-sonar.sh; fi cache: directories: + - $HOME/.composer/cache/files + - node_modules - $HOME/.sonar/cache - $HOME/sonarscanner - $HOME/sonarlauncher + +jobs: + include: + - stage: Tests + php: 7.1 + env: + - DB=mysql + - SELENIUM=1 + - COVERAGE=1 + + - stage: Tests + php: 7.0 + env: + - DB=mysql + - SELENIUM=1 + + - stage: Tests + php: 7.2 + env: + - DB=mysql + - SELENIUM=1 + + - stage: Tests + allow_failure: true + php: 7.1 + env: DB=postgres + + - stage: Deploy + if: tag IS present + skip_cleanup: true + before_install: + - cp scripts/tests/.env.mysql.travis .env + - composer self-update + + install: + # Get packages without require-dev + - travis_retry composer install --no-interaction --no-suggest --ignore-platform-reqs --no-dev + # Build js and css assets + - php artisan lang:generate + - npm install + - npm run production + + before_script: skip + + script: + - make dist + + after_script: skip + + before_deploy: + - make .travis.deploy.json + + deploy: + provider: bintray + file: .travis.deploy.json + skip_cleanup: true + user: $BINTRAY_USER + key: $BINTRAY_APIKEY + on: + all_branches: true + + - stage: Deploy + if: tag IS present + before_install: + - cp scripts/tests/.env.mysql.travis .env + - docker-compose --version + + install: skip + before_script: skip + + script: + - make docker_build + - echo $BINTRAY_APIKEY | docker login -u $BINTRAY_USER --password-stdin monicahq-docker-docker.bintray.io + - make docker_push_bintray + + after_script: skip + + - stage: Deploy + if: tag IS present + before_install: + - scripts/vagrant/install-vagrant.sh + + install: skip + before_script: skip + + script: + - make vagrant_build + after_script: skip + + before_deploy: + - DEPLOY_TEMPLATE=scripts/vagrant/build/.travis.deploy.json.in make .travis.deploy.json + deploy: + provider: bintray + file: .travis.deploy.json + skip_cleanup: true + user: $BINTRAY_USER + key: $BINTRAY_APIKEY + on: + all_branches: true diff --git a/.travis.yml.sig b/.travis.yml.sig index d071043b9c2..76c585cd46b 100644 Binary files a/.travis.yml.sig and b/.travis.yml.sig differ diff --git a/CHANGELOG b/CHANGELOG index 61acce368e7..19f5cc36a51 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,80 @@ UNRELEASED CHANGES: -* +* Fix called_at field in the Call object returned by the API +* Add Linkedin URL in the Contact object returned by the API +* Improve localization: add plural forms, localize every needed messages +* Split app.js in 3 files, and load translations files for Vue in separate files + +RELEASED VERSIONS: + +v1.8.2 - 2018-03-20 +------------------- + +* Add a Vagrantfile to run Monica on Vagrant +* Add support for Hebrew and Chinese Simplified +* Add bullet points to call lists when rendered from markdown +* Require debugbar on dev only +* Improve heroku integration +* Open register page after a clean installation +* API: Add ability to sort tasks by completed_at attribute +* API: Add sorting capabilities to most models +* Update Czech, Italian, Portuguese, Russian, German, French language files +* Fix docker image creating wrong storage directories +* Fix notification messages + +v1.8.1 - 2018-03-02 +------------------- + +* Fix message in contact edit page +* Fix months list for non english languages in contact edit page +* Fix birthdate calendar for non english languages in contact edit page +* Fix Gravatar support +* Remove partial contacts from search results returned by the API +* Fix reset account deleting default account values +* Fix notifications not working with aysnchronous queue +* Support mysql unix socket + +v1.8.0 - 2018-02-26 +------------------- + +* Add ability to search and sort in the API +* Add ability to define the hour the reminder should be sent +* Add notifications for reminders (30 and 7 days before an event happens) +* Add API calls to associate and remove tags to a contact +* Docker image: use cron to run schedule tasks +* Docker image: reduce size of image +* Docker image: create storage subdirectory in case they not exist +* Docker image: use rewrite rules in .htaccess from public directory instead of apache conf file +* Remove trailing slash from routes + +v1.7.2 - 2018-02-20 +------------------- + +* Fix a bug where POST requests were not working with Apache +* Fix a bug preventing to delete a contact + +v1.7.1 - 2018-02-17 +------------------- + +* Fix a bug that occured when running setup:production command + +v1.7.0 - 2018-02-16 +------------------- + +* Add ability to create custom genders +* Add Annual plan for the .com site +* Fix avatar being invalid in the Contact API call +* DB_PREFIX is now blank in .env.example +* Fix empty message after updating a gift + +v1.6.2 - 2018-01-25 +------------------- + +* Add support for pets in the API +* Add ability to export a contact to vCard +* Add ability to mark a gift idea as being offered +* Add translation for "preferences updated" message in the Settings page +* Add a lot of unit tests v1.6.1 - 2018-01-14 ------------------- @@ -10,8 +84,7 @@ v1.6.1 - 2018-01-14 * Remove duplicated code in Addresses.vue file * Fix reminders not being sent in some cases * Fix avatars not being displayed in an activity on the journal - -RELEASED VERSIONS: +* Fix filtering of contacts by tags not taking into account the selected tag from the profile page v1.6.0 - 2018-01-09 ------------------- @@ -27,8 +100,6 @@ v1.6.0 - 2018-01-09 * Add two factor authentication ability * Add pet support to API -RELEASED VERSIONS: - v1.5.0 - 2018-01-02 ------------------- @@ -84,7 +155,7 @@ v1.0.0 - 2017-11-09 * Add a button to `Save and add another contact` straight from the Add contact screen * Add the ability to indicate how you've met someone * Replace former front-end build system by mix (which is the new default with Laravel 5.5) -* Add a first part of the API +* Add the first part of the API * Fix the access to upgrade account view * Add security.txt file * Upgrade codebase to Laravel 5.5 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d2e049a7258..37fccf7a46c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -3,10 +3,14 @@ First off, thank you for considering contributing to Monica. We need people like you to make Monica the best tool it can be. -Before you do anything else, please read the README.md of this project first. +Before you do anything else, please read the [README.md](readme.md) of this project first. This is where we highlight the vision and the strategy. Please make sure you accept this vision before contributing to this project. +If you want to contribute to the translation / localization of Monica, please +head over to [Crowdin](https://crowdin.com/project/monicahq) where we manage our +localization files. + ### 1. Where do I go from here? If you've noticed a bug or have a question, [make an issue](https://github.com/monicahq/monica/issues/new), @@ -26,7 +30,7 @@ git checkout -b 325-add-japanese-translations ### 3. Get the test suite running -Make sure you follow the [readme's instructions](https://github.com/monicahq/monica/blob/master/docs/contribute/contribute.md#setup-the-testing-environment) +Make sure you follow the [instructions](https://github.com/monicahq/monica/wiki/Contribute-as-a-developer#testing-environment) on how to setup the test suite. ### 4. Did you find a bug? diff --git a/CONTRIBUTORS b/CONTRIBUTORS index e60f281ca09..3670abdf683 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -1,5 +1,5 @@ This is the list of all the people that make this great software. -Add yourself at the botom of the list if you do contribute and wish +Add yourself at the bottom of the list if you do contribute and wish to appear as a contributor. At the very minimum, the GitHub username is required if you do wish to appear. Other fields are optional. @@ -28,3 +28,4 @@ Kovah @kovah Alexis Saettler @asbiin Steven Maguire @stevenmaguire @erdmenchen +Tom Rochette @tomzx diff --git a/Dockerfile b/Dockerfile index 566fbf0e882..d9c6914aff0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,36 +2,66 @@ FROM alpine:3.6 EXPOSE 80:80 -RUN apk update && apk add apache2 curl git make netcat-openbsd nodejs-current-npm openssl php7 php7-apache2 php7-ctype php7-dom php7-fileinfo php7-gd php7-iconv php7-intl php7-json php7-mbstring php7-mysqli php7-openssl php7-pdo_mysql php7-phar php7-session php7-simplexml php7-tokenizer php7-xml php7-xmlreader php7-xmlwriter php7-zip php7-zlib php7-pgsql php7-pdo_pgsql php7-curl - -RUN mkdir -p /run/apache2 +RUN apk update && apk upgrade; \ + apk add --virtual .build-deps \ + curl openssl; \ + apk add apache2 make netcat-openbsd \ + #- base + php7 php7-apache2 php7-intl php7-openssl php7-ctype \ + php7-zip php7-zlib \ + php7-redis \ + #- Authentication Guards + php7-session php7-tokenizer \ + #- laravel/cashier sabre/vobject sabre/xml + php7-dom \ + #- intervention/image + php7-fileinfo \ + #- laravel/cashier + php7-gd \ + #- composer + php7-phar php7-json php7-iconv \ + #- laravel/framework sabre/vobject + php7-mbstring \ + #- league/flysystem-aws-s3-v3 + php7-simplexml \ + #- sabre/vobject sabre/xml + php7-xml php7-xmlreader php7-xmlwriter \ + #- mysql + php7-mysqli php7-pdo_mysql \ + #- pgsql + php7-pgsql php7-pdo_pgsql \ + #- sentry/sentry + php7-curl; \ + # Create apache2 dir needed for httpd + mkdir -p /run/apache2 # Create a user to own all the code and assets and give them a working # directory -RUN adduser -D monica && addgroup apache monica +RUN adduser -D monica apache -h /var/www/monica WORKDIR /var/www/monica -# As an optimization, install Node stuff early in the process so that -# it gets cached. That way we don't have to rerun all of this every -# time we change a config file or edit some CSS. Yes, this is ugly, -# but it shaves a few minutes off repeated build times. -ADD package.json . -RUN chown -R monica . && su monica -c "npm install" - # Copy the local (outside Docker) source into the working directory, # copy system files into their proper homes, and set file ownership # correctly ADD . . -RUN cp docker/000-default.conf /etc/apache2/conf.d \ - && cp .env.example .env \ - && chown -R monica:monica . \ - && chgrp -R apache bootstrap/cache storage \ - && chmod -R g+w bootstrap/cache storage +RUN cp .env.example .env; \ + chown -R monica:monica . && \ + chgrp -R apache bootstrap/cache storage && \ + chmod -R g+w bootstrap/cache storage && \ + # Apache2 conf + cp scripts/docker/000-default.conf /etc/apache2/conf.d/; \ + # Composer installation + scripts/docker/install-composer.sh; \ + # Set crontab for schedules + echo '* * * * * /usr/bin/php /var/www/monica/artisan schedule:run' | crontab -u monica -; \ + # Cleanup + apk del .build-deps && rm -rf /var/cache/apk/* # Install composer dependencies and prepare permissions for Apache USER monica -RUN docker/install-composer.sh && ./composer.phar install +RUN composer install --no-interaction --no-suggest --no-dev && \ + composer clear-cache USER root # This is the command that the container will run by default -ENTRYPOINT ["make", "-f", "/var/www/monica/docker/Makefile"] +ENTRYPOINT ["make", "-f", "/var/www/monica/scripts/docker/Makefile"] diff --git a/Makefile b/Makefile index 204d9ad2aaf..bc535ecaa8e 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,34 @@ -GIT_TAG=$$(git describe --abbrev=0 --tags) +GIT_TAG := $(shell git describe --abbrev=0 --tags) +GIT_COMMIT := $(shell git log --format="%h" -n 1) +BUILD := $(GIT_TAG) +ifeq ($(TRAVIS_TAG),) +# If we are not on travis or it's not a TAG build, we add "-dev" to the name +BUILD := $(BUILD)$(shell if ! $$(git describe --abbrev=0 --tags --exact-match 2>/dev/null >/dev/null); then echo "-dev"; fi) +ifneq ($(GIT_TAG),$(BUILD)) +ifneq ($(GIT_COMMIT),) +BUILD := $(BUILD)-$(GIT_COMMIT) +endif +endif +endif + +DESTDIR := monica-$(BUILD) +ASSETS := monica-assets-$(BUILD) + +default: build + +all: + $(MAKE) fullclean + $(MAKE) build + $(MAKE) dist + +docker: + $(MAKE) docker_build + $(MAKE) docker_tag + $(MAKE) docker_push docker_build: docker-compose build + docker images docker_tag: docker tag monicahq/monicahq monicahq/monicahq:$(GIT_TAG) @@ -9,3 +36,122 @@ docker_tag: docker_push: docker push monicahq/monicahq:$(GIT_TAG) docker push monicahq/monicahq:latest + +docker_push_bintray: .travis.deploy.json + docker tag monicahq/monicahq monicahq-docker-docker.bintray.io/monicahq/monicahq:$(BUILD) + docker push monicahq-docker-docker.bintray.io/monicahq/monicahq:$(BUILD) + BUILD=$(BUILD) scripts/tests/fix-bintray.sh + +.PHONY: docker docker_build docker_tag docker_push docker_push_bintray + +build: build-dev + +build-prod: + composer install --no-interaction --no-suggest --ignore-platform-reqs --no-dev + php artisan lang:generate + npm install + npm run production + +build-dev: + composer install --no-interaction --no-suggest --ignore-platform-reqs + php artisan lang:generate + npm install + npm run dev + +prepare: $(DESTDIR) $(ASSETS) + mkdir -p results + +$(DESTDIR): + mkdir -p $@ + ln -s ../readme.md $@/ + ln -s ../CONTRIBUTING.md $@/ + ln -s ../CHANGELOG $@/ + ln -s ../CONTRIBUTORS $@/ + ln -s ../LICENSE $@/ + ln -s ../.env.example $@/ + ln -s ../composer.json $@/ + ln -s ../composer.lock $@/ + ln -s ../package.json $@/ + ln -s ../package-lock.json $@/ + ln -s ../app.json $@/ + ln -s ../nginx_app.conf $@/ + ln -s ../server.php $@/ + ln -s ../webpack.mix.js $@/ + ln -s ../Procfile $@/ + ln -s ../app $@/ + ln -s ../artisan $@/ + ln -s ../bootstrap $@/ + ln -s ../config $@/ + ln -s ../database $@/ + ln -s ../docs $@/ + ln -s ../public $@/ + ln -s ../resources $@/ + ln -s ../routes $@/ + ln -s ../vendor $@/ + mkdir -p $@/storage/app/public + mkdir -p $@/storage/debugbar + mkdir -p $@/storage/logs + mkdir -p $@/storage/framework/views + mkdir -p $@/storage/framework/cache + mkdir -p $@/storage/framework/sessions + +$(ASSETS): + mkdir -p $@/public + ln -s ../../public/mix-manifest.json $@/public/ + ln -s ../../public/js $@/public/ + ln -s ../../public/css $@/public/ + ln -s ../../public/fonts $@/public/ + +dist: results/$(DESTDIR).tar.bz2 results/$(ASSETS).tar.bz2 + +COMMIT_MESSAGE := $(shell echo "$$TRAVIS_COMMIT_MESSAGE" | sed -s 's/"/\\\\\\\\\\"/g' | sed -s 's/(/\\(/g' | sed -s 's/)/\\)/g' | sed -s 's%/%\\/%g') + +ifeq (,$(DEPLOY_TEMPLATE)) +DEPLOY_TEMPLATE := scripts/tests/.travis.deploy.json.in +endif + +.travis.deploy.json: $(DEPLOY_TEMPLATE) + cp $< $@ + sed -si "s/\$$(version)/$(BUILD)/" $@ + sed -si "s/\$$(description)/$(COMMIT_MESSAGE)/" $@ + sed -si "s/\$$(released)/$(shell date -u '+%FT%T.000Z')/" $@ + sed -si "s/\$$(travis_tag)/$(TRAVIS_TAG)/" $@ + sed -si "s/\$$(travis_commit)/$(GIT_COMMIT)/" $@ + sed -si "s/\$$(travis_build_number)/$(TRAVIS_BUILD_NUMBER)/" $@ + +results/%.tar.xz: % prepare + tar chfJ $@ --exclude .gitignore --exclude .gitkeep $< + +results/%.tar.bz2: % prepare + tar chfj $@ --exclude .gitignore --exclude .gitkeep $< + +results/%.tar.gz: % prepare + tar chfz $@ --exclude .gitignore --exclude .gitkeep $< + +results/%.zip: % prepare + zip -rq9 $@ $< --exclude "*.gitignore*" "*.gitkeep*" + +clean: + rm -rf $(DESTDIR) $(ASSETS) + rm -f results/$(DESTDIR).* results/$(ASSETS).* .travis.deploy.json + +fullclean: clean + rm -rf vendor resources/vendor public/fonts/vendor node_modules + rm -f public/css/* public/js/* public/mix-manifest.json public/storage bootstrap/cache/* + +install: .env build-dev + php artisan key:generate + php artisan setup:test + php artisan passport:install + +update: .env build-dev + php artisan migrate + +.env: + cp .env.example .env + +.PHONY: dist clean fullclean install update build prepare build-prod build-dev + +vagrant_build: + make -C scripts/vagrant/build package + diff --git a/Procfile b/Procfile index 361b95fc073..08cfcef95d1 100644 --- a/Procfile +++ b/Procfile @@ -1,2 +1,3 @@ web: vendor/bin/heroku-php-nginx -C nginx_app.conf /public -queue: php artisan queue:work --sleep=3 --tries=3 \ No newline at end of file +queue: php artisan queue:work --sleep=3 --tries=3 +release: php artisan migrate --force diff --git a/app.json b/app.json index 5ba75687422..63b2dcb13cd 100644 --- a/app.json +++ b/app.json @@ -13,6 +13,9 @@ "addons": [ { "plan": "cleardb:ignite" + }, + { + "plan": "scheduler:standard" } ], "scripts": { diff --git a/app/Account.php b/app/Account.php index ccb87d7876e..6b044caad5b 100644 --- a/app/Account.php +++ b/app/Account.php @@ -5,23 +5,8 @@ use DB; use Laravel\Cashier\Billable; use Illuminate\Database\Eloquent\Model; -use Illuminate\Database\Eloquent\Collection; use Illuminate\Database\Eloquent\Relations\HasMany; -/** - * @property User $user - * @property Collection|Activity[] $activities - * @property Collection|ActitivyStatistic[] $activityStatistics - * @property Collection|Contact[] $contacts - * @property Collection|Invitation[] $invitations - * @property Collection|Debt[] $debts - * @property Collection|Entry[] $entries - * @property Collection|Gift[] $gifts - * @property Collection|Event[] $events - * @property Collection|Note[] $notes - * @property Collection|Reminder[] $reminders - * @property Collection|Task[] $tasks - */ class Account extends Model { use Billable; @@ -32,7 +17,9 @@ class Account extends Model * @var array */ protected $fillable = [ - 'number_of_invitations_sent', 'api_key', + 'number_of_invitations_sent', + 'api_key', + 'default_time_reminder_is_sent', ]; /** @@ -44,6 +31,52 @@ class Account extends Model 'has_access_to_paid_version_for_free' => 'boolean', ]; + /** + * Create a new account and associate a new User. + * + * @param string $first_name + * @param string $last_name + * @param string $email + * @param string $password + * @return this + */ + public static function createDefault($first_name, $last_name, $email, $password) + { + // create new account + $account = new self; + $account->api_key = str_random(30); + $account->created_at = now(); + $account->save(); + + $account->populateDefaultFields($account); + + // create the first user for this account + User::createDefault($account->id, $first_name, $last_name, $email, $password); + + return $account; + } + + /** + * Get if any account exists on the database. + * + * @return bool + */ + public static function hasAny() + { + return DB::table('accounts')->count() > 0; + } + + /** + * Populates all the default column that should be there when a new account + * is created or reset. + */ + public static function populateDefaultFields($account) + { + $account->populateContactFieldTypeTable(); + $account->populateDefaultGendersTable(); + $account->populateDefaultReminderRulesTable(); + } + /** * Get the activity records associated with the account. * @@ -274,10 +307,62 @@ public function days() return $this->hasMany('App\Day'); } + /** + * Get the Genders records associated with the account. + * + * @return HasMany + */ + public function genders() + { + return $this->hasMany('App\Gender'); + } + + /** + * Get the Reminder Rules records associated with the account. + * + * @return HasMany + */ + public function reminderRules() + { + return $this->hasMany('App\ReminderRule'); + } + + /** + * Get the Notifications records associated with the account. + * + * @return HasMany + */ + public function notifications() + { + return $this->hasMany('App\Notification'); + } + + /** + * Get the default time reminder is sent. + * + * @param string $value + * @return string + */ + public function getDefaultTimeReminderIsSentAttribute($value) + { + return $value; + } + + /** + * Set the default time a reminder is sent. + * + * @param string $value + * @return void + */ + public function setDefaultTimeReminderIsSentAttribute($value) + { + $this->attributes['default_time_reminder_is_sent'] = $value; + } + /** * Check if the account can be downgraded, based on a set of rules. * - * @return this + * @return $this */ public function canDowngrade() { @@ -311,7 +396,11 @@ public function isSubscribed() $isSubscribed = false; - if ($this->subscribed(config('monica.paid_plan_friendly_name'))) { + if ($this->subscribed(config('monica.paid_plan_monthly_friendly_name'))) { + $isSubscribed = true; + } + + if ($this->subscribed(config('monica.paid_plan_annual_friendly_name'))) { $isSubscribed = true; } @@ -328,11 +417,8 @@ public function isSubscribed() public function hasInvoices() { $query = DB::table('subscriptions')->where('account_id', $this->id)->count(); - if ($query > 0) { - return true; - } - return false; + return $query > 0; } /** @@ -399,8 +485,8 @@ public function populateContactFieldTypeTable($ignoreMigratedTable = false) $defaultContactFieldTypes = DB::table('default_contact_field_types')->get(); foreach ($defaultContactFieldTypes as $defaultContactFieldType) { - if ($ignoreMigratedTable == false) { - $contactFieldType = ContactFieldType::create([ + if (! $ignoreMigratedTable || $defaultContactFieldType->migrated == 0) { + ContactFieldType::create([ 'account_id' => $this->id, 'name' => $defaultContactFieldType->name, 'fontawesome_icon' => (is_null($defaultContactFieldType->fontawesome_icon) ? null : $defaultContactFieldType->fontawesome_icon), @@ -408,21 +494,33 @@ public function populateContactFieldTypeTable($ignoreMigratedTable = false) 'delible' => $defaultContactFieldType->delible, 'type' => (is_null($defaultContactFieldType->type) ? null : $defaultContactFieldType->type), ]); - } else { - if ($defaultContactFieldType->migrated == 0) { - $contactFieldType = ContactFieldType::create([ - 'account_id' => $this->id, - 'name' => $defaultContactFieldType->name, - 'fontawesome_icon' => (is_null($defaultContactFieldType->fontawesome_icon) ? null : $defaultContactFieldType->fontawesome_icon), - 'protocol' => (is_null($defaultContactFieldType->protocol) ? null : $defaultContactFieldType->protocol), - 'delible' => $defaultContactFieldType->delible, - 'type' => (is_null($defaultContactFieldType->type) ? null : $defaultContactFieldType->type), - ]); - } } } } + /** + * Populates the default genders in a new account. + * + * @return void + */ + public function populateDefaultGendersTable() + { + Gender::create(['name' => trans('app.gender_male'), 'account_id' => $this->id]); + Gender::create(['name' => trans('app.gender_female'), 'account_id' => $this->id]); + Gender::create(['name' => trans('app.gender_none'), 'account_id' => $this->id]); + } + + /** + * Populates the default reminder rules in a new account. + * + * @return void + */ + public function populateDefaultReminderRulesTable() + { + ReminderRule::create(['number_of_days_before' => 7, 'account_id' => $this->id, 'active' => 1]); + ReminderRule::create(['number_of_days_before' => 30, 'account_id' => $this->id, 'active' => 1]); + } + /** * Get the reminders for the month given in parameter. * - 0 means current month @@ -432,13 +530,123 @@ public function populateContactFieldTypeTable($ignoreMigratedTable = false) */ public function getRemindersForMonth(int $month) { - $startOfMonth = \Carbon\Carbon::now()->addMonthsNoOverflow($month)->startOfMonth(); - $endInThreeMonths = \Carbon\Carbon::now()->addMonthsNoOverflow($month)->endOfMonth(); - $reminders = auth()->user()->account->reminders() - ->whereBetween('next_expected_date', [$startOfMonth, $endInThreeMonths]) - ->orderBy('next_expected_date', 'asc') - ->get(); + $startOfMonth = now()->addMonthsNoOverflow($month)->startOfMonth(); + $endInThreeMonths = now()->addMonthsNoOverflow($month)->endOfMonth(); + + return auth()->user()->account->reminders() + ->whereBetween('next_expected_date', [$startOfMonth, $endInThreeMonths]) + ->orderBy('next_expected_date', 'asc') + ->get(); + } + + /** + * Get the id of the plan the account is subscribed to. + * + * @return string + */ + public function getSubscribedPlanId() + { + $plan = $this->subscriptions()->first(); + + return $plan->stripe_plan; + } + + /** + * Get the friendly name of the plan the account is subscribed to. + * + * @return string + */ + public function getSubscribedPlanName() + { + $plan = $this->subscriptions()->first(); + + return $plan->name; + } + + /** + * Replaces a specific gender of all the contacts in the account with another + * gender. + * + * @param Gender $genderToDelete + * @param Gender $genderToReplaceWith + * @return bool + */ + public function replaceGender(Gender $genderToDelete, Gender $genderToReplaceWith) + { + Contact::where('account_id', $this->id) + ->where('gender_id', $genderToDelete->id) + ->update(['gender_id' => $genderToReplaceWith->id]); + + return true; + } + + /** + * Get the statistics of the number of calls grouped by year. + * + * @return json + */ + public function getYearlyCallStatistics() + { + $callsStatistics = collect([]); + $calls = $this->calls()->latest('called_at')->get(); + $years = []; + + // Create a table that contains the combo year/number of + foreach ($calls as $call) { + $yearStatistic = $call->called_at->format('Y'); + $foundInYear = false; + + foreach ($years as $year => $number) { + if ($year == $yearStatistic) { + $years[$year] = $number + 1; + $foundInYear = true; + } + } + + if (! $foundInYear) { + $years[$yearStatistic] = 1; + } + } + + foreach ($years as $year => $number) { + $callsStatistics->put($year, $number); + } + + return $callsStatistics; + } + + /** + * Get the statistics of the number of activities grouped by year. + * + * @return json + */ + public function getYearlyActivitiesStatistics() + { + $activitiesStatistics = collect([]); + $activities = $this->activities()->latest('date_it_happened')->get(); + $years = []; + + // Create a table that contains the combo year/number of + foreach ($activities as $call) { + $yearStatistic = $call->date_it_happened->format('Y'); + $foundInYear = false; + + foreach ($years as $year => $number) { + if ($year == $yearStatistic) { + $years[$year] = $number + 1; + $foundInYear = true; + } + } + + if (! $foundInYear) { + $years[$yearStatistic] = 1; + } + } + + foreach ($years as $year => $number) { + $activitiesStatistics->put($year, $number); + } - return $reminders; + return $activitiesStatistics; } } diff --git a/app/Activity.php b/app/Activity.php index c856bc3d739..17902d17bde 100644 --- a/app/Activity.php +++ b/app/Activity.php @@ -160,7 +160,7 @@ public function getContactsForAPI() */ public function getInfoForJournalEntry() { - $data = [ + return [ 'type' => 'activity', 'id' => $this->id, 'activity_type' => (! is_null($this->type) ? $this->type->getTranslationKeyAsString() : null), @@ -173,7 +173,5 @@ public function getInfoForJournalEntry() 'year' => $this->date_it_happened->year, 'attendees' => $this->getContactsForAPI(), ]; - - return $data; } } diff --git a/app/Address.php b/app/Address.php index bde5567889a..859ccab67c8 100644 --- a/app/Address.php +++ b/app/Address.php @@ -92,7 +92,7 @@ public function getFullAddress() } if (! is_null($this->country_id)) { - $address .= ' '.$this->country->country; + $address .= ' '.$this->getCountryName(); } if (is_null($address)) { @@ -141,4 +141,54 @@ public function getGoogleMapAddress() return "https://www.google.ca/maps/place/{$address}"; } + + /** + * Get the name of the address. + * + * @return string + */ + public function getNameAttribute($value) + { + return $value; + } + + /** + * Get the street of the address. + * + * @return string + */ + public function getStreetAttribute($value) + { + return $value; + } + + /** + * Get the city of the address. + * + * @return string + */ + public function getCityAttribute($value) + { + return $value; + } + + /** + * Get the province of the address. + * + * @return string + */ + public function getProvinceAttribute($value) + { + return $value; + } + + /** + * Get the postal code of the address. + * + * @return string + */ + public function getPostalCodeAttribute($value) + { + return $value; + } } diff --git a/app/ApiUsage.php b/app/ApiUsage.php index 28379eb4234..7753498a4e5 100644 --- a/app/ApiUsage.php +++ b/app/ApiUsage.php @@ -10,7 +10,6 @@ class ApiUsage extends Model /** * Log a request made through the API. - * @param Request $request */ public function log(\Illuminate\Http\Request $request) { diff --git a/app/Console/Commands/CalculateStatistics.php b/app/Console/Commands/CalculateStatistics.php index 062016f997f..ff90ec3be25 100644 --- a/app/Console/Commands/CalculateStatistics.php +++ b/app/Console/Commands/CalculateStatistics.php @@ -23,16 +23,6 @@ class CalculateStatistics extends Command */ protected $description = 'Calculate general usage statistics'; - /** - * Create a new command instance. - * - * @return void - */ - public function __construct() - { - parent::__construct(); - } - /** * Execute the console command. * diff --git a/app/Console/Commands/Deactivate2FA.php b/app/Console/Commands/Deactivate2FA.php index 95526b2e18e..1ed90a56890 100644 --- a/app/Console/Commands/Deactivate2FA.php +++ b/app/Console/Commands/Deactivate2FA.php @@ -21,16 +21,6 @@ class Deactivate2FA extends Command */ protected $description = 'Deactivate 2FA for this user'; - /** - * Create a new command instance. - * - * @return void - */ - public function __construct() - { - parent::__construct(); - } - /** * Execute the console command. * diff --git a/app/Console/Commands/GetVersion.php b/app/Console/Commands/GetVersion.php index 161d0bf47d8..f89dfcbec24 100644 --- a/app/Console/Commands/GetVersion.php +++ b/app/Console/Commands/GetVersion.php @@ -20,16 +20,6 @@ class GetVersion extends Command */ protected $description = 'Get current version of monica'; - /** - * Create a new command instance. - * - * @return void - */ - public function __construct() - { - parent::__construct(); - } - /** * Execute the console command. * diff --git a/app/Console/Commands/ImportCSV.php b/app/Console/Commands/ImportCSV.php index 7b96537625b..835bbe807f7 100644 --- a/app/Console/Commands/ImportCSV.php +++ b/app/Console/Commands/ImportCSV.php @@ -22,16 +22,6 @@ class ImportCSV extends Command */ protected $description = 'Imports CSV in Google format to user account'; - /** - * Create a new command instance. - * - * @return void - */ - public function __construct() - { - parent::__construct(); - } - /** * Execute the console command. * @@ -61,83 +51,109 @@ public function handle() $this->info("Importing CSV file $file to user {$user->id}"); - $row = 0; + // create special gender for this import + // we don't know which gender all the contacts are, so we need to create a special status for them, as we + // can't guess whether they are men, women or else. + $gender = Gender::where('name', 'vCard')->first(); + if (! $gender) { + $gender = new Gender; + $gender->account_id = $user->account_id; + $gender->name = 'vCard'; + $gender->save(); + } + + $first = true; $imported = 0; if (($handle = fopen($file, 'r')) !== false) { - while (($data = fgetcsv($handle)) !== false) { - $row++; - - // don't import the columns - if ($row == 1) { - continue; + try { + while (($data = fgetcsv($handle)) !== false) { + // don't import the columns + if ($first) { + $first = false; + continue; + } + + // if first & last name do not exist skip row + if (empty($data[1]) && empty($data[3])) { + continue; + } + + $this->csvToContact($data, $user->account_id, $gender->id); + + $imported++; } + } finally { + fclose($handle); + } + } - $contact = new Contact(); - $contact->account_id = $user->id; - - // if first & last name do not exist skip row - if (empty($data[1]) && empty($data[3])) { - continue; - } + $this->info("Imported {$imported} Contacts"); + } - if (! empty($data[1])) { - $contact->first_name = $data[1]; // Given Name - } + /** + * Create contact. + */ + private function csvToContact($data, $account_id, $gender_id) + { + $contact = new Contact(); + $contact->account_id = $account_id; + $contact->gender_id = $gender_id; - if (! empty($data[2])) { - $contact->middle_name = $data[2]; // Additional Name - } + if (! empty($data[1])) { + $contact->first_name = $data[1]; // Given Name + } - if (! empty($data[3])) { - $contact->last_name = $data[3]; // Family Name - } + if (! empty($data[2])) { + $contact->middle_name = $data[2]; // Additional Name + } - if (! empty($data[28])) { - $contact->email = $data[28]; // Email 1 Value - } + if (! empty($data[3])) { + $contact->last_name = $data[3]; // Family Name + } - if (! empty($data[42])) { - $contact->phone_number = $data[42]; // Phone 1 Value - } + if (! empty($data[28])) { + $contact->email = $data[28]; // Email 1 Value + } - if (! empty($data[49])) { - $contact->street = $data[49]; // address 1 street - } + if (! empty($data[42])) { + $contact->phone_number = $data[42]; // Phone 1 Value + } - if (! empty($data[50])) { - $contact->city = $data[50]; // address 1 city - } - if (! empty($data[52])) { - $contact->province = $data[52]; // address 1 region (state) - } + if (! empty($data[49])) { + $contact->street = $data[49]; // address 1 street + } - if (! empty($data[53])) { - $contact->postal_code = $data[53]; // address 1 postal code (zip) 53 - } - if (! empty($data[66])) { - $contact->job = $data[66]; // organization 1 name 66 - } + if (! empty($data[50])) { + $contact->city = $data[50]; // address 1 city + } + if (! empty($data[52])) { + $contact->province = $data[52]; // address 1 region (state) + } - // can't have empty email - if (empty($contact->email)) { - $contact->email = null; - } + if (! empty($data[53])) { + $contact->postal_code = $data[53]; // address 1 postal code (zip) 53 + } + if (! empty($data[66])) { + $contact->job = $data[66]; // organization 1 name 66 + } - $contact->save(); - $contact->setAvatarColor(); + // can't have empty email + if (empty($contact->email)) { + $contact->email = null; + } - if (! empty($data[14])) { - $birthdate = date('Y-m-d', strtotime($data[14])); + $contact->save(); + $contact->setAvatarColor(); - $specialDate = $contact->setSpecialDate('birthdate', $birthdate->format('Y'), $birthdate->format('m'), $birthdate->format('d')); - $newReminder = $specialDate->setReminder('year', 1, trans('people.people_add_birthday_reminder', ['name' => $contact->first_name])); - } + if (! empty($data[14])) { + $birthdate = new \DateTime(strtotime($data[14])); - $imported++; - } - fclose($handle); + $specialDate = $contact->setSpecialDate('birthdate', $birthdate->format('Y'), $birthdate->format('m'), $birthdate->format('d')); + $specialDate->setReminder('year', 1, trans('people.people_add_birthday_reminder', ['name' => $contact->first_name])); } - $this->info("Imported {$imported} Contacts"); + $contact->updateGravatar(); + + $contact->logEvent('contact', $contact->id, 'create'); } } diff --git a/app/Console/Commands/ImportVCards.php b/app/Console/Commands/ImportVCards.php index ab39f570997..eb9b288b928 100644 --- a/app/Console/Commands/ImportVCards.php +++ b/app/Console/Commands/ImportVCards.php @@ -3,18 +3,15 @@ namespace App\Console\Commands; use App\User; -use App\Address; -use App\Contact; -use App\Country; -use App\ContactField; -use App\ContactFieldType; -use Sabre\VObject\Reader; +use App\Traits\VCardImporter; use Illuminate\Console\Command; use Sabre\VObject\Component\VCard; use Illuminate\Filesystem\Filesystem; class ImportVCards extends Command { + use VCardImporter; + /** * The name and signature of the console command. * @@ -29,15 +26,7 @@ class ImportVCards extends Command */ protected $description = 'Imports contacts from vCard files for a specific user'; - /** - * Create a new command instance. - * - * @return void - */ - public function __construct() - { - parent::__construct(); - } + private $path; /** * Execute the console command. @@ -47,7 +36,7 @@ public function __construct() */ public function handle(Filesystem $filesystem) { - $path = './'.$this->argument('path'); + $this->path = './'.$this->argument('path'); $user = User::where('email', $this->argument('user'))->first(); @@ -57,168 +46,48 @@ public function handle(Filesystem $filesystem) return; } - if (! $filesystem->exists($path) || $filesystem->extension($path) !== 'vcf') { + if (! $filesystem->exists($this->path) || $filesystem->extension($this->path) !== 'vcf') { $this->error('The provided vcard file was not found or is not valid!'); return; } - $matchCount = preg_match_all('/(BEGIN:VCARD.*?END:VCARD)/s', $filesystem->get($path), $matches); - - $this->info("We found {$matchCount} contacts in {$path}."); - - if ($this->confirm('Would you like to import them?', true)) { - $this->info("Importing contacts from {$path}"); - - $this->output->progressStart($matchCount); - - $skippedContacts = 0; - - collect($matches[0])->map(function ($vcard) { - return Reader::read($vcard); - })->each(function (VCard $vcard) use ($user, $skippedContacts) { - if ($this->contactExists($vcard, $user)) { - $this->output->progressAdvance(); - $skippedContacts++; - - return; - } - - // Skip contact if there isn't a first name or a nickname - if (! $this->contactHasName($vcard)) { - $this->output->progressAdvance(); - $skippedContacts++; - - return; - } - - $contact = new Contact(); - $contact->account_id = $user->account_id; - - if ($vcard->N && ! empty($vcard->N->getParts()[1])) { - $contact->first_name = $this->formatValue($vcard->N->getParts()[1]); - $contact->middle_name = $this->formatValue($vcard->N->getParts()[2]); - $contact->last_name = $this->formatValue($vcard->N->getParts()[0]); - } else { - $contact->first_name = $this->formatValue($vcard->NICKNAME); - } - - $contact->gender = 'none'; - $contact->job = $this->formatValue($vcard->ORG); - - $contact->setAvatarColor(); - - $contact->save(); - - if ($vcard->BDAY && ! empty((string) $vcard->BDAY)) { - $birthdate = new \DateTime((string) $vcard->BDAY); - - $specialDate = $contact->setSpecialDate('birthdate', $birthdate->format('Y'), $birthdate->format('m'), $birthdate->format('d')); - $newReminder = $specialDate->setReminder('year', 1, trans('people.people_add_birthday_reminder', ['name' => $contact->first_name])); - } - - if ($vcard->ADR) { - $address = new Address(); - $address->street = $this->formatValue($vcard->ADR->getParts()[2]); - $address->city = $this->formatValue($vcard->ADR->getParts()[3]); - $address->province = $this->formatValue($vcard->ADR->getParts()[4]); - $address->postal_code = $this->formatValue($vcard->ADR->getParts()[5]); - - $country = Country::where('country', $vcard->ADR->getParts()[6]) - ->orWhere('iso', strtolower($vcard->ADR->getParts()[6])) - ->first(); - - if ($country) { - $address->country_id = $country->id; - } - - $address->contact_id = $contact->id; - $address->account_id = $contact->account_id; - $address->save(); - } + $this->work($user->account_id, $filesystem->get($this->path)); + } - if (! is_null($this->formatValue($vcard->EMAIL))) { - // Saves the email - $contactFieldType = ContactFieldType::where('type', 'email')->first(); - $contactField = new ContactField; - $contactField->account_id = $contact->account_id; - $contactField->contact_id = $contact->id; - $contactField->data = $this->formatValue($vcard->EMAIL); - $contactField->contact_field_type_id = $contactFieldType->id; - $contactField->save(); - } + protected function workInit($matchCount) + { + $this->info("We found {$matchCount} contacts in {$this->path}."); - if (! is_null($this->formatValue($vcard->TEL))) { - // Saves the phone number - $contactFieldType = ContactFieldType::where('type', 'phone')->first(); - $contactField = new ContactField; - $contactField->account_id = $contact->account_id; - $contactField->contact_id = $contact->id; - $contactField->data = $this->formatValue($vcard->TEL); - $contactField->contact_field_type_id = $contactFieldType->id; - $contactField->save(); - } + if (! $this->confirm('Would you like to import them?', true)) { + return false; + } - $contact->logEvent('contact', $contact->id, 'create'); + $this->info("Importing contacts from {$this->path}"); + $this->output->progressStart($matchCount); - $this->output->progressAdvance(); - }); - - $this->output->progressFinish(); - - $this->info("Successfully imported {$matchCount} contacts and skipped {$skippedContacts}."); - } + return true; } - /** - * Formats and returns a string for the contact. - * - * @param null|string $value - * @return null|string - */ - private function formatValue($value) + protected function workContactExists($vcard) { - return ! empty((string) $value) ? (string) $value : null; + $this->output->progressAdvance(); } - /** - * Checks whether a contact already exists for a given account. - * - * @param VCard $vcard - * @param User $user - * @return bool - */ - private function contactExists(VCard $vcard, User $user) + protected function workContactNoFirstname($vcard) { - $email = (string) $vcard->EMAIL; - - $contactFieldType = ContactFieldType::where([ - ['account_id', $user->account_id], - ['type', 'email'], - ])->first(); - - $contactField = null; - - if ($contactFieldType) { - $contactField = ContactField::where([ - ['account_id', $user->account_id], - ['data', $email], - ['contact_field_type_id', $contactFieldType->id], - ])->first(); - } + $this->output->progressAdvance(); + } - return $email && $contactField; + protected function workNext($vcard) + { + $this->output->progressAdvance(); } - /** - * Checks whether a contact has a first name or a nickname. - * Nickname is used as a fallback if no first name is provided. - * - * @param VCard $vcard - * @return bool - */ - public function contactHasName(VCard $vcard): bool + protected function workEnd($numberOfContactsInTheFile, $skippedContacts, $importedContacts) { - return ! empty($vcard->N->getParts()[1]) || ! empty((string) $vcard->NICKNAME); + $this->output->progressFinish(); + + $this->info("Successfully imported {$importedContacts} contacts and skipped {$skippedContacts}."); } } diff --git a/app/Console/Commands/LangGenerate.php b/app/Console/Commands/LangGenerate.php new file mode 100644 index 00000000000..a509ac468b1 --- /dev/null +++ b/app/Console/Commands/LangGenerate.php @@ -0,0 +1,60 @@ +isDir()) { + continue; + } + + $lang = $dir->getFilename(); + if ($lang == '.' || $lang == '..') { + continue; + } + + $this->call('lang:js', [ + '--json' => true, + '--source' => $dir->getPathname(), + 'target' => 'public/js/langs/'.$lang.'.json', + ]); + } + } +} diff --git a/app/Console/Commands/PingVersionServer.php b/app/Console/Commands/PingVersionServer.php index b486205754e..48e6b2c5a39 100644 --- a/app/Console/Commands/PingVersionServer.php +++ b/app/Console/Commands/PingVersionServer.php @@ -23,16 +23,6 @@ class PingVersionServer extends Command */ protected $description = 'Ping version.monicahq.com to know if a new version is available'; - /** - * Create a new command instance. - * - * @return void - */ - public function __construct() - { - parent::__construct(); - } - /** * Execute the console command. * @@ -40,11 +30,11 @@ public function __construct() */ public function handle() { - if (config('monica.check_version') == false) { + if (! config('monica.check_version')) { return false; } - if (env('APP_ENV') != 'production') { + if (! \App::environment('production')) { return false; } @@ -57,9 +47,11 @@ public function handle() 'contacts' => Contact::count(), ]; - $data['uuid'] = $instance->uuid; - $data['version'] = $instance->current_version; - $data['contacts'] = Contact::all()->count(); + $data = [ + 'uuid' => $instance->uuid, + 'version' => $instance->current_version, + 'contacts' => Contact::all()->count(), + ]; // Send the JSON try { @@ -83,7 +75,7 @@ public function handle() } // make sure the JSON has all the fields we need - if (isset($json['latest_version']) == false or isset($json['new_version']) == false or isset($json['number_of_versions_since_user_version']) == false) { + if (! isset($json['latest_version']) || ! isset($json['new_version']) || ! isset($json['number_of_versions_since_user_version'])) { return; } diff --git a/app/Console/Commands/SendNotifications.php b/app/Console/Commands/SendNotifications.php index 5fbb02b4e9a..a703f54b42e 100644 --- a/app/Console/Commands/SendNotifications.php +++ b/app/Console/Commands/SendNotifications.php @@ -2,13 +2,9 @@ namespace App\Console\Commands; -use App\User; -use App\Account; -use App\Reminder; -use Carbon\Carbon; -use App\Jobs\SendReminderEmail; +use App\Notification; use Illuminate\Console\Command; -use App\Jobs\SetNextReminderDate; +use App\Jobs\Notification\ScheduleNotification; class SendNotifications extends Command { @@ -17,7 +13,7 @@ class SendNotifications extends Command * * @var string */ - protected $signature = 'monica:sendnotifications'; + protected $signature = 'send:notifications'; /** * The console command description. @@ -26,16 +22,6 @@ class SendNotifications extends Command */ protected $description = 'Send notifications about reminders'; - /** - * Create a new command instance. - * - * @return void - */ - public function __construct() - { - parent::__construct(); - } - /** * Execute the console command. * @@ -43,40 +29,16 @@ public function __construct() */ public function handle() { - // grab all the reminders that are supposed to be sent in the next two days - // we put a limit of two days to limit parsing all the reminders table - $reminders = Reminder::where('next_expected_date', '<', Carbon::now()->addDays(2)) - ->orderBy('next_expected_date', 'asc')->get(); + $notifications = Notification::where('trigger_date', '<', now()->addDays(2)) + ->orderBy('trigger_date', 'asc')->get(); - foreach ($reminders as $reminder) { - if (! $reminder->contact) { + foreach ($notifications as $notification) { + if (! $notification->contact) { + $notification->delete(); continue; } - $account = $reminder->contact->account; - $reminderDate = $reminder->next_expected_date->hour(0)->minute(0)->second(0)->toDateString(); - $sendEmailToUser = false; - $userTimezone = null; - - // check if one of the user of the account has the reminder on this day - foreach ($account->users as $user) { - $userCurrentDate = Carbon::now($user->timezone)->hour(0)->minute(0)->second(0)->toDateString(); - - if ($reminderDate === $userCurrentDate) { - $sendEmailToUser = true; - $userTimezone = $user->timezone; - } - } - - if ($sendEmailToUser == true) { - if (! $account->hasLimitations()) { - foreach ($account->users as $user) { - dispatch(new SendReminderEmail($reminder, $user)); - } - } - - dispatch(new SetNextReminderDate($reminder, $userTimezone)); - } + ScheduleNotification::dispatch($notification); } } } diff --git a/app/Console/Commands/SendReminders.php b/app/Console/Commands/SendReminders.php new file mode 100644 index 00000000000..d9dfa3a426b --- /dev/null +++ b/app/Console/Commands/SendReminders.php @@ -0,0 +1,74 @@ +addDays(2)) + ->orderBy('next_expected_date', 'asc')->get(); + + foreach ($reminders as $reminder) { + // Skip the reminder if the contact has been deleted (and for some + // reasons, the reminder hasn't) + if (! $reminder->contact) { + $reminder->delete(); + continue; + } + $this->handleReminder($reminder); + } + } + + private function handleReminder($reminder) + { + $account = $reminder->contact->account; + $numberOfUsersInAccount = $account->users->count(); + $counter = 1; + + foreach ($account->users as $user) { + if ($user->shouldBeReminded($reminder->next_expected_date)) { + if (! $account->hasLimitations()) { + dispatch(new SendReminderEmail($reminder, $user)); + } + + if ($counter == $numberOfUsersInAccount) { + // We should only do this when we are sure that this is + // the last user who should be warned in this account. + dispatch(new SetNextReminderDate($reminder, $user->timezone)); + } + } + $counter++; + } + } +} diff --git a/app/Console/Commands/SetupProduction.php b/app/Console/Commands/SetupProduction.php index 85e5d029468..d26536ebc85 100644 --- a/app/Console/Commands/SetupProduction.php +++ b/app/Console/Commands/SetupProduction.php @@ -2,7 +2,7 @@ namespace App\Console\Commands; -use DB; +use App\Account; use Illuminate\Console\Command; class SetupProduction extends Command @@ -12,7 +12,9 @@ class SetupProduction extends Command * * @var string */ - protected $signature = 'setup:production {--force}'; + protected $signature = 'setup:production {--force} + {--email= : Login email for the first account} + {--password= : Password to set for the first account}'; /** * The console command description. @@ -21,14 +23,6 @@ class SetupProduction extends Command */ protected $description = 'Perform setup of Monica.'; - /** - * Create a new command instance. - */ - public function __construct() - { - parent::__construct(); - } - /** * Execute the console command. * @@ -36,7 +30,7 @@ public function __construct() */ public function handle() { - if (! $this->confirm('You are about to setup and configure Monica. Do you wish to continue?')) { + if ((! $this->option('force')) && (! $this->confirm('You are about to setup and configure Monica. Do you wish to continue?'))) { return; } @@ -60,34 +54,27 @@ public function handle() $this->callSilent('storage:link'); $this->info('✓ Symlinked the storage folder for the avatars'); - $email = $this->ask('Account creation: what should be your email address to login?'); - $password = $this->secret('Please choose a password:'); - - // populate account table - $accountID = DB::table('accounts')->insertGetId([ - 'api_key' => str_random(30), - ]); - - // populate user table - $userId = DB::table('users')->insertGetId([ - 'account_id' => $accountID, - 'first_name' => 'John', - 'last_name' => 'Doe', - 'email' => $email, - 'password' => bcrypt($password), - 'timezone' => config('app.timezone'), - 'remember_token' => str_random(10), - ]); - $this->line(''); $this->line('-----------------------------'); $this->line('|'); $this->line('| Welcome to Monica v'.config('monica.app_version')); $this->line('|'); $this->line('-----------------------------'); - $this->info('| You can now sign in to your account:'); - $this->line('| username: '.$email); - $this->line('| password: '); + + $email = $this->option('email'); + $password = $this->option('password'); + if (! empty($email) && ! empty($password)) { + Account::createDefault('John', 'Doe', $email, $password); + + $this->info('| You can now sign in to your account:'); + $this->line('| username: '.$email); + $this->line('| password: '); + } elseif (Account::hasAny()) { + $this->info('| You can now log in to your account'); + } else { + $this->info('| You can now register to the first account by opening the application:'); + } + $this->line('| URL: '.config('app.url')); $this->line('-----------------------------'); diff --git a/app/Console/Commands/SetupTest.php b/app/Console/Commands/SetupTest.php index b9060c6ac31..5c9a9114416 100644 --- a/app/Console/Commands/SetupTest.php +++ b/app/Console/Commands/SetupTest.php @@ -21,16 +21,6 @@ class SetupTest extends Command */ protected $description = 'Create the test environment with optional fake data for testing purposes.'; - /** - * Create a new command instance. - * - * @return void - */ - public function __construct() - { - parent::__construct(); - } - /** * Execute the console command. * diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index 7158ca5db37..0e69addfe82 100644 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -15,6 +15,7 @@ class Kernel extends ConsoleKernel protected $commands = [ // Commands\Inspire::class, 'App\Console\Commands\SendNotifications', + 'App\Console\Commands\SendReminders', 'App\Console\Commands\CalculateStatistics', 'App\Console\Commands\ImportCSV', 'App\Console\Commands\SetupProduction', @@ -23,6 +24,7 @@ class Kernel extends ConsoleKernel 'App\Console\Commands\SetupTest', 'App\Console\Commands\Deactivate2FA', 'App\Console\Commands\GetVersion', + 'App\Console\Commands\LangGenerate', ]; /** @@ -33,7 +35,8 @@ class Kernel extends ConsoleKernel */ protected function schedule(Schedule $schedule) { - $schedule->command('monica:sendnotifications')->hourly(); + $schedule->command('send:notifications')->hourly(); + $schedule->command('send:reminders')->hourly(); $schedule->command('monica:calculatestatistics')->daily(); $schedule->command('monica:ping')->daily(); } diff --git a/app/Contact.php b/app/Contact.php index e607030c0b0..e62162ae2e5 100644 --- a/app/Contact.php +++ b/app/Contact.php @@ -8,11 +8,14 @@ use Illuminate\Support\Facades\Storage; use Illuminate\Database\Eloquent\Builder; use App\Http\Resources\Tag\Tag as TagResource; +use Illuminate\Database\Eloquent\Relations\HasOne; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\BelongsTo; +use Illuminate\Database\Eloquent\ModelNotFoundException; use App\Http\Resources\Address\AddressShort as AddressShortResource; use App\Http\Resources\Contact\PartnerShort as PartnerShortResource; use App\Http\Resources\Contact\OffspringShort as OffspringShortResource; +use App\Http\Resources\ContactField\ContactField as ContactFieldResource; use App\Http\Resources\Contact\ProgenitorShort as ProgenitorShortResource; class Contact extends Model @@ -31,9 +34,6 @@ class Contact extends Model 'first_name', 'middle_name', 'last_name', - 'food_preferencies', - 'job', - 'company', ]; // The list of columns we want the Searchable trait to select. @@ -47,6 +47,10 @@ class Contact extends Model 'gravatar_url', 'avatar_external_url', 'default_avatar_color', + 'gender_id', + 'account_id', + 'created_at', + 'updated_at', ]; /** @@ -58,7 +62,7 @@ class Contact extends Model 'first_name', 'middle_name', 'last_name', - 'gender', + 'gender_id', 'account_id', 'is_partial', 'job', @@ -106,6 +110,16 @@ public function account() return $this->belongsTo('App\Account'); } + /** + * Get the gender of the contact. + * + * @return HasOne + */ + public function gender() + { + return $this->belongsTo('App\Gender'); + } + /** * Get the activity records associated with the contact. * @@ -316,6 +330,16 @@ public function firstMetDate() return $this->hasOne('App\SpecialDate', 'id', 'first_met_special_date_id'); } + /** + * Get the Notifications records associated with the account. + * + * @return HasMany + */ + public function notifications() + { + return $this->hasMany('App\Notification'); + } + /** * Sort the contacts according a given criteria. * @param Builder $builder @@ -497,7 +521,7 @@ public function getInitials() /** * Get the date of the last activity done by this contact. * - * @return DateTime + * @return \DateTime */ public function getLastActivityDate() { @@ -524,6 +548,26 @@ public function getLastCalled() return $this->last_talked_to; } + /** + * Get the job of the contact. + * + * @return string + */ + public function getJobAttribute($value) + { + return $value; + } + + /** + * Get the company the contact works at. + * + * @return string + */ + public function getCompanyAttribute($value) + { + return $value; + } + /** * Get the current Significant Others, if they exists, or return null otherwise. * @@ -675,14 +719,14 @@ public function logEvent($objectType, $objectId, $natureOfOperation) } /** - * Update the name of the contact. + * Set the name of the contact. * * @param string $firstName * @param string $middleName * @param string $lastName * @return bool */ - public function updateName($firstName, $middleName, $lastName) + public function setName(String $firstName, String $lastName, String $middleName = null) { if ($firstName == '') { return false; @@ -703,6 +747,31 @@ public function updateName($firstName, $middleName, $lastName) return true; } + /** + * Returns the state of the birthday. + * As it's a Special Date, the date can have several states. We need this + * info when we populate the Edit contact sheet. + * + * @return string + */ + public function getBirthdayState() + { + if (! $this->birthday_special_date_id) { + return 'unknown'; + } + + if ($this->birthdate->is_age_based) { + return 'approximate'; + } + + // we know at least the day and month + if ($this->birthdate->is_year_unknown) { + return 'almost'; + } + + return 'exact'; + } + /** * Update the name of the contact. * @@ -780,7 +849,7 @@ public function getCompletedTasks() * @param int $size * @return string */ - public function getAvatarURL($size = 100) + public function getAvatarURL($size = 110) { // it either returns null or the gravatar url if it's defined if (! $this->has_avatar) { @@ -796,7 +865,7 @@ public function getAvatarURL($size = 100) $avatar_extension = pathinfo($original_avatar_url, PATHINFO_EXTENSION); $resized_avatar = 'avatars/'.$avatar_filename.'_'.$size.'.'.$avatar_extension; - return Storage::disk($this->avatar_location)->url($resized_avatar); + return asset(Storage::disk($this->avatar_location)->url($resized_avatar)); } /** @@ -815,6 +884,25 @@ public function getAvatarSource() return 'internal'; } + /** + * Update the gravatar, using the firt email found. + */ + public function updateGravatar() + { + // for performance reasons, we check if a gravatar exists for this email + // address. if it does, we store the gravatar url in the database. + // while this is not ideal because the gravatar can change, at least we + // won't make constant call to gravatar to load the avatar on every + // page load. + $response = $this->getGravatar(250); + if ($response !== false && is_string($response)) { + $this->gravatar_url = $response; + } else { + $this->gravatar_url = null; + } + $this->save(); + } + /** * Get the gravatar, if it exits. * @@ -823,17 +911,35 @@ public function getAvatarSource() */ public function getGravatar($size) { - if (empty($this->email)) { + $email = $this->getFirstEmail(); + + if (is_null($email) || empty($email)) { return false; } - $gravatar_url = 'https://www.gravatar.com/avatar/'.md5(strtolower(trim($this->email))); - // check if gravatar exists by appending ?d=404, returns 404 response if does not exist - $gravatarHeaders = get_headers($gravatar_url.'?d=404'); - if ($gravatarHeaders[0] == 'HTTP/1.1 404 Not Found') { + + if (! app('gravatar')->exists($email)) { return false; } - return $gravatar_url.'?s='.$size; + return app('gravatar')->get($email, [ + 'size' => $size, + 'secure' => config('app.env') === 'production', + ]); + } + + public function getFirstEmail() + { + $contact_email = $this->contactFields() + ->whereHas('contactFieldType', function ($query) { + $query->where('type', '=', 'email'); + }) + ->first(); + + if (is_null($contact_email)) { + return; + } + + return $contact_email->data; } /** @@ -876,6 +982,14 @@ public function getAddressesForAPI() return AddressShortResource::collection($this->addresses); } + /** + * Get the list of contact fields for this contact. + */ + public function getContactFieldsForAPI() + { + return ContactFieldResource::collection($this->contactFields); + } + /** * Update the last called info on the contact, if the call has been made * in the most recent date. @@ -924,7 +1038,7 @@ public function getPotentialContacts() ->where('is_the_parent_of', $this->id) ->count(); - if ($relationship != 0 or $offspring != 0 or $progenitor != 0) { + if ($relationship != 0 || $offspring != 0 || $progenitor != 0) { $partners->forget($counter); } $counter++; @@ -986,7 +1100,7 @@ public function getPartialOffsprings() */ public function setRelationshipWith(self $partner, $bilateral = false) { - $relationship = Relationship::create( + Relationship::create( [ 'account_id' => $this->account_id, 'contact_id' => $this->id, @@ -996,7 +1110,7 @@ public function setRelationshipWith(self $partner, $bilateral = false) ); if ($bilateral) { - $relationship = Relationship::create( + Relationship::create( [ 'account_id' => $this->account_id, 'contact_id' => $partner->id, @@ -1015,7 +1129,7 @@ public function setRelationshipWith(self $partner, $bilateral = false) */ public function updateRelationshipWith(self $partner) { - $relationship = Relationship::create( + Relationship::create( [ 'account_id' => $this->account_id, 'contact_id' => $partner->id, @@ -1034,7 +1148,7 @@ public function updateRelationshipWith(self $partner) */ public function isTheOffspringOf(self $parent, $bilateral = false) { - $offspring = Offspring::create( + Offspring::create( [ 'account_id' => $this->account_id, 'contact_id' => $this->id, @@ -1043,7 +1157,7 @@ public function isTheOffspringOf(self $parent, $bilateral = false) ); if ($bilateral) { - $progenitor = Progenitor::create( + Progenitor::create( [ 'account_id' => $this->account_id, 'contact_id' => $parent->id, @@ -1106,15 +1220,15 @@ public function unsetOffspring(self $kid, $bilateral = false) */ public function deleteEventsAboutTheseTwoContacts(self $contact, $type) { - $events = Event::where('contact_id', $this->id) - ->where('object_id', $contact->id) - ->where('object_type', $type) - ->delete(); + Event::where('contact_id', $this->id) + ->where('object_id', $contact->id) + ->where('object_type', $type) + ->delete(); - $events = Event::where('contact_id', $contact->id) - ->where('object_id', $this->id) - ->where('object_type', $type) - ->delete(); + Event::where('contact_id', $contact->id) + ->where('object_id', $this->id) + ->where('object_type', $type) + ->delete(); } /** @@ -1153,9 +1267,7 @@ public function getFirstProgenitor() $offspring = Offspring::where('contact_id', $this->id) ->first(); - $progenitor = self::findOrFail($offspring->is_the_child_of); - - return $progenitor; + return self::findOrFail($offspring->is_the_child_of); } /** @@ -1167,9 +1279,7 @@ public function getFirstPartner() $relationship = Relationship::where('with_contact_id', $this->id) ->first(); - $relationship = self::findOrFail($relationship->contact_id); - - return $relationship; + return self::findOrFail($relationship->contact_id); } /** @@ -1178,14 +1288,7 @@ public function getFirstPartner() */ public function isOwedMoney() { - return $this - ->debts() - ->where('status', '=', 'inprogress') - ->getResults() - ->sum(function ($d) { - return $d->in_debt === 'yes' ? -$d->amount : $d->amount; - }) - > 0; + return $this->totalOutstandingDebtAmount() > 0; } /** @@ -1230,7 +1333,7 @@ public function getFamilyMembers() */ public function hasFirstMetInformation() { - return ! is_null($this->first_met_additional_info) or ! is_null($this->firstMetDate) or ! is_null($this->first_met_through_contact_id); + return ! is_null($this->first_met_additional_info) || ! is_null($this->firstMetDate) || ! is_null($this->first_met_through_contact_id); } /** @@ -1328,40 +1431,34 @@ public function removeSpecialDate($occasion) return; } - if ($occasion == 'birthdate') { - if (! $this->birthday_special_date_id) { - return; - } - - $this->birthdate->deleteReminder(); - $this->birthdate->delete(); - - $this->birthday_special_date_id = null; - $this->save(); - } - - if ($occasion == 'deceased_date') { - if (! $this->deceased_special_date_id) { - return; - } - - $this->deceasedDate->deleteReminder(); - $this->deceasedDate->delete(); - - $this->deceased_special_date_id = null; - $this->save(); - } - - if ($occasion == 'first_met') { - if (! $this->first_met_special_date_id) { - return; - } - - $this->firstMetDate->deleteReminder(); - $this->firstMetDate->delete(); - - $this->first_met_special_date_id = null; - $this->save(); + switch ($occasion) { + case 'birthdate': + if ($this->birthday_special_date_id) { + $this->birthdate->deleteReminder(); + $this->birthdate->delete(); + + $this->birthday_special_date_id = null; + $this->save(); + } + break; + case 'deceased_date': + if ($this->deceased_special_date_id) { + $this->deceasedDate->deleteReminder(); + $this->deceasedDate->delete(); + + $this->deceased_special_date_id = null; + $this->save(); + } + break; + case 'first_met': + if ($this->first_met_special_date_id) { + $this->firstMetDate->deleteReminder(); + $this->firstMetDate->delete(); + + $this->first_met_special_date_id = null; + $this->save(); + } + break; } } @@ -1383,4 +1480,42 @@ public function getRelatedRealContact() return self::find($relatedContact->is_the_child_of); } } + + /** + * Sets a tag to the contact. + * + * @param string $tag + * @return Tag + */ + public function setTag(string $name) + { + $tag = $this->account->tags()->firstOrCreate([ + 'name' => $name, + ]); + + $tag->name_slug = str_slug($tag->name); + $tag->save(); + + $this->tags()->syncWithoutDetaching([$tag->id => ['account_id' => $this->account->id]]); + + return $tag; + } + + /** + * Unset all the tags associated with the contact. + * @return bool + */ + public function unsetTags() + { + $this->tags()->detach(); + } + + /** + * Unset one tag associated with the contact. + * @return bool + */ + public function unsetTag(Tag $tag) + { + $this->tags()->detach($tag->id); + } } diff --git a/app/ContactField.php b/app/ContactField.php index a150b2866f0..631fe34dc5c 100644 --- a/app/ContactField.php +++ b/app/ContactField.php @@ -43,4 +43,14 @@ public function contactFieldType() { return $this->belongsTo(ContactFieldType::class); } + + /** + * Get the data field of the contact field. + * + * @return string + */ + public function getDataAttribute($value) + { + return $value; + } } diff --git a/app/Day.php b/app/Day.php index bf7ee9e57f9..b320f69b11b 100644 --- a/app/Day.php +++ b/app/Day.php @@ -65,19 +65,17 @@ public function getCommentAttribute($value) */ public function getInfoForJournalEntry() { - $data = [ + return [ 'type' => 'day', 'id' => $this->id, 'rate' => $this->rate, 'comment' => $this->comment, 'day' => $this->date->day, - 'day_name' => ucfirst(\App\Helpers\DateHelper::getShortDay($this->date)), + 'day_name' => mb_convert_case(\App\Helpers\DateHelper::getShortDay($this->date), MB_CASE_TITLE, 'UTF-8'), 'month' => $this->date->month, - 'month_name' => strtoupper(\App\Helpers\DateHelper::getShortMonth($this->date)), + 'month_name' => mb_convert_case(\App\Helpers\DateHelper::getShortMonth($this->date), MB_CASE_UPPER, 'UTF-8'), 'year' => $this->date->year, 'happens_today' => $this->date->isToday(), ]; - - return $data; } } diff --git a/app/Entry.php b/app/Entry.php index 09f132f8c7a..6728602c6ce 100644 --- a/app/Entry.php +++ b/app/Entry.php @@ -65,7 +65,7 @@ public function getPostAttribute($value) */ public function getInfoForJournalEntry() { - $data = [ + return [ 'type' => 'activity', 'id' => $this->id, 'title' => $this->title, @@ -76,7 +76,5 @@ public function getInfoForJournalEntry() 'month_name' => \App\Helpers\DateHelper::getShortMonth($this->created_at), 'year' => $this->created_at->year, ]; - - return $data; } } diff --git a/app/Event.php b/app/Event.php index dfe40c4dee5..261137115ac 100644 --- a/app/Event.php +++ b/app/Event.php @@ -50,20 +50,4 @@ public function scopeForObject(Builder $query, Model $object, string $key = null return $query->where('object_type', $key) ->where('object_id', $object->id); } - - public function getDescription() - { - if ($this->nature_of_operation == 'create') { - $description = 'You added '; - } - - if ($this->nature_of_operation == 'update') { - $description = 'You updated '; - } - - // You added a reminder about John Doe - if ($this->object_type == 'reminder') { - $reminder = Reminder::findOrFail($this->object_id); - } - } } diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php index 9e049005cb3..8741e44cf50 100644 --- a/app/Exceptions/Handler.php +++ b/app/Exceptions/Handler.php @@ -3,6 +3,7 @@ namespace App\Exceptions; use Exception; +use Illuminate\Session\TokenMismatchException; use Illuminate\Validation\ValidationException; use Illuminate\Auth\Access\AuthorizationException; use Illuminate\Database\Eloquent\ModelNotFoundException; @@ -33,10 +34,8 @@ class Handler extends ExceptionHandler */ public function report(Exception $e) { - if (config('monica.sentry_support') and config('app.env') == 'production') { - if ($this->shouldReport($e)) { - app('sentry')->captureException($e); - } + if (config('monica.sentry_support') && config('app.env') == 'production' && $this->shouldReport($e)) { + app('sentry')->captureException($e); } parent::report($e); } diff --git a/app/Gender.php b/app/Gender.php new file mode 100644 index 00000000000..1df95ac0d57 --- /dev/null +++ b/app/Gender.php @@ -0,0 +1,65 @@ +belongsTo(Account::class); + } + + /** + * Get the contact records associated with the gift. + * + * @return BelongsTo + */ + public function contacts() + { + return $this->hasMany(Contact::class); + } + + /** + * Get the name of the gender. + * + * @param string $value + * @return string + */ + public function getNameAttribute($value) + { + return $value; + } +} diff --git a/app/Gift.php b/app/Gift.php index 01b3247951d..38c7c97ab7f 100644 --- a/app/Gift.php +++ b/app/Gift.php @@ -9,7 +9,7 @@ /** * @property Account $account * @property Contact $contact - * @property Contact|Kid|SignificantOther $recipient + * @property Contact $recipient * @method static Builder offered() * @method static Builder isIdea() */ @@ -109,14 +109,12 @@ public function hasParticularRecipient() /** * Set the recipient for the gift. * - * @param string $recipient - * @return static + * @param int $value + * @return string */ - public function forRecipient($recipient) + public function setIsForAttribute($value) { - $this->is_for = $recipient; - - return $this; + $this->attributes['is_for'] = $value; } /** diff --git a/app/Helpers/DateHelper.php b/app/Helpers/DateHelper.php index 68f41b05491..f6fdb5cf12d 100644 --- a/app/Helpers/DateHelper.php +++ b/app/Helpers/DateHelper.php @@ -2,12 +2,24 @@ namespace App\Helpers; -use Auth; use Carbon\Carbon; use Jenssegers\Date\Date; class DateHelper { + /** + * Set the locale of the instance for Date frameworks. + * + * @param string + * @return string + */ + public static function setLocale($locale) + { + $locale = $locale ?: config('app.locale'); + Carbon::setLocale($locale); + Date::setLocale($locale); + } + /** * Creates a Carbon object. * @@ -17,9 +29,7 @@ class DateHelper */ public static function createDateFromFormat($date, $timezone) { - $date = Carbon::createFromFormat('Y-m-d H:i:s', $date, $timezone); - - return $date; + return Carbon::createFromFormat('Y-m-d H:i:s', $date, $timezone); } /** @@ -29,16 +39,16 @@ public static function createDateFromFormat($date, $timezone) * @param Carbon $date * @return string */ - public static function getShortDate($date, $locale = null) + public static function getShortDate($date) { $date = new Date($date); - $locale = self::getLocale($locale); + $locale = Date::getLocale(); switch ($locale) { case 'en': $format = 'M d, Y'; break; - case 'pt-br': + case 'pt': case 'fr': $format = 'd M Y'; break; @@ -57,10 +67,9 @@ public static function getShortDate($date, $locale = null) * @param Carbon $date * @return string */ - public static function getShortMonth($date, $locale = null) + public static function getShortMonth($date) { $date = new Date($date); - $locale = self::getLocale($locale); $format = 'M'; return $date->format($format); @@ -73,10 +82,9 @@ public static function getShortMonth($date, $locale = null) * @param Carbon $date * @return string */ - public static function getShortDay($date, $locale = null) + public static function getShortDay($date) { $date = new Date($date); - $locale = self::getLocale($locale); $format = 'D'; return $date->format($format); @@ -89,16 +97,16 @@ public static function getShortDay($date, $locale = null) * @param Carbon $date * @return string */ - public static function getShortDateWithoutYear($date, $locale = null) + public static function getShortDateWithoutYear($date) { $date = new Date($date); - $locale = self::getLocale($locale); + $locale = Date::getLocale(); switch ($locale) { case 'en': $format = 'M d'; break; - case 'pt-br': + case 'pt': case 'fr': $format = 'd M'; break; @@ -117,16 +125,16 @@ public static function getShortDateWithoutYear($date, $locale = null) * @param Carbon $date * @return string */ - public static function getShortDateWithTime($date, $locale = null) + public static function getShortDateWithTime($date) { $date = new Date($date); - $locale = self::getLocale($locale); + $locale = Date::getLocale(); switch ($locale) { case 'en': $format = 'M d, Y H:i'; break; - case 'pt-br': + case 'pt': case 'fr': $format = 'd M Y H:i'; break; @@ -137,25 +145,6 @@ public static function getShortDateWithTime($date, $locale = null) return $date->format($format); } - /** - * Returns the locale of the instance, if defined. English by default. - * - * @param string - * @return string - */ - public static function getLocale($locale = null) - { - if (Auth::check()) { - $locale = $locale ?: Auth::user()->locale; - } else { - $locale = $locale ?: 'en'; - } - - Date::setLocale($locale); - - return $locale; - } - /** * Add a given number of week/month/year to a date. * @param Carbon $date the start date @@ -187,9 +176,93 @@ public static function addTimeAccordingToFrequencyType(Carbon $date, $frequency, */ public static function getMonthAndYear(int $month) { - $month = Carbon::now()->addMonthsNoOverflow($month)->format('M'); - $year = Carbon::now()->addMonthsNoOverflow($month)->format('Y'); + $date = Date::now()->addMonthsNoOverflow($month); + $format = 'M Y'; + + return $date->format($format); + } + + /** + * Gets the next theoritical billing date. + * This is used on the Upgrade page to tell the user when the next billing + * date would be if he subscribed. + * + * @param string + * @return Carbon + */ + public static function getNextTheoriticalBillingDate(String $interval) + { + if ($interval == 'monthly') { + return Date::now()->addMonth(); + } - return $month.' '.$year; + return Date::now()->addYear(); + } + + /** + * Gets a list of all the months in a year. + * + * @return array + */ + public static function getListOfMonths() + { + $months = collect([]); + $currentDate = Date::now(); + $currentDate->day = 1; + + for ($month = 1; $month < 13; $month++) { + $currentDate->month = $month; + $months->push([ + 'id' => $month, + 'name' => mb_convert_case($currentDate->format('F'), MB_CASE_TITLE, 'UTF-8'), + ]); + } + + return $months; + } + + /** + * Gets a list of all the days in a month. + * + * @return array + */ + public static function getListOfDays() + { + $days = collect([]); + for ($day = 1; $day < 32; $day++) { + $days->push(['id' => $day, 'name' => $day]); + } + + return $days; + } + + /** + * Gets a list of all the hours in a day. + * + * @return array + */ + public static function getListOfHours() + { + $hours = collect([]); + for ($hour = 1; $hour <= 24; $hour++) { + $hours->push([ + 'id' => date('H:i', strtotime("$hour:00")), + 'name' => date('h.iA', strtotime("$hour:00")), + ]); + } + + return $hours; + } + + /** + * Removes a given number of days of a date given in parameter. + * + * @param Carbon $date + * @param int $numberOfDaysBefore + * @return Carbon + */ + public static function getDateMinusGivenNumberOfDays(Carbon $date, int $numberOfDaysBefore) + { + return $date->subDays($numberOfDaysBefore); } } diff --git a/app/Helpers/InstanceHelper.php b/app/Helpers/InstanceHelper.php new file mode 100644 index 00000000000..c4b071de9ba --- /dev/null +++ b/app/Helpers/InstanceHelper.php @@ -0,0 +1,39 @@ +count(); + } + + /** + * Get the plan information for the given time period. + * + * @param string Accepted values: 'monthly', 'annual' + * @return array + */ + public static function getPlanInformationFromConfig(String $timePeriod) + { + if ($timePeriod != 'monthly' && $timePeriod != 'annual') { + return; + } + + return [ + 'type' => $timePeriod, + 'name' => config('monica.paid_plan_'.$timePeriod.'_friendly_name'), + 'id' => config('monica.paid_plan_'.$timePeriod.'_id'), + 'price' => config('monica.paid_plan_'.$timePeriod.'_price'), + 'friendlyPrice' => config('monica.paid_plan_'.$timePeriod.'_price') / 100, + ]; + } +} diff --git a/app/Helpers/LocaleHelper.php b/app/Helpers/LocaleHelper.php new file mode 100644 index 00000000000..202df5eeacc --- /dev/null +++ b/app/Helpers/LocaleHelper.php @@ -0,0 +1,76 @@ +locale; + } else { + $locale = app('language.detector')->detect() ?: config('app.locale'); + } + + return $locale; + } + + /** + * Get the list of avalaible languages. + * + * @return \Illuminate\Support\Collection + */ + public static function getLocaleList() + { + $locales = collect([]); + foreach (config('lang-detector.languages') as $lang) { + $name = trans('settings.locale_'.$lang); + if ($name == 'settings.locale_'.$lang) { + // The name of the new language is not already set, even in english + $name = $lang; + } + $locales->push([ + 'lang' => $lang, + 'name' => $name, + ]); + } + + return $locales->sortBy('name'); + } + + /** + * Get the direction: left to right/right to left. + * + * @return string + */ + public static function getDirection() + { + $locale = self::getLocale(); + + switch ($locale) { + // Source: https://meta.wikimedia.org/wiki/Template:List_of_language_names_ordered_by_code + case 'ar': + case 'arc': + case 'dv': + case 'fa': + case 'ha': + case 'he': + case 'khw': + case 'ks': + case 'ku': + case 'ps': + case 'ur': + case 'yi': + return 'rtl'; + default: + return 'ltr'; + } + } +} diff --git a/app/Helpers/SearchHelper.php b/app/Helpers/SearchHelper.php new file mode 100644 index 00000000000..8622fd355c1 --- /dev/null +++ b/app/Helpers/SearchHelper.php @@ -0,0 +1,42 @@ +user()->account->id; + + if (preg_match('/(.{1,})[:](.{1,})/', $needle, $matches)) { + $search_field = $matches[1]; + $search_term = $matches[2]; + + $field = ContactFieldType::where('name', 'LIKE', $search_field)->first(); + + $field_id = $field->id; + + $results = Contact::whereHas('contactFields', function ($query) use ($field_id, $search_term) { + $query->where([ + ['data', 'like', "$search_term%"], + ['contact_field_type_id', $field_id], + ]); + })->paginate($limitPerPage); + } else { + $results = Contact::search($needle, $accountId, $limitPerPage, $order, 'and is_partial=0'); + } + + return $results; + } +} diff --git a/app/Helpers/StringHelper.php b/app/Helpers/StringHelper.php new file mode 100644 index 00000000000..a3f12e91944 --- /dev/null +++ b/app/Helpers/StringHelper.php @@ -0,0 +1,29 @@ +last_name; + $firstname = $contact->first_name; + $additional = ''; + $prefix = ''; + $suffix = ''; + + $vCard->addName($lastname, $firstname, $additional, $prefix, $suffix); + $vCard->addURL($contact->url); + $vCard->addCompany($contact->company); + $vCard->addJobtitle($contact->job); + $vCard = self::addContactFieldEntriesInVCard($contact, $vCard, 'email'); + $vCard = self::addContactFieldEntriesInVCard($contact, $vCard, 'phone'); + $vCard = self::addAddressToVCard($contact, $vCard); + + return $vCard; + } + + /** + * Get the first contact field of the contact for the given field, if it's + * defined. + * A contact can have multiple fields of the same type (email, phone, fax...) + * so we need to take the first one we find. + * + * @param Contact $contact + * @param string $fieldType + * @return \Illuminate\Database\Eloquent\Collection|null + */ + public static function getAllEntriesOfASpecificContactFieldType(Contact $contact, string $fieldType) + { + $contactFieldType = $contact->account->contactFieldTypes() + ->where('type', $fieldType) + ->first(); + + if (! $contactFieldType) { + return; + } + + $contactFields = $contact->contactFields() + ->where('contact_field_type_id', $contactFieldType->id) + ->get(); + + if (count($contactFields) == 0) { + return; + } + + return $contactFields; + } + + /** + * Add a specific contact field in the given vCard file. + * + * @param Contact $contact + * @param VCard $vCard + * @param string $fieldType + * @return VCard + */ + public static function addContactFieldEntriesInVCard(Contact $contact, VCard $vCard, String $fieldType) + { + $contactFields = self::getAllEntriesOfASpecificContactFieldType($contact, $fieldType); + + if (! $contactFields) { + return $vCard; + } + + foreach ($contactFields as $contactField) { + if ($fieldType == 'email') { + $vCard->addEmail($contactField->data); + } + + if ($fieldType == 'phone') { + $vCard->addPhoneNumber($contactField->data); + } + } + + return $vCard; + } + + /** + * Add all addresses to the given vCard file. + * + * @param Contact $contact + * @param VCard $vCard + */ + public static function addAddressToVCard(Contact $contact, VCard $vCard) + { + foreach ($contact->addresses as $address) { + $vCard->addAddress($address->name, + null, + $address->street, + $address->city, + $address->province, + $address->postal_code, + $address->getCountryName()); + } + + return $vCard; + } +} diff --git a/app/Http/Controllers/ActivitiesController.php b/app/Http/Controllers/ActivitiesController.php index 9c75fa20ab4..ad850697e11 100644 --- a/app/Http/Controllers/ActivitiesController.php +++ b/app/Http/Controllers/ActivitiesController.php @@ -66,7 +66,7 @@ public function store(ActivitiesRequest $request, Contact $contact) } // Log a journal entry - $journalEntry = (new JournalEntry)->add($activity); + (new JournalEntry)->add($activity); return redirect('/people/'.$contact->id) ->with('success', trans('people.activities_add_success')); diff --git a/app/Http/Controllers/Api/ApiActivityController.php b/app/Http/Controllers/Api/ApiActivityController.php index ea25dfba64b..ca0d85f0f48 100644 --- a/app/Http/Controllers/Api/ApiActivityController.php +++ b/app/Http/Controllers/Api/ApiActivityController.php @@ -2,10 +2,12 @@ namespace App\Http\Controllers\Api; +use App\Note; use Validator; use App\Contact; use App\Activity; use App\ActivityType; +use App\JournalEntry; use Illuminate\Http\Request; use Illuminate\Database\QueryException; use Illuminate\Database\Eloquent\ModelNotFoundException; @@ -21,10 +23,17 @@ class ApiActivityController extends ApiController */ public function index(Request $request) { - $activities = auth()->user()->account->activities() - ->paginate($this->getLimitPerPage()); + try { + $activities = auth()->user()->account->activities() + ->orderBy($this->sort, $this->sortDirection) + ->paginate($this->getLimitPerPage()); + } catch (QueryException $e) { + return $this->respondInvalidQuery(); + } - return ActivityResource::collection($activities); + return ActivityResource::collection($activities)->additional(['meta' => [ + 'statistics' => auth()->user()->account->getYearlyActivitiesStatistics(), + ]]); } /** @@ -52,31 +61,9 @@ public function show(Request $request, $activityId) */ public function store(Request $request) { - // Validates basic fields to create the entry - $validator = Validator::make($request->all(), [ - 'summary' => 'required|max:100000', - 'description' => 'required|max:1000000', - 'date_it_happened' => 'required|date', - 'activity_type_id' => 'integer', - 'contacts' => 'required|array', - ]); - - if ($validator->fails()) { - return $this->setErrorCode(32) - ->respondWithError($validator->errors()->all()); - } - - // Make sure each contact exists and has the right to be associated with - // this account - $attendeesID = $request->get('contacts'); - foreach ($attendeesID as $attendeeID) { - try { - $contact = Contact::where('account_id', auth()->user()->account_id) - ->where('id', $attendeeID) - ->firstOrFail(); - } catch (ModelNotFoundException $e) { - return $this->respondNotFound(); - } + $contact = $this->validateUpdate($request); + if (! $contact instanceof Contact) { + return $contact; } try { @@ -94,7 +81,7 @@ public function store(Request $request) } // Log a journal entry - $journalEntry = (new JournalEntry)->add($activity); + (new JournalEntry)->add($activity); // Now we associate the activity with each one of the attendees $attendeesID = $request->get('contacts'); @@ -124,31 +111,9 @@ public function update(Request $request, $activityId) return $this->respondNotFound(); } - // Validates basic fields to create the entry - $validator = Validator::make($request->all(), [ - 'summary' => 'required|max:100000', - 'description' => 'required|max:1000000', - 'date_it_happened' => 'required|date', - 'activity_type_id' => 'integer', - 'contacts' => 'required|array', - ]); - - if ($validator->fails()) { - return $this->setErrorCode(32) - ->respondWithError($validator->errors()->all()); - } - - // Make sure each contact exists and has the right to be associated with - // this account - $attendeesID = $request->get('contacts'); - foreach ($attendeesID as $attendeeID) { - try { - $contact = Contact::where('account_id', auth()->user()->account_id) - ->where('id', $attendeeID) - ->firstOrFail(); - } catch (ModelNotFoundException $e) { - return $this->respondNotFound(); - } + $isvalid = $this->validateUpdate($request); + if ($isvalid !== true) { + return $isvalid; } // Update the activity itself @@ -167,7 +132,7 @@ public function update(Request $request, $activityId) // Log a journal entry but need to delete the previous one first $activity->deleteJournalEntry(); - $journalEntry = (new JournalEntry)->add($activity); + (new JournalEntry)->add($activity); // Get the attendees $attendees = $request->get('contacts'); @@ -204,6 +169,44 @@ public function update(Request $request, $activityId) return new ActivityResource($activity); } + /** + * Validate the request for update. + * + * @param Request $request + * @return mixed + */ + private function validateUpdate(Request $request) + { + // Validates basic fields to create the entry + $validator = Validator::make($request->all(), [ + 'summary' => 'required|max:100000', + 'description' => 'required|max:1000000', + 'date_it_happened' => 'required|date', + 'activity_type_id' => 'integer', + 'contacts' => 'required|array', + ]); + + if ($validator->fails()) { + return $this->setErrorCode(32) + ->respondWithError($validator->errors()->all()); + } + + // Make sure each contact exists and has the right to be associated with + // this account + $attendeesID = $request->get('contacts'); + foreach ($attendeesID as $attendeeID) { + try { + $contact = Contact::where('account_id', auth()->user()->account_id) + ->where('id', $attendeeID) + ->firstOrFail(); + } catch (ModelNotFoundException $e) { + return $this->respondNotFound(); + } + } + + return true; + } + /** * Delete an activity. * @param Request $request @@ -241,10 +244,17 @@ public function activities(Request $request, $contactId) return $this->respondNotFound(); } - $activities = $contact->activities() + try { + $activities = $contact->activities() + ->orderBy($this->sort, $this->sortDirection) ->paginate($this->getLimitPerPage()); + } catch (QueryException $e) { + return $this->respondInvalidQuery(); + } - return ActivityResource::collection($activities); + return ActivityResource::collection($activities)->additional(['meta' => [ + 'statistics' => auth()->user()->account->getYearlyActivitiesStatistics(), + ]]); } /** diff --git a/app/Http/Controllers/Api/ApiAddressController.php b/app/Http/Controllers/Api/ApiAddressController.php index 60bed515491..43c5eed7446 100644 --- a/app/Http/Controllers/Api/ApiAddressController.php +++ b/app/Http/Controllers/Api/ApiAddressController.php @@ -37,28 +37,9 @@ public function show(Request $request, $id) */ public function store(Request $request) { - // Validates basic fields to create the entry - $validator = Validator::make($request->all(), [ - 'name' => 'max:255|required', - 'street' => 'max:255|nullable', - 'city' => 'max:255|nullable', - 'province' => 'max:255|nullable', - 'postal_code' => 'max:255|nullable', - 'country_id' => 'integer|nullable', - 'contact_id' => 'required|integer', - ]); - - if ($validator->fails()) { - return $this->setErrorCode(32) - ->respondWithError($validator->errors()->all()); - } - - try { - $contact = Contact::where('account_id', auth()->user()->account_id) - ->where('id', $request->input('contact_id')) - ->firstOrFail(); - } catch (ModelNotFoundException $e) { - return $this->respondNotFound(); + $isvalid = $this->validateUpdate($request); + if ($isvalid !== true) { + return $isvalid; } try { @@ -91,6 +72,28 @@ public function update(Request $request, $addressId) return $this->respondNotFound(); } + $isvalid = $this->validateUpdate($request); + if ($isvalid !== true) { + return $isvalid; + } + + try { + $address->update($request->all()); + } catch (QueryException $e) { + return $this->respondNotTheRightParameters(); + } + + return new AddressResource($address); + } + + /** + * Validate the request for update. + * + * @param Request $request + * @return mixed + */ + private function validateUpdate(Request $request) + { // Validates basic fields to create the entry $validator = Validator::make($request->all(), [ 'name' => 'max:255|required', @@ -108,20 +111,14 @@ public function update(Request $request, $addressId) } try { - $contact = Contact::where('account_id', auth()->user()->account_id) + Contact::where('account_id', auth()->user()->account_id) ->where('id', $request->input('contact_id')) ->firstOrFail(); } catch (ModelNotFoundException $e) { return $this->respondNotFound(); } - try { - $address->update($request->all()); - } catch (QueryException $e) { - return $this->respondNotTheRightParameters(); - } - - return new AddressResource($address); + return true; } /** diff --git a/app/Http/Controllers/Api/ApiCallController.php b/app/Http/Controllers/Api/ApiCallController.php index b22a71595e2..378b6d1bc9a 100644 --- a/app/Http/Controllers/Api/ApiCallController.php +++ b/app/Http/Controllers/Api/ApiCallController.php @@ -19,10 +19,17 @@ class ApiCallController extends ApiController */ public function index(Request $request) { - $calls = auth()->user()->account->calls() - ->paginate($this->getLimitPerPage()); + try { + $calls = auth()->user()->account->calls() + ->orderBy($this->sort, $this->sortDirection) + ->paginate($this->getLimitPerPage()); + } catch (QueryException $e) { + return $this->respondInvalidQuery(); + } - return CallResource::collection($calls); + return CallResource::collection($calls)->additional(['meta' => [ + 'statistics' => auth()->user()->account->getYearlyCallStatistics(), + ]]); } /** @@ -50,24 +57,9 @@ public function show(Request $request, $callId) */ public function store(Request $request) { - // Validates basic fields to create the entry - $validator = Validator::make($request->all(), [ - 'content' => 'required|max:100000', - 'called_at' => 'required|date', - 'contact_id' => 'required|integer', - ]); - - if ($validator->fails()) { - return $this->setErrorCode(32) - ->respondWithError($validator->errors()->all()); - } - - try { - $contact = Contact::where('account_id', auth()->user()->account_id) - ->where('id', $request->input('contact_id')) - ->firstOrFail(); - } catch (ModelNotFoundException $e) { - return $this->respondNotFound(); + $isvalid = $this->validateUpdate($request); + if ($isvalid !== true) { + return $isvalid; } try { @@ -98,6 +90,28 @@ public function update(Request $request, $callId) return $this->respondNotFound(); } + $isvalid = $this->validateUpdate($request); + if ($isvalid !== true) { + return $isvalid; + } + + try { + $call->update($request->all()); + } catch (QueryException $e) { + return $this->respondNotTheRightParameters(); + } + + return new CallResource($call); + } + + /** + * Validate the request for update. + * + * @param Request $request + * @return mixed + */ + private function validateUpdate(Request $request) + { // Validates basic fields to create the entry $validator = Validator::make($request->all(), [ 'content' => 'required|max:100000', @@ -111,20 +125,14 @@ public function update(Request $request, $callId) } try { - $contact = Contact::where('account_id', auth()->user()->account_id) + Contact::where('account_id', auth()->user()->account_id) ->where('id', $request->input('contact_id')) ->firstOrFail(); } catch (ModelNotFoundException $e) { return $this->respondNotFound(); } - try { - $call->update($request->all()); - } catch (QueryException $e) { - return $this->respondNotTheRightParameters(); - } - - return new CallResource($call); + return true; } /** @@ -163,8 +171,11 @@ public function calls(Request $request, $contactId) } $calls = $contact->calls() + ->orderBy($this->sort, $this->sortDirection) ->paginate($this->getLimitPerPage()); - return CallResource::collection($calls); + return CallResource::collection($calls)->additional(['meta' => [ + 'statistics' => auth()->user()->account->getYearlyCallStatistics(), + ]]); } } diff --git a/app/Http/Controllers/Api/ApiContactController.php b/app/Http/Controllers/Api/ApiContactController.php index 23955d74984..b9314604c5a 100644 --- a/app/Http/Controllers/Api/ApiContactController.php +++ b/app/Http/Controllers/Api/ApiContactController.php @@ -6,9 +6,11 @@ use Validator; use App\Contact; use Illuminate\Http\Request; +use App\Helpers\SearchHelper; use Illuminate\Database\QueryException; use Illuminate\Database\Eloquent\ModelNotFoundException; use App\Http\Resources\Contact\Contact as ContactResource; +use App\Http\Resources\Contact\ContactWithContactFields as ContactWithContactFieldsResource; class ApiContactController extends ApiController { @@ -21,8 +23,31 @@ class ApiContactController extends ApiController */ public function index(Request $request) { - $contacts = auth()->user()->account->contacts()->real() - ->paginate($this->getLimitPerPage()); + if ($request->get('query')) { + $needle = $request->get('query'); + + try { + $contacts = SearchHelper::searchContacts( + $needle, + $this->getLimitPerPage(), + $this->sort.' '.$this->sortDirection + ); + } catch (QueryException $e) { + return $this->respondInvalidQuery(); + } + + return ContactResource::collection($contacts)->additional(['meta' => [ + 'query' => $needle, + ]]); + } + + try { + $contacts = auth()->user()->account->contacts()->real() + ->orderBy($this->sort, $this->sortDirection) + ->paginate($this->getLimitPerPage()); + } catch (QueryException $e) { + return $this->respondInvalidQuery(); + } return ContactResource::collection($contacts); } @@ -42,6 +67,10 @@ public function show(Request $request, $id) return $this->respondNotFound(); } + if ($this->getWithParameter() == 'contactfields') { + return new ContactWithContactFieldsResource($contact); + } + return new ContactResource($contact); } @@ -52,49 +81,9 @@ public function show(Request $request, $id) */ public function store(Request $request) { - // Validates basic fields to create the entry - $validator = Validator::make($request->all(), [ - 'first_name' => 'required|max:50', - 'last_name' => 'nullable|max:100', - 'gender' => 'required', - 'birthdate' => 'nullable|date', - 'birthdate_is_age_based' => 'boolean', - 'birthdate_is_year_unknown' => 'boolean', - 'birthdate_age' => 'nullable|integer', - 'job' => 'nullable|max:255', - 'company' => 'nullable|max:255', - 'food_preferencies' => 'nullable|max:100000', - 'linkedin_profile_url' => 'nullable|max:255', - 'first_met_information' => 'nullable|max:1000000', - 'first_met_date' => 'nullable|date', - 'first_met_date_is_age_based' => 'boolean', - 'first_met_date_is_year_unknown' => 'boolean', - 'first_met_date_age' => 'nullable|integer', - 'first_met_through_contact_id' => 'nullable|integer', - 'is_partial' => 'required|boolean', - 'is_dead' => 'required|boolean', - 'deceased_date' => 'nullable|date', - 'deceased_date_is_age_based' => 'boolean', - 'deceased_date_is_year_unknown' => 'boolean', - 'deceased_date_age' => 'nullable|integer', - 'avatar_url' => 'nullable|max:400', - ]); - - if ($validator->fails()) { - return $this->setErrorCode(32) - ->respondWithError($validator->errors()->all()); - } - - // Make sure the `first_met_through_contact_id` is a contact id that the - // user is authorized to access - if ($request->get('first_met_through_contact_id')) { - try { - $contactFirstMetThrough = Contact::where('account_id', auth()->user()->account_id) - ->where('id', $request->input('first_met_through_contact_id')) - ->firstOrFail(); - } catch (ModelNotFoundException $e) { - return $this->respondNotFound(); - } + $isvalid = $this->validateUpdate($request); + if ($isvalid !== true) { + return $isvalid; } // Create the contact @@ -103,7 +92,7 @@ public function store(Request $request) $request->only([ 'first_name', 'last_name', - 'gender', + 'gender_id', 'job', 'company', 'food_preferencies', @@ -137,16 +126,14 @@ public function store(Request $request) // in this case, we know the month and day, but not necessarily the year $date = \Carbon\Carbon::parse($request->get('birthdate')); - if ($request->get('birthdate_is_year_unknown') == true) { + if ($request->get('birthdate_is_year_unknown')) { $specialDate = $contact->setSpecialDate('birthdate', 0, $date->month, $date->day); } else { $specialDate = $contact->setSpecialDate('birthdate', $date->year, $date->month, $date->day); - $newReminder = $specialDate->setReminder('year', 1, trans('people.people_add_birthday_reminder', ['name' => $contact->first_name])); - } - } else { - if ($request->get('birthdate_is_age_based') == true) { - $specialDate = $contact->setSpecialDateFromAge('birthdate', $request->input('birthdate_age')); + $specialDate->setReminder('year', 1, trans('people.people_add_birthday_reminder', ['name' => $contact->first_name])); } + } elseif ($request->get('birthdate_is_age_based')) { + $specialDate = $contact->setSpecialDateFromAge('birthdate', $request->input('birthdate_age')); } // first met date @@ -155,16 +142,14 @@ public function store(Request $request) // in this case, we know the month and day, but not necessarily the year $date = \Carbon\Carbon::parse($request->get('first_met_date')); - if ($request->get('first_met_date_is_year_unknown') == true) { + if ($request->get('first_met_date_is_year_unknown')) { $specialDate = $contact->setSpecialDate('first_met', 0, $date->month, $date->day); } else { $specialDate = $contact->setSpecialDate('first_met', $date->year, $date->month, $date->day); - $newReminder = $specialDate->setReminder('year', 1, trans('people.people_add_birthday_reminder', ['name' => $contact->first_name])); - } - } else { - if ($request->get('first_met_date_is_age_based') == true) { - $specialDate = $contact->setSpecialDateFromAge('first_met', $request->input('first_met_date_age')); + $specialDate->setReminder('year', 1, trans('people.people_add_birthday_reminder', ['name' => $contact->first_name])); } + } elseif ($request->get('first_met_date_is_age_based')) { + $specialDate = $contact->setSpecialDateFromAge('first_met', $request->input('first_met_date_age')); } // deceased date @@ -173,16 +158,14 @@ public function store(Request $request) // in this case, we know the month and day, but not necessarily the year $date = \Carbon\Carbon::parse($request->get('deceased_date')); - if ($request->get('deceased_date_is_year_unknown') == true) { + if ($request->get('deceased_date_is_year_unknown')) { $specialDate = $contact->setSpecialDate('deceased_date', 0, $date->month, $date->day); } else { $specialDate = $contact->setSpecialDate('deceased_date', $date->year, $date->month, $date->day); - $newReminder = $specialDate->setReminder('year', 1, trans('people.people_add_birthday_reminder', ['name' => $contact->first_name])); - } - } else { - if ($request->get('deceased_date_is_age_based') == true) { - $specialDate = $contact->setSpecialDateFromAge('deceased_date', $request->input('deceased_date_age')); + $specialDate->setReminder('year', 1, trans('people.people_add_birthday_reminder', ['name' => $contact->first_name])); } + } elseif ($request->get('deceased_date_is_age_based')) { + $specialDate = $contact->setSpecialDateFromAge('deceased_date', $request->input('deceased_date_age')); } $contact->setAvatarColor(); @@ -206,49 +189,9 @@ public function update(Request $request, $contactId) return $this->respondNotFound(); } - // Validates basic fields to create the entry - $validator = Validator::make($request->all(), [ - 'first_name' => 'required|max:50', - 'last_name' => 'nullable|max:100', - 'gender' => 'required', - 'birthdate' => 'nullable|date', - 'birthdate_is_age_based' => 'nullable|boolean', - 'birthdate_is_year_unknown' => 'nullable|boolean', - 'birthdate_age' => 'nullable|integer', - 'job' => 'nullable|max:255', - 'company' => 'nullable|max:255', - 'food_preferencies' => 'nullable|max:100000', - 'linkedin_profile_url' => 'nullable|max:255', - 'first_met_information' => 'nullable|max:1000000', - 'first_met_date' => 'nullable|date', - 'first_met_date_is_age_based' => 'nullable|boolean', - 'first_met_date_is_year_unknown' => 'nullable|boolean', - 'first_met_date_age' => 'nullable|integer', - 'first_met_through_contact_id' => 'nullable|integer', - 'is_partial' => 'required|boolean', - 'is_dead' => 'required|boolean', - 'deceased_date' => 'nullable|date', - 'deceased_date_is_age_based' => 'nullable|boolean', - 'deceased_date_is_year_unknown' => 'nullable|boolean', - 'deceased_date_age' => 'nullable|integer', - 'avatar_url' => 'nullable|max:400', - ]); - - if ($validator->fails()) { - return $this->setErrorCode(32) - ->respondWithError($validator->errors()->all()); - } - - // Make sure the `first_met_through_contact_id` is a contact id that the - // user is authorized to access - if ($request->get('first_met_through_contact_id')) { - try { - $contactFirstMetThrough = Contact::where('account_id', auth()->user()->account_id) - ->where('id', $request->input('first_met_through_contact_id')) - ->firstOrFail(); - } catch (ModelNotFoundException $e) { - return $this->respondNotFound(); - } + $isvalid = $this->validateUpdate($request); + if ($isvalid !== true) { + return $isvalid; } // Update the contact @@ -273,16 +216,14 @@ public function update(Request $request, $contactId) // in this case, we know the month and day, but not necessarily the year $date = \Carbon\Carbon::parse($request->get('birthdate')); - if ($request->get('birthdate_is_year_unknown') == true) { + if ($request->get('birthdate_is_year_unknown')) { $specialDate = $contact->setSpecialDate('birthdate', 0, $date->month, $date->day); } else { $specialDate = $contact->setSpecialDate('birthdate', $date->year, $date->month, $date->day); - $newReminder = $specialDate->setReminder('year', 1, trans('people.people_add_birthday_reminder', ['name' => $contact->first_name])); - } - } else { - if ($request->get('birthdate_is_age_based') == true) { - $specialDate = $contact->setSpecialDateFromAge('birthdate', $request->input('birthdate_age')); + $specialDate->setReminder('year', 1, trans('people.people_add_birthday_reminder', ['name' => $contact->first_name])); } + } elseif ($request->get('birthdate_is_age_based')) { + $specialDate = $contact->setSpecialDateFromAge('birthdate', $request->input('birthdate_age')); } // first met date @@ -292,16 +233,14 @@ public function update(Request $request, $contactId) // in this case, we know the month and day, but not necessarily the year $date = \Carbon\Carbon::parse($request->get('first_met_date')); - if ($request->get('first_met_date_is_year_unknown') == true) { + if ($request->get('first_met_date_is_year_unknown')) { $specialDate = $contact->setSpecialDate('first_met', 0, $date->month, $date->day); } else { $specialDate = $contact->setSpecialDate('first_met', $date->year, $date->month, $date->day); - $newReminder = $specialDate->setReminder('year', 1, trans('people.people_add_birthday_reminder', ['name' => $contact->first_name])); - } - } else { - if ($request->get('first_met_date_is_age_based') == true) { - $specialDate = $contact->setSpecialDateFromAge('first_met', $request->input('first_met_date_age')); + $specialDate->setReminder('year', 1, trans('people.people_add_birthday_reminder', ['name' => $contact->first_name])); } + } elseif ($request->get('first_met_date_is_age_based')) { + $specialDate = $contact->setSpecialDateFromAge('first_met', $request->input('first_met_date_age')); } // deceased date @@ -311,16 +250,14 @@ public function update(Request $request, $contactId) // in this case, we know the month and day, but not necessarily the year $date = \Carbon\Carbon::parse($request->get('deceased_date')); - if ($request->get('deceased_date_is_year_unknown') == true) { + if ($request->get('deceased_date_is_year_unknown')) { $specialDate = $contact->setSpecialDate('deceased_date', 0, $date->month, $date->day); } else { $specialDate = $contact->setSpecialDate('deceased_date', $date->year, $date->month, $date->day); - $newReminder = $specialDate->setReminder('year', 1, trans('people.people_add_birthday_reminder', ['name' => $contact->first_name])); - } - } else { - if ($request->get('deceased_date_is_age_based') == true) { - $specialDate = $contact->setSpecialDateFromAge('deceased_date', $request->input('deceased_date_age')); + $specialDate->setReminder('year', 1, trans('people.people_add_birthday_reminder', ['name' => $contact->first_name])); } + } elseif ($request->get('deceased_date_is_age_based')) { + $specialDate = $contact->setSpecialDateFromAge('deceased_date', $request->input('deceased_date_age')); } $contact->logEvent('contact', $contact->id, 'update'); @@ -328,6 +265,62 @@ public function update(Request $request, $contactId) return new ContactResource($contact); } + /** + * Validate the request for update. + * + * @param Request $request + * @return mixed + */ + private function validateUpdate(Request $request) + { + // Validates basic fields to create the entry + $validator = Validator::make($request->all(), [ + 'first_name' => 'required|max:50', + 'last_name' => 'nullable|max:100', + 'gender_id' => 'integer|required', + 'birthdate' => 'nullable|date', + 'birthdate_is_age_based' => 'boolean', + 'birthdate_is_year_unknown' => 'boolean', + 'birthdate_age' => 'nullable|integer', + 'job' => 'nullable|max:255', + 'company' => 'nullable|max:255', + 'food_preferencies' => 'nullable|max:100000', + 'linkedin_profile_url' => 'nullable|max:255', + 'first_met_information' => 'nullable|max:1000000', + 'first_met_date' => 'nullable|date', + 'first_met_date_is_age_based' => 'boolean', + 'first_met_date_is_year_unknown' => 'boolean', + 'first_met_date_age' => 'nullable|integer', + 'first_met_through_contact_id' => 'nullable|integer', + 'is_partial' => 'required|boolean', + 'is_dead' => 'required|boolean', + 'deceased_date' => 'nullable|date', + 'deceased_date_is_age_based' => 'boolean', + 'deceased_date_is_year_unknown' => 'boolean', + 'deceased_date_age' => 'nullable|integer', + 'avatar_url' => 'nullable|max:400', + ]); + + if ($validator->fails()) { + return $this->setErrorCode(32) + ->respondWithError($validator->errors()->all()); + } + + // Make sure the `first_met_through_contact_id` is a contact id that the + // user is authorized to access + if ($request->get('first_met_through_contact_id')) { + try { + Contact::where('account_id', auth()->user()->account_id) + ->where('id', $request->input('first_met_through_contact_id')) + ->firstOrFail(); + } catch (ModelNotFoundException $e) { + return $this->respondNotFound(); + } + } + + return true; + } + /** * Delete a contact. * @param Request $request @@ -357,7 +350,7 @@ public function destroy(Request $request, $id) } } - if ($contactIdRowExists == true) { + if ($contactIdRowExists) { DB::table($tableName)->where('contact_id', $contact->id)->delete(); } } @@ -372,38 +365,11 @@ public function destroy(Request $request, $id) */ public function partners(Request $request, $contactId) { - try { - $contact = Contact::where('account_id', auth()->user()->account_id) - ->where('id', $contactId) - ->firstOrFail(); - } catch (ModelNotFoundException $e) { - return $this->respondNotFound(); - } - - // Make sure the contact is not a partial contact so we can actually - // associate him/her a partner - if ($contact->is_partial) { - return $this->setErrorCode(36) - ->respondWithError('You can\'t set a partner or a child to a partial contact'); - } - - // Validates basic fields to create the entry - $validator = Validator::make($request->all(), [ - 'partner_id' => 'required|integer', - ]); - - if ($validator->fails()) { - return $this->setErrorCode(32) - ->respondWithError($validator->errors()->all()); - } - - try { - $partner = Contact::where('account_id', auth()->user()->account_id) - ->where('id', $request->input('partner_id')) - ->firstOrFail(); - } catch (ModelNotFoundException $e) { - return $this->respondNotFound(); + $validate = $this->validatePartners($request, $contactId); + if (! is_array($validate)) { + return $validate; } + list($contact, $partner) = $validate; if ($partner->is_partial) { $contact->setRelationshipWith($partner); @@ -420,31 +386,11 @@ public function partners(Request $request, $contactId) */ public function unsetPartners(Request $request, $contactId) { - try { - $contact = Contact::where('account_id', auth()->user()->account_id) - ->where('id', $contactId) - ->firstOrFail(); - } catch (ModelNotFoundException $e) { - return $this->respondNotFound(); - } - - // Validates basic fields to create the entry - $validator = Validator::make($request->all(), [ - 'partner_id' => 'required|integer', - ]); - - if ($validator->fails()) { - return $this->setErrorCode(32) - ->respondWithError($validator->errors()->all()); - } - - try { - $partner = Contact::where('account_id', auth()->user()->account_id) - ->where('id', $request->input('partner_id')) - ->firstOrFail(); - } catch (ModelNotFoundException $e) { - return $this->respondNotFound(); + $validate = $this->validatePartners($request, $contactId); + if (! is_array($validate)) { + return $validate; } + list($contact, $partner) = $validate; if ($partner->is_partial) { if ($partner->reminders) { @@ -461,9 +407,13 @@ public function unsetPartners(Request $request, $contactId) } /** - * Link a child to an existing contact. + * Validate the request for update Partners. + * + * @param Request $request + * @param int $contactId + * @return mixed */ - public function kids(Request $request, $contactId) + private function validatePartners(Request $request, $contactId) { try { $contact = Contact::where('account_id', auth()->user()->account_id) @@ -482,7 +432,7 @@ public function kids(Request $request, $contactId) // Validates basic fields to create the entry $validator = Validator::make($request->all(), [ - 'child_id' => 'required|integer', + 'partner_id' => 'required|integer', ]); if ($validator->fails()) { @@ -491,13 +441,27 @@ public function kids(Request $request, $contactId) } try { - $kid = Contact::where('account_id', auth()->user()->account_id) - ->where('id', $request->input('child_id')) + $partner = Contact::where('account_id', auth()->user()->account_id) + ->where('id', $request->input('partner_id')) ->firstOrFail(); } catch (ModelNotFoundException $e) { return $this->respondNotFound(); } + return [$contact, $partner]; + } + + /** + * Link a child to an existing contact. + */ + public function kids(Request $request, $contactId) + { + $validate = $this->validatePartners($request, $contactId); + if (! is_array($validate)) { + return $validate; + } + list($contact, $kid) = $validate; + if ($kid->is_partial) { $kid->isTheOffspringOf($contact); } else { @@ -512,6 +476,35 @@ public function kids(Request $request, $contactId) * Unlink a partner from an existing contact. */ public function unsetKids(Request $request, $contactId) + { + $validate = $this->validatePartners($request, $contactId); + if (! is_array($validate)) { + return $validate; + } + list($contact, $kid) = $validate; + + if ($kid->is_partial) { + if ($kid->reminders) { + $kid->reminders()->get()->each->delete(); + } + + $contact->unsetOffspring($kid); + $kid->delete(); + } else { + $contact->unsetOffspring($kid, true); + } + + return new ContactResource($contact); + } + + /** + * Validate the request for update kids. + * + * @param Request $request + * @param int $contactId + * @return mixed + */ + private function validateKids(Request $request, $contactId) { try { $contact = Contact::where('account_id', auth()->user()->account_id) @@ -539,17 +532,6 @@ public function unsetKids(Request $request, $contactId) return $this->respondNotFound(); } - if ($kid->is_partial) { - if ($kid->reminders) { - $kid->reminders()->get()->each->delete(); - } - - $contact->unsetOffspring($kid); - $kid->delete(); - } else { - $contact->unsetOffspring($kid, true); - } - - return new ContactResource($contact); + return [$contact, $kid]; } } diff --git a/app/Http/Controllers/Api/ApiContactFieldController.php b/app/Http/Controllers/Api/ApiContactFieldController.php index 6348a62a50c..e84b36479a9 100644 --- a/app/Http/Controllers/Api/ApiContactFieldController.php +++ b/app/Http/Controllers/Api/ApiContactFieldController.php @@ -5,7 +5,6 @@ use Validator; use App\Contact; use App\ContactField; -use App\ContactFieldType; use Illuminate\Http\Request; use Illuminate\Database\QueryException; use Illuminate\Database\Eloquent\ModelNotFoundException; @@ -38,32 +37,9 @@ public function show(Request $request, $id) */ public function store(Request $request) { - // Validates basic fields to create the entry - $validator = Validator::make($request->all(), [ - 'data' => 'max:255|required', - 'contact_field_type_id' => 'integer|required', - 'contact_id' => 'required|integer', - ]); - - if ($validator->fails()) { - return $this->setErrorCode(32) - ->respondWithError($validator->errors()->all()); - } - - try { - $contact = Contact::where('account_id', auth()->user()->account_id) - ->where('id', $request->input('contact_id')) - ->firstOrFail(); - } catch (ModelNotFoundException $e) { - return $this->respondNotFound(); - } - - try { - $contactFieldType = ContactFieldType::where('account_id', auth()->user()->account_id) - ->where('id', $request->input('contact_field_type_id')) - ->firstOrFail(); - } catch (ModelNotFoundException $e) { - return $this->respondNotFound(); + $contactField = $this->validateUpdate($request, $request->input('contact_field_type_id')); + if (! $contactField instanceof ContactField) { + return $contactField; } try { @@ -88,14 +64,29 @@ public function store(Request $request) */ public function update(Request $request, $contactFieldId) { + $contactField = $this->validateUpdate($request, $contactFieldId); + if (! $contactField instanceof ContactField) { + return $contactField; + } + try { - $contactField = ContactField::where('account_id', auth()->user()->account_id) - ->where('id', $contactFieldId) - ->firstOrFail(); - } catch (ModelNotFoundException $e) { - return $this->respondNotFound(); + $contactField->update($request->all()); + } catch (QueryException $e) { + return $this->respondNotTheRightParameters(); } + return new ContactFieldResource($contactField); + } + + /** + * Validate the request for update. + * + * @param Request $request + * @param int $contactFieldId + * @return mixed + */ + private function validateUpdate(Request $request, $contactFieldId) + { // Validates basic fields to create the entry $validator = Validator::make($request->all(), [ 'data' => 'max:255|required', @@ -109,7 +100,7 @@ public function update(Request $request, $contactFieldId) } try { - $contact = Contact::where('account_id', auth()->user()->account_id) + Contact::where('account_id', auth()->user()->account_id) ->where('id', $request->input('contact_id')) ->firstOrFail(); } catch (ModelNotFoundException $e) { @@ -117,12 +108,14 @@ public function update(Request $request, $contactFieldId) } try { - $contactField->update($request->all()); - } catch (QueryException $e) { - return $this->respondNotTheRightParameters(); + $contactField = ContactField::where('account_id', auth()->user()->account_id) + ->where('id', $contactFieldId) + ->firstOrFail(); + } catch (ModelNotFoundException $e) { + return $this->respondNotFound(); } - return new ContactFieldResource($contactField); + return $contactField; } /** diff --git a/app/Http/Controllers/Api/ApiContactTagController.php b/app/Http/Controllers/Api/ApiContactTagController.php new file mode 100644 index 00000000000..b784e5c2427 --- /dev/null +++ b/app/Http/Controllers/Api/ApiContactTagController.php @@ -0,0 +1,111 @@ +validateTag($request, $contactId); + if (! $contact instanceof Contact) { + return $contact; + } + + $tags = $request->get('tags'); + foreach ($tags as $tag) { + $contact->setTag($tag); + } + + return new ContactResource($contact); + } + + /** + * Remove all the tags associated with the contact. + * @param Request $request + * @param int $contactId + */ + public function unsetTags(Request $request, $contactId) + { + try { + $contact = Contact::where('account_id', auth()->user()->account_id) + ->where('id', $contactId) + ->firstOrFail(); + } catch (ModelNotFoundException $e) { + return $this->respondNotFound(); + } + + $contact->unsetTags(); + + return new ContactResource($contact); + } + + /** + * Remove one or more specific tags associated with the contact. + * @param Request $request + * @param int $contactId + */ + public function unsetTag(Request $request, $contactId) + { + $contact = $this->validateTag($request, $contactId); + if (! $contact instanceof Contact) { + return $contact; + } + + $tags = $request->get('tags'); + foreach ($tags as $tag) { + // does the tag exist? + try { + $tag = Tag::where('account_id', auth()->user()->account_id) + ->where('id', $tag) + ->firstOrFail(); + } catch (ModelNotFoundException $e) { + return $this->respondNotFound(); + } + + $contact->unsetTag($tag); + } + + return new ContactResource($contact); + } + + /** + * Validate the request for update tag. + * + * @param Request $request + * @param int $contactId + * @return mixed + */ + private function validateTag(Request $request, $contactId) + { + try { + $contact = Contact::where('account_id', auth()->user()->account_id) + ->where('id', $contactId) + ->firstOrFail(); + } catch (ModelNotFoundException $e) { + return $this->respondNotFound(); + } + + $validator = Validator::make($request->all(), [ + 'tags' => 'required|array', + ]); + + if ($validator->fails()) { + return $this->setErrorCode(32) + ->respondWithError($validator->errors()->all()); + } + + return $contact; + } +} diff --git a/app/Http/Controllers/Api/ApiController.php b/app/Http/Controllers/Api/ApiController.php index 873a70a72a2..55aa1ffb699 100644 --- a/app/Http/Controllers/Api/ApiController.php +++ b/app/Http/Controllers/Api/ApiController.php @@ -21,12 +21,38 @@ class ApiController extends Controller /** * @var int */ - protected $limitPerPage = 10; + protected $limitPerPage = 0; + + /** + * @var string + */ + protected $sort = 'created_at'; + + /** + * @var string + */ + protected $withParameter = null; + + /** + * @var string + */ + protected $sortDirection = 'asc'; public function __construct() { $this->middleware(function ($request, $next) { - $apiUsage = (new ApiUsage)->log($request); + (new ApiUsage)->log($request); + + if ($request->has('sort')) { + $this->setSortCriteria($request->get('sort')); + + // It has a sort criteria, but is it a valid one? + if (is_null($this->getSortCriteria())) { + return $this->setHTTPStatusCode(400) + ->setErrorCode(39) + ->respondWithError(config('api.error_codes.39')); + } + } if ($request->has('limit')) { if ($request->get('limit') > config('api.max_limit_per_page')) { @@ -38,14 +64,17 @@ public function __construct() $this->setLimitPerPage($request->get('limit')); } + if ($request->has('with')) { + $this->setWithParameter($request->get('with')); + } + // make sure the JSON is well formatted if the given call sends a JSON // TODO: there is probably a much better way to do that - if ($request->method() != 'GET' and $request->method() != 'DELETE') { - if (is_null(json_decode($request->getContent()))) { - return $this->setHTTPStatusCode(400) - ->setErrorCode(37) - ->respondWithError(config('api.error_codes.37')); - } + if ($request->method() != 'GET' && $request->method() != 'DELETE' + && is_null(json_decode($request->getContent()))) { + return $this->setHTTPStatusCode(400) + ->setErrorCode(37) + ->respondWithError(config('api.error_codes.37')); } return $next($request); @@ -54,7 +83,7 @@ public function __construct() /** * Default request to the API. - * @return json + * @return \Illuminate\Http\JsonResponse */ public function success() { @@ -84,6 +113,25 @@ public function setHTTPStatusCode($statusCode) return $this; } + /** + * @return string + */ + public function getWithParameter() + { + return $this->withParameter; + } + + /** + * @param string $with + * @return $this + */ + public function setWithParameter($with) + { + $this->withParameter = $with; + + return $this; + } + /** * @return int */ @@ -122,11 +170,76 @@ public function setLimitPerPage($limit) return $this; } + /** + * Get the sort direction parameter. + * @return string + */ + public function getSortDirection() + { + return $this->sortDirection; + } + + /** + * @return string + */ + public function getSortCriteria() + { + return $this->sort; + } + + /** + * @param string $criteria + * @return $this + */ + public function setSortCriteria($criteria) + { + $acceptedCriteria = [ + 'created_at', + 'updated_at', + '-created_at', + '-updated_at', + 'completed_at', + '-completed_at', + 'called_at', + '-called_at', + 'favorited_at', + '-favorited_at', + 'next_expected_date', + '-next_expected_date', + ]; + + if (in_array($criteria, $acceptedCriteria)) { + $this->setSQLOrderByQuery($criteria); + + return $this; + } + + $this->sort = null; + + return $this; + } + + /** + * Set both the column and order necessary to perform an orderBy. + */ + public function setSQLOrderByQuery($criteria) + { + $this->sortDirection = 'asc'; + $this->sort = $criteria; + + $firstCharacter = $this->getSortCriteria()[0]; + + if ($firstCharacter == '-') { + $this->sort = substr($this->getSortCriteria(), 1); + $this->sortDirection = 'desc'; + } + } + /** * Sends a JSON to the consumer. * @param array $data * @param array $headers [description] - * @return Response + * @return \Illuminate\Http\JsonResponse */ public function respond($data, $headers = []) { @@ -144,6 +257,17 @@ public function respondNotFound($message = 'Not found!') ->respondWithError($message); } + /** + * Sends a response invalid query to the request. + * @param string $message + */ + public function respondInvalidQuery($message = 'Invalid query') + { + return $this->setHTTPStatusCode(500) + ->setErrorCode(40) + ->respondWithError($message); + } + /** * Sends an error when the query didn't have the right parameters for * creating an object. diff --git a/app/Http/Controllers/Api/ApiDebtController.php b/app/Http/Controllers/Api/ApiDebtController.php index c762cd4b5df..0b0d7705333 100644 --- a/app/Http/Controllers/Api/ApiDebtController.php +++ b/app/Http/Controllers/Api/ApiDebtController.php @@ -20,8 +20,13 @@ class ApiDebtController extends ApiController */ public function index(Request $request) { - $debts = auth()->user()->account->debts() - ->paginate($this->getLimitPerPage()); + try { + $debts = auth()->user()->account->debts() + ->orderBy($this->sort, $this->sortDirection) + ->paginate($this->getLimitPerPage()); + } catch (QueryException $e) { + return $this->respondInvalidQuery(); + } return DebtResource::collection($debts); } @@ -51,34 +56,9 @@ public function show(Request $request, $debtId) */ public function store(Request $request) { - // Validates basic fields to create the entry - $validator = Validator::make($request->all(), [ - 'in_debt' => [ - 'required', - 'string', - Rule::in(['yes', 'no']), - ], - 'status' => [ - 'required', - 'string', - Rule::in(['inprogress', 'completed']), - ], - 'amount' => 'required|numeric', - 'reason' => 'string|max:1000000|nullable', - 'contact_id' => 'required|integer', - ]); - - if ($validator->fails()) { - return $this->setErrorCode(32) - ->respondWithError($validator->errors()->all()); - } - - try { - $contact = Contact::where('account_id', auth()->user()->account_id) - ->where('id', $request->input('contact_id')) - ->firstOrFail(); - } catch (ModelNotFoundException $e) { - return $this->respondNotFound(); + $isvalid = $this->validateUpdate($request); + if ($isvalid !== true) { + return $isvalid; } try { @@ -109,6 +89,28 @@ public function update(Request $request, $debtId) return $this->respondNotFound(); } + $isvalid = $this->validateUpdate($request); + if ($isvalid !== true) { + return $isvalid; + } + + try { + $debt->update($request->all()); + } catch (QueryException $e) { + return $this->respondNotTheRightParameters(); + } + + return new DebtResource($debt); + } + + /** + * Validate the request for update. + * + * @param Request $request + * @return mixed + */ + private function validateUpdate(Request $request) + { // Validates basic fields to create the entry $validator = Validator::make($request->all(), [ 'in_debt' => [ @@ -132,20 +134,14 @@ public function update(Request $request, $debtId) } try { - $contact = Contact::where('account_id', auth()->user()->account_id) + Contact::where('account_id', auth()->user()->account_id) ->where('id', $request->input('contact_id')) ->firstOrFail(); } catch (ModelNotFoundException $e) { return $this->respondNotFound(); } - try { - $debt->update($request->all()); - } catch (QueryException $e) { - return $this->respondNotTheRightParameters(); - } - - return new DebtResource($debt); + return true; } /** @@ -184,6 +180,7 @@ public function debts(Request $request, $contactId) } $debts = $contact->debts() + ->orderBy($this->sort, $this->sortDirection) ->paginate($this->getLimitPerPage()); return DebtResource::collection($debts); diff --git a/app/Http/Controllers/Api/ApiGiftController.php b/app/Http/Controllers/Api/ApiGiftController.php index 4b0a98d253a..39938e2f497 100644 --- a/app/Http/Controllers/Api/ApiGiftController.php +++ b/app/Http/Controllers/Api/ApiGiftController.php @@ -19,8 +19,13 @@ class ApiGiftController extends ApiController */ public function index(Request $request) { - $gifts = auth()->user()->account->gifts() - ->paginate($this->getLimitPerPage()); + try { + $gifts = auth()->user()->account->gifts() + ->orderBy($this->sort, $this->sortDirection) + ->paginate($this->getLimitPerPage()); + } catch (QueryException $e) { + return $this->respondInvalidQuery(); + } return GiftResource::collection($gifts); } @@ -50,40 +55,9 @@ public function show(Request $request, $id) */ public function store(Request $request) { - // Validates basic fields to create the entry - $validator = Validator::make($request->all(), [ - 'is_for' => 'integer|nullable', - 'name' => 'required|string|max:255', - 'comment' => 'string|max:1000000|nullable', - 'url' => 'string|max:1000000|nullable', - 'value' => 'string|max:255', - 'is_an_idea' => 'boolean', - 'has_been_offered' => 'boolean', - 'date_offered' => 'date|nullable', - 'contact_id' => 'required|integer', - ]); - - if ($validator->fails()) { - return $this->setErrorCode(32) - ->respondWithError($validator->errors()->all()); - } - - try { - $contact = Contact::where('account_id', auth()->user()->account_id) - ->where('id', $request->input('contact_id')) - ->firstOrFail(); - } catch (ModelNotFoundException $e) { - return $this->respondNotFound(); - } - - if (! is_null($request->input('is_for'))) { - try { - $contact = Contact::where('account_id', auth()->user()->account_id) - ->where('id', $request->input('is_for')) - ->firstOrFail(); - } catch (ModelNotFoundException $e) { - return $this->respondNotFound(); - } + $isvalid = $this->validateUpdate($request); + if ($isvalid !== true) { + return $isvalid; } try { @@ -114,6 +88,33 @@ public function update(Request $request, $giftId) return $this->respondNotFound(); } + $isvalid = $this->validateUpdate($request); + if ($isvalid !== true) { + return $isvalid; + } + + try { + $gift->update($request->all()); + } catch (QueryException $e) { + return $this->respondNotTheRightParameters(); + } + + if (is_null($request->input('is_for'))) { + $gift->is_for = null; + $gift->save(); + } + + return new GiftResource($gift); + } + + /** + * Validate the request for update. + * + * @param Request $request + * @return mixed + */ + private function validateUpdate(Request $request) + { // Validates basic fields to create the entry $validator = Validator::make($request->all(), [ 'is_for' => 'integer|nullable', @@ -133,7 +134,7 @@ public function update(Request $request, $giftId) } try { - $contact = Contact::where('account_id', auth()->user()->account_id) + Contact::where('account_id', auth()->user()->account_id) ->where('id', $request->input('contact_id')) ->firstOrFail(); } catch (ModelNotFoundException $e) { @@ -142,7 +143,7 @@ public function update(Request $request, $giftId) if (! is_null($request->input('is_for'))) { try { - $contact = Contact::where('account_id', auth()->user()->account_id) + Contact::where('account_id', auth()->user()->account_id) ->where('id', $request->input('is_for')) ->firstOrFail(); } catch (ModelNotFoundException $e) { @@ -150,18 +151,7 @@ public function update(Request $request, $giftId) } } - try { - $gift->update($request->all()); - } catch (QueryException $e) { - return $this->respondNotTheRightParameters(); - } - - if (is_null($request->input('is_for'))) { - $gift->is_for = null; - $gift->save(); - } - - return new GiftResource($gift); + return true; } /** @@ -200,6 +190,7 @@ public function gifts(Request $request, $contactId) } $gifts = $contact->gifts() + ->orderBy($this->sort, $this->sortDirection) ->paginate($this->getLimitPerPage()); return GiftResource::collection($gifts); diff --git a/app/Http/Controllers/Api/ApiJournalController.php b/app/Http/Controllers/Api/ApiJournalController.php index c04f6c42c7f..f30a2a1ac82 100644 --- a/app/Http/Controllers/Api/ApiJournalController.php +++ b/app/Http/Controllers/Api/ApiJournalController.php @@ -18,8 +18,13 @@ class ApiJournalController extends ApiController */ public function index(Request $request) { - $entries = auth()->user()->account->entries() - ->paginate($this->getLimitPerPage()); + try { + $entries = auth()->user()->account->entries() + ->orderBy($this->sort, $this->sortDirection) + ->paginate($this->getLimitPerPage()); + } catch (QueryException $e) { + return $this->respondInvalidQuery(); + } return JournalResource::collection($entries); } diff --git a/app/Http/Controllers/Api/ApiNoteController.php b/app/Http/Controllers/Api/ApiNoteController.php index a9ef76fdddb..02c3ff76555 100644 --- a/app/Http/Controllers/Api/ApiNoteController.php +++ b/app/Http/Controllers/Api/ApiNoteController.php @@ -19,8 +19,13 @@ class ApiNoteController extends ApiController */ public function index(Request $request) { - $notes = auth()->user()->account->notes() - ->paginate($this->getLimitPerPage()); + try { + $notes = auth()->user()->account->notes() + ->orderBy($this->sort, $this->sortDirection) + ->paginate($this->getLimitPerPage()); + } catch (QueryException $e) { + return $this->respondInvalidQuery(); + } return NoteResource::collection($notes); } @@ -63,7 +68,7 @@ public function store(Request $request) } try { - $contact = Contact::where('account_id', auth()->user()->account_id) + Contact::where('account_id', auth()->user()->account_id) ->where('id', $request->input('contact_id')) ->firstOrFail(); } catch (ModelNotFoundException $e) { @@ -77,7 +82,7 @@ public function store(Request $request) } if ($request->get('is_favorited')) { - $note->favorited_at = \Carbon\Carbon::now(); + $note->favorited_at = now(); $note->save(); } @@ -115,7 +120,7 @@ public function update(Request $request, $noteId) } try { - $contact = Contact::where('account_id', auth()->user()->account_id) + Contact::where('account_id', auth()->user()->account_id) ->where('id', $request->input('contact_id')) ->firstOrFail(); } catch (ModelNotFoundException $e) { @@ -129,7 +134,7 @@ public function update(Request $request, $noteId) } if ($request->get('is_favorited')) { - $note->favorited_at = \Carbon\Carbon::now(); + $note->favorited_at = now(); $note->save(); } else { $note->favorited_at = null; @@ -175,6 +180,7 @@ public function notes(Request $request, $contactId) } $notes = $contact->notes() + ->orderBy($this->sort, $this->sortDirection) ->paginate($this->getLimitPerPage()); return NoteResource::collection($notes); diff --git a/app/Http/Controllers/Api/ApiReminderController.php b/app/Http/Controllers/Api/ApiReminderController.php index 1dc95ba1e35..e8b1541c443 100644 --- a/app/Http/Controllers/Api/ApiReminderController.php +++ b/app/Http/Controllers/Api/ApiReminderController.php @@ -20,8 +20,13 @@ class ApiReminderController extends ApiController */ public function index(Request $request) { - $reminders = auth()->user()->account->reminders() - ->paginate($this->getLimitPerPage()); + try { + $reminders = auth()->user()->account->reminders() + ->orderBy($this->sort, $this->sortDirection) + ->paginate($this->getLimitPerPage()); + } catch (QueryException $e) { + return $this->respondInvalidQuery(); + } return ReminderResource::collection($reminders); } @@ -51,36 +56,9 @@ public function show(Request $request, $reminderId) */ public function store(Request $request) { - // Validates basic fields to create the entry - $validator = Validator::make($request->all(), [ - 'title' => 'required|max:100000', - 'description' => 'max:1000000', - 'next_expected_date' => 'required|date', - 'frequency_type' => [ - 'required', - Rule::in(['one_time', 'day', 'month', 'year']), - ], - 'frequency_number' => 'integer', - 'contact_id' => 'required|integer', - ]); - - if ($validator->fails()) { - return $this->setErrorCode(32) - ->respondWithError($validator->errors()->all()); - } - - $date = \Carbon\Carbon::createFromFormat('Y-m-d', $request->get('next_expected_date'), auth()->user()->timezone); - if ($date->isPast()) { - return $this->setErrorCode(38) - ->respondWithError('Date should be in the future'); - } - - try { - $contact = Contact::where('account_id', auth()->user()->account_id) - ->where('id', $request->input('contact_id')) - ->firstOrFail(); - } catch (ModelNotFoundException $e) { - return $this->respondNotFound(); + $isvalid = $this->validateUpdate($request); + if ($isvalid !== true) { + return $isvalid; } try { @@ -111,6 +89,28 @@ public function update(Request $request, $reminderId) return $this->respondNotFound(); } + $isvalid = $this->validateUpdate($request); + if ($isvalid !== true) { + return $isvalid; + } + + try { + $reminder->update($request->all()); + } catch (QueryException $e) { + return $this->respondNotTheRightParameters(); + } + + return new ReminderResource($reminder); + } + + /** + * Validate the request for update. + * + * @param Request $request + * @return mixed + */ + private function validateUpdate(Request $request) + { // Validates basic fields to create the entry $validator = Validator::make($request->all(), [ 'title' => 'required|max:100000', @@ -136,20 +136,14 @@ public function update(Request $request, $reminderId) } try { - $contact = Contact::where('account_id', auth()->user()->account_id) + Contact::where('account_id', auth()->user()->account_id) ->where('id', $request->input('contact_id')) ->firstOrFail(); } catch (ModelNotFoundException $e) { return $this->respondNotFound(); } - try { - $reminder->update($request->all()); - } catch (QueryException $e) { - return $this->respondNotTheRightParameters(); - } - - return new ReminderResource($reminder); + return true; } /** @@ -188,6 +182,7 @@ public function reminders(Request $request, $contactId) } $reminders = $contact->reminders() + ->orderBy($this->sort, $this->sortDirection) ->paginate($this->getLimitPerPage()); return ReminderResource::collection($reminders); diff --git a/app/Http/Controllers/Api/ApiTagController.php b/app/Http/Controllers/Api/ApiTagController.php index a7c32d75a34..934dee69346 100644 --- a/app/Http/Controllers/Api/ApiTagController.php +++ b/app/Http/Controllers/Api/ApiTagController.php @@ -20,8 +20,13 @@ class ApiTagController extends ApiController */ public function index(Request $request) { - $tags = auth()->user()->account->tags() - ->paginate($this->getLimitPerPage()); + try { + $tags = auth()->user()->account->tags() + ->orderBy($this->sort, $this->sortDirection) + ->paginate($this->getLimitPerPage()); + } catch (QueryException $e) { + return $this->respondInvalidQuery(); + } return TagResource::collection($tags); } @@ -51,14 +56,9 @@ public function show(Request $request, $id) */ public function store(Request $request) { - // Validates basic fields to create the entry - $validator = Validator::make($request->all(), [ - 'name' => 'required|max:250', - ]); - - if ($validator->fails()) { - return $this->setErrorCode(32) - ->respondWithError($validator->errors()->all()); + $isvalid = $this->validateUpdate($request); + if ($isvalid !== true) { + return $isvalid; } try { @@ -89,14 +89,9 @@ public function update(Request $request, $id) return $this->respondNotFound(); } - // Validates basic fields to create the entry - $validator = Validator::make($request->all(), [ - 'name' => 'required|max:250', - ]); - - if ($validator->fails()) { - return $this->setErrorCode(32) - ->respondWithError($validator->errors()->all()); + $isvalid = $this->validateUpdate($request); + if ($isvalid !== true) { + return $isvalid; } try { @@ -110,6 +105,27 @@ public function update(Request $request, $id) return new TagResource($tag); } + /** + * Validate the request for update. + * + * @param Request $request + * @return mixed + */ + private function validateUpdate(Request $request) + { + // Validates basic fields to create the entry + $validator = Validator::make($request->all(), [ + 'name' => 'required|max:250', + ]); + + if ($validator->fails()) { + return $this->setErrorCode(32) + ->respondWithError($validator->errors()->all()); + } + + return true; + } + /** * Delete a tag. * @param Request $request diff --git a/app/Http/Controllers/Api/ApiTaskController.php b/app/Http/Controllers/Api/ApiTaskController.php index 1bf8f382af3..a3d26820540 100644 --- a/app/Http/Controllers/Api/ApiTaskController.php +++ b/app/Http/Controllers/Api/ApiTaskController.php @@ -19,8 +19,13 @@ class ApiTaskController extends ApiController */ public function index(Request $request) { - $tasks = auth()->user()->account->tasks() - ->paginate($this->getLimitPerPage()); + try { + $tasks = auth()->user()->account->tasks() + ->orderBy($this->sort, $this->sortDirection) + ->paginate($this->getLimitPerPage()); + } catch (QueryException $e) { + return $this->respondInvalidQuery(); + } return TaskResource::collection($tasks); } @@ -50,26 +55,9 @@ public function show(Request $request, $taskId) */ public function store(Request $request) { - // Validates basic fields to create the entry - $validator = Validator::make($request->all(), [ - 'title' => 'required|max:255', - 'description' => 'string|max:1000000', - 'completed_at' => 'date', - 'completed' => 'boolean|required', - 'contact_id' => 'required|integer', - ]); - - if ($validator->fails()) { - return $this->setErrorCode(32) - ->respondWithError($validator->errors()->all()); - } - - try { - $contact = Contact::where('account_id', auth()->user()->account_id) - ->where('id', $request->input('contact_id')) - ->firstOrFail(); - } catch (ModelNotFoundException $e) { - return $this->respondNotFound(); + $isvalid = $this->validateUpdate($request); + if ($isvalid !== true) { + return $isvalid; } try { @@ -100,6 +88,28 @@ public function update(Request $request, $taskId) return $this->respondNotFound(); } + $isvalid = $this->validateUpdate($request); + if ($isvalid !== true) { + return $isvalid; + } + + try { + $task->update($request->all()); + } catch (QueryException $e) { + return $this->respondNotTheRightParameters(); + } + + return new TaskResource($task); + } + + /** + * Validate the request for update. + * + * @param Request $request + * @return mixed + */ + private function validateUpdate(Request $request) + { // Validates basic fields to create the entry $validator = Validator::make($request->all(), [ 'title' => 'required|max:255', @@ -115,20 +125,14 @@ public function update(Request $request, $taskId) } try { - $contact = Contact::where('account_id', auth()->user()->account_id) + Contact::where('account_id', auth()->user()->account_id) ->where('id', $request->input('contact_id')) ->firstOrFail(); } catch (ModelNotFoundException $e) { return $this->respondNotFound(); } - try { - $task->update($request->all()); - } catch (QueryException $e) { - return $this->respondNotTheRightParameters(); - } - - return new TaskResource($task); + return true; } /** @@ -167,6 +171,7 @@ public function tasks(Request $request, $contactId) } $tasks = $contact->tasks() + ->orderBy($this->sort, $this->sortDirection) ->paginate($this->getLimitPerPage()); return TaskResource::collection($tasks); diff --git a/app/Http/Controllers/Api/Settings/ApiContactFieldTypeController.php b/app/Http/Controllers/Api/Settings/ApiContactFieldTypeController.php index a60ab039ea6..8dbeef93ff6 100644 --- a/app/Http/Controllers/Api/Settings/ApiContactFieldTypeController.php +++ b/app/Http/Controllers/Api/Settings/ApiContactFieldTypeController.php @@ -50,18 +50,9 @@ public function show(Request $request, $contactFieldTypeId) */ public function store(Request $request) { - // Validates basic fields to create the entry - $validator = Validator::make($request->all(), [ - 'name' => 'required|max:255', - 'fontawesome_icon' => 'nullable|max:255', - 'protocol' => 'nullable|max:255', - 'delible' => 'integer', - 'type' => 'nullable|max:255', - ]); - - if ($validator->fails()) { - return $this->setErrorCode(32) - ->respondWithError($validator->errors()->all()); + $isvalid = $this->validateUpdate($request); + if ($isvalid !== true) { + return $isvalid; } try { @@ -92,18 +83,9 @@ public function update(Request $request, $contactFieldTypeId) return $this->respondNotFound(); } - // Validates basic fields to create the entry - $validator = Validator::make($request->all(), [ - 'name' => 'required|max:255', - 'fontawesome_icon' => 'nullable|max:255', - 'protocol' => 'nullable|max:255', - 'delible' => 'integer', - 'type' => 'nullable|max:255', - ]); - - if ($validator->fails()) { - return $this->setErrorCode(32) - ->respondWithError($validator->errors()->all()); + $isvalid = $this->validateUpdate($request); + if ($isvalid !== true) { + return $isvalid; } // Update the contactfieldtype itself @@ -124,6 +106,31 @@ public function update(Request $request, $contactFieldTypeId) return new ContactFieldTypeResource($contactFieldType); } + /** + * Validate the request for update. + * + * @param Request $request + * @return mixed + */ + private function validateUpdate(Request $request) + { + // Validates basic fields to create the entry + $validator = Validator::make($request->all(), [ + 'name' => 'required|max:255', + 'fontawesome_icon' => 'nullable|max:255', + 'protocol' => 'nullable|max:255', + 'delible' => 'integer', + 'type' => 'nullable|max:255', + ]); + + if ($validator->fails()) { + return $this->setErrorCode(32) + ->respondWithError($validator->errors()->all()); + } + + return true; + } + /** * Delete an contactfieldtype. * @param Request $request diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php index 9eea6fc4208..b2e11996219 100644 --- a/app/Http/Controllers/Auth/LoginController.php +++ b/app/Http/Controllers/Auth/LoginController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers\Auth; +use App\Account; use App\Http\Controllers\Controller; use Illuminate\Foundation\Auth\AuthenticatesUsers; @@ -36,4 +37,14 @@ public function __construct() { $this->middleware('guest', ['except' => 'logout']); } + + public function showLoginOrRegister() + { + $first = ! Account::hasAny(); + if ($first) { + return redirect('/register'); + } + + return $this->showLoginForm(); + } } diff --git a/app/Http/Controllers/Auth/PasswordChangeController.php b/app/Http/Controllers/Auth/PasswordChangeController.php index 96638fe3f96..67786a8b149 100644 --- a/app/Http/Controllers/Auth/PasswordChangeController.php +++ b/app/Http/Controllers/Auth/PasswordChangeController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers\Auth; use Auth; +use App\User; use Illuminate\Support\Str; use UnexpectedValueException; use App\Http\Requests\Request; diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php index 782feac9a7e..87bf3d3e654 100644 --- a/app/Http/Controllers/Auth/RegisterController.php +++ b/app/Http/Controllers/Auth/RegisterController.php @@ -6,7 +6,6 @@ use App\User; use Validator; use App\Account; -use Carbon\Carbon; use App\Jobs\SendNewUserAlert; use App\Http\Controllers\Controller; use Illuminate\Foundation\Auth\RegistersUsers; @@ -50,11 +49,12 @@ public function __construct() */ public function showRegistrationForm() { - if (config('monica.disable_signup') == 'true') { + $first = ! Account::hasAny(); + if (config('monica.disable_signup') == 'true' && ! $first) { abort(403, trans('auth.signup_disabled')); } - return view('auth.register'); + return view('auth.register', ['first' => $first]); } /** @@ -81,26 +81,14 @@ protected function validator(array $data) */ protected function create(array $data) { - // create a new account - $account = new Account; - $account->api_key = str_random(30); - $account->created_at = Carbon::now(); - $account->save(); + $first = ! Account::hasAny(); + $account = Account::createDefault($data['first_name'], $data['last_name'], $data['email'], $data['password']); + $user = $account->users()->first(); - $user = new User; - $user->first_name = $data['first_name']; - $user->last_name = $data['last_name']; - $user->email = $data['email']; - $user->password = bcrypt($data['password']); - $user->timezone = config('app.timezone'); - $user->created_at = Carbon::now(); - $user->account_id = $account->id; - $user->save(); - - $account->populateContactFieldTypeTable(); - - // send me an alert - dispatch(new SendNewUserAlert($user)); + if (! $first) { + // send me an alert + dispatch(new SendNewUserAlert($user)); + } return $user; } diff --git a/app/Http/Controllers/Contacts/AddressesController.php b/app/Http/Controllers/Contacts/AddressesController.php index 3f0f79e55b8..7b79c19b126 100644 --- a/app/Http/Controllers/Contacts/AddressesController.php +++ b/app/Http/Controllers/Contacts/AddressesController.php @@ -25,7 +25,6 @@ public function get(Contact $contact) 'googleMapAddress' => $address->getGoogleMapAddress(), 'address' => $address->getFullAddress(), 'country_id' => $address->country_id, - 'name' => $address->name, 'street' => $address->street, 'city' => $address->city, 'province' => $address->province, @@ -51,7 +50,7 @@ public function getCountries() */ public function store(AddressesRequest $request, Contact $contact) { - $address = $contact->addresses()->create([ + return $contact->addresses()->create([ 'account_id' => auth()->user()->account->id, 'country_id' => ($request->get('country_id') == 0 ? null : $request->get('country_id')), 'name' => ($request->get('name') == '' ? null : $request->get('name')), @@ -60,8 +59,6 @@ public function store(AddressesRequest $request, Contact $contact) 'province' => ($request->get('province') == '' ? null : $request->get('province')), 'postal_code' => ($request->get('postal_code') == '' ? null : $request->get('postal_code')), ]); - - return $address; } /** diff --git a/app/Http/Controllers/Contacts/ContactFieldsController.php b/app/Http/Controllers/Contacts/ContactFieldsController.php index 2948128676e..862e2c93533 100644 --- a/app/Http/Controllers/Contacts/ContactFieldsController.php +++ b/app/Http/Controllers/Contacts/ContactFieldsController.php @@ -57,6 +57,8 @@ public function storeContactField(ContactFieldsRequest $request, Contact $contac ] ); + $contact->updateGravatar(); + return $contactField; } @@ -75,11 +77,15 @@ public function editContactField(ContactFieldsRequest $request, Contact $contact ] ); + $contact->updateGravatar(); + return $contactField; } public function destroyContactField(Contact $contact, ContactField $contactField) { $contactField->delete(); + + $contact->updateGravatar(); } } diff --git a/app/Http/Controllers/Contacts/GiftsController.php b/app/Http/Controllers/Contacts/GiftsController.php index 68a99ff9684..0fd9afbc0b3 100644 --- a/app/Http/Controllers/Contacts/GiftsController.php +++ b/app/Http/Controllers/Contacts/GiftsController.php @@ -29,13 +29,13 @@ public function get(Contact $contact) 'comment' => $gift->comment, 'url' => $gift->url, 'value' => MoneyHelper::format($gift->value), - 'does_value_exist' => $gift->value ? true : false, + 'does_value_exist' => (bool) $gift->value, 'is_an_idea' => $gift->is_an_idea, 'has_been_offered' => $gift->has_been_offered, 'has_been_received' => $gift->has_been_received, - 'offered_at' => \App\Helpers\DateHelper::getShortDate($gift->offered_at, auth()->user()->locale), - 'received_at' => \App\Helpers\DateHelper::getShortDate($gift->received_at, auth()->user()->locale), - 'created_at' => \App\Helpers\DateHelper::getShortDate($gift->created_at, auth()->user()->locale), + 'offered_at' => \App\Helpers\DateHelper::getShortDate($gift->offered_at), + 'received_at' => \App\Helpers\DateHelper::getShortDate($gift->received_at), + 'created_at' => \App\Helpers\DateHelper::getShortDate($gift->created_at), 'edit' => false, 'show_comment' => false, ]; @@ -96,7 +96,8 @@ public function store(GiftsRequest $request, Contact $contact) ); if ($request->get('has_recipient')) { - $gift->forRecipient($request->get('recipient'))->save(); + $gift->is_for = $request->get('recipient'); + $gift->save(); } $contact->logEvent('gift', $gift->id, 'create'); @@ -144,7 +145,8 @@ public function update(GiftsRequest $request, Contact $contact, Gift $gift) ); if ($request->get('has_recipient')) { - $gift->forRecipient($request->get('recipient'))->save(); + $gift->is_for = $request->get('recipient'); + $gift->save(); } $contact->logEvent('gift', $gift->id, 'update'); diff --git a/app/Http/Controllers/Contacts/IntroductionsController.php b/app/Http/Controllers/Contacts/IntroductionsController.php index cb7f55c6b03..5a0f8cb73fd 100644 --- a/app/Http/Controllers/Contacts/IntroductionsController.php +++ b/app/Http/Controllers/Contacts/IntroductionsController.php @@ -2,9 +2,11 @@ namespace App\Http\Controllers\Contacts; +use App\Gift; use App\Contact; use App\Http\Controllers\Controller; use App\Http\Requests\People\IntroductionsRequest; +use Illuminate\Database\Eloquent\ModelNotFoundException; class IntroductionsController extends Controller { @@ -34,7 +36,7 @@ public function update(IntroductionsRequest $request, Contact $contact) // place if ($request->get('metThroughId') != 0) { try { - $metThroughContact = Contact::where('account_id', auth()->user()->account_id) + Contact::where('account_id', auth()->user()->account_id) ->where('id', $request->get('metThroughId')) ->firstOrFail(); } catch (ModelNotFoundException $e) { @@ -52,7 +54,7 @@ public function update(IntroductionsRequest $request, Contact $contact) $specialDate = $contact->setSpecialDate('first_met', $request->input('first_met_year'), $request->input('first_met_month'), $request->input('first_met_day')); if ($request->addReminder == 'on') { - $newReminder = $specialDate->setReminder('year', 1, trans('people.introductions_reminder_title', ['name' => $contact->first_name])); + $specialDate->setReminder('year', 1, trans('people.introductions_reminder_title', ['name' => $contact->first_name])); } } diff --git a/app/Http/Controllers/Contacts/KidsController.php b/app/Http/Controllers/Contacts/KidsController.php index aec81b262a4..940e564e26b 100644 --- a/app/Http/Controllers/Contacts/KidsController.php +++ b/app/Http/Controllers/Contacts/KidsController.php @@ -31,7 +31,8 @@ public function create(Contact $contact) { return view('people.dashboard.kids.add') ->withContact($contact) - ->withKid(new Contact); + ->withKid(new Contact) + ->withGenders(auth()->user()->account->genders); } /** @@ -43,15 +44,13 @@ public function create(Contact $contact) */ public function store(KidsRequest $request, Contact $contact) { - $contactToSaveTheReminderTo = $contact; - // this is a real contact, not just a significant other if ($request->get('realContact')) { $kid = Contact::create( $request->only([ 'first_name', 'last_name', - 'gender', + 'gender_id', ]) + [ 'account_id' => $contact->account_id, @@ -66,7 +65,7 @@ public function store(KidsRequest $request, Contact $contact) $request->only([ 'first_name', 'last_name', - 'gender', + 'gender_id', ]) + [ 'account_id' => $contact->account_id, @@ -82,14 +81,15 @@ public function store(KidsRequest $request, Contact $contact) // birthdate $kid->removeSpecialDate('birthdate'); switch ($request->input('birthdate')) { - case 'unknown': - break; case 'approximate': $specialDate = $kid->setSpecialDateFromAge('birthdate', $request->input('age')); break; case 'exact': $specialDate = $kid->setSpecialDate('birthdate', $request->input('birthdate_year'), $request->input('birthdate_month'), $request->input('birthdate_day')); - $newReminder = $specialDate->setReminder('year', 1, trans('people.people_add_birthday_reminder', ['name' => $kid->first_name])); + $specialDate->setReminder('year', 1, trans('people.people_add_birthday_reminder', ['name' => $kid->first_name])); + break; + case 'unknown': + default: break; } @@ -112,7 +112,7 @@ public function storeExistingContact(ExistingKidsRequest $request, Contact $cont $kid->isTheOffspringOf($contact, true); return redirect('/people/'.$contact->id) - ->with('success', trans('people.significant_other_add_success')); + ->with('success', trans('people.kids_add_success')); } /** @@ -126,7 +126,8 @@ public function edit(Contact $contact, Contact $kid) { return view('people.dashboard.kids.edit') ->withContact($contact) - ->withKid($kid); + ->withKid($kid) + ->withGenders(auth()->user()->account->genders); } /** @@ -134,7 +135,7 @@ public function edit(Contact $contact, Contact $kid) * * @param KidsRequest $request * @param Contact $contact - * @param Kid $kid + * @param Contact $kid * @return \Illuminate\Http\Response */ public function update(KidsRequest $request, Contact $contact, Contact $kid) @@ -143,7 +144,7 @@ public function update(KidsRequest $request, Contact $contact, Contact $kid) $request->only([ 'first_name', 'last_name', - 'gender', + 'gender_id', ]) + [ 'account_id' => $contact->account_id, @@ -153,14 +154,15 @@ public function update(KidsRequest $request, Contact $contact, Contact $kid) // birthdate $kid->removeSpecialDate('birthdate'); switch ($request->input('birthdate')) { - case 'unknown': - break; case 'approximate': $specialDate = $kid->setSpecialDateFromAge('birthdate', $request->input('age')); break; case 'exact': $specialDate = $kid->setSpecialDate('birthdate', $request->input('birthdate_year'), $request->input('birthdate_month'), $request->input('birthdate_day')); - $newReminder = $specialDate->setReminder('year', 1, trans('people.people_add_birthday_reminder', ['name' => $kid->first_name])); + $specialDate->setReminder('year', 1, trans('people.people_add_birthday_reminder', ['name' => $kid->first_name])); + break; + case 'unknown': + default: break; } @@ -172,7 +174,7 @@ public function update(KidsRequest $request, Contact $contact, Contact $kid) * Remove the specified resource from storage. * * @param Contact $contact - * @param Kid $kid + * @param Contact $kid * @return \Illuminate\Http\Response */ public function destroy(Contact $contact, Contact $kid) diff --git a/app/Http/Controllers/Contacts/NotesController.php b/app/Http/Controllers/Contacts/NotesController.php index c50fbb24105..51950295dfc 100644 --- a/app/Http/Controllers/Contacts/NotesController.php +++ b/app/Http/Controllers/Contacts/NotesController.php @@ -58,7 +58,7 @@ public function toggle(NoteToggleRequest $request, Contact $contact, Note $note) $note->is_favorited = false; } else { $note->is_favorited = true; - $note->favorited_at = \Carbon\Carbon::now(); + $note->favorited_at = now(); } $contact->logEvent('note', $note->id, 'update'); diff --git a/app/Http/Controllers/Contacts/PetsController.php b/app/Http/Controllers/Contacts/PetsController.php index 4b4e4531951..02fddb11dfc 100644 --- a/app/Http/Controllers/Contacts/PetsController.php +++ b/app/Http/Controllers/Contacts/PetsController.php @@ -69,7 +69,7 @@ public function store(PetsRequest $request, Contact $contact) ] ); - return $data = [ + return [ 'id' => $pet->id, 'name' => $pet->name, 'pet_category_id' => $pet->pet_category_id, @@ -93,7 +93,7 @@ public function update(PetsRequest $request, Contact $contact, Pet $pet) ] ); - return $data = [ + return [ 'id' => $pet->id, 'name' => $pet->name, 'pet_category_id' => $pet->pet_category_id, diff --git a/app/Http/Controllers/Contacts/RelationshipsController.php b/app/Http/Controllers/Contacts/RelationshipsController.php index d63abcb87fe..b5a024950df 100644 --- a/app/Http/Controllers/Contacts/RelationshipsController.php +++ b/app/Http/Controllers/Contacts/RelationshipsController.php @@ -32,7 +32,8 @@ public function create(Contact $contact) { return view('people.relationship.add') ->withContact($contact) - ->withPartner(new Contact); + ->withPartner(new Contact) + ->withGenders(auth()->user()->account->genders); } /** @@ -50,7 +51,7 @@ public function store(RelationshipsRequest $request, Contact $contact) $request->only([ 'first_name', 'last_name', - 'gender', + 'gender_id', ]) + [ 'account_id' => $contact->account_id, @@ -65,7 +66,7 @@ public function store(RelationshipsRequest $request, Contact $contact) $request->only([ 'first_name', 'last_name', - 'gender', + 'gender_id', ]) + [ 'account_id' => $contact->account_id, @@ -81,14 +82,15 @@ public function store(RelationshipsRequest $request, Contact $contact) // birthdate $partner->removeSpecialDate('birthdate'); switch ($request->input('birthdate')) { - case 'unknown': - break; case 'approximate': $specialDate = $partner->setSpecialDateFromAge('birthdate', $request->input('age')); break; case 'exact': $specialDate = $partner->setSpecialDate('birthdate', $request->input('birthdate_year'), $request->input('birthdate_month'), $request->input('birthdate_day')); - $newReminder = $specialDate->setReminder('year', 1, trans('people.people_add_birthday_reminder', ['name' => $partner->first_name])); + $specialDate->setReminder('year', 1, trans('people.people_add_birthday_reminder', ['name' => $partner->first_name])); + break; + case 'unknown': + default: break; } @@ -125,7 +127,8 @@ public function edit(Contact $contact, Contact $partner) { return view('people.relationship.edit') ->withContact($contact) - ->withPartner($partner); + ->withPartner($partner) + ->withGenders(auth()->user()->account->genders); } /** @@ -142,7 +145,7 @@ public function update(RelationshipsRequest $request, Contact $contact, Contact $request->only([ 'first_name', 'last_name', - 'gender', + 'gender_id', ]) + [ 'account_id' => $contact->account_id, @@ -161,14 +164,15 @@ public function update(RelationshipsRequest $request, Contact $contact, Contact // birthdate $partner->removeSpecialDate('birthdate'); switch ($request->input('birthdate')) { - case 'unknown': - break; case 'approximate': $specialDate = $partner->setSpecialDateFromAge('birthdate', $request->input('age')); break; case 'exact': $specialDate = $partner->setSpecialDate('birthdate', $request->input('birthdate_year'), $request->input('birthdate_month'), $request->input('birthdate_day')); - $newReminder = $specialDate->setReminder('year', 1, trans('people.people_add_birthday_reminder', ['name' => $partner->first_name])); + $specialDate->setReminder('year', 1, trans('people.people_add_birthday_reminder', ['name' => $partner->first_name])); + break; + case 'unknown': + default: break; } diff --git a/app/Http/Controllers/Contacts/RemindersController.php b/app/Http/Controllers/Contacts/RemindersController.php index 65f2c06975e..e51cd4d2cfc 100644 --- a/app/Http/Controllers/Contacts/RemindersController.php +++ b/app/Http/Controllers/Contacts/RemindersController.php @@ -54,6 +54,8 @@ public function store(RemindersRequest $request, Contact $contact) + ['account_id' => $contact->account_id] ); + $reminder->scheduleNotifications(); + $contact->logEvent('reminder', $reminder->id, 'create'); return redirect('/people/'.$contact->id) @@ -107,6 +109,9 @@ public function update(RemindersRequest $request, Contact $contact, Reminder $re + ['account_id' => $contact->account_id] ); + $reminder->purgeNotifications(); + $reminder->scheduleNotifications(); + $contact->logEvent('reminder', $reminder->id, 'update'); return redirect('/people/'.$contact->id) @@ -127,6 +132,7 @@ public function destroy(Contact $contact, $reminderId) return redirect('/people/'); } + $reminder->purgeNotifications(); $reminder->delete(); $contact->events()->forObject($reminder)->get()->each->delete(); diff --git a/app/Http/Controllers/Contacts/TagsController.php b/app/Http/Controllers/Contacts/TagsController.php index 32ba6bc053e..2a27e0cb5c1 100644 --- a/app/Http/Controllers/Contacts/TagsController.php +++ b/app/Http/Controllers/Contacts/TagsController.php @@ -11,9 +11,9 @@ class TagsController extends Controller /** * Update the specified resource in storage. * - * @param GiftsRequest $request + * @param TagsRequest $request * @param Contact $contact - * @param Gift $gift + * * @return \Illuminate\Http\Response */ public function update(TagsRequest $request, Contact $contact) @@ -26,22 +26,14 @@ public function update(TagsRequest $request, Contact $contact) // if we receive an empty string, that means all tags have been removed. if ($request->input('tags') == '') { - $contact->tags()->detach(); + $contact->unsetTags(); return response()->json(['status' => 'no', 'tags' => '']); } - $tagsIDs = []; $tagsWithIdAndSlug = []; foreach ($tags as $tag) { - $tag = auth()->user()->account->tags()->firstOrCreate([ - 'name' => $tag, - ]); - - $tag->name_slug = str_slug($tag->name); - $tag->save(); - - $tagsIDs[$tag->id] = ['account_id' => auth()->user()->account_id]; + $tag = $contact->setTag($tag); // this is passed back in json to JS array_push($tagsWithIdAndSlug, [ @@ -50,8 +42,6 @@ public function update(TagsRequest $request, Contact $contact) ]); } - $contact->tags()->sync($tagsIDs); - $response = [ 'status' => 'yes', 'tags' => $tagsWithIdAndSlug, diff --git a/app/Http/Controllers/Contacts/TasksController.php b/app/Http/Controllers/Contacts/TasksController.php index c53cef63f28..9df7ae660d8 100644 --- a/app/Http/Controllers/Contacts/TasksController.php +++ b/app/Http/Controllers/Contacts/TasksController.php @@ -72,7 +72,7 @@ public function toggle(TaskToggleRequest $request, Contact $contact, Task $task) $task->completed = false; } else { $task->completed = true; - $task->completed_at = \Carbon\Carbon::now(); + $task->completed_at = now(); } $contact->logEvent('task', $task->id, 'update'); diff --git a/app/Http/Controllers/ContactsController.php b/app/Http/Controllers/ContactsController.php index 7d098f49105..180d21981e8 100644 --- a/app/Http/Controllers/ContactsController.php +++ b/app/Http/Controllers/ContactsController.php @@ -9,7 +9,9 @@ use App\Contact; use App\ContactFieldType; use App\Jobs\ResizeAvatars; +use App\Helpers\VCardHelper; use Illuminate\Http\Request; +use Illuminate\Database\QueryException; use Illuminate\Support\Facades\Storage; class ContactsController extends Controller @@ -29,12 +31,12 @@ public function index(Request $request) $user->updateContactViewPreference($sort); } - $date_flag = false; + $dateFlag = false; if (str_contains($sort, 'lastactivitydate')) { $date_sort = str_after($sort, 'lastactivitydate'); $sort = 'firstnameAZ'; - $date_flag = true; + $dateFlag = true; } $tags = null; @@ -82,7 +84,7 @@ public function index(Request $request) $contacts = $user->account->contacts()->real()->sortedBy($sort)->get(); } - if ($date_flag) { + if ($dateFlag) { foreach ($contacts as $contact) { $contact['sort_date'] = $contact->getLastActivityDate(); } @@ -108,7 +110,11 @@ public function index(Request $request) */ public function create() { - return view('people.create'); + $data = [ + 'genders' => auth()->user()->account->genders, + ]; + + return view('people.create', $data); } public function missing() @@ -127,7 +133,7 @@ public function store(Request $request) $validator = Validator::make($request->all(), [ 'first_name' => 'required|max:50', 'last_name' => 'nullable|max:100', - 'gender' => 'required', + 'gender' => 'required|integer', ]); if ($validator->fails()) { @@ -138,7 +144,7 @@ public function store(Request $request) $contact = new Contact; $contact->account_id = Auth::user()->account_id; - $contact->gender = $request->input('gender'); + $contact->gender_id = $request->input('gender'); $contact->first_name = $request->input('first_name'); $contact->last_name = $request->input('last_name', null); @@ -178,7 +184,7 @@ public function show(Contact $contact) $reminders = $contact->getRemindersAboutRelatives(); - $contact->last_consulted_at = \Carbon\Carbon::now(auth()->user()->timezone); + $contact->last_consulted_at = now(auth()->user()->timezone); $contact->save(); return view('people.profile') @@ -194,8 +200,21 @@ public function show(Contact $contact) */ public function edit(Contact $contact) { + $age = (string) (! is_null($contact->birthdate) ? $contact->birthdate->getAge() : 0); + $birthdate = ! is_null($contact->birthdate) ? $contact->birthdate->date->format('Y-m-d') : now()->format('Y-m-d'); + $day = ! is_null($contact->birthdate) ? $contact->birthdate->date->day : now()->day; + $month = ! is_null($contact->birthdate) ? $contact->birthdate->date->month : now()->month; + return view('people.edit') - ->withContact($contact); + ->withContact($contact) + ->withDays(\App\Helpers\DateHelper::getListOfDays()) + ->withMonths(\App\Helpers\DateHelper::getListOfMonths()) + ->withBirthdayState($contact->getBirthdayState()) + ->withBirthdate($birthdate) + ->withDay($day) + ->withMonth($month) + ->withAge($age) + ->withGenders(auth()->user()->account->genders); } /** @@ -212,6 +231,7 @@ public function update(Request $request, Contact $contact) 'lastname' => 'max:100', 'gender' => 'required', 'file' => 'max:10240', + 'birthdate' => 'required|string', ]); if ($validator->fails()) { @@ -220,9 +240,13 @@ public function update(Request $request, Contact $contact) ->withErrors($validator); } - $contact->gender = $request->input('gender'); - $contact->first_name = $request->input('firstname'); - $contact->last_name = $request->input('lastname'); + if (! $contact->setName($request->input('firstname'), $request->input('lastname'))) { + return back() + ->withInput() + ->withErrors('There has been a problem with saving the name.'); + } + + $contact->gender_id = $request->input('gender'); if ($request->file('avatar') != '') { $contact->has_avatar = true; @@ -248,7 +272,7 @@ public function update(Request $request, Contact $contact) $contact->save(); - // Saves birthdate if defined + // Handling the case of the birthday $contact->removeSpecialDate('birthdate'); switch ($request->input('birthdate')) { case 'unknown': @@ -256,8 +280,24 @@ public function update(Request $request, Contact $contact) case 'approximate': $specialDate = $contact->setSpecialDateFromAge('birthdate', $request->input('age')); break; + case 'almost': + $specialDate = $contact->setSpecialDate( + 'birthdate', + 0, + $request->input('month'), + $request->input('day') + ); + $newReminder = $specialDate->setReminder('year', 1, trans('people.people_add_birthday_reminder', ['name' => $contact->first_name])); + break; case 'exact': - $specialDate = $contact->setSpecialDate('birthdate', $request->input('birthdate_year'), $request->input('birthdate_month'), $request->input('birthdate_day')); + $birthdate = $request->input('birthdayDate'); + $birthdate = new \Carbon\Carbon($birthdate); + $specialDate = $contact->setSpecialDate( + 'birthdate', + $birthdate->year, + $birthdate->month, + $birthdate->day + ); $newReminder = $specialDate->setReminder('year', 1, trans('people.people_add_birthday_reminder', ['name' => $contact->first_name])); break; } @@ -266,19 +306,7 @@ public function update(Request $request, Contact $contact) dispatch(new ResizeAvatars($contact)); - // for performance reasons, we check if a gravatar exists for this email - // address. if it does, we store the gravatar url in the database. - // while this is not ideal because the gravatar can change, at least we - // won't make constant call to gravatar to load the avatar on every - // page load. - $response = $contact->getGravatar(250); - if ($response != false and is_string($response)) { - $contact->gravatar_url = $response; - $contact->save(); - } else { - $contact->gravatar_url = null; - $contact->save(); - } + $contact->updateGravatar(); return redirect('/people/'.$contact->id) ->with('success', trans('people.information_edit_success')); @@ -297,22 +325,15 @@ public function delete(Request $request, Contact $contact) // this because I'll add more objects related to contacts in the future // and I don't want to have to think of deleting a row that matches a // contact. + // $tables = DB::select('SELECT table_name FROM information_schema.tables WHERE table_schema="monica"'); foreach ($tables as $table) { $tableName = $table->table_name; - $tableData = DB::table($tableName)->get(); - - $contactIdRowExists = false; - foreach ($tableData as $data) { - foreach ($data as $columnName => $value) { - if ($columnName == 'contact_id') { - $contactIdRowExists = true; - } - } - } - if ($contactIdRowExists == true) { + try { DB::table($tableName)->where('contact_id', $contact->id)->delete(); + } catch (QueryException $e) { + continue; } } @@ -424,7 +445,7 @@ public function search(Request $request) ]); })->get(); } else { - $results = Contact::search($needle, $accountId); + $results = Contact::search($needle, $accountId, 20, 'created_at'); } if (count($results) !== 0) { @@ -433,4 +454,20 @@ public function search(Request $request) return ['noResults' => trans('people.people_search_no_results')]; } } + + /** + * Download the contact as vCard. + * @param Contact $contact + * @return + */ + public function vCard(Contact $contact) + { + if (config('app.debug')) { + \Debugbar::disable(); + } + + $vcard = VCardHelper::prepareVCard($contact); + + return $vcard->download(); + } } diff --git a/app/Http/Controllers/DashboardController.php b/app/Http/Controllers/DashboardController.php index 0dcd79ec48b..ccb29b7dd9f 100644 --- a/app/Http/Controllers/DashboardController.php +++ b/app/Http/Controllers/DashboardController.php @@ -6,6 +6,7 @@ use App\Debt; use App\Contact; use Illuminate\Http\Request; +use Illuminate\Support\Collection; class DashboardController extends Controller { diff --git a/app/Http/Controllers/JournalController.php b/app/Http/Controllers/JournalController.php index 1d0d454c964..6b3c637506d 100644 --- a/app/Http/Controllers/JournalController.php +++ b/app/Http/Controllers/JournalController.php @@ -57,7 +57,7 @@ public function list() // I need the pagination items when I send back the array. // There is probably a simpler way to achieve this. - $jsonToSendBack = [ + return [ 'total' => $journalEntries->total(), 'per_page' => $journalEntries->perPage(), 'current_page' => $journalEntries->currentPage(), @@ -65,8 +65,6 @@ public function list() 'prev_page_url' => $journalEntries->previousPageUrl(), 'data' => $entries, ]; - - return $jsonToSendBack; } /** @@ -76,9 +74,7 @@ public function list() */ public function get(JournalEntry $journalEntry) { - $object = $journalEntry->getObjectData(); - - return $object; + return $journalEntry->getObjectData(); } /** @@ -87,14 +83,14 @@ public function get(JournalEntry $journalEntry) public function storeDay(DaysRequest $request) { $day = auth()->user()->account->days()->create([ - 'date' => \Carbon\Carbon::now(auth()->user()->timezone), + 'date' => now(auth()->user()->timezone), 'rate' => $request->get('rate'), ]); // Log a journal entry $journalEntry = (new JournalEntry)->add($day); - $data = [ + return [ 'id' => $journalEntry->id, 'date' => $journalEntry->date, 'journalable_id' => $journalEntry->journalable_id, @@ -102,8 +98,6 @@ public function storeDay(DaysRequest $request) 'object' => $journalEntry->getObjectData(), 'show_calendar' => true, ]; - - return $data; } /** @@ -144,7 +138,7 @@ public function create() * Saves the journal entry. * * @param Request $request - * @return Response + * @return \Illuminate\Http\RedirectResponse */ public function save(Request $request) { @@ -169,7 +163,7 @@ public function save(Request $request) $entry->save(); // Log a journal entry - $journalEntry = (new JournalEntry)->add($entry); + (new JournalEntry)->add($entry); return redirect()->route('journal.index'); } diff --git a/app/Http/Controllers/Settings/GendersController.php b/app/Http/Controllers/Settings/GendersController.php new file mode 100644 index 00000000000..14a659f8b5d --- /dev/null +++ b/app/Http/Controllers/Settings/GendersController.php @@ -0,0 +1,100 @@ +user()->account->genders; + + foreach ($genders as $gender) { + $data = [ + 'id' => $gender->id, + 'name' => $gender->name, + 'numberOfContacts' => $gender->contacts->count(), + ]; + $gendersData->push($data); + } + + return $gendersData; + } + + /** + * Store the gender. + */ + public function storeGender(Request $request) + { + Validator::make($request->all(), [ + 'name' => 'required|max:255', + ])->validate(); + + $gender = auth()->user()->account->genders()->create( + $request->only([ + 'name', + ]) + + [ + 'account_id' => auth()->user()->account->id, + ] + ); + + return [ + 'id' => $gender->id, + 'name' => $gender->name, + 'numberOfContacts' => $gender->contacts->count(), + ]; + } + + /** + * Update the given gender. + */ + public function updateGender(GendersRequest $request, Gender $gender) + { + $gender->update( + $request->only([ + 'name', + ]) + ); + + return $gender; + } + + /** + * Destroy a gender type. + */ + public function destroyAndReplaceGender(GendersRequest $request, Gender $genderToDelete, $genderToReplaceWithId) + { + try { + $genderToReplaceWith = Gender::where('account_id', auth()->user()->account_id) + ->where('id', $genderToReplaceWithId) + ->firstOrFail(); + } catch (ModelNotFoundException $e) { + throw new Exception(trans('settings.personalization_genders_modal_error')); + } + + // We get the new gender to associate the contacts with. + auth()->user()->account->replaceGender($genderToDelete, $genderToReplaceWith); + + $genderToDelete->delete(); + } + + /** + * Destroy a gender type. + */ + public function destroyGender(GendersRequest $request, Gender $gender) + { + $gender->delete(); + } +} diff --git a/app/Http/Controllers/Settings/MultiFAController.php b/app/Http/Controllers/Settings/MultiFAController.php index eb16866855d..524029dec89 100644 --- a/app/Http/Controllers/Settings/MultiFAController.php +++ b/app/Http/Controllers/Settings/MultiFAController.php @@ -2,8 +2,8 @@ namespace App\Http\Controllers\Settings; -use Google2FA; use Illuminate\Http\Request; +use PragmaRX\Google2FA\Google2FA; use App\Http\Controllers\Controller; use Illuminate\Foundation\Auth\RedirectsUsers; use PragmaRX\Google2FALaravel\Support\Authenticator; @@ -17,7 +17,7 @@ class MultiFAController extends Controller /** * Session var name to store secret code. */ - private const SESSION_TFA_SECRET = '2FA_secret'; + private $SESSION_TFA_SECRET = '2FA_secret'; /** * Create a new authentication controller instance. @@ -41,14 +41,14 @@ public function enableTwoFactor(Request $request) $user = $request->user(); //generate image for QR barcode - $imageDataUri = Google2FA::getQRCodeInline( + $imageDataUri = app('pragmarx.google2fa')->getQRCodeInline( $request->getHttpHost(), $user->email, $secret, 200 ); - $request->session()->put(self::SESSION_TFA_SECRET, $secret); + $request->session()->put($this->SESSION_TFA_SECRET, $secret); return view('settings.security.2fa-enable', ['image' => $imageDataUri, 'secret' => $secret]); } @@ -64,7 +64,7 @@ public function validateTwoFactor(Request $request) ]); //retrieve secret - $secret = $request->session()->pull(self::SESSION_TFA_SECRET); + $secret = $request->session()->pull($this->SESSION_TFA_SECRET); $authenticator = app(Authenticator::class)->boot($request); diff --git a/app/Http/Controllers/Settings/PersonalizationController.php b/app/Http/Controllers/Settings/PersonalizationController.php index bf44bd479e3..c7040921208 100644 --- a/app/Http/Controllers/Settings/PersonalizationController.php +++ b/app/Http/Controllers/Settings/PersonalizationController.php @@ -6,6 +6,7 @@ use App\ContactFieldType; use Illuminate\Http\Request; use App\Http\Controllers\Controller; +use Illuminate\Database\Eloquent\ModelNotFoundException; class PersonalizationController extends Controller { @@ -40,7 +41,7 @@ public function storeContactFieldType(Request $request) 'protocol' => 'max:255|nullable', ])->validate(); - $contactFieldType = auth()->user()->account->contactFieldTypes()->create( + return auth()->user()->account->contactFieldTypes()->create( $request->only([ 'name', 'protocol', @@ -50,8 +51,6 @@ public function storeContactFieldType(Request $request) 'account_id' => auth()->user()->account->id, ] ); - - return $contactFieldType; } /** @@ -68,7 +67,7 @@ public function editContactFieldType(Request $request, $contactFieldTypeId) ->where('id', $contactFieldTypeId) ->firstOrFail(); } catch (ModelNotFoundException $e) { - return $this->respond([ + return response()->json([ 'errors' => [ 'message' => trans('app.error_unauthorized'), ], @@ -94,6 +93,9 @@ public function editContactFieldType(Request $request, $contactFieldTypeId) return $contactFieldType; } + /** + * Destroy the contact field type. + */ public function destroyContactFieldType(Request $request, $contactFieldTypeId) { try { @@ -101,15 +103,15 @@ public function destroyContactFieldType(Request $request, $contactFieldTypeId) ->where('id', $contactFieldTypeId) ->firstOrFail(); } catch (ModelNotFoundException $e) { - return $this->respond([ + return response()->json([ 'errors' => [ 'message' => trans('app.error_unauthorized'), ], ]); } - if ($contactFieldType->delible == false) { - return $this->respond([ + if (! $contactFieldType->delible) { + return response()->json([ 'errors' => [ 'message' => trans('app.error_unauthorized'), ], diff --git a/app/Http/Controllers/Settings/ReminderRulesController.php b/app/Http/Controllers/Settings/ReminderRulesController.php new file mode 100644 index 00000000000..cf9044eeb59 --- /dev/null +++ b/app/Http/Controllers/Settings/ReminderRulesController.php @@ -0,0 +1,38 @@ +user()->account->reminderRules; + + foreach ($reminderRules as $reminderRule) { + $data = [ + 'id' => $reminderRule->id, + 'number_of_days_before' => $reminderRule->number_of_days_before, + 'active' => $reminderRule->active, + ]; + $reminderRulesData->push($data); + } + + return $reminderRulesData; + } + + public function toggle(Request $request, ReminderRule $reminderRule) + { + $reminderRule->active = ! $reminderRule->active; + $reminderRule->save(); + + return trans('settings.personalization_reminder_rule_save'); + } +} diff --git a/app/Http/Controllers/Settings/SubscriptionsController.php b/app/Http/Controllers/Settings/SubscriptionsController.php index 91d6e76f803..ea055d78877 100644 --- a/app/Http/Controllers/Settings/SubscriptionsController.php +++ b/app/Http/Controllers/Settings/SubscriptionsController.php @@ -2,7 +2,9 @@ namespace App\Http\Controllers\Settings; +use App\Helpers\DateHelper; use Illuminate\Http\Request; +use App\Helpers\InstanceHelper; use App\Http\Controllers\Controller; class SubscriptionsController extends Controller @@ -18,7 +20,18 @@ public function index() return redirect('settings/'); } - return view('settings.subscriptions.account'); + if (! auth()->user()->account->isSubscribed()) { + return view('settings.subscriptions.blank', [ + 'numberOfCustomers' => InstanceHelper::getNumberOfPaidSubscribers(), + ]); + } + + $planId = auth()->user()->account->getSubscribedPlanId(); + + return view('settings.subscriptions.account', [ + 'planInformation' => InstanceHelper::getPlanInformationFromConfig($planId), + 'nextBillingDate' => auth()->user()->account->getNextBillingDate(), + ]); } /** @@ -26,19 +39,50 @@ public function index() * * @return \Illuminate\Http\Response */ - public function upgrade() + public function upgrade(Request $request) { if (! config('monica.requires_subscription')) { return redirect('settings/'); } - $account = auth()->user()->account; - - if ($account->subscribed(config('monica.paid_plan_friendly_name'))) { + if (auth()->user()->account->isSubscribed()) { return redirect('/settings/subscriptions'); } - return view('settings.subscriptions.upgrade'); + $plan = $request->query('plan'); + + return view('settings.subscriptions.upgrade', [ + 'planInformation' => InstanceHelper::getPlanInformationFromConfig($plan), + 'nextTheoriticalBillingDate' => DateHelper::getShortDate(DateHelper::getNextTheoriticalBillingDate($plan)), + ]); + } + + /** + * Display the upgrade success page. + * + * @return \Illuminate\Http\Response + */ + public function upgradeSuccess(Request $request) + { + if (! config('monica.requires_subscription')) { + return redirect('settings/'); + } + + return view('settings.subscriptions.success'); + } + + /** + * Display the downgrade success page. + * + * @return \Illuminate\Http\Response + */ + public function downgradeSuccess(Request $request) + { + if (! config('monica.requires_subscription')) { + return redirect('settings/'); + } + + return view('settings.subscriptions.downgrade-success'); } /** @@ -52,7 +96,7 @@ public function downgrade() return redirect('settings/'); } - if (! auth()->user()->account->subscribed(config('monica.paid_plan_friendly_name'))) { + if (! auth()->user()->account->isSubscribed()) { return redirect('/settings'); } @@ -70,9 +114,13 @@ public function processDowngrade() return redirect('/settings/users/subscriptions/downgrade'); } - auth()->user()->account->subscription(config('monica.paid_plan_friendly_name'))->cancelNow(); + if (! auth()->user()->account->isSubscribed()) { + return redirect('/settings'); + } - return redirect('/settings/subscriptions'); + auth()->user()->account->subscription(auth()->user()->account->getSubscribedPlanName())->cancelNow(); + + return redirect('/settings/subscriptions/downgrade/success'); } /** @@ -88,10 +136,14 @@ public function processPayment(Request $request) $stripeToken = $request->input('stripeToken'); - auth()->user()->account->newSubscription(config('monica.paid_plan_friendly_name'), config('monica.paid_plan_id')) - ->create($stripeToken); + $plan = InstanceHelper::getPlanInformationFromConfig($request->input('plan')); + + auth()->user()->account->newSubscription($plan['name'], $plan['id']) + ->create($stripeToken, [ + 'email' => auth()->user()->email, + ]); - return redirect('settings/subscriptions'); + return redirect('settings/subscriptions/upgrade/success'); } /** @@ -103,7 +155,7 @@ public function downloadInvoice(Request $request, $invoiceId) { return auth()->user()->account->downloadInvoice($invoiceId, [ 'vendor' => 'Monica', - 'product' => trans('settings.subscriptions_pdf_title', ['name' => config('monica.paid_plan_friendly_name')]), + 'product' => trans('settings.subscriptions_pdf_title', ['name' => config('monica.paid_plan_monthly_friendly_name')]), ]); } } diff --git a/app/Http/Controllers/SettingsController.php b/app/Http/Controllers/SettingsController.php index 6aecfc57991..c966e9daf8d 100644 --- a/app/Http/Controllers/SettingsController.php +++ b/app/Http/Controllers/SettingsController.php @@ -7,7 +7,6 @@ use App\Tag; use App\User; use App\ImportJob; -use Carbon\Carbon; use App\Invitation; use Illuminate\Http\Request; use App\Jobs\SendNewUserAlert; @@ -18,7 +17,7 @@ use App\Http\Requests\SettingsRequest; use Illuminate\Support\Facades\Storage; use App\Http\Requests\InvitationRequest; -use PragmaRX\Google2FALaravel\Support\Authenticator; +use PragmaRX\Google2FALaravel\Google2FA; class SettingsController extends Controller { @@ -55,7 +54,9 @@ class SettingsController extends Controller */ public function index() { - return view('settings.index'); + return view('settings.index') + ->withLocales(\App\Helpers\LocaleHelper::getLocaleList()) + ->withHours(\App\Helpers\DateHelper::getListOfHours()); } /** @@ -80,8 +81,11 @@ public function save(SettingsRequest $request) ] ); + $request->user()->account->default_time_reminder_is_sent = $request->get('reminder_time'); + $request->user()->account->save(); + return redirect('settings') - ->with('status', trans('settings.settings_success')); + ->with('status', trans('settings.settings_success', [], $request['locale'])); } /** @@ -110,8 +114,10 @@ public function delete(Request $request) DB::table('accounts')->where('id', $account->id)->delete(); - if (auth()->user()->account->subscribed(config('monica.paid_plan_friendly_name'))) { - auth()->user()->account->subscription(config('monica.paid_plan_friendly_name'))->cancelNow(); + $account = auth()->user()->account; + + if ($account->isSubscribed()) { + $account->subscription($account->getSubscribedPlanName())->cancelNow(); } auth()->logout(); @@ -144,6 +150,8 @@ public function reset(Request $request) DB::table($tableName)->where('account_id', $account->id)->delete(); } + $account->populateDefaultFields($account); + return redirect('/settings') ->with('status', trans('settings.reset_success')); } @@ -333,8 +341,8 @@ public function acceptInvitation($key) return redirect('/'); } - $invitation = Invitation::where('invitation_key', $key) - ->firstOrFail(); + Invitation::where('invitation_key', $key) + ->firstOrFail(); return view('settings.users.accept', compact('key')); } @@ -357,15 +365,11 @@ public function storeAcceptedInvitation(Request $request, $key) return redirect()->back()->withErrors(trans('settings.users_error_email_not_similar'))->withInput(); } - $user = new User; - $user->first_name = $request->input('first_name'); - $user->last_name = $request->input('last_name'); - $user->email = $request->input('email'); - $user->password = bcrypt($request->input('password')); - $user->timezone = config('app.timezone'); - $user->created_at = Carbon::now(); - $user->account_id = $invitation->account_id; - $user->save(); + $user = User::createDefault($invitation->account_id, + $request->input('first_name'), + $request->input('last_name'), + $request->input('email'), + $request->input('password')); $invitation->delete(); @@ -434,6 +438,6 @@ public function api() public function security(Request $request) { - return view('settings.security.index', ['is2FAActivated' => (new Authenticator($request))->isActivated()]); + return view('settings.security.index', ['is2FAActivated' => app('pragmarx.google2fa')->isActivated()]); } } diff --git a/app/Http/Middleware/CheckLocale.php b/app/Http/Middleware/CheckLocale.php index 064677eaa2a..3cee72a002b 100644 --- a/app/Http/Middleware/CheckLocale.php +++ b/app/Http/Middleware/CheckLocale.php @@ -2,9 +2,9 @@ namespace App\Http\Middleware; -use Auth; use Closure; -use Carbon\Carbon; +use App\Helpers\DateHelper; +use App\Helpers\LocaleHelper; class CheckLocale { @@ -17,10 +17,10 @@ class CheckLocale */ public function handle($request, Closure $next) { - if (Auth::check()) { - \App::setLocale(Auth::user()->locale); - Carbon::setLocale(config('app.locale')); - } + $locale = LocaleHelper::getLocale(); + + \App::setLocale($locale); + DateHelper::setLocale($locale); return $next($request); } diff --git a/app/Http/Requests/People/KidsRequest.php b/app/Http/Requests/People/KidsRequest.php index fa3b9f7187c..0697577be7c 100644 --- a/app/Http/Requests/People/KidsRequest.php +++ b/app/Http/Requests/People/KidsRequest.php @@ -26,7 +26,7 @@ public function rules() return [ 'first_name' => 'required|string|max:50', 'last_name' => 'string|nullable|max:100', - 'gender' => 'in:male,female,none', + 'gender_id' => 'integer|required', 'birthdate' => 'required|in:unknown,approximate,exact', 'birthdate_year' => 'int|nullable', 'birthdate_month' => 'int|nullable', diff --git a/app/Http/Requests/People/RelationshipsRequest.php b/app/Http/Requests/People/RelationshipsRequest.php index 13ce3404194..1561b7896ee 100644 --- a/app/Http/Requests/People/RelationshipsRequest.php +++ b/app/Http/Requests/People/RelationshipsRequest.php @@ -26,7 +26,7 @@ public function rules() return [ 'first_name' => 'required|string|max:50', 'last_name' => 'string|nullable|max:100', - 'gender' => 'in:male,female,none', + 'gender_id' => 'integer|required', 'status' => 'in:active,past|nullable', 'birthdate' => 'required|in:unknown,approximate,exact', 'birthdate_year' => 'int|nullable', diff --git a/app/Http/Requests/Settings/GendersRequest.php b/app/Http/Requests/Settings/GendersRequest.php new file mode 100644 index 00000000000..af871b3f715 --- /dev/null +++ b/app/Http/Requests/Settings/GendersRequest.php @@ -0,0 +1,31 @@ + 'max:255', + 'id' => 'integer', + ]; + } +} diff --git a/app/Http/Resources/Call/Call.php b/app/Http/Resources/Call/Call.php index 34d5d788b09..2a3b9949256 100644 --- a/app/Http/Resources/Call/Call.php +++ b/app/Http/Resources/Call/Call.php @@ -18,7 +18,7 @@ public function toArray($request) return [ 'id' => $this->id, 'object' => 'call', - 'called_at' => $this->created_at->format(config('api.timestamp_format')), + 'called_at' => $this->called_at->format(config('api.timestamp_format')), 'content' => $this->content, 'account' => [ 'id' => $this->account->id, diff --git a/app/Http/Resources/Contact/Contact.php b/app/Http/Resources/Contact/Contact.php index fb0b6168319..ce0d660c2e7 100644 --- a/app/Http/Resources/Contact/Contact.php +++ b/app/Http/Resources/Contact/Contact.php @@ -20,7 +20,7 @@ public function toArray($request) 'object' => 'contact', 'first_name' => $this->first_name, 'last_name' => $this->last_name, - 'gender' => $this->gender, + 'gender' => $this->gender->name, 'is_partial' => (bool) $this->is_partial, 'is_dead' => (bool) $this->is_dead, 'last_called' => $this->when(! $this->is_partial, $this->getLastCalled()), @@ -55,10 +55,12 @@ public function toArray($request) 'career' => $this->when(! $this->is_partial, [ 'job' => $this->job, 'company' => $this->company, + 'linkedin_profile_url' => $this->linkedin_profile_url, ]), 'avatar' => $this->when(! $this->is_partial, [ - 'url' => $this->getAvatarUrl(), + 'url' => $this->getAvatarUrl(110), 'source' => $this->getAvatarSource(), + 'default_avatar_color' => $this->default_avatar_color, ]), 'food_preferencies' => $this->when(! $this->is_partial, $this->food_preferencies), 'how_you_met' => $this->when(! $this->is_partial, [ diff --git a/app/Http/Resources/Contact/ContactShort.php b/app/Http/Resources/Contact/ContactShort.php index 895c4b82763..cb9fa6fe729 100644 --- a/app/Http/Resources/Contact/ContactShort.php +++ b/app/Http/Resources/Contact/ContactShort.php @@ -21,7 +21,7 @@ public function toArray($request) 'last_name' => $this->last_name, 'complete_name' => $this->getCompleteName(), 'initials' => $this->getInitials(), - 'gender' => $this->gender, + 'gender' => $this->gender->name, 'is_partial' => (bool) $this->is_partial, 'is_dead' => (bool) $this->is_dead, 'information' => [ diff --git a/app/Http/Resources/Contact/ContactWithContactFields.php b/app/Http/Resources/Contact/ContactWithContactFields.php new file mode 100644 index 00000000000..eb871b5613a --- /dev/null +++ b/app/Http/Resources/Contact/ContactWithContactFields.php @@ -0,0 +1,95 @@ + $this->id, + 'object' => 'contact', + 'first_name' => $this->first_name, + 'last_name' => $this->last_name, + 'gender' => $this->gender->name, + 'is_partial' => (bool) $this->is_partial, + 'is_dead' => (bool) $this->is_dead, + 'last_called' => $this->when(! $this->is_partial, $this->getLastCalled()), + 'last_activity_together' => $this->when(! $this->is_partial, $this->getLastActivityDate()), + 'information' => [ + 'family' => $this->when(! $this->is_partial, [ + 'kids' => [ + 'total' => $this->getOffsprings()->count(), + 'kids' => $this->getOffspringsForAPI(), + ], + 'partners' => [ + 'total' => $this->getCurrentPartners()->count(), + 'partners' => $this->getCurrentPartnersForAPI(), + ], + 'progenitors' => [ + 'total' => $this->getProgenitors()->count(), + 'progenitors' => $this->getProgenitorsForAPI(), + ], + ]), + 'dates' => [ + 'birthdate' => [ + 'is_age_based' => (is_null($this->birthdate) ? null : (bool) $this->birthdate->is_age_based), + 'is_year_unknown' => (is_null($this->birthdate) ? null : (bool) $this->birthdate->is_year_unknown), + 'date' => (is_null($this->birthdate) ? null : $this->birthdate->date->format(config('api.timestamp_format'))), + ], + 'deceased_date' => [ + 'is_age_based' => (is_null($this->deceasedDate) ? null : (bool) $this->deceasedDate->is_age_based), + 'is_year_unknown' => (is_null($this->deceasedDate) ? null : (bool) $this->deceasedDate->is_year_unknown), + 'date' => (is_null($this->deceasedDate) ? null : $this->deceasedDate->date->format(config('api.timestamp_format'))), + ], + ], + 'career' => $this->when(! $this->is_partial, [ + 'job' => $this->job, + 'company' => $this->company, + 'linkedin_profile_url' => $this->linkedin_profile_url, + ]), + 'avatar' => $this->when(! $this->is_partial, [ + 'url' => $this->getAvatarUrl(110), + 'source' => $this->getAvatarSource(), + 'default_avatar_color' => $this->default_avatar_color, + ]), + 'food_preferencies' => $this->when(! $this->is_partial, $this->food_preferencies), + 'how_you_met' => $this->when(! $this->is_partial, [ + 'general_information' => $this->first_met_additional_info, + 'first_met_date' => [ + 'is_age_based' => (is_null($this->firstMetDate) ? null : (bool) $this->firstMetDate->is_age_based), + 'is_year_unknown' => (is_null($this->firstMetDate) ? null : (bool) $this->firstMetDate->is_year_unknown), + 'date' => (is_null($this->firstMetDate) ? null : $this->firstMetDate->date->format(config('api.timestamp_format'))), + ], + 'first_met_through_contact' => new ContactShortResource($this->getIntroducer()), + ]), + ], + 'addresses' => $this->when(! $this->is_partial, $this->getAddressesForAPI()), + 'tags' => $this->when(! $this->is_partial, $this->getTagsForAPI()), + 'statistics' => $this->when(! $this->is_partial, [ + 'number_of_calls' => $this->calls->count(), + 'number_of_notes' => $this->notes->count(), + 'number_of_activities' => $this->activities->count(), + 'number_of_reminders' => $this->reminders->count(), + 'number_of_tasks' => $this->tasks->count(), + 'number_of_gifts' => $this->gifts->count(), + 'number_of_debts' => $this->debts->count(), + ]), + 'contactFields' => $this->when(! $this->is_partial, $this->getContactFieldsForAPI()), + 'account' => [ + 'id' => $this->account->id, + ], + 'created_at' => $this->created_at->format(config('api.timestamp_format')), + 'updated_at' => (is_null($this->updated_at) ? null : $this->updated_at->format(config('api.timestamp_format'))), + ]; + } +} diff --git a/app/Http/Resources/Contact/OffspringShort.php b/app/Http/Resources/Contact/OffspringShort.php index b1faba8168d..4a40c954ec7 100644 --- a/app/Http/Resources/Contact/OffspringShort.php +++ b/app/Http/Resources/Contact/OffspringShort.php @@ -19,7 +19,7 @@ public function toArray($request) 'object' => 'contact', 'first_name' => $this->first_name, 'last_name' => $this->last_name, - 'gender' => $this->gender, + 'gender' => $this->gender->name, 'is_partial' => (bool) $this->is_partial, 'information' => [ 'birthdate' => [ diff --git a/app/Http/Resources/Contact/PartnerShort.php b/app/Http/Resources/Contact/PartnerShort.php index fea8eb9f371..bfb5cd79e59 100644 --- a/app/Http/Resources/Contact/PartnerShort.php +++ b/app/Http/Resources/Contact/PartnerShort.php @@ -19,7 +19,7 @@ public function toArray($request) 'object' => 'contact', 'first_name' => $this->first_name, 'last_name' => $this->last_name, - 'gender' => $this->gender, + 'gender' => $this->gender->name, 'is_partial' => (bool) $this->is_partial, 'information' => [ 'birthdate' => [ diff --git a/app/Http/Resources/Contact/ProgenitorShort.php b/app/Http/Resources/Contact/ProgenitorShort.php index 0c45148dc5b..ae1870e0df6 100644 --- a/app/Http/Resources/Contact/ProgenitorShort.php +++ b/app/Http/Resources/Contact/ProgenitorShort.php @@ -19,7 +19,7 @@ public function toArray($request) 'object' => 'contact', 'first_name' => $this->first_name, 'last_name' => $this->last_name, - 'gender' => $this->gender, + 'gender' => $this->gender->name, 'information' => [ 'birthdate' => [ 'is_age_based' => (is_null($this->birthdate) ? null : (bool) $this->birthdate->is_age_based), diff --git a/app/Http/Resources/ContactField/ContactFieldCollection.php b/app/Http/Resources/ContactField/ContactFieldCollection.php new file mode 100644 index 00000000000..75e012a6555 --- /dev/null +++ b/app/Http/Resources/ContactField/ContactFieldCollection.php @@ -0,0 +1,24 @@ + $this->collection, + 'links' => [ + 'self' => 'link-value', + ], + ]; + } +} diff --git a/app/Http/ViewComposers/DateSelectViewComposer.php b/app/Http/ViewComposers/DateSelectViewComposer.php index 7a44f82db8b..d55191d0bb2 100644 --- a/app/Http/ViewComposers/DateSelectViewComposer.php +++ b/app/Http/ViewComposers/DateSelectViewComposer.php @@ -2,8 +2,9 @@ namespace App\Http\ViewComposers; -use Carbon\Carbon; use Illuminate\View\View; +use Jenssegers\Date\Date; +use App\Helpers\DateHelper; class DateSelectViewComposer { @@ -20,20 +21,12 @@ public function __construct() public function compose(View $view) { // Months - Carbon::setLocale(auth()->user()->locale); - $months = []; - $currentDate = Carbon::now(); - $currentDate->day = 1; - - for ($month = 1; $month < 13; $month++) { - $currentDate->month = $month; - array_push($months, $currentDate->formatLocalized('%B')); - } + $months = DateHelper::getListOfMonths(); // Years $years = []; - $maxYear = Carbon::now(auth()->user()->timezone)->year; - $minYear = Carbon::now(auth()->user()->timezone)->subYears(120)->format('Y'); + $maxYear = Date::now(auth()->user()->timezone)->year; + $minYear = Date::now(auth()->user()->timezone)->subYears(120)->format('Y'); for ($year = $maxYear; $year >= $minYear; $year--) { array_push($years, $year); diff --git a/app/ImportJob.php b/app/ImportJob.php index 81f17f24e0c..cf509bd4c61 100644 --- a/app/ImportJob.php +++ b/app/ImportJob.php @@ -3,6 +3,7 @@ namespace App; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\BelongsTo; /** diff --git a/app/Jobs/AddContactFromVCard.php b/app/Jobs/AddContactFromVCard.php index 1a1f451d5c1..a3d23628241 100644 --- a/app/Jobs/AddContactFromVCard.php +++ b/app/Jobs/AddContactFromVCard.php @@ -2,15 +2,9 @@ namespace App\Jobs; -use App\User; -use App\Address; -use App\Contact; -use App\Country; use App\ImportJob; -use App\ContactField; use App\ImportJobReport; -use App\ContactFieldType; -use Sabre\VObject\Reader; +use App\Traits\VCardImporter; use Illuminate\Bus\Queueable; use Sabre\VObject\Component\VCard; use Illuminate\Queue\SerializesModels; @@ -21,7 +15,7 @@ class AddContactFromVCard implements ShouldQueue { - use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; + use Dispatchable, InteractsWithQueue, Queueable, SerializesModels, VCardImporter; const VCARD_SKIPPED = 1; const VCARD_IMPORTED = 0; @@ -30,8 +24,7 @@ class AddContactFromVCard implements ShouldQueue const ERROR_CONTACT_DOESNT_HAVE_FIRSTNAME = 'import_vcard_contact_no_firstname'; protected $importJob; - protected $importedContacts = 0; - protected $skippedContacts = 0; + private $matchCount; /** * Create a new job instance. @@ -51,177 +44,49 @@ public function __construct(ImportJob $importJob) public function handle() { try { - $numberOfContactsInTheFile = preg_match_all('/(BEGIN:VCARD.*?END:VCARD)/s', Storage::disk('public')->get($this->importJob->filename), $matches); - - $this->importJob->started_at = \Carbon\Carbon::now(); - - collect($matches[0])->map(function ($vcard) { - return Reader::read($vcard); - })->each(function (VCard $vcard) { - if ($this->contactExists($vcard, $this->importJob->account_id)) { - $this->skippedContacts++; - $this->fileImportJobReport($vcard, self::VCARD_SKIPPED, self::ERROR_CONTACT_EXIST); - - return; - } - - // Skip contact if there isn't a first name or a nickname - if (! $this->contactHasName($vcard)) { - $this->skippedContacts++; - $this->fileImportJobReport($vcard, self::VCARD_SKIPPED, self::ERROR_CONTACT_DOESNT_HAVE_FIRSTNAME); - - return; - } - - $contact = new Contact(); - $contact->account_id = $this->importJob->account_id; - - if ($vcard->N && ! empty($vcard->N->getParts()[1])) { - $contact->first_name = $this->formatValue($vcard->N->getParts()[1]); - $contact->middle_name = $this->formatValue($vcard->N->getParts()[2]); - $contact->last_name = $this->formatValue($vcard->N->getParts()[0]); - } else { - $contact->first_name = $this->formatValue($vcard->NICKNAME); - } - - $contact->gender = 'none'; - - $contact->job = $this->formatValue($vcard->ORG); - - $contact->setAvatarColor(); - - $contact->save(); - - if ($vcard->BDAY && ! empty((string) $vcard->BDAY)) { - $birthdate = new \DateTime((string) $vcard->BDAY); - - $specialDate = $contact->setSpecialDate('birthdate', $birthdate->format('Y'), $birthdate->format('m'), $birthdate->format('d')); - $newReminder = $specialDate->setReminder('year', 1, trans('people.people_add_birthday_reminder', ['name' => $contact->first_name])); - } - - if ($vcard->ADR) { - $address = new Address(); - $address->street = $this->formatValue($vcard->ADR->getParts()[2]); - $address->city = $this->formatValue($vcard->ADR->getParts()[3]); - $address->province = $this->formatValue($vcard->ADR->getParts()[4]); - $address->postal_code = $this->formatValue($vcard->ADR->getParts()[5]); - - $country = Country::where('country', $vcard->ADR->getParts()[6]) - ->orWhere('iso', strtolower($vcard->ADR->getParts()[6])) - ->first(); - - if ($country) { - $address->country_id = $country->id; - } - - $address->contact_id = $contact->id; - $address->account_id = $contact->account_id; - $address->save(); - } - - if (! is_null($this->formatValue($vcard->EMAIL))) { - // Saves the email - $contactFieldType = ContactFieldType::where('type', 'email')->first(); - - if (! empty($contactFieldType)) { - $contactField = new ContactField; - $contactField->account_id = $contact->account_id; - $contactField->contact_id = $contact->id; - $contactField->data = $this->formatValue($vcard->EMAIL); - $contactField->contact_field_type_id = $contactFieldType->id; - $contactField->save(); - } - } - - if (! is_null($this->formatValue($vcard->TEL))) { - // Saves the phone number - $contactFieldType = ContactFieldType::where('type', 'phone')->first(); - - if (! empty($contactFieldType)) { - $contactField = new ContactField; - $contactField->account_id = $contact->account_id; - $contactField->contact_id = $contact->id; - $contactField->data = $this->formatValue($vcard->TEL); - $contactField->contact_field_type_id = $contactFieldType->id; - $contactField->save(); - } - } - - $this->importedContacts++; - - $this->fileImportJobReport($vcard, self::VCARD_IMPORTED); - - $contact->logEvent('contact', $contact->id, 'create'); - }); - - $this->importJob->contacts_found = $numberOfContactsInTheFile; - $this->importJob->contacts_skipped = $this->skippedContacts; - $this->importJob->contacts_imported = $this->importedContacts; - $this->importJob->ended_at = \Carbon\Carbon::now(); - $this->importJob->save(); - } catch (Exception $e) { - $this->importJob->contacts_found = $numberOfContactsInTheFile; + $this->work($this->importJob->account_id, Storage::disk('public')->get($this->importJob->filename)); + } catch (\Exception $e) { + $this->importJob->contacts_found = $this->matchCount; $this->importJob->failed = 1; $this->importJob->failed_reason = $e->getMessage(); $this->importJob->save(); Storage::disk('public')->delete($this->importJob->filename); } - - // Delete the vCard file no matter what - Storage::disk('public')->delete($this->importJob->filename); } - /** - * Checks whether a contact has a first name or a nickname. - * Nickname is used as a fallback if no first name is provided. - * - * @param VCard $vcard - * @return bool - */ - public function contactHasName(VCard $vcard): bool + protected function workInit($matchCount) { - return ! empty($vcard->N->getParts()[1]) || ! empty((string) $vcard->NICKNAME); + $this->matchCount = $matchCount; + $this->importJob->started_at = now(); + + return true; } - /** - * Formats and returns a string for the contact. - * - * @param null|string $value - * @return null|string - */ - private function formatValue($value) + protected function workContactExists($vcard) { - return ! empty((string) $value) ? (string) $value : null; + $this->fileImportJobReport($vcard, self::VCARD_SKIPPED, self::ERROR_CONTACT_EXIST); } - /** - * Checks whether a contact already exists for a given account. - * - * @param VCard $vcard - * @param User $user - * @return bool - */ - private function contactExists(VCard $vcard, $account_id) + protected function workContactNoFirstname($vcard) { - $email = (string) $vcard->EMAIL; - - $contactFieldType = ContactFieldType::where([ - ['account_id', $account_id], - ['type', 'email'], - ])->first(); + $this->fileImportJobReport($vcard, self::VCARD_SKIPPED, self::ERROR_CONTACT_DOESNT_HAVE_FIRSTNAME); + } - $contactField = null; + protected function workNext($vcard) + { + $this->fileImportJobReport($vcard, self::VCARD_IMPORTED); + } - if ($contactFieldType) { - $contactField = ContactField::where([ - ['account_id', $account_id], - ['data', $email], - ['contact_field_type_id', $contactFieldType->id], - ])->first(); - } + protected function workEnd($numberOfContactsInTheFile, $skippedContacts, $importedContacts) + { + $this->importJob->contacts_found = $numberOfContactsInTheFile; + $this->importJob->contacts_skipped = $skippedContacts; + $this->importJob->contacts_imported = $importedContacts; + $this->importJob->ended_at = now(); + $this->importJob->save(); - return $email && $contactField; + Storage::disk('public')->delete($this->importJob->filename); } private function fileImportJobReport(VCard $vcard, $status, $reason = null) diff --git a/app/Jobs/ExportAccountAsSQL.php b/app/Jobs/ExportAccountAsSQL.php index 1663bbdf98b..4a46dfa79a1 100644 --- a/app/Jobs/ExportAccountAsSQL.php +++ b/app/Jobs/ExportAccountAsSQL.php @@ -2,7 +2,6 @@ namespace App\Jobs; -use Carbon\Carbon; use Illuminate\Support\Facades\DB; use Illuminate\Queue\SerializesModels; use Illuminate\Support\Facades\Storage; @@ -58,7 +57,7 @@ class ExportAccountAsSQL public function __construct($file = null, $path = null) { $this->path = $path ?? 'exports/'; - $this->file = rand().'.sql'; + $this->file = $file ?? rand().'.sql'; } /** @@ -76,7 +75,7 @@ public function handle() $sql = '# ************************************************************ # '.$user->first_name.' '.$user->last_name." dump of data # {$this->file} -# Export date: ".Carbon::now().' +# Export date: ".now().' # ************************************************************ '.PHP_EOL; @@ -109,11 +108,9 @@ public function handle() // Looping over the values foreach ($data as $columnName => $value) { - if ($columnName == 'account_id') { - if ($value !== $account->id) { - $skipLine = true; - break; - } + if ($columnName == 'account_id' && $value !== $account->id) { + $skipLine = true; + break; } if (is_null($value)) { @@ -125,7 +122,7 @@ public function handle() array_push($tableValues, $value); } - if ($skipLine == false) { + if (! $skipLine) { $newSQLLine .= implode(',', $tableValues).');'.PHP_EOL; $sql .= $newSQLLine; } diff --git a/app/Jobs/Notification/ScheduleNotification.php b/app/Jobs/Notification/ScheduleNotification.php new file mode 100644 index 00000000000..ccd3e6365e1 --- /dev/null +++ b/app/Jobs/Notification/ScheduleNotification.php @@ -0,0 +1,52 @@ +notification = $notification; + } + + /** + * Execute the job. + * + * @return void + */ + public function handle() + { + $account = $this->notification->account; + $numberOfUsersInAccount = $account->users->count(); + + $this->notification->setNumberOfEmailsNeededForDeletion($numberOfUsersInAccount); + + foreach ($account->users as $user) { + if ($user->shouldBeReminded($this->notification->trigger_date) + && ! $account->hasLimitations()) { + dispatch(new SendNotificationEmail($this->notification, $user)); + } + } + } +} diff --git a/app/Jobs/Notification/SendNotificationEmail.php b/app/Jobs/Notification/SendNotificationEmail.php new file mode 100644 index 00000000000..b45e4699f02 --- /dev/null +++ b/app/Jobs/Notification/SendNotificationEmail.php @@ -0,0 +1,42 @@ +notification = $notification; + $this->user = $user; + } + + /** + * Execute the job. + * + * @return void + */ + public function handle() + { + Mail::to($this->user->email)->send(new NotificationEmail($this->notification, $this->user)); + $this->notification->incrementNumberOfEmailsSentAndCheckDeletioNStatus(); + } +} diff --git a/app/Jobs/ResizeAvatars.php b/app/Jobs/ResizeAvatars.php index d5967d547ec..4e1e06cd8d7 100644 --- a/app/Jobs/ResizeAvatars.php +++ b/app/Jobs/ResizeAvatars.php @@ -10,6 +10,7 @@ use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; use Intervention\Image\Facades\Image as Image; +use Illuminate\Contracts\Filesystem\FileNotFoundException; class ResizeAvatars implements ShouldQueue { @@ -34,7 +35,7 @@ public function __construct(Contact $contact) */ public function handle() { - if ($this->contact->has_avatar == true) { + if ($this->contact->has_avatar) { try { $avatar_file = Storage::disk($this->contact->avatar_location)->get($this->contact->avatar_file_name); $avatar_path = Storage::disk($this->contact->avatar_location)->url($this->contact->avatar_file_name); diff --git a/app/Jobs/SendReminderEmail.php b/app/Jobs/SendReminderEmail.php index 6c08a90fc07..aabef0ee574 100644 --- a/app/Jobs/SendReminderEmail.php +++ b/app/Jobs/SendReminderEmail.php @@ -4,8 +4,8 @@ use App\User; use App\Reminder; -use App\Mail\UserReminded; use Illuminate\Bus\Queueable; +use App\Mail\UserRemindedMail; use Illuminate\Support\Facades\Mail; use Illuminate\Queue\SerializesModels; use Illuminate\Queue\InteractsWithQueue; @@ -36,6 +36,6 @@ public function __construct(Reminder $reminder, User $user) */ public function handle() { - Mail::to($this->user->email)->send(new UserReminded($this->reminder, $this->user)); + Mail::to($this->user->email)->send(new UserRemindedMail($this->reminder, $this->user)); } } diff --git a/app/Jobs/SetNextReminderDate.php b/app/Jobs/SetNextReminderDate.php index 0927f74d58f..d36471fdaba 100644 --- a/app/Jobs/SetNextReminderDate.php +++ b/app/Jobs/SetNextReminderDate.php @@ -43,6 +43,9 @@ public function handle() $this->reminder->last_triggered = $this->reminder->next_expected_date; $this->reminder->calculateNextExpectedDate($this->timezone); $this->reminder->save(); + + $this->reminder->purgeNotifications(); + $this->reminder->scheduleNotifications(); break; } } diff --git a/app/JournalEntry.php b/app/JournalEntry.php index ed00d1d2b54..c03cec3bf7b 100644 --- a/app/JournalEntry.php +++ b/app/JournalEntry.php @@ -49,7 +49,7 @@ public function account() public function add($resourceToLog) { $this->account_id = $resourceToLog->account_id; - $this->date = \Carbon\Carbon::now(); + $this->date = now(); $this->journalable_id = $resourceToLog->id; $this->journalable_type = get_class($resourceToLog); $this->save(); diff --git a/app/Mail/NotificationEmail.php b/app/Mail/NotificationEmail.php new file mode 100644 index 00000000000..6fc243c5048 --- /dev/null +++ b/app/Mail/NotificationEmail.php @@ -0,0 +1,53 @@ +reminder = $notification->reminder; + $this->notification = $notification; + $this->user = $user; + } + + /** + * Build the message. + * + * @return $this + */ + public function build() + { + $contact = Contact::findOrFail($this->reminder->contact_id); + + \App::setLocale($this->user->locale); + + return $this->text('emails.reminder.notification') + ->subject(trans('mail.notification_subject_line')) + ->with([ + 'contact' => $contact, + 'reminder' => $this->reminder, + 'notification' => $this->notification, + 'user' => $this->user, + ]); + } +} diff --git a/app/Mail/UserReminded.php b/app/Mail/UserRemindedMail.php similarity index 96% rename from app/Mail/UserReminded.php rename to app/Mail/UserRemindedMail.php index 7fb4c3cdab1..42394947daf 100644 --- a/app/Mail/UserReminded.php +++ b/app/Mail/UserRemindedMail.php @@ -9,7 +9,7 @@ use Illuminate\Mail\Mailable; use Illuminate\Queue\SerializesModels; -class UserReminded extends Mailable +class UserRemindedMail extends Mailable { use Queueable, SerializesModels; diff --git a/app/Note.php b/app/Note.php index b63d290c9e4..76e8c0488db 100644 --- a/app/Note.php +++ b/app/Note.php @@ -104,9 +104,9 @@ public function getBody() * @param string $locale * @return string */ - public function getCreatedAt($locale) + public function getCreatedAt() { - return DateHelper::getShortDate($this->created_at, $locale); + return DateHelper::getShortDate($this->created_at); } /** diff --git a/app/Notification.php b/app/Notification.php new file mode 100644 index 00000000000..91c0c47ed01 --- /dev/null +++ b/app/Notification.php @@ -0,0 +1,94 @@ +belongsTo(Account::class); + } + + /** + * Get the contact record associated with the notification. + * + * @return BelongsTo + */ + public function contact() + { + return $this->belongsTo(Contact::class); + } + + /** + * Get the reminder record associated with the notification. + * + * @return BelongsTo + */ + public function reminder() + { + return $this->belongsTo(Reminder::class); + } + + /** + * Indicates the number of emails should be sent before a notification + * has to be deleted. This is required as a notification can be sent to + * multiple users in the same account. The number of of emails will match + * the number of users in the account. + * + * @param int $number + * @return void + */ + public function setNumberOfEmailsNeededForDeletion($number) + { + $this->delete_after_number_of_emails_sent = $number; + $this->save(); + } + + /** + * Check if a notification can be deleted. A notification can be sent to + * multiple users in the same account, so we need to check that all emails + * have been sent before deleting the notification. + * + * @return void + */ + public function incrementNumberOfEmailsSentAndCheckDeletioNStatus() + { + // first, increment the counter of number of emails sent + $this->number_of_emails_sent = $this->number_of_emails_sent + 1; + $this->save(); + + // then, if we've reached the number of emails required to delete + // the notification, proceed to deletion + if ($this->delete_after_number_of_emails_sent == $this->number_of_emails_sent) { + $this->delete(); + } + } +} diff --git a/app/Offspring.php b/app/Offspring.php index 6dea59b8a9a..9b9ec30b2c5 100644 --- a/app/Offspring.php +++ b/app/Offspring.php @@ -5,7 +5,7 @@ use Illuminate\Database\Eloquent\Model; /** - * A relationship defines relations between contacts. + * An offspring is the child of a contact. */ class Offspring extends Model { diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php index 97cae17e408..2e016f2cfd8 100644 --- a/app/Providers/RouteServiceProvider.php +++ b/app/Providers/RouteServiceProvider.php @@ -9,12 +9,14 @@ use App\Gift; use App\Note; use App\Task; +use App\Gender; use App\Contact; use App\Activity; use App\Reminder; use App\Offspring; use App\ContactField; use App\Relationship; +use App\ReminderRule; use Illuminate\Routing\Router; use Illuminate\Database\Eloquent\ModelNotFoundException; use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider; @@ -91,9 +93,9 @@ public function boot() }); Route::bind('significant_other', function ($value, $route) { - $contact = Contact::findOrFail($route->parameter('contact')->id); + Contact::findOrFail($route->parameter('contact')->id); - $relationShip = Relationship::where('account_id', auth()->user()->account_id) + Relationship::where('account_id', auth()->user()->account_id) ->where('contact_id', $route->parameter('contact')->id) ->where('with_contact_id', $value) ->firstOrFail(); @@ -102,9 +104,9 @@ public function boot() }); Route::bind('kid', function ($value, $route) { - $contact = Contact::findOrFail($route->parameter('contact')->id); + Contact::findOrFail($route->parameter('contact')->id); - $offspring = Offspring::where('account_id', auth()->user()->account_id) + Offspring::where('account_id', auth()->user()->account_id) ->where('contact_id', $value) ->where('is_the_child_of', $route->parameter('contact')->id) ->firstOrFail(); @@ -136,6 +138,18 @@ public function boot() ->where('id', $value) ->firstOrFail(); }); + + Route::bind('gender', function ($value) { + return Gender::where('account_id', auth()->user()->account_id) + ->where('id', $value) + ->firstOrFail(); + }); + + Route::bind('reminderRule', function ($value) { + return ReminderRule::where('account_id', auth()->user()->account_id) + ->where('id', $value) + ->firstOrFail(); + }); } /** diff --git a/app/Reminder.php b/app/Reminder.php index 52f4f48e9e6..99d685ba079 100644 --- a/app/Reminder.php +++ b/app/Reminder.php @@ -57,6 +57,16 @@ public function contact() return $this->belongsTo(Contact::class); } + /** + * Get the Notifications records associated with the account. + * + * @return HasMany + */ + public function notifications() + { + return $this->hasMany('App\Notification'); + } + /** * Get the next_expected_date field according to user's timezone. * @@ -140,4 +150,58 @@ public function calculateNextExpectedDate($timezone) return $this; } + + /** + * Schedules the notifications for the given reminder. + * + * @return void + */ + public function scheduleNotifications() + { + if ($this->frequency_type == 'week') { + return; + } + + // Only schedule notifications for active reminder rules + $reminderRules = $this->account->reminderRules()->where('active', 1)->get(); + + foreach ($reminderRules as $reminderRule) { + $this->scheduleSingleNotification($reminderRule->number_of_days_before); + } + } + + /** + * Schedules a notification for the given reminder. + * + * @param int $numberOfDaysBefore + * @return Notification + */ + public function scheduleSingleNotification(int $numberOfDaysBefore) + { + $date = DateHelper::getDateMinusGivenNumberOfDays($this->next_expected_date, $numberOfDaysBefore); + + if ($date->lte(now())) { + return; + } + + $notification = new Notification; + $notification->account_id = $this->account_id; + $notification->contact_id = $this->contact_id; + $notification->reminder_id = $this->id; + $notification->trigger_date = $date; + $notification->scheduled_number_days_before = $numberOfDaysBefore; + $notification->save(); + + return $notification; + } + + /** + * Purge all the existing notifications for a reminder. + * + * @return void + */ + public function purgeNotifications() + { + $this->notifications->each->delete(); + } } diff --git a/app/ReminderRule.php b/app/ReminderRule.php new file mode 100644 index 00000000000..e10e0133556 --- /dev/null +++ b/app/ReminderRule.php @@ -0,0 +1,58 @@ + 'boolean', + ]; + + /** + * Get the account record associated with the reminder. + * + * @return BelongsTo + */ + public function account() + { + return $this->belongsTo(Account::class); + } + + /** + * Get the number_of_days_before field. + * + * @param int $value + * @return int + */ + public function getNumberOfDaysBeforeAttribute($value) + { + return $value; + } + + /** + * Set the number_of_days_before field. + * + * @param int $value + */ + public function setNumberOfDaysBeforeAttribute($value) + { + $this->attributes['number_of_days_before'] = $value; + } +} diff --git a/app/SpecialDate.php b/app/SpecialDate.php index 9d09bda9a18..cfb23ff8c1d 100644 --- a/app/SpecialDate.php +++ b/app/SpecialDate.php @@ -105,6 +105,7 @@ public function toShortString() /** * Sets a reminder for this date. If a reminder is already defined for this * date, it will delete it first and recreate one. + * * @param string $frequency The frequency the reminder will be set. Can be 'year', 'month', 'day'. * @param int $frequencyNumber * @return Reminder @@ -128,6 +129,8 @@ public function setReminder(string $frequency, int $frequencyNumber, string $tit $this->reminder_id = $reminder->id; $this->save(); + $reminder->scheduleNotifications(); + return $reminder; } @@ -141,7 +144,13 @@ public function deleteReminder() return; } - return Reminder::destroy($this->reminder_id); + if (! $this->reminder) { + return; + } + + $this->reminder->purgeNotifications(); + + return $this->reminder->delete(); } /** @@ -155,11 +164,11 @@ public function getAge() return; } - if ($this->is_year_unknown == true) { + if ($this->is_year_unknown) { return; } - return $this->date->diffInYears(Carbon::now()); + return $this->date->diffInYears(now()); } /** @@ -169,7 +178,7 @@ public function getAge() public function createFromAge(int $age) { $this->is_age_based = true; - $this->date = Carbon::now()->subYears($age)->month(1)->day(1); + $this->date = now()->subYears($age)->month(1)->day(1); $this->save(); return $this; @@ -188,7 +197,7 @@ public function createFromDate(int $year, int $month, int $day) if ($year != 0) { $date = Carbon::createFromDate($year, $month, $day); } else { - $date = Carbon::createFromDate(Carbon::now()->year, $month, $day); + $date = Carbon::createFromDate(now()->year, $month, $day); $this->is_year_unknown = true; } diff --git a/app/Tag.php b/app/Tag.php index 8ad92a28018..fa96e85c5d0 100644 --- a/app/Tag.php +++ b/app/Tag.php @@ -23,7 +23,7 @@ class Tag extends Model ]; /** - * Get the account record associated with the debt. + * Get the account record associated with the tag. */ public function account() { @@ -31,7 +31,7 @@ public function account() } /** - * Get the contact record associated with the debt. + * Get the contacts record associated with the tag. */ public function contacts() { diff --git a/app/Task.php b/app/Task.php index 20c0f511bf0..19ebba08e47 100644 --- a/app/Task.php +++ b/app/Task.php @@ -77,6 +77,6 @@ public function scopeCompleted(Builder $query) */ public function scopeInProgress(Builder $query) { - return $query->where('completed', 'false'); + return $query->where('completed', false); } } diff --git a/app/Traits/Journalable.php b/app/Traits/Journalable.php index 846a7c23eb2..6fad2d5ce59 100644 --- a/app/Traits/Journalable.php +++ b/app/Traits/Journalable.php @@ -3,6 +3,7 @@ namespace App\Traits; use App\JournalEntry; +use Illuminate\Database\Eloquent\ModelNotFoundException; trait Journalable { diff --git a/app/Traits/Searchable.php b/app/Traits/Searchable.php index d9f8877f43b..69f18b1e6f0 100644 --- a/app/Traits/Searchable.php +++ b/app/Traits/Searchable.php @@ -2,6 +2,7 @@ namespace App\Traits; +use App\Helpers\StringHelper; use Illuminate\Database\Eloquent\Builder; trait Searchable @@ -11,30 +12,23 @@ trait Searchable * * @param Builder $builder query builder * @param $needle + * @param int $accountId + * @param int $limitPerPage * * @return \Illuminate\Database\Eloquent\Collection */ - public function scopeSearch(Builder $builder, $needle, $accountId) + public function scopeSearch(Builder $builder, $needle, $accountId, $limitPerPage, $sortOrder, $whereCondition = null) { if ($this->searchable_columns == null) { return; } - // building the query. there is probably a way to make this more elegant. - $count = count($this->searchable_columns); - $counter = 1; - $queryString = ''; - foreach ($this->searchable_columns as $column) { - $queryString .= $column.' LIKE \'%'.$needle.'%\''; - if ($counter != $count) { - $queryString .= ' or '; - } - $counter++; - } + $queryString = StringHelper::buildQuery($this->searchable_columns, $needle); - $builder->whereRaw('account_id = '.$accountId.' and ('.$queryString.')'); + $builder->whereRaw('account_id = '.$accountId.' and ('.$queryString.') '.$whereCondition); + $builder->orderByRaw($sortOrder); $builder->select($this->return_from_search); - return $builder->get(); + return $builder->paginate($limitPerPage); } } diff --git a/app/Traits/VCardImporter.php b/app/Traits/VCardImporter.php new file mode 100644 index 00000000000..9208945bfcf --- /dev/null +++ b/app/Traits/VCardImporter.php @@ -0,0 +1,232 @@ +workInit($matchCount)) { + return; + } + + // create special gender for this import + // we don't know which gender all the contacts are, so we need to create a special status for them, as we + // can't guess whether they are men, women or else. + $gender = Gender::where('name', 'vCard')->first(); + if (! $gender) { + $gender = new Gender; + $gender->account_id = $account_id; + $gender->name = 'vCard'; + $gender->save(); + } + + collect($matches[0])->map(function ($vcard) { + return Reader::read($vcard); + })->each(function (VCard $vcard) use ($account_id, $gender) { + if ($this->contactExists($vcard, $account_id)) { + $this->workContactExists($vcard); + $this->skippedContacts++; + + return; + } + + // Skip contact if there isn't a first name or a nickname + if (! $this->contactHasName($vcard)) { + $this->workContactNoFirstname($vcard); + $this->skippedContacts++; + + return; + } + + $this->vCardToContact($vcard, $account_id, $gender->id); + + $this->importedContacts++; + + $this->workNext($vcard); + }); + + $this->workEnd($matchCount, $this->skippedContacts, $this->importedContacts); + } + + private function vCardToContact($vcard, $account_id, $gender_id) + { + $contact = new Contact(); + $contact->account_id = $account_id; + $contact->gender_id = $gender_id; + + if ($vcard->N && ! empty($vcard->N->getParts()[1])) { + $contact->first_name = $this->formatValue($vcard->N->getParts()[1]); + $contact->middle_name = $this->formatValue($vcard->N->getParts()[2]); + $contact->last_name = $this->formatValue($vcard->N->getParts()[0]); + } else { + $contact->first_name = $this->formatValue($vcard->NICKNAME); + } + + $contact->job = $this->formatValue($vcard->ORG); + + $contact->setAvatarColor(); + + $contact->save(); + + if ($vcard->BDAY && ! empty((string) $vcard->BDAY)) { + $birthdate = new \DateTime((string) $vcard->BDAY); + + $specialDate = $contact->setSpecialDate('birthdate', $birthdate->format('Y'), $birthdate->format('m'), $birthdate->format('d')); + $specialDate->setReminder('year', 1, trans('people.people_add_birthday_reminder', ['name' => $contact->first_name])); + } + + if ($vcard->ADR) { + $address = new Address(); + $address->street = $this->formatValue($vcard->ADR->getParts()[2]); + $address->city = $this->formatValue($vcard->ADR->getParts()[3]); + $address->province = $this->formatValue($vcard->ADR->getParts()[4]); + $address->postal_code = $this->formatValue($vcard->ADR->getParts()[5]); + + $country = Country::where('country', $vcard->ADR->getParts()[6]) + ->orWhere('iso', mb_strtolower($vcard->ADR->getParts()[6])) + ->first(); + + if ($country) { + $address->country_id = $country->id; + } + + $address->contact_id = $contact->id; + $address->account_id = $contact->account_id; + $address->save(); + } + + if (! is_null($this->formatValue($vcard->EMAIL))) { + // Saves the email + $contactField = new ContactField; + $contactField->contact_id = $contact->id; + $contactField->account_id = $contact->account_id; + $contactField->data = $this->formatValue($vcard->EMAIL); + $contactField->contact_field_type_id = $this->contactFieldEmailId(); + $contactField->save(); + } + + if (! is_null($this->formatValue($vcard->TEL))) { + // Saves the phone number + $contactField = new ContactField; + $contactField->contact_id = $contact->id; + $contactField->account_id = $contact->account_id; + $contactField->data = $this->formatValue($vcard->TEL); + $contactField->contact_field_type_id = $this->contactFieldPhoneId(); + $contactField->save(); + } + + $contact->updateGravatar(); + + $contact->logEvent('contact', $contact->id, 'create'); + } + + private function contactFieldEmailId() + { + if (! $this->contactFieldEmailId) { + $contactFieldType = ContactFieldType::where('type', 'email')->first(); + $this->contactFieldEmailId = $contactFieldType->id; + } + + return $this->contactFieldEmailId; + } + + private function contactFieldPhoneId() + { + if (! $this->contactFieldPhoneId) { + $contactFieldType = ContactFieldType::where('type', 'phone')->first(); + $this->contactFieldPhoneId = $contactFieldType->id; + } + + return $this->contactFieldPhoneId; + } + + protected function workInit($matchCount) + { + return true; + } + + protected function workContactExists($vcard) + { + } + + protected function workContactNoFirstname($vcard) + { + } + + protected function workNext($vcard) + { + } + + protected function workEnd($matchCount, $skippedContacts, $importedContacts) + { + } + + /** + * Formats and returns a string for the contact. + * + * @param null|string $value + * @return null|string + */ + private function formatValue($value) + { + return ! empty((string) $value) ? (string) $value : null; + } + + /** + * Checks whether a contact already exists for a given account. + * + * @param VCard $vcard + * @param int $account_id + * @return bool + */ + private function contactExists(VCard $vcard, int $account_id) + { + $email = (string) $vcard->EMAIL; + + $contactFieldType = ContactFieldType::where([ + ['account_id', $account_id], + ['type', 'email'], + ])->first(); + + $contactField = null; + + if ($contactFieldType) { + $contactField = ContactField::where([ + ['account_id', $account_id], + ['data', $email], + ['contact_field_type_id', $contactFieldType->id], + ])->first(); + } + + return $email && $contactField; + } + + /** + * Checks whether a contact has a first name or a nickname. + * Nickname is used as a fallback if no first name is provided. + * + * @param VCard $vcard + * @return bool + */ + public function contactHasName(VCard $vcard): bool + { + return ! empty($vcard->N->getParts()[1]) || ! empty((string) $vcard->NICKNAME); + } +} diff --git a/app/User.php b/app/User.php index 7ce7ea0ec81..f128ac48d05 100644 --- a/app/User.php +++ b/app/User.php @@ -2,6 +2,7 @@ namespace App; +use Carbon\Carbon; use Laravel\Passport\HasApiTokens; use Illuminate\Notifications\Notifiable; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -10,7 +11,7 @@ class User extends Authenticatable { - use Notifiable,HasApiTokens; + use Notifiable, HasApiTokens; /** * The attributes that are mass assignable. @@ -35,6 +36,33 @@ class User extends Authenticatable 'password', 'remember_token', 'google2fa_secret', ]; + /** + * Create a new User. + * + * @param int $account_id + * @param string $first_name + * @param string $last_name + * @param string $email + * @param string $password + * @return this + */ + public static function createDefault($account_id, $first_name, $last_name, $email, $password) + { + // create the user + $user = new self; + $user->account_id = $account_id; + $user->first_name = $first_name; + $user->last_name = $last_name; + $user->email = $email; + $user->password = bcrypt($password); + $user->timezone = config('app.timezone'); + $user->created_at = now(); + $user->locale = \App::getLocale(); + $user->save(); + + return $user; + } + /** * Get the account record associated with the user. * @@ -81,6 +109,17 @@ public function getMetricSymbol() } } + /** + * Get the user's locale. + * + * @param string $value + * @return string + */ + public function getLocaleAttribute($value) + { + return $value; + } + /** * Get users's full name. The name is formatted according to the user's * preference, either "Firstname Lastname", or "Lastname Firstname". @@ -136,8 +175,8 @@ public function updateContactViewPreference($preference) public function hasAlreadyRatedToday() { try { - $day = Day::where('account_id', $this->account_id) - ->where('date', \Carbon\Carbon::now($this->timezone)->format('Y-m-d')) + Day::where('account_id', $this->account_id) + ->where('date', now($this->timezone)->format('Y-m-d')) ->firstOrFail(); } catch (ModelNotFoundException $e) { return false; @@ -161,7 +200,7 @@ public function setGoogle2faSecretAttribute($value) * Decrypt the user's google_2fa secret. * * @param string $value - * @return string + * @return string|null */ public function getGoogle2faSecretAttribute($value) { @@ -171,4 +210,35 @@ public function getGoogle2faSecretAttribute($value) return decrypt($value); } + + /** + * Indicate whether the user should be reminded about a reminder or notification. + * The user should be reminded only if the date of the reminder matches the + * current date, and the current hour matches the hour the account owner + * wants to be reminded. + * + * @param Carbon $date + * @return bool + */ + public function shouldBeReminded(Carbon $date) + { + $dateOfReminder = $date->hour(0)->minute(0)->second(0)->toDateString(); + + $currentDate = now($this->timezone); + + $currentHourOnUserTimezone = $currentDate->format('H:00'); + $currentDateOnUserTimezone = $currentDate->hour(0)->minute(0)->second(0)->toDateString(); + + $hourEmailShouldBeSent = $this->account->default_time_reminder_is_sent; + + if ($dateOfReminder != $currentDateOnUserTimezone) { + return false; + } + + if ($hourEmailShouldBeSent != $currentHourOnUserTimezone) { + return false; + } + + return true; + } } diff --git a/composer.json b/composer.json index 2541fe2bf13..ee527a5958d 100644 --- a/composer.json +++ b/composer.json @@ -4,50 +4,50 @@ "license": "AGPL", "keywords": ["prm", "crm", "social"], "type": "project", - "repositories": [ - { - "type": "vcs", - "url": "https://github.com/asbiin/steward" - }, - { - "type": "vcs", - "url": "https://github.com/asbiin/google2fa-laravel" - } - ], "require": { "php": ">=7.0.0", "ext-intl": "*", "bacon/bacon-qr-code": "^1.0", - "barryvdh/laravel-debugbar": "^2.2", + "creativeorange/gravatar": "~1.0", "doctrine/dbal": "^2.5", - "erusev/parsedown": "~1.6", + "erusev/parsedown": "~1.7", "fzaninotto/faker": "^1.6", "guzzlehttp/guzzle": "^6.2", "intervention/image": "^2.3", - "jenssegers/date": "^3.2", + "jenssegers/date": "^3.3", + "jeroendesloovere/vcard": "^1.5", "laravel/cashier": "~7.0", "laravel/framework": "5.5.*", "laravel/passport": "^4.0", "laravel/socialite": "^3.0", "league/flysystem-aws-s3-v3": "~1.0", + "mariuzzo/laravel-js-localization": "^1.4", "paragonie/constant_time_encoding": "^2.2", - "pragmarx/google2fa": "^2.0", - "pragmarx/google2fa-laravel": "dev-create-authenticator-controller", - "pragmarx/recovery": "^0.1.0", + "pragmarx/google2fa": "^3.0", + "pragmarx/google2fa-laravel": "^0.2", + "pragmarx/recovery": "^0.1", "predis/predis": "^1.1", - "roave/security-advisories": "dev-master", "sabre/vobject": "^4.1", - "sentry/sentry-laravel": "^0.7.0" + "sentry/sentry-laravel": "^0.8", + "symfony/translation": "^3.4", + "vluzrmos/language-detector": "^1.0" }, "require-dev": { - "enm1989/chromedriver": "^2.35", - "filp/whoops": "~2.0", - "lmc/steward": "dev-update-dependencies", - "mockery/mockery": "0.9.*", + "barryvdh/laravel-debugbar": "^3", + "enm1989/chromedriver": "^2.36", + "filp/whoops": "~2.1", + "khanamiryan/qrcode-detector-decoder": "^1.0", + "laravel/dusk": "^2.0", + "matthiasnoback/live-code-coverage": "^1.0", + "mockery/mockery": "~1.0", + "phpunit/phpcov": "^4.0", "phpunit/phpunit": "~6.0", - "se/selenium-server-standalone": "^3.8", - "symfony/css-selector": "2.8.*|3.0.*", - "symfony/dom-crawler": "2.8.*|3.0.*" + "roave/security-advisories": "dev-master", + "symfony/css-selector": "~4.0", + "symfony/dom-crawler": "~4.0" + }, + "suggest": { + "ext-apcu": "*" }, "autoload": { "classmap": [ @@ -83,6 +83,7 @@ ] }, "config": { + "apcu-autoloader": true, "preferred-install": "dist", "sort-packages": true, "optimize-autoloader": true diff --git a/composer.lock b/composer.lock index d8e8aec2b35..d145d241c8a 100644 --- a/composer.lock +++ b/composer.lock @@ -4,20 +4,20 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "content-hash": "06a766cfd712b9627f774ea5485f0c04", + "content-hash": "db3c391b74b6e59a6320f0c4a972b4bc", "packages": [ { "name": "aws/aws-sdk-php", - "version": "3.50.0", + "version": "3.53.0", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "ed3308588d5d8d8f7a96dc93ff297988cefa7b4a" + "reference": "225593974bb6f6b1c13ddf946d3736d3e39119e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/ed3308588d5d8d8f7a96dc93ff297988cefa7b4a", - "reference": "ed3308588d5d8d8f7a96dc93ff297988cefa7b4a", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/225593974bb6f6b1c13ddf946d3736d3e39119e5", + "reference": "225593974bb6f6b1c13ddf946d3736d3e39119e5", "shasum": "" }, "require": { @@ -84,7 +84,7 @@ "s3", "sdk" ], - "time": "2018-01-18T01:08:26+00:00" + "time": "2018-03-30T20:22:38+00:00" }, { "name": "bacon/bacon-qr-code", @@ -133,33 +133,82 @@ "time": "2017-10-17T09:59:25+00:00" }, { - "name": "barryvdh/laravel-debugbar", - "version": "v2.4.3", + "name": "behat/transliterator", + "version": "v1.2.0", "source": { "type": "git", - "url": "https://github.com/barryvdh/laravel-debugbar.git", - "reference": "d7c88f08131f6404cb714f3f6cf0642f6afa3903" + "url": "https://github.com/Behat/Transliterator.git", + "reference": "826ce7e9c2a6664c0d1f381cbb38b1fb80a7ee2c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/d7c88f08131f6404cb714f3f6cf0642f6afa3903", - "reference": "d7c88f08131f6404cb714f3f6cf0642f6afa3903", + "url": "https://api.github.com/repos/Behat/Transliterator/zipball/826ce7e9c2a6664c0d1f381cbb38b1fb80a7ee2c", + "reference": "826ce7e9c2a6664c0d1f381cbb38b1fb80a7ee2c", "shasum": "" }, "require": { - "illuminate/support": "5.1.*|5.2.*|5.3.*|5.4.*|5.5.*", - "maximebf/debugbar": "~1.13.0", - "php": ">=5.5.9", - "symfony/finder": "~2.7|~3.0" + "php": ">=5.3.3" + }, + "require-dev": { + "chuyskywalker/rolling-curl": "^3.1", + "php-yaoi/php-yaoi": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2-dev" + } + }, + "autoload": { + "psr-0": { + "Behat\\Transliterator": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Artistic-1.0" + ], + "description": "String transliterator", + "keywords": [ + "i18n", + "slug", + "transliterator" + ], + "time": "2017-04-04T11:38:05+00:00" + }, + { + "name": "creativeorange/gravatar", + "version": "v1.0.11", + "source": { + "type": "git", + "url": "https://github.com/creativeorange/gravatar.git", + "reference": "4459b68a853ffdb1c2abbf9419214df46371889b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/creativeorange/gravatar/zipball/4459b68a853ffdb1c2abbf9419214df46371889b", + "reference": "4459b68a853ffdb1c2abbf9419214df46371889b", + "shasum": "" + }, + "require": { + "illuminate/support": "5.*", + "php": ">=5.4.0" }, "type": "library", + "extra": { + "laravel": { + "providers": [ + "Creativeorange\\Gravatar\\GravatarServiceProvider" + ], + "aliases": { + "Gravatar": "Creativeorange\\Gravatar\\Facades\\Gravatar" + } + } + }, "autoload": { "psr-4": { - "Barryvdh\\Debugbar\\": "src/" - }, - "files": [ - "src/helpers.php" - ] + "Creativeorange\\Gravatar\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -167,19 +216,19 @@ ], "authors": [ { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" + "name": "Jaco Tijssen", + "email": "jaco@creativeorange.nl", + "homepage": "https://www.creativeorange.nl", + "role": "Developer" } ], - "description": "PHP Debugbar integration for Laravel", + "description": "Gravatar for Laravel 5.0.x through 5.5.x package for retrieving gravatar image URLs or checking the existance of an image.", "keywords": [ - "debug", - "debugbar", - "laravel", - "profiler", - "webprofiler" + "avatar", + "gravatar", + "laravel" ], - "time": "2017-07-21T11:56:48+00:00" + "time": "2018-03-29T22:10:58+00:00" }, { "name": "defuse/php-encryption", @@ -841,19 +890,20 @@ }, { "name": "erusev/parsedown", - "version": "1.6.4", + "version": "1.7.1", "source": { "type": "git", "url": "https://github.com/erusev/parsedown.git", - "reference": "fbe3fe878f4fe69048bb8a52783a09802004f548" + "reference": "92e9c27ba0e74b8b028b111d1b6f956a15c01fc1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/erusev/parsedown/zipball/fbe3fe878f4fe69048bb8a52783a09802004f548", - "reference": "fbe3fe878f4fe69048bb8a52783a09802004f548", + "url": "https://api.github.com/repos/erusev/parsedown/zipball/92e9c27ba0e74b8b028b111d1b6f956a15c01fc1", + "reference": "92e9c27ba0e74b8b028b111d1b6f956a15c01fc1", "shasum": "" }, "require": { + "ext-mbstring": "*", "php": ">=5.3.0" }, "require-dev": { @@ -882,7 +932,7 @@ "markdown", "parser" ], - "time": "2017-11-14T20:44:03+00:00" + "time": "2018-03-08T01:11:30+00:00" }, { "name": "firebase/php-jwt", @@ -982,16 +1032,16 @@ }, { "name": "guzzlehttp/guzzle", - "version": "6.3.0", + "version": "6.3.2", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "f4db5a78a5ea468d4831de7f0bf9d9415e348699" + "reference": "68d0ea14d5a3f42a20e87632a5f84931e2709c90" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/f4db5a78a5ea468d4831de7f0bf9d9415e348699", - "reference": "f4db5a78a5ea468d4831de7f0bf9d9415e348699", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/68d0ea14d5a3f42a20e87632a5f84931e2709c90", + "reference": "68d0ea14d5a3f42a20e87632a5f84931e2709c90", "shasum": "" }, "require": { @@ -1001,7 +1051,7 @@ }, "require-dev": { "ext-curl": "*", - "phpunit/phpunit": "^4.0 || ^5.0", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4", "psr/log": "^1.0" }, "suggest": { @@ -1010,7 +1060,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "6.2-dev" + "dev-master": "6.3-dev" } }, "autoload": { @@ -1043,7 +1093,7 @@ "rest", "web service" ], - "time": "2017-06-22T18:50:49+00:00" + "time": "2018-03-26T16:33:04+00:00" }, { "name": "guzzlehttp/promises", @@ -1233,22 +1283,22 @@ }, { "name": "jenssegers/date", - "version": "v3.2.12", + "version": "v3.3.1", "source": { "type": "git", "url": "https://github.com/jenssegers/date.git", - "reference": "1db4d580d1d45085a48fd4a332697619b9a3851c" + "reference": "eb9ae6b49001a4b8031404aba52e6145a2dda3af" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/jenssegers/date/zipball/1db4d580d1d45085a48fd4a332697619b9a3851c", - "reference": "1db4d580d1d45085a48fd4a332697619b9a3851c", + "url": "https://api.github.com/repos/jenssegers/date/zipball/eb9ae6b49001a4b8031404aba52e6145a2dda3af", + "reference": "eb9ae6b49001a4b8031404aba52e6145a2dda3af", "shasum": "" }, "require": { "nesbot/carbon": "^1.0", "php": ">=5.4", - "symfony/translation": "^2.7|^3.0" + "symfony/translation": "^2.7|^3.0|^4.0" }, "require-dev": { "phpunit/phpunit": "^4.0|^5.0|^6.0", @@ -1294,20 +1344,69 @@ "time", "translation" ], - "time": "2017-06-30T11:51:03+00:00" + "time": "2018-03-01T09:51:53+00:00" + }, + { + "name": "jeroendesloovere/vcard", + "version": "1.6", + "source": { + "type": "git", + "url": "https://github.com/jeroendesloovere/vcard.git", + "reference": "2ff9bf74ea79ae7c21d6a1a9a3cc601a37019727" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/jeroendesloovere/vcard/zipball/2ff9bf74ea79ae7c21d6a1a9a3cc601a37019727", + "reference": "2ff9bf74ea79ae7c21d6a1a9a3cc601a37019727", + "shasum": "" + }, + "require": { + "behat/transliterator": "~1.0", + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "4.6.*" + }, + "type": "library", + "autoload": { + "psr-4": { + "JeroenDesloovere\\VCard\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jeroen Desloovere", + "email": "info@jeroendesloovere.be", + "homepage": "http://jeroendesloovere.be", + "role": "Developer" + } + ], + "description": "This VCard PHP class can generate a vCard with some data. When using an iOS device it will export as a .ics file because iOS devices don't support the default .vcf files.", + "homepage": "https://github.com/jeroendesloovere/vcard", + "keywords": [ + ".vcf", + "generator", + "php", + "vCard" + ], + "time": "2018-03-12T15:09:51+00:00" }, { "name": "laravel/cashier", - "version": "v7.0.13", + "version": "v7.1.0", "source": { "type": "git", "url": "https://github.com/laravel/cashier.git", - "reference": "df8b12de451e2ad1b2285e67518e9fb97ebd7cb2" + "reference": "24064155f6f9d97e83669455ad305c3dfec908b7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/cashier/zipball/df8b12de451e2ad1b2285e67518e9fb97ebd7cb2", - "reference": "df8b12de451e2ad1b2285e67518e9fb97ebd7cb2", + "url": "https://api.github.com/repos/laravel/cashier/zipball/24064155f6f9d97e83669455ad305c3dfec908b7", + "reference": "24064155f6f9d97e83669455ad305c3dfec908b7", "shasum": "" }, "require": { @@ -1359,31 +1458,31 @@ "laravel", "stripe" ], - "time": "2017-12-29T15:23:28+00:00" + "time": "2018-03-14T12:22:43+00:00" }, { "name": "laravel/framework", - "version": "v5.5.32", + "version": "v5.5.40", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "254e4c3e133f5bc8d6068cdf28ea062abc10adf2" + "reference": "d724ce0aa61bbd9adf658215eec484f5dd6711d6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/254e4c3e133f5bc8d6068cdf28ea062abc10adf2", - "reference": "254e4c3e133f5bc8d6068cdf28ea062abc10adf2", + "url": "https://api.github.com/repos/laravel/framework/zipball/d724ce0aa61bbd9adf658215eec484f5dd6711d6", + "reference": "d724ce0aa61bbd9adf658215eec484f5dd6711d6", "shasum": "" }, "require": { "doctrine/inflector": "~1.1", - "erusev/parsedown": "~1.6", + "erusev/parsedown": "~1.7", "ext-mbstring": "*", "ext-openssl": "*", - "league/flysystem": "~1.0", + "league/flysystem": "^1.0.8", "monolog/monolog": "~1.12", "mtdowling/cron-expression": "~1.0", - "nesbot/carbon": "~1.20", + "nesbot/carbon": "^1.24.1", "php": ">=7.0", "psr/container": "~1.0", "psr/simple-cache": "^1.0", @@ -1429,7 +1528,7 @@ "illuminate/translation": "self.version", "illuminate/validation": "self.version", "illuminate/view": "self.version", - "tightenco/collect": "self.version" + "tightenco/collect": "<5.5.33" }, "require-dev": { "aws/aws-sdk-php": "~3.0", @@ -1493,7 +1592,7 @@ "framework", "laravel" ], - "time": "2018-01-18T13:27:23+00:00" + "time": "2018-03-30T13:29:30+00:00" }, { "name": "laravel/passport", @@ -1736,16 +1835,16 @@ }, { "name": "league/flysystem", - "version": "1.0.41", + "version": "1.0.43", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "f400aa98912c561ba625ea4065031b7a41e5a155" + "reference": "1ce7cc142d906ba58dc54c82915d355a9191c8a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/f400aa98912c561ba625ea4065031b7a41e5a155", - "reference": "f400aa98912c561ba625ea4065031b7a41e5a155", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/1ce7cc142d906ba58dc54c82915d355a9191c8a8", + "reference": "1ce7cc142d906ba58dc54c82915d355a9191c8a8", "shasum": "" }, "require": { @@ -1756,12 +1855,13 @@ }, "require-dev": { "ext-fileinfo": "*", - "mockery/mockery": "~0.9", - "phpspec/phpspec": "^2.2", - "phpunit/phpunit": "~4.8" + "phpspec/phpspec": "^3.4", + "phpunit/phpunit": "^5.7" }, "suggest": { "ext-fileinfo": "Required for MimeType", + "ext-ftp": "Allows you to use FTP server storage", + "ext-openssl": "Allows you to use FTPS server storage", "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2", "league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3", "league/flysystem-azure": "Allows you to use Windows Azure Blob storage", @@ -1815,20 +1915,20 @@ "sftp", "storage" ], - "time": "2017-08-06T17:41:04+00:00" + "time": "2018-03-01T10:27:04+00:00" }, { "name": "league/flysystem-aws-s3-v3", - "version": "1.0.18", + "version": "1.0.19", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem-aws-s3-v3.git", - "reference": "dc09b19f455750663b922ed52dcc0ff215bed284" + "reference": "f135691ef6761542af301b7c9880f140fb12dc74" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/dc09b19f455750663b922ed52dcc0ff215bed284", - "reference": "dc09b19f455750663b922ed52dcc0ff215bed284", + "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/f135691ef6761542af301b7c9880f140fb12dc74", + "reference": "f135691ef6761542af301b7c9880f140fb12dc74", "shasum": "" }, "require": { @@ -1862,7 +1962,7 @@ } ], "description": "Flysystem adapter for the AWS S3 SDK v3.x", - "time": "2017-06-30T06:29:25+00:00" + "time": "2018-03-27T20:33:59+00:00" }, { "name": "league/oauth1-client", @@ -1996,41 +2096,40 @@ "time": "2017-12-23T23:33:42+00:00" }, { - "name": "maximebf/debugbar", - "version": "1.13.1", + "name": "mariuzzo/laravel-js-localization", + "version": "v1.4.7", "source": { "type": "git", - "url": "https://github.com/maximebf/php-debugbar.git", - "reference": "afee79a236348e39a44cb837106b7c5b4897ac2a" + "url": "https://github.com/rmariuzzo/Laravel-JS-Localization.git", + "reference": "e36ea8dadfa680d862262af2ea4abbe5697bc03e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/maximebf/php-debugbar/zipball/afee79a236348e39a44cb837106b7c5b4897ac2a", - "reference": "afee79a236348e39a44cb837106b7c5b4897ac2a", + "url": "https://api.github.com/repos/rmariuzzo/Laravel-JS-Localization/zipball/e36ea8dadfa680d862262af2ea4abbe5697bc03e", + "reference": "e36ea8dadfa680d862262af2ea4abbe5697bc03e", "shasum": "" }, "require": { - "php": ">=5.3.0", - "psr/log": "^1.0", - "symfony/var-dumper": "^2.6|^3.0" + "illuminate/config": ">=4.2", + "illuminate/console": ">=4.2", + "illuminate/filesystem": ">=4.2", + "php": ">=5.4.0", + "tedivm/jshrink": "1.0.*" }, "require-dev": { - "phpunit/phpunit": "^4.0|^5.0" - }, - "suggest": { - "kriswallsmith/assetic": "The best way to manage assets", - "monolog/monolog": "Log using Monolog", - "predis/predis": "Redis storage" + "phpunit/phpunit": "4.8.*" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "1.13-dev" + "laravel": { + "providers": [ + "Mariuzzo\\LaravelJsLocalization\\LaravelJsLocalizationServiceProvider" + ] } }, "autoload": { "psr-4": { - "DebugBar\\": "src/DebugBar/" + "Mariuzzo\\LaravelJsLocalization\\": "src/Mariuzzo/LaravelJsLocalization/" } }, "notification-url": "https://packagist.org/downloads/", @@ -2039,22 +2138,45 @@ ], "authors": [ { - "name": "Maxime Bouroumeau-Fuseau", - "email": "maxime.bouroumeau@gmail.com", - "homepage": "http://maximebf.com" + "name": "Rubens Mariuzzo", + "email": "rubens@mariuzzo.com", + "homepage": "https://github.com/rmariuzzo", + "role": "Developer" }, { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" + "name": "German Popoter", + "email": "me@gpopoteur.com", + "homepage": "https://github.com/gpopoteur", + "role": "Developer" + }, + { + "name": "Galievskiy Dmitriy", + "homepage": "https://github.com/xAockd", + "role": "Developer" + }, + { + "name": "Ramon Ackermann", + "homepage": "https://github.com/sboo", + "role": "Developer" + }, + { + "name": "Pe Ell", + "homepage": "https://github.com/a-komarev", + "role": "Developer" } ], - "description": "Debug bar in the browser for php application", - "homepage": "https://github.com/maximebf/php-debugbar", + "description": "Laravel Localization in JavaScript", + "homepage": "https://github.com/rmariuzzo/laravel-js-localization", "keywords": [ - "debug", - "debugbar" + "JS", + "i18n", + "javascript", + "lang", + "laravel", + "laravel 5", + "localization" ], - "time": "2017-01-05T08:46:19+00:00" + "time": "2017-11-23T04:07:56+00:00" }, { "name": "monolog/monolog", @@ -2235,25 +2357,25 @@ }, { "name": "nesbot/carbon", - "version": "1.22.1", + "version": "1.25.0", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "7cdf42c0b1cc763ab7e4c33c47a24e27c66bfccc" + "reference": "cbcf13da0b531767e39eb86e9687f5deba9857b4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/7cdf42c0b1cc763ab7e4c33c47a24e27c66bfccc", - "reference": "7cdf42c0b1cc763ab7e4c33c47a24e27c66bfccc", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/cbcf13da0b531767e39eb86e9687f5deba9857b4", + "reference": "cbcf13da0b531767e39eb86e9687f5deba9857b4", "shasum": "" }, "require": { - "php": ">=5.3.0", - "symfony/translation": "~2.6 || ~3.0" + "php": ">=5.3.9", + "symfony/translation": "~2.6 || ~3.0 || ~4.0" }, "require-dev": { "friendsofphp/php-cs-fixer": "~2", - "phpunit/phpunit": "~4.0 || ~5.0" + "phpunit/phpunit": "^4.8.35 || ^5.7" }, "type": "library", "extra": { @@ -2284,28 +2406,28 @@ "datetime", "time" ], - "time": "2017-01-16T07:55:07+00:00" + "time": "2018-03-19T15:50:49+00:00" }, { "name": "paragonie/constant_time_encoding", - "version": "v2.2.0", + "version": "v2.2.2", "source": { "type": "git", "url": "https://github.com/paragonie/constant_time_encoding.git", - "reference": "9e7d88e6e4015c2f06a3fa22f06e1d5faa77e6c4" + "reference": "eccf915f45f911bfb189d1d1638d940ec6ee6e33" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/9e7d88e6e4015c2f06a3fa22f06e1d5faa77e6c4", - "reference": "9e7d88e6e4015c2f06a3fa22f06e1d5faa77e6c4", + "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/eccf915f45f911bfb189d1d1638d940ec6ee6e33", + "reference": "eccf915f45f911bfb189d1d1638d940ec6ee6e33", "shasum": "" }, "require": { "php": "^7" }, "require-dev": { - "phpunit/phpunit": "^6", - "vimeo/psalm": "^0.3|^1" + "phpunit/phpunit": "^6|^7", + "vimeo/psalm": "^1" }, "type": "library", "autoload": { @@ -2346,7 +2468,7 @@ "hex2bin", "rfc4648" ], - "time": "2017-09-22T14:55:37+00:00" + "time": "2018-03-10T19:47:49+00:00" }, { "name": "paragonie/random_compat", @@ -2475,16 +2597,16 @@ }, { "name": "phpseclib/phpseclib", - "version": "2.0.9", + "version": "2.0.10", "source": { "type": "git", "url": "https://github.com/phpseclib/phpseclib.git", - "reference": "c9a3fe35e20eb6eeaca716d6a23cde03f52d1558" + "reference": "d305b780829ea4252ed9400b3f5937c2c99b51d4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/c9a3fe35e20eb6eeaca716d6a23cde03f52d1558", - "reference": "c9a3fe35e20eb6eeaca716d6a23cde03f52d1558", + "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/d305b780829ea4252ed9400b3f5937c2c99b51d4", + "reference": "d305b780829ea4252ed9400b3f5937c2c99b51d4", "shasum": "" }, "require": { @@ -2492,7 +2614,7 @@ }, "require-dev": { "phing/phing": "~2.7", - "phpunit/phpunit": "~4.0", + "phpunit/phpunit": "^4.8.35|^5.7|^6.0", "sami/sami": "~2.0", "squizlabs/php_codesniffer": "~2.0" }, @@ -2563,20 +2685,20 @@ "x.509", "x509" ], - "time": "2017-11-29T06:38:08+00:00" + "time": "2018-02-19T04:29:13+00:00" }, { "name": "pragmarx/google2fa", - "version": "v2.0.7", + "version": "v3.0.1", "source": { "type": "git", "url": "https://github.com/antonioribeiro/google2fa.git", - "reference": "5a818bda62fab0c0a79060b06d50d50b5525d631" + "reference": "40b3ce025bed0f9cd0c1c8ab7fc8265344c73de0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/antonioribeiro/google2fa/zipball/5a818bda62fab0c0a79060b06d50d50b5525d631", - "reference": "5a818bda62fab0c0a79060b06d50d50b5525d631", + "url": "https://api.github.com/repos/antonioribeiro/google2fa/zipball/40b3ce025bed0f9cd0c1c8ab7fc8265344c73de0", + "reference": "40b3ce025bed0f9cd0c1c8ab7fc8265344c73de0", "shasum": "" }, "require": { @@ -2607,7 +2729,7 @@ }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { @@ -2624,30 +2746,30 @@ "google2fa", "laravel" ], - "time": "2018-01-06T16:21:07+00:00" + "time": "2018-03-15T23:14:19+00:00" }, { "name": "pragmarx/google2fa-laravel", - "version": "dev-create-authenticator-controller", + "version": "v0.2.0", "source": { "type": "git", - "url": "https://github.com/asbiin/google2fa-laravel.git", - "reference": "8ac00145615458ca3d019def267ae57d96932948" + "url": "https://github.com/antonioribeiro/google2fa-laravel.git", + "reference": "54f0c30c9be5497a7bd248844f1099156457e719" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/asbiin/google2fa-laravel/zipball/8ac00145615458ca3d019def267ae57d96932948", - "reference": "8ac00145615458ca3d019def267ae57d96932948", + "url": "https://api.github.com/repos/antonioribeiro/google2fa-laravel/zipball/54f0c30c9be5497a7bd248844f1099156457e719", + "reference": "54f0c30c9be5497a7bd248844f1099156457e719", "shasum": "" }, "require": { "laravel/framework": ">=5.2", "php": ">=5.4", - "pragmarx/google2fa": "~2.0" + "pragmarx/google2fa": "~3.0" }, "require-dev": { - "benconstable/phpspec-laravel": "~3.0", - "phpspec/phpspec": "~3" + "orchestra/testbench-browser-kit": "~3.4|~3.5|~3.6", + "phpunit/phpunit": "~5|~6|~7" }, "suggest": { "bacon/bacon-qr-code": "Required to generate inline QR Codes.", @@ -2660,7 +2782,7 @@ "Laravel" ], "branch-alias": { - "dev-master": "0.1-dev" + "dev-master": "0.2-dev" }, "laravel": { "providers": [ @@ -2674,9 +2796,10 @@ "autoload": { "psr-4": { "PragmaRX\\Google2FALaravel\\": "src/", - "spec\\PragmaRX\\Google2FALaravel\\": "tests/spec/" + "PragmaRX\\Google2FALaravel\\Tests\\": "tests/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -2689,15 +2812,12 @@ ], "description": "A One Time Password Authentication package, compatible with Google Authenticator.", "keywords": [ - "authentication", + "Authentication", + "Two Factor Authentication", "google2fa", - "laravel", - "two factor authentication" + "laravel" ], - "support": { - "source": "https://github.com/asbiin/google2fa-laravel/tree/create-authenticator-controller" - }, - "time": "2017-12-27T12:15:03+00:00" + "time": "2018-03-08T04:08:14+00:00" }, { "name": "pragmarx/random", @@ -3024,16 +3144,16 @@ }, { "name": "psr/simple-cache", - "version": "1.0.0", + "version": "1.0.1", "source": { "type": "git", "url": "https://github.com/php-fig/simple-cache.git", - "reference": "753fa598e8f3b9966c886fe13f370baa45ef0e24" + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/753fa598e8f3b9966c886fe13f370baa45ef0e24", - "reference": "753fa598e8f3b9966c886fe13f370baa45ef0e24", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", "shasum": "" }, "require": { @@ -3068,20 +3188,20 @@ "psr-16", "simple-cache" ], - "time": "2017-01-02T13:31:39+00:00" + "time": "2017-10-23T01:57:42+00:00" }, { "name": "ramsey/uuid", - "version": "3.7.2", + "version": "3.7.3", "source": { "type": "git", "url": "https://github.com/ramsey/uuid.git", - "reference": "bba83ad77bb9deb6d3c352a7361b818e415b221d" + "reference": "44abcdad877d9a46685a3a4d221e3b2c4b87cb76" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/bba83ad77bb9deb6d3c352a7361b818e415b221d", - "reference": "bba83ad77bb9deb6d3c352a7361b818e415b221d", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/44abcdad877d9a46685a3a4d221e3b2c4b87cb76", + "reference": "44abcdad877d9a46685a3a4d221e3b2c4b87cb76", "shasum": "" }, "require": { @@ -3092,17 +3212,15 @@ "rhumsaa/uuid": "self.version" }, "require-dev": { - "apigen/apigen": "^4.1", "codeception/aspect-mock": "^1.0 | ~2.0.0", "doctrine/annotations": "~1.2.0", "goaop/framework": "1.0.0-alpha.2 | ^1.0 | ^2.1", "ircmaxell/random-lib": "^1.1", "jakub-onderka/php-parallel-lint": "^0.9.0", - "mockery/mockery": "^0.9.4", + "mockery/mockery": "^0.9.9", "moontoast/math": "^1.1", "php-mock/php-mock-phpunit": "^0.3|^1.1", "phpunit/phpunit": "^4.7|^5.0", - "satooshi/php-coveralls": "^0.6.1", "squizlabs/php_codesniffer": "^2.3" }, "suggest": { @@ -3150,166 +3268,20 @@ "identifier", "uuid" ], - "time": "2018-01-13T22:22:03+00:00" + "time": "2018-01-20T00:28:24+00:00" }, { - "name": "roave/security-advisories", - "version": "dev-master", + "name": "sabberworm/php-css-parser", + "version": "8.1.0", "source": { "type": "git", - "url": "https://github.com/Roave/SecurityAdvisories.git", - "reference": "402a514551804df5b4b2150f217e23a15408795a" + "url": "https://github.com/sabberworm/PHP-CSS-Parser.git", + "reference": "850cbbcbe7fbb155387a151ea562897a67e242ef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/402a514551804df5b4b2150f217e23a15408795a", - "reference": "402a514551804df5b4b2150f217e23a15408795a", - "shasum": "" - }, - "conflict": { - "adodb/adodb-php": "<5.20.6", - "amphp/artax": "<1.0.6|>=2,<2.0.6", - "aws/aws-sdk-php": ">=3,<3.2.1", - "bugsnag/bugsnag-laravel": ">=2,<2.0.2", - "cakephp/cakephp": ">=1.3,<1.3.18|>=2,<2.4.99|>=2.5,<2.5.99|>=2.6,<2.6.12|>=2.7,<2.7.6|>=3,<3.0.15|>=3.1,<3.1.4", - "cart2quote/module-quotation": ">=4.1.6,<=4.4.5|>=5,<5.4.4", - "cartalyst/sentry": "<=2.1.6", - "codeigniter/framework": "<=3.0.6", - "composer/composer": "<=1.0.0-alpha11", - "contao-components/mediaelement": ">=2.14.2,<2.21.1", - "contao/core": ">=2,<3.5.32", - "contao/core-bundle": ">=4,<4.4.8", - "contao/listing-bundle": ">=4,<4.4.8", - "contao/newsletter-bundle": ">=4,<4.1", - "doctrine/annotations": ">=1,<1.2.7", - "doctrine/cache": ">=1,<1.3.2|>=1.4,<1.4.2", - "doctrine/common": ">=2,<2.4.3|>=2.5,<2.5.1", - "doctrine/dbal": ">=2,<2.0.8|>=2.1,<2.1.2", - "doctrine/doctrine-bundle": "<1.5.2", - "doctrine/doctrine-module": "<=0.7.1", - "doctrine/mongodb-odm": ">=1,<1.0.2", - "doctrine/mongodb-odm-bundle": ">=2,<3.0.1", - "doctrine/orm": ">=2,<2.4.8|>=2.5,<2.5.1", - "dompdf/dompdf": ">=0.6,<0.6.2", - "drupal/core": ">=8,<8.3.7", - "drupal/drupal": ">=8,<8.3.7", - "ezsystems/ezpublish-legacy": ">=5.3,<5.3.12.2|>=5.4,<5.4.10.1|>=2017.8,<2017.8.1.1", - "firebase/php-jwt": "<2", - "friendsofsymfony/rest-bundle": ">=1.2,<1.2.2", - "friendsofsymfony/user-bundle": ">=1.2,<1.3.5", - "gree/jose": "<=2.2", - "gregwar/rst": "<1.0.3", - "guzzlehttp/guzzle": ">=6,<6.2.1|>=4.0.0-rc2,<4.2.4|>=5,<5.3.1", - "illuminate/auth": ">=4,<4.0.99|>=4.1,<4.1.26", - "illuminate/database": ">=4,<4.0.99|>=4.1,<4.1.29", - "joomla/session": "<1.3.1", - "laravel/framework": ">=4,<4.0.99|>=4.1,<4.1.29", - "laravel/socialite": ">=1,<1.0.99|>=2,<2.0.10", - "magento/magento1ce": ">=1.5.0.1,<1.9.3.2", - "magento/magento1ee": ">=1.9,<1.14.3.2", - "magento/magento2ce": ">=2,<2.2", - "monolog/monolog": ">=1.8,<1.12", - "namshi/jose": "<2.2", - "onelogin/php-saml": "<2.10.4", - "oro/crm": ">=1.7,<1.7.4", - "oro/platform": ">=1.7,<1.7.4", - "phpmailer/phpmailer": ">=5,<5.2.24", - "phpunit/phpunit": ">=4.8.19,<4.8.28|>=5.0.10,<5.6.3", - "phpxmlrpc/extras": "<0.6.1", - "pusher/pusher-php-server": "<2.2.1", - "sabre/dav": ">=1.6,<1.6.99|>=1.7,<1.7.11|>=1.8,<1.8.9", - "shopware/shopware": "<5.2.25", - "silverstripe/cms": ">=3,<=3.0.11|>=3.1,<3.1.11", - "silverstripe/forum": "<=0.6.1|>=0.7,<=0.7.3", - "silverstripe/framework": ">=3,<3.3", - "silverstripe/userforms": "<3", - "simplesamlphp/saml2": "<1.8.1|>=1.9,<1.9.1|>=1.10,<1.10.3|>=2,<2.3.3", - "simplesamlphp/simplesamlphp": "<1.14.16", - "simplesamlphp/simplesamlphp-module-infocard": "<1.0.1", - "socalnick/scn-social-auth": "<1.15.2", - "squizlabs/php_codesniffer": ">=1,<2.8.1", - "swiftmailer/swiftmailer": ">=4,<5.4.5", - "symfony/dependency-injection": ">=2,<2.0.17", - "symfony/form": ">=2.3,<2.3.35|>=2.4,<2.6.12|>=2.7,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13", - "symfony/framework-bundle": ">=2,<2.3.18|>=2.4,<2.4.8|>=2.5,<2.5.2", - "symfony/http-foundation": ">=2,<2.3.27|>=2.4,<2.5.11|>=2.6,<2.6.6", - "symfony/http-kernel": ">=2,<2.3.29|>=2.4,<2.5.12|>=2.6,<2.6.8", - "symfony/intl": ">=2.7,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13", - "symfony/routing": ">=2,<2.0.19", - "symfony/security": ">=2,<2.0.25|>=2.1,<2.1.13|>=2.2,<2.2.9|>=2.3,<2.3.37|>=2.4,<2.6.13|>=2.7,<2.7.9|>=2.7.30,<2.7.32|>=2.8.23,<2.8.25|>=3.2.10,<3.2.12|>=3.3.3,<3.3.5", - "symfony/security-core": ">=2.4,<2.6.13|>=2.7,<2.7.9|>=2.7.30,<2.7.32|>=2.8,<2.8.6|>=2.8.23,<2.8.25|>=3,<3.0.6|>=3.2.10,<3.2.12|>=3.3.3,<3.3.5", - "symfony/security-csrf": ">=2.7,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13", - "symfony/security-http": ">=2.3,<2.3.41|>=2.4,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13", - "symfony/serializer": ">=2,<2.0.11", - "symfony/symfony": ">=2,<2.3.41|>=2.4,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13", - "symfony/translation": ">=2,<2.0.17", - "symfony/validator": ">=2,<2.0.24|>=2.1,<2.1.12|>=2.2,<2.2.5|>=2.3,<2.3.3", - "symfony/web-profiler-bundle": ">=2,<2.3.19|>=2.4,<2.4.9|>=2.5,<2.5.4", - "symfony/yaml": ">=2,<2.0.22|>=2.1,<2.1.7", - "thelia/backoffice-default-template": ">=2.1,<2.1.2", - "thelia/thelia": ">=2.1,<2.1.2|>=2.1.0-beta1,<2.1.3", - "twig/twig": "<1.20", - "typo3/cms": ">=6.2,<6.2.30|>=7,<7.6.22|>=8,<8.7.5", - "typo3/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.10|>=3.1,<3.1.7|>=3.2,<3.2.7|>=3.3,<3.3.5", - "typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4", - "willdurand/js-translation-bundle": "<2.1.1", - "yiisoft/yii": ">=1.1.14,<1.1.15", - "yiisoft/yii2": "<2.0.5", - "yiisoft/yii2-bootstrap": "<2.0.4", - "yiisoft/yii2-dev": "<2.0.4", - "yiisoft/yii2-gii": "<2.0.4", - "yiisoft/yii2-jui": "<2.0.4", - "zendframework/zend-cache": ">=2.4,<2.4.8|>=2.5,<2.5.3", - "zendframework/zend-captcha": ">=2,<2.4.9|>=2.5,<2.5.2", - "zendframework/zend-crypt": ">=2,<2.4.9|>=2.5,<2.5.2", - "zendframework/zend-db": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.10|>=2.3,<2.3.5", - "zendframework/zend-diactoros": ">=1,<1.0.4", - "zendframework/zend-form": ">=2,<2.2.7|>=2.3,<2.3.1", - "zendframework/zend-http": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.3,<2.3.8|>=2.4,<2.4.1", - "zendframework/zend-json": ">=2.1,<2.1.6|>=2.2,<2.2.6", - "zendframework/zend-ldap": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.8|>=2.3,<2.3.3", - "zendframework/zend-mail": ">=2,<2.4.11|>=2.5,<2.7.2", - "zendframework/zend-navigation": ">=2,<2.2.7|>=2.3,<2.3.1", - "zendframework/zend-session": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.9|>=2.3,<2.3.4", - "zendframework/zend-validator": ">=2.3,<2.3.6", - "zendframework/zend-view": ">=2,<2.2.7|>=2.3,<2.3.1", - "zendframework/zend-xmlrpc": ">=2.1,<2.1.6|>=2.2,<2.2.6", - "zendframework/zendframework": ">=2,<2.4.11|>=2.5,<2.5.1", - "zendframework/zendframework1": "<1.12.20", - "zendframework/zendopenid": ">=2,<2.0.2", - "zendframework/zendxml": ">=1,<1.0.1", - "zetacomponents/mail": "<1.8.2", - "zf-commons/zfc-user": "<1.2.2", - "zfcampus/zf-apigility-doctrine": ">=1,<1.0.3", - "zfr/zfr-oauth2-server-module": "<0.1.2" - }, - "type": "metapackage", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "role": "maintainer" - } - ], - "description": "Prevents installation of composer packages with known security vulnerabilities: no API, simply require it", - "time": "2018-01-18T10:00:53+00:00" - }, - { - "name": "sabberworm/php-css-parser", - "version": "8.1.0", - "source": { - "type": "git", - "url": "https://github.com/sabberworm/PHP-CSS-Parser.git", - "reference": "850cbbcbe7fbb155387a151ea562897a67e242ef" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sabberworm/PHP-CSS-Parser/zipball/850cbbcbe7fbb155387a151ea562897a67e242ef", - "reference": "850cbbcbe7fbb155387a151ea562897a67e242ef", + "url": "https://api.github.com/repos/sabberworm/PHP-CSS-Parser/zipball/850cbbcbe7fbb155387a151ea562897a67e242ef", + "reference": "850cbbcbe7fbb155387a151ea562897a67e242ef", "shasum": "" }, "require": { @@ -3395,16 +3367,16 @@ }, { "name": "sabre/vobject", - "version": "4.1.4", + "version": "4.1.5", "source": { "type": "git", "url": "https://github.com/sabre-io/vobject.git", - "reference": "6484b9d660822c5e221c76122ce8ea658ecc9c5b" + "reference": "0928660e92d46d2d24336a6db320636aa3a75414" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sabre-io/vobject/zipball/6484b9d660822c5e221c76122ce8ea658ecc9c5b", - "reference": "6484b9d660822c5e221c76122ce8ea658ecc9c5b", + "url": "https://api.github.com/repos/sabre-io/vobject/zipball/0928660e92d46d2d24336a6db320636aa3a75414", + "reference": "0928660e92d46d2d24336a6db320636aa3a75414", "shasum": "" }, "require": { @@ -3488,20 +3460,20 @@ "xCal", "xCard" ], - "time": "2017-12-22T14:16:56+00:00" + "time": "2018-03-08T21:06:39+00:00" }, { "name": "sabre/xml", - "version": "2.0.0", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/sabre-io/xml.git", - "reference": "054292959a1f2b64c10c9c7a03a816ba1872b8a3" + "reference": "22e96661458c55a2e532885922bf4a232186f6a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sabre-io/xml/zipball/054292959a1f2b64c10c9c7a03a816ba1872b8a3", - "reference": "054292959a1f2b64c10c9c7a03a816ba1872b8a3", + "url": "https://api.github.com/repos/sabre-io/xml/zipball/22e96661458c55a2e532885922bf4a232186f6a1", + "reference": "22e96661458c55a2e532885922bf4a232186f6a1", "shasum": "" }, "require": { @@ -3551,20 +3523,20 @@ "dom", "xml" ], - "time": "2016-11-16T00:41:01+00:00" + "time": "2018-02-08T11:00:49+00:00" }, { "name": "sentry/sentry", - "version": "1.8.2", + "version": "1.8.4", "source": { "type": "git", "url": "https://github.com/getsentry/sentry-php.git", - "reference": "3241b135120c25d6522e46246386df0ab48e13c5" + "reference": "643ec20d181ca55317d4ccda6ad658b9a8b4f06a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/getsentry/sentry-php/zipball/3241b135120c25d6522e46246386df0ab48e13c5", - "reference": "3241b135120c25d6522e46246386df0ab48e13c5", + "url": "https://api.github.com/repos/getsentry/sentry-php/zipball/643ec20d181ca55317d4ccda6ad658b9a8b4f06a", + "reference": "643ec20d181ca55317d4ccda6ad658b9a8b4f06a", "shasum": "" }, "require": { @@ -3615,35 +3587,44 @@ "log", "logging" ], - "time": "2017-12-21T16:05:46+00:00" + "time": "2018-03-20T12:52:10+00:00" }, { "name": "sentry/sentry-laravel", - "version": "0.7.0", + "version": "0.8.0", "source": { "type": "git", "url": "https://github.com/getsentry/sentry-laravel.git", - "reference": "c1471d1d7fff0fa5618ecfb936eb6a523c1ea8fa" + "reference": "4ca94ed3ba6d79ad049957be574a738a3478f94c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/getsentry/sentry-laravel/zipball/c1471d1d7fff0fa5618ecfb936eb6a523c1ea8fa", - "reference": "c1471d1d7fff0fa5618ecfb936eb6a523c1ea8fa", + "url": "https://api.github.com/repos/getsentry/sentry-laravel/zipball/4ca94ed3ba6d79ad049957be574a738a3478f94c", + "reference": "4ca94ed3ba6d79ad049957be574a738a3478f94c", "shasum": "" }, "require": { "illuminate/support": "4.*|5.*", - "php": ">=5.2.4", - "sentry/sentry": ">=1.6.0" + "php": ">=5.3.0", + "sentry/sentry": ">=1.7.0" }, "require-dev": { "friendsofphp/php-cs-fixer": "^1.8.0", + "orchestra/testbench": "3.*", "phpunit/phpunit": "^4.6.6" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "0.7.x-dev" + "dev-master": "0.8.x-dev" + }, + "laravel": { + "providers": [ + "Sentry\\SentryLaravel\\SentryLaravelServiceProvider" + ], + "aliases": { + "Sentry": "Sentry\\SentryLaravel\\SentryFacade" + } } }, "autoload": { @@ -3669,20 +3650,20 @@ "logging", "sentry" ], - "time": "2017-04-21T17:44:27+00:00" + "time": "2017-08-11T17:29:14+00:00" }, { "name": "stripe/stripe-php", - "version": "v5.9.0", + "version": "v5.9.2", "source": { "type": "git", "url": "https://github.com/stripe/stripe-php.git", - "reference": "d1978a7f20cdbd05c5c462ffa6728f279f03e0c9" + "reference": "026191d12241a76c957884dff75e4f3721b0e77f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/stripe/stripe-php/zipball/d1978a7f20cdbd05c5c462ffa6728f279f03e0c9", - "reference": "d1978a7f20cdbd05c5c462ffa6728f279f03e0c9", + "url": "https://api.github.com/repos/stripe/stripe-php/zipball/026191d12241a76c957884dff75e4f3721b0e77f", + "reference": "026191d12241a76c957884dff75e4f3721b0e77f", "shasum": "" }, "require": { @@ -3724,7 +3705,7 @@ "payment processing", "stripe" ], - "time": "2018-01-17T20:53:33+00:00" + "time": "2018-02-07T18:36:55+00:00" }, { "name": "swiftmailer/swiftmailer", @@ -3783,16 +3764,16 @@ }, { "name": "symfony/console", - "version": "v3.4.3", + "version": "v3.4.6", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "8394c8ef121949e8f858f13bc1e34f05169e4e7d" + "reference": "067339e9b8ec30d5f19f5950208893ff026b94f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/8394c8ef121949e8f858f13bc1e34f05169e4e7d", - "reference": "8394c8ef121949e8f858f13bc1e34f05169e4e7d", + "url": "https://api.github.com/repos/symfony/console/zipball/067339e9b8ec30d5f19f5950208893ff026b94f7", + "reference": "067339e9b8ec30d5f19f5950208893ff026b94f7", "shasum": "" }, "require": { @@ -3848,29 +3829,29 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2018-01-03T07:37:34+00:00" + "time": "2018-02-26T15:46:28+00:00" }, { "name": "symfony/css-selector", - "version": "v3.0.9", + "version": "v4.0.6", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "b8999c1f33c224b2b66b38253f5e3a838d0d0115" + "reference": "c69f1e93aa898fd9fec627ebef467188151c8dc2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/b8999c1f33c224b2b66b38253f5e3a838d0d0115", - "reference": "b8999c1f33c224b2b66b38253f5e3a838d0d0115", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/c69f1e93aa898fd9fec627ebef467188151c8dc2", + "reference": "c69f1e93aa898fd9fec627ebef467188151c8dc2", "shasum": "" }, "require": { - "php": ">=5.5.9" + "php": "^7.1.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -3901,20 +3882,20 @@ ], "description": "Symfony CssSelector Component", "homepage": "https://symfony.com", - "time": "2016-06-29T05:40:00+00:00" + "time": "2018-02-03T14:58:37+00:00" }, { "name": "symfony/debug", - "version": "v3.4.3", + "version": "v3.4.6", "source": { "type": "git", "url": "https://github.com/symfony/debug.git", - "reference": "603b95dda8b00020e4e6e60dc906e7b715b1c245" + "reference": "9b1071f86e79e1999b3d3675d2e0e7684268b9bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/603b95dda8b00020e4e6e60dc906e7b715b1c245", - "reference": "603b95dda8b00020e4e6e60dc906e7b715b1c245", + "url": "https://api.github.com/repos/symfony/debug/zipball/9b1071f86e79e1999b3d3675d2e0e7684268b9bc", + "reference": "9b1071f86e79e1999b3d3675d2e0e7684268b9bc", "shasum": "" }, "require": { @@ -3957,20 +3938,20 @@ ], "description": "Symfony Debug Component", "homepage": "https://symfony.com", - "time": "2018-01-03T17:14:19+00:00" + "time": "2018-02-28T21:49:22+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v4.0.3", + "version": "v4.0.6", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "74d33aac36208c4d6757807d9f598f0133a3a4eb" + "reference": "85eaf6a8ec915487abac52e133efc4a268204428" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/74d33aac36208c4d6757807d9f598f0133a3a4eb", - "reference": "74d33aac36208c4d6757807d9f598f0133a3a4eb", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/85eaf6a8ec915487abac52e133efc4a268204428", + "reference": "85eaf6a8ec915487abac52e133efc4a268204428", "shasum": "" }, "require": { @@ -4020,20 +4001,20 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2018-01-03T07:38:00+00:00" + "time": "2018-02-14T14:11:10+00:00" }, { "name": "symfony/finder", - "version": "v3.4.3", + "version": "v3.4.6", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "613e26310776f49a1773b6737c6bd554b8bc8c6f" + "reference": "a479817ce0a9e4adfd7d39c6407c95d97c254625" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/613e26310776f49a1773b6737c6bd554b8bc8c6f", - "reference": "613e26310776f49a1773b6737c6bd554b8bc8c6f", + "url": "https://api.github.com/repos/symfony/finder/zipball/a479817ce0a9e4adfd7d39c6407c95d97c254625", + "reference": "a479817ce0a9e4adfd7d39c6407c95d97c254625", "shasum": "" }, "require": { @@ -4069,20 +4050,20 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2018-01-03T07:37:34+00:00" + "time": "2018-03-05T18:28:11+00:00" }, { "name": "symfony/http-foundation", - "version": "v3.4.3", + "version": "v3.4.6", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "4a213be1cc8598089b8c7451529a2927b49b5d26" + "reference": "6f5935723c11b4125fc9927db6ad2feaa196e175" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/4a213be1cc8598089b8c7451529a2927b49b5d26", - "reference": "4a213be1cc8598089b8c7451529a2927b49b5d26", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/6f5935723c11b4125fc9927db6ad2feaa196e175", + "reference": "6f5935723c11b4125fc9927db6ad2feaa196e175", "shasum": "" }, "require": { @@ -4123,20 +4104,20 @@ ], "description": "Symfony HttpFoundation Component", "homepage": "https://symfony.com", - "time": "2018-01-03T17:14:19+00:00" + "time": "2018-02-22T10:48:49+00:00" }, { "name": "symfony/http-kernel", - "version": "v3.4.3", + "version": "v3.4.6", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "1c2a82d6a8ec9b354fe4ef48ad1ad3f1a4f7db0e" + "reference": "a443bbbd93682aa08e623fade4c94edd586ed2de" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/1c2a82d6a8ec9b354fe4ef48ad1ad3f1a4f7db0e", - "reference": "1c2a82d6a8ec9b354fe4ef48ad1ad3f1a4f7db0e", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/a443bbbd93682aa08e623fade4c94edd586ed2de", + "reference": "a443bbbd93682aa08e623fade4c94edd586ed2de", "shasum": "" }, "require": { @@ -4144,11 +4125,11 @@ "psr/log": "~1.0", "symfony/debug": "~2.8|~3.0|~4.0", "symfony/event-dispatcher": "~2.8|~3.0|~4.0", - "symfony/http-foundation": "^3.3.11|~4.0" + "symfony/http-foundation": "^3.4.4|^4.0.4" }, "conflict": { "symfony/config": "<2.8", - "symfony/dependency-injection": "<3.4", + "symfony/dependency-injection": "<3.4.5|<4.0.5,>=4", "symfony/var-dumper": "<3.3", "twig/twig": "<1.34|<2.4,>=2" }, @@ -4162,7 +4143,7 @@ "symfony/config": "~2.8|~3.0|~4.0", "symfony/console": "~2.8|~3.0|~4.0", "symfony/css-selector": "~2.8|~3.0|~4.0", - "symfony/dependency-injection": "~3.4|~4.0", + "symfony/dependency-injection": "^3.4.5|^4.0.5", "symfony/dom-crawler": "~2.8|~3.0|~4.0", "symfony/expression-language": "~2.8|~3.0|~4.0", "symfony/finder": "~2.8|~3.0|~4.0", @@ -4211,20 +4192,20 @@ ], "description": "Symfony HttpKernel Component", "homepage": "https://symfony.com", - "time": "2018-01-05T08:33:00+00:00" + "time": "2018-03-05T19:41:07+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.6.0", + "version": "v1.7.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "2ec8b39c38cb16674bbf3fea2b6ce5bf117e1296" + "reference": "78be803ce01e55d3491c1397cf1c64beb9c1b63b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/2ec8b39c38cb16674bbf3fea2b6ce5bf117e1296", - "reference": "2ec8b39c38cb16674bbf3fea2b6ce5bf117e1296", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/78be803ce01e55d3491c1397cf1c64beb9c1b63b", + "reference": "78be803ce01e55d3491c1397cf1c64beb9c1b63b", "shasum": "" }, "require": { @@ -4236,7 +4217,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.6-dev" + "dev-master": "1.7-dev" } }, "autoload": { @@ -4270,20 +4251,20 @@ "portable", "shim" ], - "time": "2017-10-11T12:05:26+00:00" + "time": "2018-01-30T19:27:44+00:00" }, { "name": "symfony/polyfill-php56", - "version": "v1.6.0", + "version": "v1.7.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php56.git", - "reference": "265fc96795492430762c29be291a371494ba3a5b" + "reference": "ebc999ce5f14204c5150b9bd15f8f04e621409d8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/265fc96795492430762c29be291a371494ba3a5b", - "reference": "265fc96795492430762c29be291a371494ba3a5b", + "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/ebc999ce5f14204c5150b9bd15f8f04e621409d8", + "reference": "ebc999ce5f14204c5150b9bd15f8f04e621409d8", "shasum": "" }, "require": { @@ -4293,7 +4274,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.6-dev" + "dev-master": "1.7-dev" } }, "autoload": { @@ -4326,20 +4307,20 @@ "portable", "shim" ], - "time": "2017-10-11T12:05:26+00:00" + "time": "2018-01-30T19:27:44+00:00" }, { "name": "symfony/polyfill-php70", - "version": "v1.6.0", + "version": "v1.7.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php70.git", - "reference": "0442b9c0596610bd24ae7b5f0a6cdbbc16d9fcff" + "reference": "3532bfcd8f933a7816f3a0a59682fc404776600f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/0442b9c0596610bd24ae7b5f0a6cdbbc16d9fcff", - "reference": "0442b9c0596610bd24ae7b5f0a6cdbbc16d9fcff", + "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/3532bfcd8f933a7816f3a0a59682fc404776600f", + "reference": "3532bfcd8f933a7816f3a0a59682fc404776600f", "shasum": "" }, "require": { @@ -4349,7 +4330,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.6-dev" + "dev-master": "1.7-dev" } }, "autoload": { @@ -4385,20 +4366,20 @@ "portable", "shim" ], - "time": "2017-10-11T12:05:26+00:00" + "time": "2018-01-30T19:27:44+00:00" }, { "name": "symfony/polyfill-util", - "version": "v1.6.0", + "version": "v1.7.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-util.git", - "reference": "6e719200c8e540e0c0effeb31f96bdb344b94176" + "reference": "e17c808ec4228026d4f5a8832afa19be85979563" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-util/zipball/6e719200c8e540e0c0effeb31f96bdb344b94176", - "reference": "6e719200c8e540e0c0effeb31f96bdb344b94176", + "url": "https://api.github.com/repos/symfony/polyfill-util/zipball/e17c808ec4228026d4f5a8832afa19be85979563", + "reference": "e17c808ec4228026d4f5a8832afa19be85979563", "shasum": "" }, "require": { @@ -4407,7 +4388,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.6-dev" + "dev-master": "1.7-dev" } }, "autoload": { @@ -4437,20 +4418,20 @@ "polyfill", "shim" ], - "time": "2017-10-11T12:05:26+00:00" + "time": "2018-01-31T18:08:44+00:00" }, { "name": "symfony/process", - "version": "v3.4.3", + "version": "v3.4.6", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "ff69f110c6b33fd33cd2089ba97d6112f44ef0ba" + "reference": "cc4aea21f619116aaf1c58016a944e4821c8e8af" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/ff69f110c6b33fd33cd2089ba97d6112f44ef0ba", - "reference": "ff69f110c6b33fd33cd2089ba97d6112f44ef0ba", + "url": "https://api.github.com/repos/symfony/process/zipball/cc4aea21f619116aaf1c58016a944e4821c8e8af", + "reference": "cc4aea21f619116aaf1c58016a944e4821c8e8af", "shasum": "" }, "require": { @@ -4486,7 +4467,7 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2018-01-03T07:37:34+00:00" + "time": "2018-02-12T17:55:00+00:00" }, { "name": "symfony/psr-http-message-bridge", @@ -4550,16 +4531,16 @@ }, { "name": "symfony/routing", - "version": "v3.4.3", + "version": "v3.4.6", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "e2b6d6fe7b090c7af720b75c7722c6dfa7a52658" + "reference": "8773a9d52715f1a579576ce0e60213de34f5ef3e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/e2b6d6fe7b090c7af720b75c7722c6dfa7a52658", - "reference": "e2b6d6fe7b090c7af720b75c7722c6dfa7a52658", + "url": "https://api.github.com/repos/symfony/routing/zipball/8773a9d52715f1a579576ce0e60213de34f5ef3e", + "reference": "8773a9d52715f1a579576ce0e60213de34f5ef3e", "shasum": "" }, "require": { @@ -4624,20 +4605,20 @@ "uri", "url" ], - "time": "2018-01-04T15:09:34+00:00" + "time": "2018-02-28T21:49:22+00:00" }, { "name": "symfony/translation", - "version": "v3.4.3", + "version": "v3.4.6", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "17b5962d252b2d6d1d37a2485ebb7ddc5b2bef0a" + "reference": "80e19eaf12cbb546ac40384e5c55c36306823e57" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/17b5962d252b2d6d1d37a2485ebb7ddc5b2bef0a", - "reference": "17b5962d252b2d6d1d37a2485ebb7ddc5b2bef0a", + "url": "https://api.github.com/repos/symfony/translation/zipball/80e19eaf12cbb546ac40384e5c55c36306823e57", + "reference": "80e19eaf12cbb546ac40384e5c55c36306823e57", "shasum": "" }, "require": { @@ -4692,20 +4673,20 @@ ], "description": "Symfony Translation Component", "homepage": "https://symfony.com", - "time": "2018-01-03T07:37:34+00:00" + "time": "2018-02-22T06:28:18+00:00" }, { "name": "symfony/var-dumper", - "version": "v3.4.3", + "version": "v3.4.6", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "545be7e78ccbec43e599f10ff7500d0b09eda9d0" + "reference": "80964679d81da3d5618519e0e4be488c3d7ecd7d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/545be7e78ccbec43e599f10ff7500d0b09eda9d0", - "reference": "545be7e78ccbec43e599f10ff7500d0b09eda9d0", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/80964679d81da3d5618519e0e4be488c3d7ecd7d", + "reference": "80964679d81da3d5618519e0e4be488c3d7ecd7d", "shasum": "" }, "require": { @@ -4761,7 +4742,53 @@ "debug", "dump" ], - "time": "2018-01-03T17:14:19+00:00" + "time": "2018-02-22T17:29:24+00:00" + }, + { + "name": "tedivm/jshrink", + "version": "v1.0.1", + "source": { + "type": "git", + "url": "https://github.com/tedious/JShrink.git", + "reference": "7575d9d96f113bc7c1c28ec8231ee086751a9078" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tedious/JShrink/zipball/7575d9d96f113bc7c1c28ec8231ee086751a9078", + "reference": "7575d9d96f113bc7c1c28ec8231ee086751a9078", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "fabpot/php-cs-fixer": "0.4.0", + "phpunit/phpunit": "4.0.*", + "satooshi/php-coveralls": "dev-master" + }, + "type": "library", + "autoload": { + "psr-0": { + "JShrink": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Robert Hafner", + "email": "tedivm@tedivm.com" + } + ], + "description": "Javascript Minifier built in PHP", + "homepage": "http://github.com/tedious/JShrink", + "keywords": [ + "javascript", + "minifier" + ], + "time": "2014-11-11T03:54:14+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", @@ -4860,18 +4887,73 @@ ], "time": "2016-09-01T10:05:43+00:00" }, + { + "name": "vluzrmos/language-detector", + "version": "v1.0.19", + "source": { + "type": "git", + "url": "https://github.com/vluzrmos/laravel-language-detector.git", + "reference": "7aeb9531e8caee41421a8a1d53920eadcc602ad9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vluzrmos/laravel-language-detector/zipball/7aeb9531e8caee41421a8a1d53920eadcc602ad9", + "reference": "7aeb9531e8caee41421a8a1d53920eadcc602ad9", + "shasum": "" + }, + "require": { + "illuminate/config": "~5.0", + "illuminate/cookie": "~5.0", + "illuminate/support": "~5.0", + "illuminate/translation": "~5.0" + }, + "require-dev": { + "fabpot/php-cs-fixer": "~1.11", + "mockery/mockery": "0.9.*", + "orchestra/testbench": "3.0.*", + "phpunit/phpunit": "~4.0" + }, + "type": "package", + "autoload": { + "psr-4": { + "Vluzrmos\\LanguageDetector\\": "src/" + }, + "files": [ + "src/Support/helpers.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Vagner do Carmo", + "email": "vluzrmos@gmail.com" + } + ], + "description": "Detect the language for your application using browser preferences, subdomains or route prefixes.", + "keywords": [ + "i18n", + "language", + "laravel", + "locale", + "lumen" + ], + "time": "2017-03-11T03:40:17+00:00" + }, { "name": "zendframework/zend-diactoros", - "version": "1.7.0", + "version": "1.7.1", "source": { "type": "git", "url": "https://github.com/zendframework/zend-diactoros.git", - "reference": "ed6ce7e2105c400ca10277643a8327957c0384b7" + "reference": "bf26aff803a11c5cc8eb7c4878a702c403ec67f1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-diactoros/zipball/ed6ce7e2105c400ca10277643a8327957c0384b7", - "reference": "ed6ce7e2105c400ca10277643a8327957c0384b7", + "url": "https://api.github.com/repos/zendframework/zend-diactoros/zipball/bf26aff803a11c5cc8eb7c4878a702c403ec67f1", + "reference": "bf26aff803a11c5cc8eb7c4878a702c403ec67f1", "shasum": "" }, "require": { @@ -4910,109 +4992,77 @@ "psr", "psr-7" ], - "time": "2018-01-04T18:21:48+00:00" + "time": "2018-02-26T15:44:50+00:00" } ], "packages-dev": [ { - "name": "beberlei/assert", - "version": "v2.8.1", + "name": "barryvdh/laravel-debugbar", + "version": "v3.1.4", "source": { "type": "git", - "url": "https://github.com/beberlei/assert.git", - "reference": "fd8dc8f6de4645ccf4d1a0b38a6b8fdaf2e8b337" + "url": "https://github.com/barryvdh/laravel-debugbar.git", + "reference": "7a91480cc6e597caed5117a3c5d685f06d35c5a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/beberlei/assert/zipball/fd8dc8f6de4645ccf4d1a0b38a6b8fdaf2e8b337", - "reference": "fd8dc8f6de4645ccf4d1a0b38a6b8fdaf2e8b337", + "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/7a91480cc6e597caed5117a3c5d685f06d35c5a1", + "reference": "7a91480cc6e597caed5117a3c5d685f06d35c5a1", "shasum": "" }, "require": { - "ext-mbstring": "*", - "php": ">=5.3" + "illuminate/routing": "5.5.x|5.6.x", + "illuminate/session": "5.5.x|5.6.x", + "illuminate/support": "5.5.x|5.6.x", + "maximebf/debugbar": "~1.15.0", + "php": ">=7.0", + "symfony/debug": "^3|^4", + "symfony/finder": "^3|^4" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^2.1.1", - "phpunit/phpunit": "^4.8.35|^5.7" + "illuminate/framework": "5.5.x" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.2-dev" + }, + "laravel": { + "providers": [ + "Barryvdh\\Debugbar\\ServiceProvider" + ], + "aliases": { + "Debugbar": "Barryvdh\\Debugbar\\Facade" + } + } + }, "autoload": { "psr-4": { - "Assert\\": "lib/Assert" + "Barryvdh\\Debugbar\\": "src/" }, "files": [ - "lib/Assert/functions.php" + "src/helpers.php" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-2-Clause" + "MIT" ], "authors": [ { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de", - "role": "Lead Developer" - }, - { - "name": "Richard Quadling", - "email": "rquadling@gmail.com", - "role": "Collaborator" - } - ], - "description": "Thin assertion library for input validation in business models.", - "keywords": [ - "assert", - "assertion", - "validation" - ], - "time": "2017-11-30T13:25:15+00:00" - }, - { - "name": "clue/graph", - "version": "v0.9.0", - "source": { - "type": "git", - "url": "https://github.com/clue/graph.git", - "reference": "0336a4d5229fa61a20ccceaeab25e52ac9542700" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/clue/graph/zipball/0336a4d5229fa61a20ccceaeab25e52ac9542700", - "reference": "0336a4d5229fa61a20ccceaeab25e52ac9542700", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "require-dev": { - "phpunit/phpunit": "~4.0" - }, - "suggest": { - "graphp/algorithms": "Common graph algorithms, such as Dijkstra and Moore-Bellman-Ford (shortest path), minimum spanning tree (MST), Kruskal, Prim and many more..", - "graphp/graphviz": "GraphViz graph drawing / DOT output" - }, - "type": "library", - "autoload": { - "psr-4": { - "Fhaculty\\Graph\\": "src/" + "name": "Barry vd. Heuvel", + "email": "barryvdh@gmail.com" } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" ], - "description": "A mathematical graph/network library written in PHP", - "homepage": "https://github.com/clue/graph", + "description": "PHP Debugbar integration for Laravel", "keywords": [ - "edge", - "graph", - "mathematical", - "network", - "vertex" + "debug", + "debugbar", + "laravel", + "profiler", + "webprofiler" ], - "time": "2015-03-07T18:11:31+00:00" + "time": "2018-03-06T08:35:31+00:00" }, { "name": "doctrine/instantiator", @@ -5070,16 +5120,16 @@ }, { "name": "enm1989/chromedriver", - "version": "2.35", + "version": "2.37", "source": { "type": "git", "url": "https://github.com/ENM1989/chromedriver.git", - "reference": "ffdf8710c7af2344e8fd129a225f0a06569073b1" + "reference": "00a3f41de81d0af3cf86a9e3b30e3c48c4ccaaf6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ENM1989/chromedriver/zipball/ffdf8710c7af2344e8fd129a225f0a06569073b1", - "reference": "ffdf8710c7af2344e8fd129a225f0a06569073b1", + "url": "https://api.github.com/repos/ENM1989/chromedriver/zipball/00a3f41de81d0af3cf86a9e3b30e3c48c4ccaaf6", + "reference": "00a3f41de81d0af3cf86a9e3b30e3c48c4ccaaf6", "shasum": "" }, "bin": [ @@ -5088,7 +5138,7 @@ "type": "library", "notification-url": "https://packagist.org/downloads/", "license": [ - "Apache License Version 2.0" + "Apache-2.0" ], "authors": [ { @@ -5104,7 +5154,7 @@ "selenium", "webdriver" ], - "time": "2018-01-11T07:51:26+00:00" + "time": "2018-03-17T21:19:04+00:00" }, { "name": "facebook/webdriver", @@ -5223,364 +5273,285 @@ "time": "2017-11-23T18:22:44+00:00" }, { - "name": "florianwolters/component-core-stringutils", - "version": "v0.3.1", + "name": "hamcrest/hamcrest-php", + "version": "v2.0.0", "source": { "type": "git", - "url": "https://github.com/FlorianWolters/PHP-Component-Core-StringUtils.git", - "reference": "51978fa9a4d30104192036f0b1f11fc1c3bc4667" + "url": "https://github.com/hamcrest/hamcrest-php.git", + "reference": "776503d3a8e85d4f9a1148614f95b7a608b046ad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FlorianWolters/PHP-Component-Core-StringUtils/zipball/51978fa9a4d30104192036f0b1f11fc1c3bc4667", - "reference": "51978fa9a4d30104192036f0b1f11fc1c3bc4667", + "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/776503d3a8e85d4f9a1148614f95b7a608b046ad", + "reference": "776503d3a8e85d4f9a1148614f95b7a608b046ad", "shasum": "" }, "require": { - "php": ">=5.3" + "php": "^5.3|^7.0" + }, + "replace": { + "cordoval/hamcrest-php": "*", + "davedevelopment/hamcrest-php": "*", + "kodova/hamcrest-php": "*" + }, + "require-dev": { + "phpunit/php-file-iterator": "1.3.3", + "phpunit/phpunit": "~4.0", + "satooshi/php-coveralls": "^1.0" }, "type": "library", - "autoload": { - "psr-0": { - "FlorianWolters": "src/php" + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" } }, + "autoload": { + "classmap": [ + "hamcrest" + ] + }, "notification-url": "https://packagist.org/downloads/", "license": [ - "LGPL-3.0+" - ], - "authors": [ - { - "name": "Florian Wolters", - "email": "wolters.fl@gmail.com", - "homepage": "http://blog.florianwolters.de", - "role": "Developer" - } + "BSD" ], - "description": "Offers operations on the data type string as a PHP component.", - "homepage": "http://github.com/FlorianWolters/PHP-Component-Core-StringUtils", + "description": "This is the PHP port of Hamcrest Matchers", "keywords": [ - "helper", - "language", - "string", - "wrapper" + "test" ], - "time": "2013-07-01T10:24:07+00:00" + "time": "2016-01-20T08:20:44+00:00" }, { - "name": "florianwolters/component-util-reflection", - "version": "v0.2.0", + "name": "khanamiryan/qrcode-detector-decoder", + "version": "1", "source": { "type": "git", - "url": "https://github.com/FlorianWolters/PHP-Component-Util-Reflection.git", - "reference": "ffc94b62e2834d7d0306374d952eda7a5abd1844" + "url": "https://github.com/khanamiryan/php-qrcode-detector-decoder.git", + "reference": "96d5f80680b04803c4f1b69d6e01735e876b80c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FlorianWolters/PHP-Component-Util-Reflection/zipball/ffc94b62e2834d7d0306374d952eda7a5abd1844", - "reference": "ffc94b62e2834d7d0306374d952eda7a5abd1844", + "url": "https://api.github.com/repos/khanamiryan/php-qrcode-detector-decoder/zipball/96d5f80680b04803c4f1b69d6e01735e876b80c7", + "reference": "96d5f80680b04803c4f1b69d6e01735e876b80c7", "shasum": "" }, "require": { - "florianwolters/component-core-stringutils": ">=0.2-beta", - "php": ">=5.4" + "php": "^5.6|^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7" }, "type": "library", "autoload": { - "psr-0": { - "FlorianWolters": "src/php" - } + "classmap": [ + "lib/" + ], + "files": [ + "lib/common/customFunctions.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "LGPL-3.0+" + "MIT" ], "authors": [ { - "name": "Florian Wolters", - "email": "wolters.fl@gmail.com", - "homepage": "http://blog.florianwolters.de", + "name": "Ashot Khanamiryan", + "email": "a.khanamiryan@gmail.com", + "homepage": "https://github.com/khanamiryan", "role": "Developer" } ], - "description": "Provides operations for the PHP Reflection API as a PHP component.", - "homepage": "http://github.com/FlorianWolters/PHP-Component-Util-Reflection", + "description": "QR code decoder / reader", + "homepage": "https://github.com/khanamiryan/php-qrcode-detector-decoder", "keywords": [ - "reflection", - "utility" + "barcode", + "qr", + "zxing" ], - "time": "2013-03-19T16:42:41+00:00" + "time": "2017-01-13T09:11:46+00:00" }, { - "name": "florianwolters/component-util-singleton", - "version": "v0.3.2", + "name": "laravel/dusk", + "version": "v2.0.14", "source": { "type": "git", - "url": "https://github.com/FlorianWolters/PHP-Component-Util-Singleton.git", - "reference": "ab39ba531a38c3b76b4babb0035ce840cde7f443" + "url": "https://github.com/laravel/dusk.git", + "reference": "a7aedd50dd5b4965ee589087ba575cb03981fe80" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FlorianWolters/PHP-Component-Util-Singleton/zipball/ab39ba531a38c3b76b4babb0035ce840cde7f443", - "reference": "ab39ba531a38c3b76b4babb0035ce840cde7f443", + "url": "https://api.github.com/repos/laravel/dusk/zipball/a7aedd50dd5b4965ee589087ba575cb03981fe80", + "reference": "a7aedd50dd5b4965ee589087ba575cb03981fe80", "shasum": "" }, "require": { - "florianwolters/component-core-stringutils": "0.3.*", - "florianwolters/component-util-reflection": "0.2.*", - "php": ">=5.4" + "facebook/webdriver": "~1.0", + "illuminate/console": "~5.5", + "illuminate/support": "~5.5", + "nesbot/carbon": "~1.20", + "php": ">=5.6.4", + "symfony/console": "~3.2", + "symfony/process": "~3.2" + }, + "require-dev": { + "mockery/mockery": "~1.0", + "phpunit/phpunit": "~6.0" }, "type": "library", - "autoload": { - "psr-0": { - "FlorianWolters": [ - "src/php", - "src/tests/unit-tests/php", - "src/tests/mocks/php" + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + }, + "laravel": { + "providers": [ + "Laravel\\Dusk\\DuskServiceProvider" ] } }, + "autoload": { + "psr-4": { + "Laravel\\Dusk\\": "src/" + } + }, "notification-url": "https://packagist.org/downloads/", "license": [ - "LGPL-3.0+" + "MIT" ], "authors": [ { - "name": "Florian Wolters", - "email": "wolters.fl@gmail.com", - "homepage": "http://blog.florianwolters.de", - "role": "Developer" + "name": "Taylor Otwell", + "email": "taylor@laravel.com" } ], - "description": "The Singleton (and Registry of Singletons a.k.a. Multiton) design pattern as a PHP component.", - "homepage": "http://github.com/FlorianWolters/PHP-Component-Util-Singleton", + "description": "Laravel Dusk provides simple end-to-end testing and browser automation.", "keywords": [ - "creation", - "pattern", - "singleton", - "utility" + "laravel", + "testing", + "webdriver" ], - "time": "2013-06-29T12:35:22+00:00" + "time": "2018-03-09T15:35:54+00:00" }, { - "name": "graphp/algorithms", - "version": "v0.8.1", + "name": "matthiasnoback/live-code-coverage", + "version": "v1.0.0", "source": { "type": "git", - "url": "https://github.com/graphp/algorithms.git", - "reference": "81db4049c35730767ec8f97fb5c4844234b86cef" + "url": "https://github.com/matthiasnoback/live-code-coverage.git", + "reference": "d62d5985e9b1eb58257afb7a7f446d95c82a6261" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/graphp/algorithms/zipball/81db4049c35730767ec8f97fb5c4844234b86cef", - "reference": "81db4049c35730767ec8f97fb5c4844234b86cef", + "url": "https://api.github.com/repos/matthiasnoback/live-code-coverage/zipball/d62d5985e9b1eb58257afb7a7f446d95c82a6261", + "reference": "d62d5985e9b1eb58257afb7a7f446d95c82a6261", "shasum": "" }, "require": { - "clue/graph": "~0.9.0|~0.8.0", - "php": ">=5.3" + "php": "^5.6 || ^7.0", + "phpunit/php-code-coverage": "^4.0 || ^5.2", + "phpunit/phpunit": "^5.7 || ^6.0", + "webmozart/assert": "^1.2" }, "require-dev": { - "phpunit/phpunit": "~4.0" + "symfony/filesystem": "^3.3", + "symfony/finder": "^3.3", + "symfony/process": "^3.3" }, "type": "library", "autoload": { "psr-4": { - "Graphp\\Algorithms\\": "src/" + "": "src/" } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christian Lück", - "email": "christian@lueck.tv" - } - ], - "description": "Common mathematical graph algorithms", - "homepage": "https://github.com/graphp/algorithms", - "keywords": [ - "Graph algorithms", - "dijkstra", - "kruskal", - "minimum spanning tree", - "moore-bellman-ford", - "prim", - "shortest path" - ], - "time": "2015-03-08T10:12:01+00:00" + "time": "2018-02-07T18:59:32+00:00" }, { - "name": "hamcrest/hamcrest-php", - "version": "v1.2.2", - "source": { - "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "b37020aa976fa52d3de9aa904aa2522dc518f79c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/b37020aa976fa52d3de9aa904aa2522dc518f79c", - "reference": "b37020aa976fa52d3de9aa904aa2522dc518f79c", - "shasum": "" - }, - "require": { - "php": ">=5.3.2" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "1.3.3", - "satooshi/php-coveralls": "dev-master" - }, - "type": "library", - "autoload": { - "classmap": [ - "hamcrest" - ], - "files": [ - "hamcrest/Hamcrest.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "time": "2015-05-11T14:41:42+00:00" - }, - { - "name": "lmc/steward", - "version": "dev-update-dependencies", + "name": "maximebf/debugbar", + "version": "v1.15.0", "source": { "type": "git", - "url": "https://github.com/asbiin/steward.git", - "reference": "ed94e0c16935f3966235bf22a15d0d370451977f" + "url": "https://github.com/maximebf/php-debugbar.git", + "reference": "30e7d60937ee5f1320975ca9bc7bcdd44d500f07" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/asbiin/steward/zipball/ed94e0c16935f3966235bf22a15d0d370451977f", - "reference": "ed94e0c16935f3966235bf22a15d0d370451977f", + "url": "https://api.github.com/repos/maximebf/php-debugbar/zipball/30e7d60937ee5f1320975ca9bc7bcdd44d500f07", + "reference": "30e7d60937ee5f1320975ca9bc7bcdd44d500f07", "shasum": "" }, "require": { - "beberlei/assert": "^2.7", - "clue/graph": "~0.9.0", - "doctrine/inflector": "~1.0", - "ext-curl": "*", - "ext-zip": "*", - "facebook/webdriver": "^1.4.0", - "florianwolters/component-util-singleton": "0.3.2", - "graphp/algorithms": "^0.8.1", - "nette/reflection": "^2.4.2", - "ondram/ci-detector": "^2.1", - "php": "^5.6 || ~7.0", - "phpunit/phpunit": "~6.0", - "symfony/console": "^3.3.0", - "symfony/event-dispatcher": "~4.0", - "symfony/filesystem": "~3.0", - "symfony/finder": "~3.0", - "symfony/options-resolver": "^3.2", - "symfony/process": "^3.2.0", - "symfony/stopwatch": "^3.0", - "symfony/yaml": "^3.2" + "php": ">=5.3.0", + "psr/log": "^1.0", + "symfony/var-dumper": "^2.6|^3.0|^4.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^2.0", - "php-coveralls/php-coveralls": "^1.0.2", - "php-mock/php-mock-phpunit": "~1.0", - "squizlabs/php_codesniffer": "^2.4.1", - "symfony/var-dumper": "^3.2" + "phpunit/phpunit": "^4.0|^5.0" }, "suggest": { - "ext-posix": "For colored output", - "ext-xdebug": "For remote tests debugging" + "kriswallsmith/assetic": "The best way to manage assets", + "monolog/monolog": "Log using Monolog", + "predis/predis": "Redis storage" }, - "bin": [ - "bin/steward", - "bin/steward.php" - ], "type": "library", "extra": { "branch-alias": { - "dev-master": "2.2-dev" + "dev-master": "1.14-dev" } }, "autoload": { "psr-4": { - "Lmc\\Steward\\": "src/" - } - }, - "autoload-dev": { - "psr-4": { - "Lmc\\Steward\\": "src-tests/" + "DebugBar\\": "src/DebugBar/" } }, - "scripts": { - "codestyle:check": [ - "vendor/bin/php-cs-fixer fix --diff --dry-run", - "vendor/bin/phpcs --standard=ruleset.xml" - ], - "codestyle:fix": [ - "vendor/bin/php-cs-fixer fix --diff || exit 0", - "vendor/bin/phpcbf --standard=ruleset.xml" - ] - }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { - "name": "LMC s.r.o.", - "homepage": "https://github.com/lmc-eu" + "name": "Maxime Bouroumeau-Fuseau", + "email": "maxime.bouroumeau@gmail.com", + "homepage": "http://maximebf.com" + }, + { + "name": "Barry vd. Heuvel", + "email": "barryvdh@gmail.com" } ], - "description": "Steward - makes Selenium WebDriver + PHPUnit testing easy and robust", + "description": "Debug bar in the browser for php application", + "homepage": "https://github.com/maximebf/php-debugbar", "keywords": [ - "phpunit", - "selenium", - "testing", - "webdriver" + "debug", + "debugbar" ], - "support": { - "source": "https://github.com/asbiin/steward/tree/update-dependencies" - }, - "time": "2018-01-08T22:00:01+00:00" + "time": "2017-12-15T11:13:46+00:00" }, { "name": "mockery/mockery", - "version": "0.9.9", + "version": "1.0", "source": { "type": "git", "url": "https://github.com/mockery/mockery.git", - "reference": "6fdb61243844dc924071d3404bb23994ea0b6856" + "reference": "1bac8c362b12f522fdd1f1fa3556284c91affa38" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/6fdb61243844dc924071d3404bb23994ea0b6856", - "reference": "6fdb61243844dc924071d3404bb23994ea0b6856", + "url": "https://api.github.com/repos/mockery/mockery/zipball/1bac8c362b12f522fdd1f1fa3556284c91affa38", + "reference": "1bac8c362b12f522fdd1f1fa3556284c91affa38", "shasum": "" }, "require": { - "hamcrest/hamcrest-php": "~1.1", + "hamcrest/hamcrest-php": "~2.0", "lib-pcre": ">=7.0", - "php": ">=5.3.2" + "php": ">=5.6.0" }, "require-dev": { - "phpunit/phpunit": "~4.0" + "phpunit/phpunit": "~5.7|~6.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "0.9.x-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { @@ -5605,7 +5576,7 @@ } ], "description": "Mockery is a simple yet flexible PHP mock object framework for use in unit testing with PHPUnit, PHPSpec or any other testing framework. Its core goal is to offer a test double framework with a succinct API capable of clearly defining all possible object operations and interactions using a human readable Domain Specific Language (DSL). Designed as a drop in alternative to PHPUnit's phpunit-mock-objects library, Mockery is easy to integrate with PHPUnit and can operate alongside phpunit-mock-objects without the World ending.", - "homepage": "http://github.com/padraic/mockery", + "homepage": "http://github.com/mockery/mockery", "keywords": [ "BDD", "TDD", @@ -5618,7 +5589,7 @@ "test double", "testing" ], - "time": "2017-02-28T12:52:32+00:00" + "time": "2017-10-06T16:20:43+00:00" }, { "name": "myclabs/deep-copy", @@ -5665,327 +5636,6 @@ ], "time": "2017-10-19T19:58:43+00:00" }, - { - "name": "nette/caching", - "version": "v2.5.6", - "source": { - "type": "git", - "url": "https://github.com/nette/caching.git", - "reference": "1231735b5135ca02bd381b70482c052d2a90bdc9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/caching/zipball/1231735b5135ca02bd381b70482c052d2a90bdc9", - "reference": "1231735b5135ca02bd381b70482c052d2a90bdc9", - "shasum": "" - }, - "require": { - "nette/finder": "^2.2 || ~3.0.0", - "nette/utils": "^2.4 || ~3.0.0", - "php": ">=5.6.0" - }, - "conflict": { - "nette/nette": "<2.2" - }, - "require-dev": { - "latte/latte": "^2.4", - "nette/di": "^2.4 || ~3.0.0", - "nette/tester": "^2.0", - "tracy/tracy": "^2.4" - }, - "suggest": { - "ext-pdo_sqlite": "to use SQLiteStorage or SQLiteJournal" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.5-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause", - "GPL-2.0", - "GPL-3.0" - ], - "authors": [ - { - "name": "David Grudl", - "homepage": "https://davidgrudl.com" - }, - { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" - } - ], - "description": "⏱ Nette Caching: library with easy-to-use API and many cache backends.", - "homepage": "https://nette.org", - "keywords": [ - "cache", - "journal", - "memcached", - "nette", - "sqlite" - ], - "time": "2017-08-30T12:12:25+00:00" - }, - { - "name": "nette/finder", - "version": "v2.4.1", - "source": { - "type": "git", - "url": "https://github.com/nette/finder.git", - "reference": "4d43a66d072c57d585bf08a3ef68d3587f7e9547" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/finder/zipball/4d43a66d072c57d585bf08a3ef68d3587f7e9547", - "reference": "4d43a66d072c57d585bf08a3ef68d3587f7e9547", - "shasum": "" - }, - "require": { - "nette/utils": "^2.4 || ~3.0.0", - "php": ">=5.6.0" - }, - "conflict": { - "nette/nette": "<2.2" - }, - "require-dev": { - "nette/tester": "^2.0", - "tracy/tracy": "^2.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.4-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause", - "GPL-2.0", - "GPL-3.0" - ], - "authors": [ - { - "name": "David Grudl", - "homepage": "https://davidgrudl.com" - }, - { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" - } - ], - "description": "Nette Finder: Files Searching", - "homepage": "https://nette.org", - "time": "2017-07-10T23:47:08+00:00" - }, - { - "name": "nette/reflection", - "version": "v2.4.2", - "source": { - "type": "git", - "url": "https://github.com/nette/reflection.git", - "reference": "b12327e98ead74e87a1315e0d48182a702adf901" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/reflection/zipball/b12327e98ead74e87a1315e0d48182a702adf901", - "reference": "b12327e98ead74e87a1315e0d48182a702adf901", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "nette/caching": "^2.2 || ^3.0", - "nette/utils": "^2.4 || ^3.0", - "php": ">=5.6.0" - }, - "conflict": { - "nette/nette": "<2.2" - }, - "require-dev": { - "nette/di": "^2.4 || ^3.0", - "nette/tester": "^2.0", - "tracy/tracy": "^2.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.4-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause", - "GPL-2.0", - "GPL-3.0" - ], - "authors": [ - { - "name": "David Grudl", - "homepage": "https://davidgrudl.com" - }, - { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" - } - ], - "description": "Nette Reflection: docblock annotations parser and common reflection classes", - "homepage": "https://nette.org", - "keywords": [ - "annotation", - "nette", - "reflection" - ], - "time": "2017-07-11T19:28:57+00:00" - }, - { - "name": "nette/utils", - "version": "v2.4.8", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "f1584033b5af945b470533b466b81a789d532034" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/f1584033b5af945b470533b466b81a789d532034", - "reference": "f1584033b5af945b470533b466b81a789d532034", - "shasum": "" - }, - "require": { - "php": ">=5.6.0" - }, - "conflict": { - "nette/nette": "<2.2" - }, - "require-dev": { - "nette/tester": "~2.0", - "tracy/tracy": "^2.3" - }, - "suggest": { - "ext-gd": "to use Image", - "ext-iconv": "to use Strings::webalize() and toAscii()", - "ext-intl": "for script transliteration in Strings::webalize() and toAscii()", - "ext-json": "to use Nette\\Utils\\Json", - "ext-mbstring": "to use Strings::lower() etc...", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.4-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause", - "GPL-2.0", - "GPL-3.0" - ], - "authors": [ - { - "name": "David Grudl", - "homepage": "https://davidgrudl.com" - }, - { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" - } - ], - "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.", - "homepage": "https://nette.org", - "keywords": [ - "array", - "core", - "datetime", - "images", - "json", - "nette", - "paginator", - "password", - "slugify", - "string", - "unicode", - "utf-8", - "utility", - "validation" - ], - "time": "2017-08-20T17:32:29+00:00" - }, - { - "name": "ondram/ci-detector", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/OndraM/ci-detector.git", - "reference": "be3410cb14443796122ca051f4224b5eae06aa76" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/OndraM/ci-detector/zipball/be3410cb14443796122ca051f4224b5eae06aa76", - "reference": "be3410cb14443796122ca051f4224b5eae06aa76", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^1.12", - "phpunit/phpunit": "^5.5" - }, - "type": "library", - "autoload": { - "psr-4": { - "OndraM\\CiDetector\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ondřej Machulda", - "email": "ondrej.machulda@gmail.com" - } - ], - "description": "Detect current continuous integration server and provide unified access to properties of current build", - "keywords": [ - "CircleCI", - "Codeship", - "adapter", - "appveyor", - "bamboo", - "continuous integration", - "gitlab", - "interface", - "jenkins", - "teamcity", - "travis" - ], - "time": "2017-05-26T16:39:57+00:00" - }, { "name": "phar-io/manifest", "version": "1.0.1", @@ -6144,16 +5794,16 @@ }, { "name": "phpdocumentor/reflection-docblock", - "version": "4.2.0", + "version": "4.3.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "66465776cfc249844bde6d117abff1d22e06c2da" + "reference": "94fd0001232e47129dd3504189fa1c7225010d08" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/66465776cfc249844bde6d117abff1d22e06c2da", - "reference": "66465776cfc249844bde6d117abff1d22e06c2da", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08", + "reference": "94fd0001232e47129dd3504189fa1c7225010d08", "shasum": "" }, "require": { @@ -6191,7 +5841,7 @@ } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2017-11-27T17:38:31+00:00" + "time": "2017-11-30T07:14:17+00:00" }, { "name": "phpdocumentor/type-resolver", @@ -6242,16 +5892,16 @@ }, { "name": "phpspec/prophecy", - "version": "1.7.3", + "version": "1.7.5", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "e4ed002c67da8eceb0eb8ddb8b3847bb53c5c2bf" + "reference": "dfd6be44111a7c41c2e884a336cc4f461b3b2401" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/e4ed002c67da8eceb0eb8ddb8b3847bb53c5c2bf", - "reference": "e4ed002c67da8eceb0eb8ddb8b3847bb53c5c2bf", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/dfd6be44111a7c41c2e884a336cc4f461b3b2401", + "reference": "dfd6be44111a7c41c2e884a336cc4f461b3b2401", "shasum": "" }, "require": { @@ -6263,7 +5913,7 @@ }, "require-dev": { "phpspec/phpspec": "^2.5|^3.2", - "phpunit/phpunit": "^4.8.35 || ^5.7" + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5" }, "type": "library", "extra": { @@ -6301,7 +5951,7 @@ "spy", "stub" ], - "time": "2017-11-24T13:59:53+00:00" + "time": "2018-02-19T10:16:54+00:00" }, { "name": "phpunit/php-code-coverage", @@ -6552,18 +6202,70 @@ ], "time": "2017-11-27T05:48:46+00:00" }, + { + "name": "phpunit/phpcov", + "version": "4.0.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpcov.git", + "reference": "19b5781ddfb0be9d6fec6ac515f3f2da27dcfbb5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpcov/zipball/19b5781ddfb0be9d6fec6ac515f3f2da27dcfbb5", + "reference": "19b5781ddfb0be9d6fec6ac515f3f2da27dcfbb5", + "shasum": "" + }, + "require": { + "php": "^7.0", + "phpunit/php-code-coverage": "^5.2.1 || ^6.0", + "phpunit/phpunit": "^6.0 || ^7.0", + "sebastian/diff": "^1.1 || ^2.0", + "sebastian/finder-facade": "^1.1", + "sebastian/version": "^2.0", + "symfony/console": "^3.0 || ^4.0" + }, + "bin": [ + "phpcov" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.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": "CLI frontend for php-code-coverage", + "homepage": "https://github.com/sebastianbergmann/phpcov", + "time": "2018-02-02T10:07:44+00:00" + }, { "name": "phpunit/phpunit", - "version": "6.5.5", + "version": "6.5.7", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "83d27937a310f2984fd575686138597147bdc7df" + "reference": "6bd77b57707c236833d2b57b968e403df060c9d9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/83d27937a310f2984fd575686138597147bdc7df", - "reference": "83d27937a310f2984fd575686138597147bdc7df", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/6bd77b57707c236833d2b57b968e403df060c9d9", + "reference": "6bd77b57707c236833d2b57b968e403df060c9d9", "shasum": "" }, "require": { @@ -6634,7 +6336,7 @@ "testing", "xunit" ], - "time": "2017-12-17T06:31:19+00:00" + "time": "2018-02-26T07:01:09+00:00" }, { "name": "phpunit/phpunit-mock-objects", @@ -6696,47 +6398,163 @@ "time": "2018-01-06T05:45:45+00:00" }, { - "name": "se/selenium-server-standalone", - "version": "3.8.1", + "name": "roave/security-advisories", + "version": "dev-master", "source": { "type": "git", - "url": "https://github.com/sveneisenschmidt/selenium-server-standalone.git", - "reference": "c051ad127c087c09f60d8258f26a4cf86d9d4bea" + "url": "https://github.com/Roave/SecurityAdvisories.git", + "reference": "2fcfe963d8a1310c2d42e5dce4df0789152bf681" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sveneisenschmidt/selenium-server-standalone/zipball/c051ad127c087c09f60d8258f26a4cf86d9d4bea", - "reference": "c051ad127c087c09f60d8258f26a4cf86d9d4bea", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/2fcfe963d8a1310c2d42e5dce4df0789152bf681", + "reference": "2fcfe963d8a1310c2d42e5dce4df0789152bf681", "shasum": "" }, - "require-dev": { - "phpunit/phpunit": "~4.0" + "conflict": { + "3f/pygmentize": "<1.2", + "adodb/adodb-php": "<5.20.6", + "amphp/artax": "<1.0.6|>=2,<2.0.6", + "amphp/http": "<1.0.1", + "asymmetricrypt/asymmetricrypt": ">=0,<9.9.99", + "aws/aws-sdk-php": ">=3,<3.2.1", + "bugsnag/bugsnag-laravel": ">=2,<2.0.2", + "cakephp/cakephp": ">=1.3,<1.3.18|>=2,<2.4.99|>=2.5,<2.5.99|>=2.6,<2.6.12|>=2.7,<2.7.6|>=3,<3.0.15|>=3.1,<3.1.4", + "cart2quote/module-quotation": ">=4.1.6,<=4.4.5|>=5,<5.4.4", + "cartalyst/sentry": "<=2.1.6", + "codeigniter/framework": "<=3.0.6", + "composer/composer": "<=1.0.0-alpha11", + "contao-components/mediaelement": ">=2.14.2,<2.21.1", + "contao/core": ">=2,<3.5.32", + "contao/core-bundle": ">=4,<4.4.8", + "contao/listing-bundle": ">=4,<4.4.8", + "contao/newsletter-bundle": ">=4,<4.1", + "doctrine/annotations": ">=1,<1.2.7", + "doctrine/cache": ">=1,<1.3.2|>=1.4,<1.4.2", + "doctrine/common": ">=2,<2.4.3|>=2.5,<2.5.1", + "doctrine/dbal": ">=2,<2.0.8|>=2.1,<2.1.2", + "doctrine/doctrine-bundle": "<1.5.2", + "doctrine/doctrine-module": "<=0.7.1", + "doctrine/mongodb-odm": ">=1,<1.0.2", + "doctrine/mongodb-odm-bundle": ">=2,<3.0.1", + "doctrine/orm": ">=2,<2.4.8|>=2.5,<2.5.1", + "dompdf/dompdf": ">=0.6,<0.6.2", + "drupal/core": ">=7,<7.58|>=8,<8.4.6|>=8.5,<8.5.1", + "drupal/drupal": ">=7,<7.58|>=8,<8.4.6|>=8.5,<8.5.1", + "erusev/parsedown": "<1.7", + "ezsystems/ezpublish-legacy": ">=5.3,<5.3.12.3|>=5.4,<5.4.11.3|>=2017.8,<2017.8.1.1|>=2017.12,<2017.12.2.1", + "firebase/php-jwt": "<2", + "friendsofsymfony/rest-bundle": ">=1.2,<1.2.2", + "friendsofsymfony/user-bundle": ">=1.2,<1.3.5", + "gree/jose": "<=2.2", + "gregwar/rst": "<1.0.3", + "guzzlehttp/guzzle": ">=6,<6.2.1|>=4.0.0-rc2,<4.2.4|>=5,<5.3.1", + "illuminate/auth": ">=4,<4.0.99|>=4.1,<4.1.26", + "illuminate/database": ">=4,<4.0.99|>=4.1,<4.1.29", + "joomla/session": "<1.3.1", + "laravel/framework": ">=4,<4.0.99|>=4.1,<4.1.29", + "laravel/socialite": ">=1,<1.0.99|>=2,<2.0.10", + "magento/magento1ce": ">=1.5.0.1,<1.9.3.2", + "magento/magento1ee": ">=1.9,<1.14.3.2", + "magento/magento2ce": ">=2,<2.2", + "monolog/monolog": ">=1.8,<1.12", + "namshi/jose": "<2.2", + "onelogin/php-saml": "<2.10.4", + "oro/crm": ">=1.7,<1.7.4", + "oro/platform": ">=1.7,<1.7.4", + "padraic/humbug_get_contents": "<1.1.2", + "pagarme/pagarme-php": ">=0,<3", + "paragonie/random_compat": "<2", + "phpmailer/phpmailer": ">=5,<5.2.24", + "phpunit/phpunit": ">=4.8.19,<4.8.28|>=5.0.10,<5.6.3", + "phpxmlrpc/extras": "<0.6.1", + "propel/propel": ">=2.0.0-alpha1,<=2.0.0-alpha7", + "propel/propel1": ">=1,<=1.7.1", + "pusher/pusher-php-server": "<2.2.1", + "sabre/dav": ">=1.6,<1.6.99|>=1.7,<1.7.11|>=1.8,<1.8.9", + "shopware/shopware": "<5.3.7", + "silverstripe/cms": ">=3,<=3.0.11|>=3.1,<3.1.11", + "silverstripe/forum": "<=0.6.1|>=0.7,<=0.7.3", + "silverstripe/framework": ">=3,<3.3", + "silverstripe/userforms": "<3", + "simplesamlphp/saml2": "<1.10.6|>=2,<2.3.8|>=3,<3.1.4", + "simplesamlphp/simplesamlphp": "<1.15.2", + "simplesamlphp/simplesamlphp-module-infocard": "<1.0.1", + "socalnick/scn-social-auth": "<1.15.2", + "squizlabs/php_codesniffer": ">=1,<2.8.1|>=3,<3.0.1", + "stormpath/sdk": ">=0,<9.9.99", + "swiftmailer/swiftmailer": ">=4,<5.4.5", + "symfony/dependency-injection": ">=2,<2.0.17", + "symfony/form": ">=2.3,<2.3.35|>=2.4,<2.6.12|>=2.7,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13", + "symfony/framework-bundle": ">=2,<2.3.18|>=2.4,<2.4.8|>=2.5,<2.5.2", + "symfony/http-foundation": ">=2,<2.3.27|>=2.4,<2.5.11|>=2.6,<2.6.6", + "symfony/http-kernel": ">=2,<2.3.29|>=2.4,<2.5.12|>=2.6,<2.6.8", + "symfony/intl": ">=2.7,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13", + "symfony/routing": ">=2,<2.0.19", + "symfony/security": ">=2,<2.0.25|>=2.1,<2.1.13|>=2.2,<2.2.9|>=2.3,<2.3.37|>=2.4,<2.6.13|>=2.7,<2.7.9|>=2.7.30,<2.7.32|>=2.8.23,<2.8.25|>=3.2.10,<3.2.12|>=3.3.3,<3.3.5", + "symfony/security-core": ">=2.4,<2.6.13|>=2.7,<2.7.9|>=2.7.30,<2.7.32|>=2.8,<2.8.6|>=2.8.23,<2.8.25|>=3,<3.0.6|>=3.2.10,<3.2.12|>=3.3.3,<3.3.5", + "symfony/security-csrf": ">=2.7,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13", + "symfony/security-http": ">=2.3,<2.3.41|>=2.4,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13", + "symfony/serializer": ">=2,<2.0.11", + "symfony/symfony": ">=2,<2.3.41|>=2.4,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13", + "symfony/translation": ">=2,<2.0.17", + "symfony/validator": ">=2,<2.0.24|>=2.1,<2.1.12|>=2.2,<2.2.5|>=2.3,<2.3.3", + "symfony/web-profiler-bundle": ">=2,<2.3.19|>=2.4,<2.4.9|>=2.5,<2.5.4", + "symfony/yaml": ">=2,<2.0.22|>=2.1,<2.1.7", + "thelia/backoffice-default-template": ">=2.1,<2.1.2", + "thelia/thelia": ">=2.1.0-beta1,<2.1.3|>=2.1,<2.1.2", + "titon/framework": ">=0,<9.9.99", + "twig/twig": "<1.20", + "typo3/cms": ">=6.2,<6.2.30|>=7,<7.6.22|>=8,<8.7.5", + "typo3/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.10|>=3.1,<3.1.7|>=3.2,<3.2.7|>=3.3,<3.3.5", + "typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4", + "willdurand/js-translation-bundle": "<2.1.1", + "yiisoft/yii": ">=1.1.14,<1.1.15", + "yiisoft/yii2": "<2.0.15", + "yiisoft/yii2-bootstrap": "<2.0.4", + "yiisoft/yii2-dev": "<2.0.15", + "yiisoft/yii2-elasticsearch": "<2.0.5", + "yiisoft/yii2-gii": "<2.0.4", + "yiisoft/yii2-jui": "<2.0.4", + "yiisoft/yii2-redis": "<2.0.8", + "zendframework/zend-cache": ">=2.4,<2.4.8|>=2.5,<2.5.3", + "zendframework/zend-captcha": ">=2,<2.4.9|>=2.5,<2.5.2", + "zendframework/zend-crypt": ">=2,<2.4.9|>=2.5,<2.5.2", + "zendframework/zend-db": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.10|>=2.3,<2.3.5", + "zendframework/zend-diactoros": ">=1,<1.0.4", + "zendframework/zend-form": ">=2,<2.2.7|>=2.3,<2.3.1", + "zendframework/zend-http": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.3,<2.3.8|>=2.4,<2.4.1", + "zendframework/zend-json": ">=2.1,<2.1.6|>=2.2,<2.2.6", + "zendframework/zend-ldap": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.8|>=2.3,<2.3.3", + "zendframework/zend-mail": ">=2,<2.4.11|>=2.5,<2.7.2", + "zendframework/zend-navigation": ">=2,<2.2.7|>=2.3,<2.3.1", + "zendframework/zend-session": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.9|>=2.3,<2.3.4", + "zendframework/zend-validator": ">=2.3,<2.3.6", + "zendframework/zend-view": ">=2,<2.2.7|>=2.3,<2.3.1", + "zendframework/zend-xmlrpc": ">=2.1,<2.1.6|>=2.2,<2.2.6", + "zendframework/zendframework": ">=2,<2.4.11|>=2.5,<2.5.1", + "zendframework/zendframework1": "<1.12.20", + "zendframework/zendopenid": ">=2,<2.0.2", + "zendframework/zendxml": ">=1,<1.0.1", + "zetacomponents/mail": "<1.8.2", + "zf-commons/zfc-user": "<1.2.2", + "zfcampus/zf-apigility-doctrine": ">=1,<1.0.3", + "zfr/zfr-oauth2-server-module": "<0.1.2" }, - "bin": [ - "bin/selenium-server-standalone" - ], - "type": "library", + "type": "metapackage", "notification-url": "https://packagist.org/downloads/", "license": [ - "Apache 2.0" + "MIT" ], "authors": [ { - "name": "Sven Eisenschmidt", - "email": "sven.eisenschmidt@gmail.com" - }, - { - "name": "James Titcumb", - "email": "hello@jamestitcumb.com" + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "role": "maintainer" } ], - "description": "Composer distribution of Selenium Server Standalone, the browser automation framework. Adds a executable to your composer bin directory.", - "homepage": "https://github.com/sveneisenschmidt/selenium-server-standalone", - "keywords": [ - "selenium", - "testing" - ], - "time": "2017-12-03T16:20:28+00:00" + "description": "Prevents installation of composer packages with known security vulnerabilities: no API, simply require it", + "time": "2018-03-30T07:14:38+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", @@ -6785,21 +6603,21 @@ }, { "name": "sebastian/comparator", - "version": "2.1.2", + "version": "2.1.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "11c07feade1d65453e06df3b3b90171d6d982087" + "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/11c07feade1d65453e06df3b3b90171d6d982087", - "reference": "11c07feade1d65453e06df3b3b90171d6d982087", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/34369daee48eafb2651bea869b4b15d75ccc35f9", + "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9", "shasum": "" }, "require": { "php": "^7.0", - "sebastian/diff": "^2.0", + "sebastian/diff": "^2.0 || ^3.0", "sebastian/exporter": "^3.1" }, "require-dev": { @@ -6845,7 +6663,7 @@ "compare", "equality" ], - "time": "2018-01-12T06:34:42+00:00" + "time": "2018-02-01T13:46:46+00:00" }, { "name": "sebastian/diff", @@ -7016,6 +6834,45 @@ ], "time": "2017-04-03T13:19:02+00:00" }, + { + "name": "sebastian/finder-facade", + "version": "1.2.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/finder-facade.git", + "reference": "4a3174709c2dc565fe5fb26fcf827f6a1fc7b09f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/finder-facade/zipball/4a3174709c2dc565fe5fb26fcf827f6a1fc7b09f", + "reference": "4a3174709c2dc565fe5fb26fcf827f6a1fc7b09f", + "shasum": "" + }, + "require": { + "symfony/finder": "~2.3|~3.0|~4.0", + "theseer/fdomdocument": "~1.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": "FinderFacade is a convenience wrapper for Symfony's Finder component.", + "homepage": "https://github.com/sebastianbergmann/finder-facade", + "time": "2017-11-18T17:31:49+00:00" + }, { "name": "sebastian/global-state", "version": "2.0.0", @@ -7299,24 +7156,24 @@ }, { "name": "symfony/dom-crawler", - "version": "v3.0.9", + "version": "v4.0.6", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "dff8fecf1f56990d88058e3a1885c2a5f1b8e970" + "reference": "26726ddc01601dc9393f2afc3369ce1ca64e4537" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/dff8fecf1f56990d88058e3a1885c2a5f1b8e970", - "reference": "dff8fecf1f56990d88058e3a1885c2a5f1b8e970", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/26726ddc01601dc9393f2afc3369ce1ca64e4537", + "reference": "26726ddc01601dc9393f2afc3369ce1ca64e4537", "shasum": "" }, "require": { - "php": ">=5.5.9", + "php": "^7.1.3", "symfony/polyfill-mbstring": "~1.0" }, "require-dev": { - "symfony/css-selector": "~2.8|~3.0" + "symfony/css-selector": "~3.4|~4.0" }, "suggest": { "symfony/css-selector": "" @@ -7324,7 +7181,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -7351,217 +7208,47 @@ ], "description": "Symfony DomCrawler Component", "homepage": "https://symfony.com", - "time": "2016-07-30T07:22:48+00:00" - }, - { - "name": "symfony/filesystem", - "version": "v3.4.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/filesystem.git", - "reference": "e078773ad6354af38169faf31c21df0f18ace03d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/e078773ad6354af38169faf31c21df0f18ace03d", - "reference": "e078773ad6354af38169faf31c21df0f18ace03d", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, - "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": "Symfony Filesystem Component", - "homepage": "https://symfony.com", - "time": "2018-01-03T07:37:34+00:00" - }, - { - "name": "symfony/options-resolver", - "version": "v3.4.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/options-resolver.git", - "reference": "f31f4d3ce4eaf7597abc41bd5ba53d634c2fdb0e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/f31f4d3ce4eaf7597abc41bd5ba53d634c2fdb0e", - "reference": "f31f4d3ce4eaf7597abc41bd5ba53d634c2fdb0e", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\OptionsResolver\\": "" - }, - "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": "Symfony OptionsResolver Component", - "homepage": "https://symfony.com", - "keywords": [ - "config", - "configuration", - "options" - ], - "time": "2018-01-03T07:37:34+00:00" - }, - { - "name": "symfony/stopwatch", - "version": "v3.4.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/stopwatch.git", - "reference": "c865551df7c17e63fc1f09f763db04387f91ae4d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/c865551df7c17e63fc1f09f763db04387f91ae4d", - "reference": "c865551df7c17e63fc1f09f763db04387f91ae4d", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Stopwatch\\": "" - }, - "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": "Symfony Stopwatch Component", - "homepage": "https://symfony.com", - "time": "2018-01-03T07:37:34+00:00" + "time": "2018-02-22T10:50:29+00:00" }, { - "name": "symfony/yaml", - "version": "v3.4.3", + "name": "theseer/fdomdocument", + "version": "1.6.6", "source": { "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "25c192f25721a74084272671f658797d9e0e0146" + "url": "https://github.com/theseer/fDOMDocument.git", + "reference": "6e8203e40a32a9c770bcb62fe37e68b948da6dca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/25c192f25721a74084272671f658797d9e0e0146", - "reference": "25c192f25721a74084272671f658797d9e0e0146", + "url": "https://api.github.com/repos/theseer/fDOMDocument/zipball/6e8203e40a32a9c770bcb62fe37e68b948da6dca", + "reference": "6e8203e40a32a9c770bcb62fe37e68b948da6dca", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8" - }, - "conflict": { - "symfony/console": "<3.4" - }, - "require-dev": { - "symfony/console": "~3.4|~4.0" - }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" + "ext-dom": "*", + "lib-libxml": "*", + "php": ">=5.3.3" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, "autoload": { - "psr-4": { - "Symfony\\Component\\Yaml\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "lead" } ], - "description": "Symfony Yaml Component", - "homepage": "https://symfony.com", - "time": "2018-01-03T07:37:34+00:00" + "description": "The classes contained within this repository extend the standard DOM to use exceptions at all occasions of errors instead of PHP warnings or notices. They also add various custom methods and shortcuts for convenience and to simplify the usage of DOM.", + "homepage": "https://github.com/theseer/fDOMDocument", + "time": "2017-06-30T11:53:12+00:00" }, { "name": "theseer/tokenizer", @@ -7605,16 +7292,16 @@ }, { "name": "webmozart/assert", - "version": "1.2.0", + "version": "1.3.0", "source": { "type": "git", "url": "https://github.com/webmozart/assert.git", - "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f" + "reference": "0df1908962e7a3071564e857d86874dad1ef204a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/2db61e59ff05fe5126d152bd0655c9ea113e550f", - "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f", + "url": "https://api.github.com/repos/webmozart/assert/zipball/0df1908962e7a3071564e857d86874dad1ef204a", + "reference": "0df1908962e7a3071564e857d86874dad1ef204a", "shasum": "" }, "require": { @@ -7651,15 +7338,13 @@ "check", "validate" ], - "time": "2016-11-23T20:04:58+00:00" + "time": "2018-01-29T19:49:41+00:00" } ], "aliases": [], "minimum-stability": "stable", "stability-flags": { - "pragmarx/google2fa-laravel": 20, - "roave/security-advisories": 20, - "lmc/steward": 20 + "roave/security-advisories": 20 }, "prefer-stable": false, "prefer-lowest": false, diff --git a/config/api.php b/config/api.php index 73ce7912a4d..91d1ee69b5f 100644 --- a/config/api.php +++ b/config/api.php @@ -38,5 +38,7 @@ '36' => 'You can\'t set a partner or a child to a partial contact.', '37' => 'Problems parsing JSON', '38' => 'Date should be in the future', + '39' => 'The sorting criteria is invalid', + '40' => 'Invalid query', ], ]; diff --git a/config/app.php b/config/app.php index 23ac8af9ec5..e029b58018b 100644 --- a/config/app.php +++ b/config/app.php @@ -1,7 +1,5 @@ 'en', + 'locale' => env('APP_DEFAULT_LOCALE', 'en'), /* |-------------------------------------------------------------------------- @@ -156,13 +154,14 @@ App\Providers\AppServiceProvider::class, App\Providers\AuthServiceProvider::class, App\Providers\EventServiceProvider::class, + Vluzrmos\LanguageDetector\Providers\LanguageDetectorServiceProvider::class, App\Providers\RouteServiceProvider::class, - Barryvdh\Debugbar\ServiceProvider::class, Laravel\Socialite\SocialiteServiceProvider::class, Intervention\Image\ImageServiceProvider::class, Laravel\Cashier\CashierServiceProvider::class, Sentry\SentryLaravel\SentryLaravelServiceProvider::class, Laravel\Passport\PassportServiceProvider::class, + Creativeorange\Gravatar\GravatarServiceProvider::class, ], /* @@ -212,8 +211,8 @@ 'Notification' => Illuminate\Support\Facades\Notification::class, 'Socialite' => Laravel\Socialite\Facades\Socialite::class, 'Image' => Intervention\Image\Facades\Image::class, - 'MoneyHelper' => App\Helpers\MoneyHelper::class, 'Sentry' => Sentry\SentryLaravel\SentryFacade::class, + 'Gravatar' => Creativeorange\Gravatar\Facades\Gravatar::class, ], ]; diff --git a/config/database.php b/config/database.php index 48f0723c15a..2eb23c71ce4 100644 --- a/config/database.php +++ b/config/database.php @@ -56,6 +56,7 @@ 'driver' => 'mysql', 'host' => env('DB_HOST', 'localhost'), 'port' => env('DB_PORT', '3306'), + 'unix_socket' => env('DB_UNIX_SOCKET', ''), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), @@ -67,15 +68,16 @@ ], 'testing' => [ - 'driver' => 'mysql', - 'host' => env('DB_TEST_HOST'), - 'database' => env('DB_TEST_DATABASE'), - 'username' => env('DB_TEST_USERNAME'), - 'password' => env('DB_TEST_PASSWORD'), - 'charset' => 'utf8', + 'driver' => 'mysql', + 'host' => env('DB_TEST_HOST'), + 'unix_socket' => env('DB_TEST_UNIX_SOCKET', ''), + 'database' => env('DB_TEST_DATABASE'), + 'username' => env('DB_TEST_USERNAME'), + 'password' => env('DB_TEST_PASSWORD'), + 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', - 'prefix' => '', - 'strict' => false, + 'prefix' => '', + 'strict' => false, ], 'pgsql' => [ @@ -90,6 +92,19 @@ 'schema' => 'public', ], + 'pgsqltesting' => [ + 'driver' => 'pgsql', + 'host' => env('DB_TEST_HOST'), + 'port' => env('DB_PORT', '5432'), + 'database' => env('DB_TEST_DATABASE'), + 'username' => env('DB_TEST_USERNAME'), + 'password' => env('DB_TEST_PASSWORD'), + 'charset' => 'utf8', + 'collation' => 'utf8_unicode_ci', + 'prefix' => '', + 'schema' => 'public', + ], + ], /* @@ -148,6 +163,7 @@ 'password' => $url['pass'], 'charset' => 'utf8', 'prefix' => '', + 'strict' => false, 'schema' => 'public', ]; } diff --git a/config/lang-detector.php b/config/lang-detector.php new file mode 100644 index 00000000000..07c3f7ba80f --- /dev/null +++ b/config/lang-detector.php @@ -0,0 +1,58 @@ + env('LANG_DETECTOR_AUTODETECT', false), + + /* + * Default driver to use to detect the request language. + * + * Available: browser, subdomain, uri. + */ + 'driver' => env('LANG_DETECTOR_DRIVER', 'browser'), + + /* + * Used on subdomain and uri drivers. That indicates which segment should be used + * to verify the language. + */ + 'segment' => env('LANG_DETECTOR_SEGMENT', 0), + + /* + * Languages available on the application. + * + * You could use parse_langs_to_array to use the string syntax + * or just use the array of languages with its aliases. + */ + 'languages' => parse_langs_to_array( + env('LANG_DETECTOR_LANGUAGES', [ + 'cs', + 'de', + 'en', + 'es', + 'fr', + 'he', + 'it', + 'nl', + 'pt', + 'ru', + 'zh', + ]) + ), + + /* + * Indicates if should store detected locale on cookies + */ + 'cookie' => (bool) env('LANG_DETECTOR_COOKIE', true), + + /* + * Indicates if should encrypt cookie + */ + 'cookie_encrypt' => (bool) env('LANG_DETECTOR_COOKIE_ENCRYPT', false), + + /* + * Cookie name + */ + 'cookie_name' => env('LANG_DETECTOR_COOKIE', 'locale'), +]; diff --git a/config/monica.php b/config/monica.php index aa191ccea65..432166ea7e3 100644 --- a/config/monica.php +++ b/config/monica.php @@ -2,25 +2,6 @@ return [ - /* - |-------------------------------------------------------------------------- - | Locales supported by the application - |-------------------------------------------------------------------------- - | - | This is the list of locales that we will use to localize the application. - | Each locale is defined in `resources/lang/` in their respective folder. - | - */ - 'langs' => [ - 'en', - 'fr', - 'pt-br', - 'ru', - 'cz', - 'it', - 'de', - ], - /* |-------------------------------------------------------------------------- | Disable User registration @@ -78,9 +59,12 @@ | | */ - 'paid_plan_friendly_name' => env('PAID_PLAN_FRIENDLY_NAME', null), - 'paid_plan_id' => env('PAID_PLAN_ID', null), - 'paid_plan_price' => env('PAID_PLAN_PRICE', null), + 'paid_plan_monthly_friendly_name' => env('PAID_PLAN_MONTHLY_FRIENDLY_NAME', null), + 'paid_plan_monthly_id' => env('PAID_PLAN_MONTHLY_ID', null), + 'paid_plan_monthly_price' => env('PAID_PLAN_MONTHLY_PRICE', null), + 'paid_plan_annual_friendly_name' => env('PAID_PLAN_ANNUAL_FRIENDLY_NAME', null), + 'paid_plan_annual_id' => env('PAID_PLAN_ANNUAL_ID', null), + 'paid_plan_annual_price' => env('PAID_PLAN_ANNUAL_PRICE', null), /* |-------------------------------------------------------------------------- @@ -114,5 +98,5 @@ | bad things will happen. | */ - 'app_version' => '1.6.1', + 'app_version' => '1.8.2', ]; diff --git a/config/sentry.php b/config/sentry.php index 78a91cb406a..930f8830e87 100644 --- a/config/sentry.php +++ b/config/sentry.php @@ -4,7 +4,7 @@ 'dsn' => env('SENTRY_DSN'), // capture release as git sha - 'release' => trim(exec('git log --pretty="%h" -n1 HEAD')), + 'release' => is_dir(__DIR__.'/../.git') ? trim(exec('git log --pretty="%h" -n1 HEAD')) : null, // Capture bindings on SQL queries 'breadcrumbs.sql_bindings' => true, diff --git a/crowdin.yml b/crowdin.yml new file mode 100644 index 00000000000..aac59592223 --- /dev/null +++ b/crowdin.yml @@ -0,0 +1,3 @@ +files: + - source: /resources/lang/en/*.php + translation: /resources/lang/%two_letters_code%/%original_file_name% diff --git a/database/factories/ModelFactory.php b/database/factories/ModelFactory.php index 8f0d938d954..88cfb29b24e 100644 --- a/database/factories/ModelFactory.php +++ b/database/factories/ModelFactory.php @@ -59,11 +59,13 @@ $factory->define(App\Contact::class, function (Faker\Generator $faker) { return [ - 'id' => 1, 'account_id' => 1, 'first_name' => 'John', 'last_name' => 'Doe', 'has_avatar' => false, + 'gender_id' => function () { + return factory(App\Gender::class)->create()->id; + }, ]; }); @@ -140,12 +142,82 @@ ]; }); +$factory->define(App\Gender::class, function (Faker\Generator $faker) { + return [ + 'account_id' => 1, + ]; +}); + $factory->define(App\Entry::class, function (Faker\Generator $faker) { return [ 'account_id' => 1, ]; }); +$factory->define(App\Day::class, function (Faker\Generator $faker) { + return [ + 'account_id' => 1, + ]; +}); + +$factory->define(App\Progenitor::class, function (Faker\Generator $faker) { + return [ + 'account_id' => 1, + ]; +}); + +$factory->define(App\Tag::class, function (Faker\Generator $faker) { + return [ + 'account_id' => 1, + ]; +}); + +$factory->define(App\JournalEntry::class, function (Faker\Generator $faker) { + return [ + 'account_id' => 1, + ]; +}); + +$factory->define(App\Pet::class, function (Faker\Generator $faker) { + return [ + 'account_id' => 1, + ]; +}); + +$factory->define(App\PetCategory::class, function (Faker\Generator $faker) { + return []; +}); + +$factory->define(App\ContactFieldType::class, function (Faker\Generator $faker) { + return [ + 'account_id' => 1, + 'name' => 'Email', + 'protocol' => 'mailto:', + 'type' => 'email', + ]; +}); + +$factory->define(App\ContactField::class, function (Faker\Generator $faker) { + return [ + 'account_id' => 1, + 'contact_id' => 1, + 'contact_field_type_id' => 1, + 'data' => 'john@doe.com', + ]; +}); + +$factory->define(App\ReminderRule::class, function (Faker\Generator $faker) { + return [ + 'account_id' => 1, + ]; +}); + +$factory->define(App\Notification::class, function (Faker\Generator $faker) { + return [ + 'account_id' => 1, + ]; +}); + $factory->define(\Laravel\Cashier\Subscription::class, function (Faker\Generator $faker) { static $account_id; static $stripe_plan; @@ -158,6 +230,6 @@ 'stripe_id' => $stripe_id, 'stripe_plan' => $stripe_plan ?: $faker->randomElement(['plan-1', 'plan-2', 'plan-3']), 'quantity' => 1, - 'created_at' => \Carbon\Carbon::now(), + 'created_at' => now(), ]; }); diff --git a/database/migrations/2016_09_10_164406_create_jobs_table.php b/database/migrations/2016_09_10_164406_create_jobs_table.php index 9df88d36ae5..3f572349610 100644 --- a/database/migrations/2016_09_10_164406_create_jobs_table.php +++ b/database/migrations/2016_09_10_164406_create_jobs_table.php @@ -17,7 +17,7 @@ public function up() $table->bigIncrements('id'); $table->string('queue'); $table->longText('payload'); - $table->tinyInteger('attempts')->unsigned(); + $table->unsignedTinyInteger('attempts'); $table->unsignedInteger('reserved_at')->nullable(); $table->unsignedInteger('available_at'); $table->unsignedInteger('created_at'); diff --git a/database/migrations/2017_01_14_200815_add_facebook_columns_to_users_table.php b/database/migrations/2017_01_14_200815_add_facebook_columns_to_users_table.php index 8f5347501b1..35041235b8e 100644 --- a/database/migrations/2017_01_14_200815_add_facebook_columns_to_users_table.php +++ b/database/migrations/2017_01_14_200815_add_facebook_columns_to_users_table.php @@ -14,7 +14,7 @@ class AddFacebookColumnsToUsersTable extends Migration public function up() { Schema::table('users', function (Blueprint $table) { - $table->bigInteger('facebook_user_id')->unsigned()->index(); + $table->unsignedBigInteger('facebook_user_id')->index(); $table->string('access_token')->nullable(); }); } diff --git a/database/migrations/2017_05_04_193252_alter_activity_nullable.php b/database/migrations/2017_05_04_193252_alter_activity_nullable.php index 87a62086c83..c645ffbe1c0 100644 --- a/database/migrations/2017_05_04_193252_alter_activity_nullable.php +++ b/database/migrations/2017_05_04_193252_alter_activity_nullable.php @@ -14,7 +14,7 @@ class AlterActivityNullable extends Migration public function up() { Schema::table('activities', function (Blueprint $table) { - $table->integer('activity_type_id')->unsigned()->nullable()->change(); + $table->unsignedInteger('activity_type_id')->nullable()->change(); }); } } diff --git a/database/migrations/2017_10_14_083556_change_gift_column_structure.php b/database/migrations/2017_10_14_083556_change_gift_column_structure.php index 07beae3c291..9faa4e67eb1 100644 --- a/database/migrations/2017_10_14_083556_change_gift_column_structure.php +++ b/database/migrations/2017_10_14_083556_change_gift_column_structure.php @@ -13,7 +13,9 @@ class ChangeGiftColumnStructure extends Migration */ public function up() { - DB::statement('ALTER TABLE gifts MODIFY about_object_id INTEGER;'); + Schema::table('gifts', function (Blueprint $table) { + $table->integer('about_object_id')->change(); + }); Schema::table('gifts', function ($table) { $table->dropColumn([ diff --git a/database/migrations/2017_10_19_134816_create_activity_contact_table.php b/database/migrations/2017_10_19_134816_create_activity_contact_table.php index 4f73ddf09c3..41225010994 100644 --- a/database/migrations/2017_10_19_134816_create_activity_contact_table.php +++ b/database/migrations/2017_10_19_134816_create_activity_contact_table.php @@ -14,8 +14,8 @@ class CreateActivityContactTable extends Migration public function up() { Schema::create('activity_contact', function (Blueprint $table) { - $table->integer('activity_id')->unsigned(); - $table->integer('contact_id')->unsigned(); + $table->unsignedInteger('activity_id'); + $table->unsignedInteger('contact_id'); $table->foreign('activity_id')->references('id')->on('activities')->onDelete('cascade'); $table->foreign('contact_id')->references('id')->on('contacts')->onDelete('cascade'); diff --git a/database/migrations/2017_11_10_174654_create_contact_fields_table.php b/database/migrations/2017_11_10_174654_create_contact_fields_table.php index 81a6588673b..fe45e2dd3d6 100644 --- a/database/migrations/2017_11_10_174654_create_contact_fields_table.php +++ b/database/migrations/2017_11_10_174654_create_contact_fields_table.php @@ -15,7 +15,7 @@ public function up() { Schema::create('contact_field_types', function (Blueprint $table) { $table->increments('id'); - $table->integer('account_id')->unsigned(); + $table->unsignedInteger('account_id'); $table->string('name'); $table->string('fontawesome_icon')->nullable(); $table->string('protocol')->nullable(); @@ -28,9 +28,9 @@ public function up() Schema::create('contact_fields', function (Blueprint $table) { $table->increments('id'); - $table->integer('account_id')->unsigned(); - $table->integer('contact_id')->unsigned(); - $table->integer('contact_field_type_id')->unsigned(); + $table->unsignedInteger('account_id'); + $table->unsignedInteger('contact_id'); + $table->unsignedInteger('contact_field_type_id'); $table->string('data'); $table->timestamps(); @@ -41,8 +41,8 @@ public function up() Schema::create('addresses', function (Blueprint $table) { $table->increments('id'); - $table->integer('account_id')->unsigned(); - $table->integer('contact_id')->unsigned(); + $table->unsignedInteger('account_id'); + $table->unsignedInteger('contact_id'); $table->string('name')->nullable(); $table->string('street')->nullable(); $table->string('city')->nullable(); diff --git a/database/migrations/2017_11_10_181043_migrate_contacts_information.php b/database/migrations/2017_11_10_181043_migrate_contacts_information.php index fd6eadce2ea..f63f2a30a99 100644 --- a/database/migrations/2017_11_10_181043_migrate_contacts_information.php +++ b/database/migrations/2017_11_10_181043_migrate_contacts_information.php @@ -47,7 +47,7 @@ public function up() 'contact_id' => $contact->id, 'contact_field_type_id' => $emailId->id, 'data' => $contact->email, - 'created_at' => \Carbon\Carbon::now(), + 'created_at' => now(), ]); } @@ -57,7 +57,7 @@ public function up() 'contact_id' => $contact->id, 'contact_field_type_id' => $idPhoneNumber->id, 'data' => $contact->phone_number, - 'created_at' => \Carbon\Carbon::now(), + 'created_at' => now(), ]); } @@ -67,7 +67,7 @@ public function up() 'contact_id' => $contact->id, 'contact_field_type_id' => $idFacebook->id, 'data' => $contact->facebook_profile_url, - 'created_at' => \Carbon\Carbon::now(), + 'created_at' => now(), ]); } @@ -77,7 +77,7 @@ public function up() 'contact_id' => $contact->id, 'contact_field_type_id' => $idTwitter->id, 'data' => $contact->twitter_profile_url, - 'created_at' => \Carbon\Carbon::now(), + 'created_at' => now(), ]); } } diff --git a/database/migrations/2017_11_10_204035_delete_contact_fields_from_contacts.php b/database/migrations/2017_11_10_204035_delete_contact_fields_from_contacts.php index e3edf2da02f..c761df00ebf 100644 --- a/database/migrations/2017_11_10_204035_delete_contact_fields_from_contacts.php +++ b/database/migrations/2017_11_10_204035_delete_contact_fields_from_contacts.php @@ -14,7 +14,7 @@ class DeleteContactFieldsFromContacts extends Migration public function up() { Schema::table('contacts', function (Blueprint $table) { - $table->dropIndex('unique_for_each_account_email_pair'); + $table->dropUnique('unique_for_each_account_email_pair'); $table->dropColumn('email'); $table->dropColumn('phone_number'); $table->dropColumn('street'); diff --git a/database/migrations/2017_12_04_165421_move_ages_data.php b/database/migrations/2017_12_04_165421_move_ages_data.php index 4ef84320a56..e0cbb8149a4 100644 --- a/database/migrations/2017_12_04_165421_move_ages_data.php +++ b/database/migrations/2017_12_04_165421_move_ages_data.php @@ -26,7 +26,7 @@ public function up() 'is_age_based' => false, 'date' => $contact->deceased_date, 'reminder_id' => null, - 'created_at' => \Carbon\Carbon::now(), + 'created_at' => now(), ]); } @@ -43,7 +43,7 @@ public function up() 'is_age_based' => true, 'date' => $contact->birthdate, 'reminder_id' => $contact->birthday_reminder_id, - 'created_at' => \Carbon\Carbon::now(), + 'created_at' => now(), ]); break; @@ -54,7 +54,7 @@ public function up() 'is_age_based' => false, 'date' => $contact->birthdate, 'reminder_id' => $contact->birthday_reminder_id, - 'created_at' => \Carbon\Carbon::now(), + 'created_at' => now(), ]); break; @@ -68,7 +68,7 @@ public function up() 'is_age_based' => false, 'date' => $contact->first_met, 'reminder_id' => null, - 'created_at' => \Carbon\Carbon::now(), + 'created_at' => now(), ]); } diff --git a/database/migrations/2018_01_15_105858_create_additional_reminders_table.php b/database/migrations/2018_01_15_105858_create_additional_reminders_table.php new file mode 100644 index 00000000000..8c24f9a2f63 --- /dev/null +++ b/database/migrations/2018_01_15_105858_create_additional_reminders_table.php @@ -0,0 +1,67 @@ +increments('id'); + $table->integer('account_id'); + $table->integer('contact_id'); + $table->integer('reminder_id')->nullable(); + $table->datetime('trigger_date'); + $table->integer('scheduled_number_days_before')->nullable(); + $table->timestamps(); + }); + + Schema::create('reminders_sent', function (Blueprint $table) { + $table->increments('id'); + $table->integer('account_id'); + $table->integer('contact_id'); + $table->integer('reminder_id')->nullable(); + $table->mediumText('title'); + $table->longText('description'); + $table->longText('html_sent_content'); + $table->datetime('sent_date'); + $table->integer('scheduled_number_days_before')->nullable(); + $table->timestamps(); + }); + + Schema::create('reminder_rules', function (Blueprint $table) { + $table->increments('id'); + $table->integer('account_id'); + $table->integer('number_of_days_before'); + $table->boolean('active')->default(true); + $table->timestamps(); + }); + + Schema::table('accounts', function (Blueprint $table) { + $table->string('default_time_reminder_is_sent')->after('number_of_invitations_sent')->default('12:00'); + }); + + $accounts = DB::table('accounts')->select('id')->get(); + foreach ($accounts as $account) { + DB::table('reminder_rules')->insert([ + ['account_id' => $account->id, 'number_of_days_before' => 7], + ['account_id' => $account->id, 'number_of_days_before' => 30], + ]); + } + + // Create notifications for existing reminders + // Only create notifications for reminders that are not weekly based + $reminders = Reminder::where('frequency_type', '!=', 'week')->get(); + foreach ($reminders as $reminder) { + $reminder->scheduleNotifications(); + } + } +} diff --git a/database/migrations/2018_01_27_014146_add_custom_gender.php b/database/migrations/2018_01_27_014146_add_custom_gender.php new file mode 100644 index 00000000000..5d30305a6ab --- /dev/null +++ b/database/migrations/2018_01_27_014146_add_custom_gender.php @@ -0,0 +1,60 @@ +increments('id'); + $table->integer('account_id'); + $table->string('name'); + $table->timestamps(); + }); + + Schema::table('contacts', function (Blueprint $table) { + $table->integer('gender_id')->after('gender'); + }); + + $accounts = DB::table('accounts')->select('id')->get(); + foreach ($accounts as $account) { + $user = DB::table('users')->select('locale')->where('account_id', $account->id)->first(); + + if (! $user) { + continue; + } + \App::setLocale($user->locale); + + $male = DB::table('genders')->insertGetId(['account_id' => $account->id, 'name' => trans('app.gender_male')]); + $female = DB::table('genders')->insertGetId(['account_id' => $account->id, 'name' => trans('app.gender_female')]); + $none = DB::table('genders')->insertGetId(['account_id' => $account->id, 'name' => trans('app.gender_none')]); + + $contacts = DB::table('contacts')->select('id', 'gender')->where('account_id', $account->id)->get(); + foreach ($contacts as $contact) { + if ($contact->gender == 'male') { + DB::table('contacts')->where('id', $contact->id)->update(['gender_id' => $male]); + } + + if ($contact->gender == 'female') { + DB::table('contacts')->where('id', $contact->id)->update(['gender_id' => $female]); + } + + if ($contact->gender == 'none') { + DB::table('contacts')->where('id', $contact->id)->update(['gender_id' => $none]); + } + } + } + + Schema::table('contacts', function (Blueprint $table) { + $table->dropColumn('gender'); + }); + } +} diff --git a/database/migrations/2018_02_25_202752_change_locale_in_db.php b/database/migrations/2018_02_25_202752_change_locale_in_db.php new file mode 100644 index 00000000000..511573d616e --- /dev/null +++ b/database/migrations/2018_02_25_202752_change_locale_in_db.php @@ -0,0 +1,22 @@ +where('locale', 'pt-br') + ->update(['locale' => 'pt']); + + DB::table('users') + ->where('locale', 'cz') + ->update(['locale' => 'cs']); + } +} diff --git a/database/migrations/2018_02_28_223747_update_notification_table.php b/database/migrations/2018_02_28_223747_update_notification_table.php new file mode 100644 index 00000000000..4a6a9b18fa3 --- /dev/null +++ b/database/migrations/2018_02_28_223747_update_notification_table.php @@ -0,0 +1,21 @@ +integer('delete_after_number_of_emails_sent')->default(0)->after('reminder_id'); + $table->integer('number_of_emails_sent')->default(0)->after('delete_after_number_of_emails_sent'); + }); + } +} diff --git a/database/seeds/ActivityTypesTableSeeder.php b/database/seeds/ActivityTypesTableSeeder.php index 2a5f9f8c850..e410e15fe12 100644 --- a/database/seeds/ActivityTypesTableSeeder.php +++ b/database/seeds/ActivityTypesTableSeeder.php @@ -1,6 +1,5 @@ insert([ 'key' => 'simple_activities', - 'created_at' => Carbon::now(), - 'updated_at' => Carbon::now(), + 'created_at' => now(), + 'updated_at' => now(), ]); DB::table('activity_types')->insert([ @@ -27,8 +26,8 @@ public function run() 'location_type' => 'outside', 'icon' => 'hang_out', 'activity_type_group_id' => 1, - 'created_at' => Carbon::now(), - 'updated_at' => Carbon::now(), + 'created_at' => now(), + 'updated_at' => now(), ]); DB::table('activity_types')->insert([ @@ -36,8 +35,8 @@ public function run() 'location_type' => 'my_place', 'icon' => 'movie_home', 'activity_type_group_id' => 1, - 'created_at' => Carbon::now(), - 'updated_at' => Carbon::now(), + 'created_at' => now(), + 'updated_at' => now(), ]); DB::table('activity_types')->insert([ @@ -45,15 +44,15 @@ public function run() 'location_type' => 'my_place', 'icon' => 'talk_home', 'activity_type_group_id' => 1, - 'created_at' => Carbon::now(), - 'updated_at' => Carbon::now(), + 'created_at' => now(), + 'updated_at' => now(), ]); // SPORT DB::table('activity_type_groups')->insert([ 'key' => 'sport', - 'created_at' => Carbon::now(), - 'updated_at' => Carbon::now(), + 'created_at' => now(), + 'updated_at' => now(), ]); DB::table('activity_types')->insert([ @@ -61,15 +60,15 @@ public function run() 'location_type' => 'outside', 'icon' => 'sport', 'activity_type_group_id' => 2, - 'created_at' => Carbon::now(), - 'updated_at' => Carbon::now(), + 'created_at' => now(), + 'updated_at' => now(), ]); // FOOD DB::table('activity_type_groups')->insert([ 'key' => 'food', - 'created_at' => Carbon::now(), - 'updated_at' => Carbon::now(), + 'created_at' => now(), + 'updated_at' => now(), ]); DB::table('activity_types')->insert([ @@ -77,8 +76,8 @@ public function run() 'location_type' => 'his_place', 'icon' => 'ate_his_place', 'activity_type_group_id' => 3, - 'created_at' => Carbon::now(), - 'updated_at' => Carbon::now(), + 'created_at' => now(), + 'updated_at' => now(), ]); DB::table('activity_types')->insert([ @@ -86,8 +85,8 @@ public function run() 'location_type' => 'outside', 'icon' => 'bar', 'activity_type_group_id' => 3, - 'created_at' => Carbon::now(), - 'updated_at' => Carbon::now(), + 'created_at' => now(), + 'updated_at' => now(), ]); DB::table('activity_types')->insert([ @@ -95,8 +94,8 @@ public function run() 'location_type' => 'my_place', 'icon' => 'ate_home', 'activity_type_group_id' => 3, - 'created_at' => Carbon::now(), - 'updated_at' => Carbon::now(), + 'created_at' => now(), + 'updated_at' => now(), ]); DB::table('activity_types')->insert([ @@ -104,8 +103,8 @@ public function run() 'location_type' => 'outside', 'icon' => 'picknicked', 'activity_type_group_id' => 3, - 'created_at' => Carbon::now(), - 'updated_at' => Carbon::now(), + 'created_at' => now(), + 'updated_at' => now(), ]); DB::table('activity_types')->insert([ @@ -113,15 +112,15 @@ public function run() 'location_type' => 'outside', 'icon' => 'restaurant', 'activity_type_group_id' => 3, - 'created_at' => Carbon::now(), - 'updated_at' => Carbon::now(), + 'created_at' => now(), + 'updated_at' => now(), ]); // CULTURAL DB::table('activity_type_groups')->insert([ 'key' => 'cultural_activities', - 'created_at' => Carbon::now(), - 'updated_at' => Carbon::now(), + 'created_at' => now(), + 'updated_at' => now(), ]); DB::table('activity_types')->insert([ @@ -129,8 +128,8 @@ public function run() 'location_type' => 'outside', 'icon' => 'theater', 'activity_type_group_id' => 4, - 'created_at' => Carbon::now(), - 'updated_at' => Carbon::now(), + 'created_at' => now(), + 'updated_at' => now(), ]); DB::table('activity_types')->insert([ @@ -138,8 +137,8 @@ public function run() 'location_type' => 'outside', 'icon' => 'concert', 'activity_type_group_id' => 4, - 'created_at' => Carbon::now(), - 'updated_at' => Carbon::now(), + 'created_at' => now(), + 'updated_at' => now(), ]); DB::table('activity_types')->insert([ @@ -147,8 +146,8 @@ public function run() 'location_type' => 'outside', 'icon' => 'play', 'activity_type_group_id' => 4, - 'created_at' => Carbon::now(), - 'updated_at' => Carbon::now(), + 'created_at' => now(), + 'updated_at' => now(), ]); DB::table('activity_types')->insert([ @@ -156,8 +155,8 @@ public function run() 'location_type' => 'outside', 'icon' => 'museum', 'activity_type_group_id' => 4, - 'created_at' => Carbon::now(), - 'updated_at' => Carbon::now(), + 'created_at' => now(), + 'updated_at' => now(), ]); } } diff --git a/database/seeds/DatabaseSeeder.php b/database/seeds/DatabaseSeeder.php index 46d06152641..32d9af5ff3a 100644 --- a/database/seeds/DatabaseSeeder.php +++ b/database/seeds/DatabaseSeeder.php @@ -11,20 +11,21 @@ class DatabaseSeeder extends Seeder */ public function run() { - if (env('APP_ENV') == 'local') { - $this->call(ActivityTypesTableSeeder::class); - $this->call(CountriesSeederTable::class); - $this->call(FakeUserTableSeeder::class); - } - - if (env('APP_ENV') == 'testing') { - $this->call(ActivityTypesTableSeeder::class); - $this->call(CountriesSeederTable::class); - } - - if (env('APP_ENV') == 'production') { - $this->call(ActivityTypesTableSeeder::class); - $this->call(CountriesSeederTable::class); + switch (\App::environment()) { + case 'local': + $this->call(ActivityTypesTableSeeder::class); + $this->call(CountriesSeederTable::class); + $this->call(FakeUserTableSeeder::class); + break; + case 'testing': + $this->call(ActivityTypesTableSeeder::class); + $this->call(CountriesSeederTable::class); + $this->call(FakeUserTableSeeder::class); + break; + case 'production': + $this->call(ActivityTypesTableSeeder::class); + $this->call(CountriesSeederTable::class); + break; } } } diff --git a/database/seeds/FakeContentTableSeeder.php b/database/seeds/FakeContentTableSeeder.php index fd11c53380e..35bce836807 100644 --- a/database/seeds/FakeContentTableSeeder.php +++ b/database/seeds/FakeContentTableSeeder.php @@ -3,16 +3,17 @@ use App\Account; use App\Contact; use GuzzleHttp\Client; -use Faker\Factory as Faker; use Illuminate\Database\Seeder; +use Illuminate\Foundation\Testing\WithFaker; use Symfony\Component\Console\Helper\ProgressBar; use Symfony\Component\Console\Output\ConsoleOutput; class FakeContentTableSeeder extends Seeder { + use WithFaker; + private $numberOfContacts; private $contact; - private $faker; private $account; /** @@ -22,27 +23,8 @@ class FakeContentTableSeeder extends Seeder */ public function run() { - // populate account table - $accountID = DB::table('accounts')->insertGetId([ - 'api_key' => str_random(30), - ]); - - $account = Account::find($accountID); - $account->populateContactFieldTypeTable(); - - // populate user table - $userId = DB::table('users')->insertGetId([ - 'account_id' => $accountID, - 'first_name' => 'John', - 'last_name' => 'Doe', - 'email' => 'admin@admin.com', - 'password' => bcrypt('admin'), - 'timezone' => config('app.timezone'), - ]); - - $this->account = $account; - - $this->faker = Faker::create(); + $this->setUpFaker(); + $this->account = Account::createDefault('John', 'Doe', 'admin@admin.com', 'admin'); // create a random number of contacts $this->numberOfContacts = rand(60, 100); @@ -62,8 +44,8 @@ public function run() $gender = (rand(1, 2) == 1) ? 'male' : 'female'; $this->contact = new Contact; - $this->contact->account_id = $accountID; - $this->contact->gender = $gender; + $this->contact->account_id = $this->account->id; + $this->contact->gender_id = $this->getRandomGender()->id; $this->contact->first_name = $this->faker->firstName($gender); $this->contact->last_name = (rand(1, 2) == 1) ? $this->faker->lastName : null; $this->contact->has_avatar = false; @@ -105,20 +87,7 @@ public function run() $progress->finish(); // create the second test, blank account - $accountID = DB::table('accounts')->insertGetId([ - 'api_key' => str_random(30), - ]); - - // populate user table - $userId = DB::table('users')->insertGetId([ - 'account_id' => $accountID, - 'first_name' => 'Blank', - 'last_name' => 'State', - 'email' => 'blank@blank.com', - 'password' => bcrypt('blank'), - 'timezone' => config('app.timezone'), - 'remember_token' => str_random(10), - ]); + Account::createDefault('Blank', 'State', 'blank@blank.com', 'blank'); } public function populateFoodPreferencies() @@ -146,7 +115,7 @@ public function populateDeceasedDate() // add a date where we know the year $specialDate = $this->contact->setSpecialDate('deceased_date', $deceasedDate->format('Y'), $deceasedDate->format('m'), $deceasedDate->format('d')); } - $newReminder = $specialDate->setReminder('year', 1, trans('people.deceased_reminder_title', ['name' => $this->contact->first_name])); + $specialDate->setReminder('year', 1, trans('people.deceased_reminder_title', ['name' => $this->contact->first_name])); } $this->contact->save(); @@ -167,7 +136,7 @@ public function populateBirthday() $specialDate = $this->contact->setSpecialDate('birthdate', $birthdate->format('Y'), $birthdate->format('m'), $birthdate->format('d')); } - $newReminder = $specialDate->setReminder('year', 1, trans('people.people_add_birthday_reminder', ['name' => $this->contact->first_name])); + $specialDate->setReminder('year', 1, trans('people.people_add_birthday_reminder', ['name' => $this->contact->first_name])); } else { // add a birthdate based on an approximate age $specialDate = $this->contact->setSpecialDateFromAge('birthdate', rand(10, 100)); @@ -195,7 +164,7 @@ public function populateFirstMetInformation() // add a date where we know the year $specialDate = $this->contact->setSpecialDate('first_met', $firstMetDate->format('Y'), $firstMetDate->format('m'), $firstMetDate->format('d')); } - $newReminder = $specialDate->setReminder('year', 1, trans('people.introductions_reminder_title', ['name' => $this->contact->first_name])); + $specialDate->setReminder('year', 1, trans('people.introductions_reminder_title', ['name' => $this->contact->first_name])); } if (rand(1, 2) == 1) { @@ -217,7 +186,7 @@ public function populateKids() $kid = new Contact; $kid->account_id = $this->contact->account_id; - $kid->gender = $gender; + $kid->gender_id = $this->getRandomGender()->id; $kid->first_name = $this->faker->firstName($gender); $kid->last_name = (rand(1, 2) == 1) ? $this->faker->lastName($gender) : null; $kid->save(); @@ -243,7 +212,7 @@ public function populateKids() // add a date where we know the year $specialDate = $kid->setSpecialDate('birthdate', $kidBirthDate->format('Y'), $kidBirthDate->format('m'), $kidBirthDate->format('d')); } - $newReminder = $specialDate->setReminder('year', 1, trans('people.people_add_birthday_reminder', ['name' => $kid->first_name])); + $specialDate->setReminder('year', 1, trans('people.people_add_birthday_reminder', ['name' => $kid->first_name])); } } } @@ -256,7 +225,7 @@ public function populatePartners() $partner = new Contact; $partner->account_id = $this->contact->account_id; - $partner->gender = $gender; + $partner->gender_id = $this->getRandomGender()->id; $partner->first_name = $this->faker->firstName($gender); $partner->last_name = (rand(1, 2) == 1) ? $this->faker->lastName($gender) : null; $partner->save(); @@ -282,7 +251,7 @@ public function populatePartners() // add a date where we know the year $specialDate = $partner->setSpecialDate('birthdate', $partnerBirthDate->format('Y'), $partnerBirthDate->format('m'), $partnerBirthDate->format('d')); } - $newReminder = $specialDate->setReminder('year', 1, trans('people.people_add_birthday_reminder', ['name' => $partner->first_name])); + $specialDate->setReminder('year', 1, trans('people.people_add_birthday_reminder', ['name' => $partner->first_name])); } } } @@ -294,7 +263,7 @@ public function populateNotes() $note = $this->contact->notes()->create([ 'body' => $this->faker->realText(rand(40, 500)), 'account_id' => $this->contact->account_id, - 'is_favorited' => (rand(1, 3) == 1 ? true : false), + 'is_favorited' => rand(1, 3) == 1, 'favorited_at' => $this->faker->dateTimeThisCentury(), ]); @@ -428,7 +397,7 @@ public function populateEntries() 'date' => $date, 'journalable_id' => $entryId, 'journalable_type' => 'App\Entry', - 'created_at' => \Carbon\Carbon::now(), + 'created_at' => now(), ]); } } @@ -467,7 +436,7 @@ public function populateDayRatings() 'date' => $date, 'journalable_id' => $dayId, 'journalable_type' => 'App\Day', - 'created_at' => \Carbon\Carbon::now(), + 'created_at' => now(), ]); } } @@ -487,4 +456,9 @@ public function populateCalls() ]); } } + + public function getRandomGender() + { + return $this->account->genders->random(); + } } diff --git a/database/seeds/FakeUserTableSeeder.php b/database/seeds/FakeUserTableSeeder.php index d139017125f..c2cce33912d 100644 --- a/database/seeds/FakeUserTableSeeder.php +++ b/database/seeds/FakeUserTableSeeder.php @@ -1,5 +1,6 @@ insertGetId([ - 'api_key' => str_random(30), - ]); - - // populate user table - $userId = DB::table('users')->insertGetId([ - 'account_id' => $accountID, - 'first_name' => 'John', - 'last_name' => 'Doe', - 'email' => 'admin@admin.com', - 'password' => bcrypt('admin'), - 'timezone' => config('app.timezone'), - 'remember_token' => str_random(10), - ]); - - // create the second test, blank account - $accountID = DB::table('accounts')->insertGetId([ - 'api_key' => str_random(30), - ]); - - // populate user table - $userId = DB::table('users')->insertGetId([ - 'account_id' => $accountID, - 'first_name' => 'Blank', - 'last_name' => 'State', - 'email' => 'blank@blank.com', - 'password' => bcrypt('blank'), - 'timezone' => config('app.timezone'), - 'remember_token' => str_random(10), - ]); + Account::createDefault('John', 'Doe', 'admin@admin.com', 'admin'); + Account::createDefault('Blank', 'State', 'blank@blank.com', 'blank'); } } diff --git a/docker/000-default.conf b/docker/000-default.conf deleted file mode 100644 index 85c01ce6897..00000000000 --- a/docker/000-default.conf +++ /dev/null @@ -1,46 +0,0 @@ -LoadModule rewrite_module modules/mod_rewrite.so - - Require all granted - - - - # The ServerName directive sets the request scheme, hostname and port that - # the server uses to identify itself. This is used when creating - # redirection URLs. In the context of virtual hosts, the ServerName - # specifies what hostname must appear in the request's Host: header to - # match this virtual host. For the default virtual host (this file) this - # value is not decisive as it is used as a last resort host regardless. - # However, you must set it for any further virtual host explicitly. - #ServerName www.example.com - - ServerAdmin webmaster@localhost - DocumentRoot /var/www/monica/public - - # Available loglevels: trace8, ..., trace1, debug, info, notice, warn, - # error, crit, alert, emerg. - # It is also possible to configure the loglevel for particular - # modules, e.g. - #LogLevel info ssl:warn - - ErrorLog logs/error.log - CustomLog logs/access.log combined - - ErrorLog stderr - CustomLog stdout combined - - # For most configuration files from conf-available/, which are - # enabled or disabled at a global level, it is possible to - # include a line for only one particular virtual host. For example the - # following line enables the CGI configuration for this host only - # after it has been globally disabled with "a2disconf". - #Include conf-available/serve-cgi-bin.conf - - - RewriteEngine on - RewriteCond %{REQUEST_FILENAME} !-f - RewriteCond %{REQUEST_FILENAME} !-d - RewriteRule ^(.*)$ index.php [L,QSA] - - - -# vim: syntax=apache ts=4 sw=4 sts=4 sr noet \ No newline at end of file diff --git a/docker/Makefile b/docker/Makefile deleted file mode 100644 index d8793e9df85..00000000000 --- a/docker/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -test_server: waitfordb - docker/test-server.sh - -shell: - /bin/sh - -waitfordb: - docker/waitfordb.sh diff --git a/docker/install-composer.sh b/docker/install-composer.sh deleted file mode 100755 index f7f573a7ffa..00000000000 --- a/docker/install-composer.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/sh - -EXPECTED_SIGNATURE=$(curl -s https://composer.github.io/installer.sig) -curl -s -o composer-setup.php https://getcomposer.org/installer -ACTUAL_SIGNATURE=$(openssl sha384 composer-setup.php | cut -d' ' -f2) - -if [ "$EXPECTED_SIGNATURE" != "$ACTUAL_SIGNATURE" ] -then - >&2 echo 'ERROR: Invalid installer signature' - rm composer-setup.php - exit 1 -fi - -php composer-setup.php --quiet -RESULT=$? -rm composer-setup.php -exit $RESULT diff --git a/docker/test-server.sh b/docker/test-server.sh deleted file mode 100755 index bbf6d2bb2a5..00000000000 --- a/docker/test-server.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/sh - -ARTISAN="php /var/www/monica/artisan" - -${ARTISAN} key:generate --no-interaction -${ARTISAN} migrate --force -${ARTISAN} storage:link -${ARTISAN} db:seed --class ActivityTypesTableSeeder --force -${ARTISAN} db:seed --class CountriesSeederTable --force -chown -R monica:apache /var/www/monica/storage/app/public/ -chmod -R g+rw /var/www/monica/storage/app/public/ -httpd -while true; do - sleep 60 - ${ARTISAN} schedule:run -done diff --git a/docs/contribute/contribute.md b/docs/contribute/contribute.md deleted file mode 100644 index eef9b9d275e..00000000000 --- a/docs/contribute/contribute.md +++ /dev/null @@ -1,238 +0,0 @@ - - - -* [Contribute as a developer](#contribute-as-a-developer) - * [Considerations](#considerations) - * [Design rules](#design-rules) - * [Install Monica locally](#install-monica-locally) - * [Homestead \(macOS, Linux, Windows\)](#homestead-macos-linux-windows) - * [Valet \(macOS\)](#valet-macos) - * [Instructions](#instructions) - * [Testing environment](#testing-environment) - * [Setup](#setup) - * [Run the test suite](#run-the-test-suite) - * [Run browser tests](#run-browser-tests) - * [Backend](#backend) - * [Things to consider when adding new code](#things-to-consider-when-adding-new-code) - * [Add a new table to the database schema](#add-a-new-table-to-the-database-schema) - * [Manipulating data during a migration](#manipulating-data-during-a-migration) - * [Email testing](#email-testing) - * [Email reminders](#email-reminders) - * [Statistics](#statistics) - * [Database](#database) - * [Connecting to mySQL](#connecting-to-mysql) - * [Front-end](#front-end) - * [Considerations](#considerations-1) - * [Mix](#mix) - * [Watching and compiling assets](#watching-and-compiling-assets) - * [CSS](#css) - * [JS and Vue](#js-and-vue) - - - -# Contribute as a developer - -Are you interested in giving a hand? We can't be more excited about it. Thanks in advance! Here are some guidelines that could help you to get started quickly. - -## Considerations - -* Monica is written with a great framework, [Laravel](https://github.com/laravel/laravel). We care deeply about keeping Monica very simple on purpose. The simpler the code is, the simpler it will be to maintain it and debug it when needed. That means we don't want to make it a one page application, or add any kind of complexities whatsoever. -* That means we won't accept pull requests that add too much complexity, or written in a way we don't understand. Again, the number 1 priority should be to simplify the maintenance on the long run. -* It's better to move forward fast by shipping good features, than waiting for months and ship a perfect feature. -* Our product philosophy is simple. Things do not have to be perfect. They just need to be shipped. As long as it works and aligns with the vision, you should ship as soon as possible. Even if it's ugly, or very small, that does not matter. - -## Design rules - -* **Keep it simple**. No new options, please. Options are evil. It creates a bloated software. Not everything should be configurable. -* **Use what already exists in the current stack**. When adding a feature, do not introduce a new software in the existing stack. For instance, at the moment, the current version does not require Redis to be used. If we do create a feature that (for some reasons) depends on Redis, we will need all existing instances to install Redis on top of all the other things people have to setup to install Monica (there are thousands of them). We can't afford to do that. -* **Always think about the API**. When introducing new classes and concepts in the app, your changes should always be implemented as well. Everything that we do should be accessible through the API. - -## Install Monica locally - -### Homestead (macOS, Linux, Windows) - -The best way to contribute to Monica is to use [Homestead](https://laravel.com/docs/homestead) as a development environment, which is an official, pre-packaged Vagrant box that provides you a wonderful development environment without requiring you to install PHP, a web server, and any other server software on your local machine. The big advantage is that it runs on any Windows, Mac, or Linux system. - -This is what is used to develop Monica and what will provide a common base for everyone who wants to contribute to the project. Once Homestead is installed, you can pull the repository and start setting up Monica. - -Note: the official Monica installation uses mySQL as the database system. While Laravel technically supports PostgreSQL and SQLite, we can't guarantee that it will work fine with Monica as we've never tested it. Feel free to read [Laravel's documentation](https://laravel.com/docs/5.5/database#configuration) on that topic if you feel adventurous. - -### Valet (macOS) - -We've installed the development version with [Valet](https://laravel.com/docs/valet), which is a Laravel development environment for Mac minimalists. It works really well and is extremely fast, much faster than Homestead. - -### Instructions - -**Prerequisites**: -* Git -* [Node](https://nodejs.org/en/) -* PHP 7.0+ -* [Composer](https://getcomposer.org/) - -**Steps to install Monica** - -Once the above softwares are installed (or if you've finished the installation of Homestead/Valet): - -1. `composer install` in the folder the repository has been cloned. -1. `cp .env.example .env` to create your own version of all the environment variables needed for the project to work. -1. Update `.env` to your specific needs. -1. Run `php artisan key:generate` to generate an application key. This will set `APP_KEY` with the right value automatically. -1. `npm install` to install all the front-end dependencies and tools needed to compile assets. -1. Create a database called `monica` in your mySQL instance. - 1. From Homestead directory: `sudo scripts/create-mysql.sh monica` or `mysql -e "CREATE DATABASE 'monica'";` inside mySQL. - 1. If you use Homestead (which uses Vagrant under the hood), `vagrant ssh` will let you login as root inside your VM. -1. `php artisan setup:test` to setup the database. - 1. By default this command will also populate the database with fake data. - 1. Use the `-- skipSeed` option to skip the process of adding fake data in your dev environment. -1. Optional: `php artisan passport:install` to create the access tokens required for the API. - -If you haven't skipped the seeding of fake data, two accounts are created by default: - -* First account is `admin@admin.com` with the password `admin`. This account contains a lot of fake data that will let you play with the product. -* Second account is `blank@blank.com` with the password `blank`. This account does not contain any data and shall be used to check all the blank states. - -## Testing environment - -We try to cover most features and new methods with unit and functional tests. Any pull request submitted on GitHub will have to go through Travis and pass before being merged. Moreover, we **strongly** encourage adding unit tests for every new method added to the codebase to ensure code stability, and we will probably refuse a pull request if there is no tests for it. - -### Setup - -To setup the test environment: - -* Create a database called `monica_test` -* `php artisan migrate --database testing` -* `php artisan db:seed --database testing` - -### Run the test suite - -To run the test suite: - -* `phpunit` or `./vendor/bin/phpunit` in the root of the folder containing Monica's code from GitHub. - -### Run browser tests - -To run browser tests, first you need to install some requirements - -* Install java: -``` -sudo add-apt-repository -y ppa:webupd8team/java -sudo apt -y update -sudo apt -y install oracle-java9-installer -``` -* Install Google chrome: -``` -curl -sS -o - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" | sudo tee /etc/apt/sources.list.d/google-chrome.list -sudo apt -y update -sudo apt -y -f install google-chrome-stable fonts-liberation libappindicator1 -``` - -To run the test suite, you need to launch selenium first, then steward : -* Run selenium: -``` -vendor/bin/selenium-server-standalone -role hub -log selenium-server.log -enablePassThrough false & -export PATH="$(pwd)/vendor/bin:$PATH" -xvfb-run -s "-ac -screen 0 1280x1024x24" vendor/bin/selenium-server-standalone -role node -port 8910 -log selenium-node.log -enablePassThrough false & -``` -* Run the test suite: -``` -./vendor/bin/steward -vvv run local chrome -``` - -## Backend - -The project follows strict [object calisthenics](http://www.slideshare.net/guilhermeblanco/object-calisthenics-applied-to-php), as much as possible and more and more over time. We will soon implement those rules in the Linters and will block a pull request for the code that does not follow those guidelines. -Here are the rules (adapted for PHP): -* Only one indentation level per method, -* Do not use the "else" keyword, -* Do not chain different objects, unless if the execution includes getters and setters, -* Keep your entities small: 100 lines per class and no more than 15 classes per package, -* Any class that contains a collection (or array) cannot use any other properties, -* Document your code. - -### Things to consider when adding new code - -#### Add a new table to the database schema - -If you add a new table, make sure there is a column called `account_id` in this new table. That way, we will make sure that the script responsible for resetting or deleting a user account will go take this new table into consideration while running. - -#### Manipulating data during a migration - -Sometimes you need to manipulate and move data around when you decide to change the database structure. In that case, as much as possible, do not use Eloquent to change the data. Use either [raw SQL queries](https://laravel.com/docs/5.5/database#running-queries) or the [Query builder](https://laravel.com/docs/5.5/queries) to do it. This is due to the fact that objects might change overtime or even be deleted, which would break the migrations entirely. - -### Email testing - -Emails are an important part of Monica. Emails are still the most significant mean of communication and people like receiving them when they are relevant. That being said, you will need to test emails to make sure they contain what they should contain. - -For development purposes, you have two choices to test emails: - -1. You can use [Mailtrap](https://mailtrap.io/). This is an amazing service that provides a free plan that is plenty enough to test all the emails that are sent. -1. You can use [mailhog](https://github.com/mailhog/MailHog) to test locally. On macOS, you can install via Homebrew (`brew install mailhog`). Then, run `mailhog` and point the browser to `http://127.0.0.1:8025` ([more complete instructions](https://github.com/maijs/homebrew-mailhog)). -1. If you use [Homestead](https://laravel.com/docs/homestead), [mailhog](https://github.com/mailhog/MailHog) is actually built-in. To use it, you first need to start mailhog (`sudo service mailhog restart`) inside your Vagrant. Then, head up to [http://localhost:8025](http://localhost:8025) in your local browser to load Mailhog's UI. - -Note: if you want to use mailhog, you need the following settings in your `.env` file: - -``` -MAIL_DRIVER=smtp -MAIL_HOST=0.0.0.0 -MAIL_PORT=1025 -MAIL_USERNAME= -MAIL_PASSWORD= -MAIL_ENCRYPTION= -``` - -### Email reminders - -Reminders are generated and sent using an Artisan command `monica:sendnotifications`. This command is scheduled to be triggered every hour in `app/console/Kernel.php`. - -### Statistics - -Monica calculates every night (ie once per day) a set of metrics to help you understand how the instance is being used by users. That will also allow to measure growth over time. - -Statistics are generated by the Artisan command `monica:calculatestatistics` every night at midnight and this cron is defined in `app/console/Kernel.php`. - -## Database - -As said above, Monica uses mySQL by default. While Laravel supports multiple DBMS, we can't assure you it will work with any other DBMS than mySQL. - -### Connecting to mySQL - -If you want to connect directly to Monica's MySQL instance read [_Connecting to MySQL inside of a Docker container_](./docs/database/connecting.md). - -## Front-end - -### Considerations - -* If your contribution involves a change in the UI (even if it's very small), please ping @djaiss in an issue *before* you start working on it, explaining what you want to achieve, why and how. We want to maintain a high level of visual quality in the software and we will dismiss all pull requests that change the front end that have not been discussed before-hand. -* That being said, we'll probably receive pull requests that change the front end before any previous discussion on the topic. In this case, we do not guarantee that we'll accept the pull request, but in order to increase the chances that it will: - * Make sure to follow the current visual style and layout. - * Make sure you do not introduce new colors in the UI. - * Make sure the user experience is consistent with the rest of the application (ie buttons behave the same, modals are like other modals,...). - * Make sure you don't introduce new CSS classes, unless they are absolutely necessary. Use the classes provided by [Tachyons](tachyons.io) which is the functional CSS framework we currently use. - * Do not use Jquery. When needed, use VueJS. - -The above comments can seem harsh and we apologize in advance. However you have to understand that we deeply care about providing the best user experience to our users. Features that are purely backend do not have the same impact as the ones that the user interacts with. Features that modify the front end will have a tremendous impact on how users perceive the software. Therefore we want to make sure that anything that touches the frontend is perfect and aligned with our vision. - -### Mix - -We use [mix](https://laravel.com/docs/5.5/mix) to manage the front-end and its dependencies, and also to compile and/watch the assets. **Please note that we should do our best to prevent introducing new dependencies if we can prevent it**. - -Mix should be available in your development environment if you have installed Monica locally and ran `npm install` in the first place. - -If you need to add a new dependency, update `package.json` to add it and make sure you commit `package-lock.json` once `package.json` is updated. - -### Watching and compiling assets - -CSS is written in SASS and therefore needs to be compiled before being used by the application. To compile those front-end assets, use `npm run dev`. - -To monitor changes and compile assets on the fly, use `npm run watch`. - -### CSS - -At the current time, we are using a mix of Bootstrap 4 and [Tachyons](https://tachyons.io). We aim to use [Atomic CSS](https://adamwathan.me/css-utility-classes-and-separation-of-concerns/) instead of having bloated, super hard to maintain CSS files. We'll get rid of Bootstrap entirely over time. - -This means that we should add new CSS classes only if it's absolutely necessary. - -### JS and Vue - -We are using [Vue.js](https://vuejs.org/) in some parts of the application, and we'll use it more and more over time. Vue is very simple to learn and use, and with [Vue Components](https://vuejs.org/v2/guide/components.html), we can easily create isolated, reusable components in the app. If you want to add a new feature, you don't need to use Vue.js - you can use plain HTML views served by the backend. But with Vue.js, it'll be a nicer experience. diff --git a/docs/contribute/deployment.md b/docs/contribute/deployment.md deleted file mode 100644 index 986d7bd5d4c..00000000000 --- a/docs/contribute/deployment.md +++ /dev/null @@ -1,31 +0,0 @@ - - - - - -# Deployement of the application - -This document is aimed to the people deploying Monica on https://monichaq.com, and does not apply to the people installing Monica for their own use. - -## Before deploying a new version - -* Make sure `config/monica.php` contains the number of the new release you are about to create. -* Update `CHANGELOG` accordingly. -* Create a new release on https://version.monicahq.com with the release notes. -* Create a new release on https://github.com/monicahq/monica/releases, which will also automatically create a new tag. -* Write the release note with the tool hosted on https://monicahq.com/login -* Push the code to production. - -## Deployment of the Docker images - -This guide has been posted by [kstrauser](https://github.com/monicahq/monica/issues/676#issuecomment-352047750) - thanks for his help. Here are the steps necessary to deploy Monica on Docker hub: -* You need an account on [Docker hub](https://hub.docker.com). -* You need to have Docker installed on your machine. -* Run the following commands (example for the version 3.4.5): - -``` -git reset --hard v3.4.5 -make docker_build docker_tag docker_push -``` - -The image should be up on the Docker Hub. \ No newline at end of file diff --git a/docs/images/logo.png b/docs/images/logo.png new file mode 100644 index 00000000000..47f8773bcd5 Binary files /dev/null and b/docs/images/logo.png differ diff --git a/docs/installation/debian.md b/docs/installation/debian.md deleted file mode 100644 index 5ad017abc17..00000000000 --- a/docs/installation/debian.md +++ /dev/null @@ -1,249 +0,0 @@ -# Running it on Debian Stretch - -#### 1. Install the required packages: - -``` -sudo apt install apache2 mariadb-server php7.0 php7.0-mysql php7.0-xml \ - php7.0-intl php7.0-mbstring git curl -``` - -#### 2. Clone the repository - -``` -sudo git clone https://github.com/monicahq/monica.git /var/www/monica -``` - -#### 3. Change permissions on the new folder - -``` -sudo chown -R www-data:www-data /var/www/monica -``` - -#### 4. Install nodejs (this is needed for npm) - -``` -curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash - -``` -``` -sudo apt-get install -y nodejs -``` - -#### 5. Install composer - -Download and install the binary by following the [Command-line installation of composer](https://getcomposer.org/download/). - -Move it to the bin directory. -``` -sudo mv composer.phar /usr/local/bin/composer -``` - -#### 6. Setup the database - -First we're making the database a bit more secure. -``` -sudo mysql_secure_installation -``` - -Next log in with the root account to configure the database. -``` -sudo mysql -uroot -p -``` - -This command creates a database called monicadb -``` -create database monicadb; -``` - -while this commands creates a database user called monica and its -password 'strongpassword'. - -``` -CREATE USER 'monica'@'localhost' IDENTIFIED BY 'strongpassword'; -``` - -We have to authorize the new user on the monicadb so that he is allowed to -change the database. - -``` -GRANT ALL ON monicadb.* TO 'monica'@'localhost'; -``` - -And finally we apply the changes and exit the database. -``` -FLUSH PRIVILEGES; -exit -``` - -#### 7. Configure Monica - -Run `composer install` in the folder the repository has been cloned to. Which in our case would be /var/www/monica. - -Create a copy of the example configuration file `cp .env.example .env`. - -Now update `.env` with your specific needs. If you would run the setup with the exact commands used above your file should look like this: - -``` -# Two choices: local|production. Use local if you want to install Monica as a -# development version. Use production otherwise. -APP_ENV=local - -# true if you want to show debug information on errors. For production, put this -# to false. -APP_DEBUG=false - -# The encryption key. This is the most important part of the application. Keep -# this secure otherwise, everyone will be able to access your application. -# Must be 32 characters long exactly. -# Use `php artisan key:generate` to generate a random key. -APP_KEY=ChangeMeBy32KeyLengthOrGenerated - -# The URL of your application. -APP_URL=http://localhost - -# Database information -# To keep this information secure, we urge you to change the default password -DB_CONNECTION=mysql -DB_HOST=127.0.0.1 -DB_PORT=3306 -DB_DATABASE=monica -DB_USERNAME=homestead -DB_PASSWORD=secret -DB_TEST_DATABASE=monica_test -DB_TEST_USERNAME=homestead -DB_TEST_PASSWORD=secret - -# Mail credentials used to send emails from the application. -MAIL_DRIVER=smtp -MAIL_HOST=mailtrap.io -MAIL_PORT=2525 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS=ValidEmailAddress -MAIL_FROM_NAME="Some Name" -APP_EMAIL_NEW_USERS_NOTIFICATION=EmailThatWillSendNotificationsForNewUser - -# Default timezone for new users. Users can change this setting inside the -# application at their leisure. -# Must be exactly one of the timezones used in this list: -# https://github.com/monicahq/monica/blob/master/resources/views/settings/index.blade.php#L70 -APP_DEFAULT_TIMEZONE=US/Eastern - -# Ability to disable signups on your instance. -# Can be true or false. Default to false. -APP_DISABLE_SIGNUP=true - -# Frequency of creation of new log files. Logs are written when an error occurs. -# Possible values: single|daily|syslog|errorlog -APP_LOG=daily - -# Specific to the hosted version on .com. You probably don't need those. -# Let them empty if you don't need them. -GOOGLE_ANALYTICS_APP_ID= -INTERCOM_APP_ID= - -# Error tracking. Specific to hosted version on .com. You probably don't need -# those. -SENTRY_SUPPORT=false -SENTRY_DSN= - -# Send a daily ping to https://version.monicahq.com to check if a new version -# is available. When a new version is detected, you will have a message in the -# UI, as well as the release notes for the new changes. Can be true or false. -# Default to true. -CHECK_VERSION=true - -# Have access to paid features available on https://monicahq.com, for free. -# Can be true or false. Default to false. -# If set to true, that means your users will have to pay to access the paid -# features. We use Stripe to do this. -REQUIRES_SUBSCRIPTION=false - -# ONLY NECESSARY IF MONICA REQUIRES A SUBSCRIPTION TO WORK -# Leave blank unless you know what you are doing. -STRIPE_KEY= -STRIPE_SECRET= -PAID_PLAN_FRIENDLY_NAME= -PAID_PLAN_ID= -PAID_PLAN_PRICE= - -# Change this only if you know what you are doing -CACHE_DRIVER=database -SESSION_DRIVER=file -QUEUE_DRIVER=sync - -# Default filesystem to store uploaded files. -# Possible values: public|s3 -DEFAULT_FILESYSTEM=public - -# AWS keys for S3 when using this storage method -AWS_KEY= -AWS_SECRET= -AWS_REGION=us-east-1 -AWS_BUCKET= -AWS_SERVER= -``` - -Then run the following instructions: -* Run `php artisan key:generate` to generate an application key. This will set `APP_KEY` with the right value automatically. -* Open the file `.env` to set the different variables needed by the project. The file comes with predefined values - you won't have to change most of them. -* Run `php artisan setup:production` to run the migrations, seed the database and symlink folders. -* Optional: run `php artisan passport:install` to generate the secure asset tokens required for the API. If you don't plan to use the API, don't do this step. - -#### 8. Configure cron job - -As recommended by the generic installation instructions we create a cronjob which runs `artisan schedule:run` every minute. - -For this execute this command: -``` -sudo crontab -e -``` - -And then add this line to the bottom of the window that opens. - -``` -* * * * * sudo -u www-data php /var/www/html/artisan schedule:run -``` - -#### 9. Configure Apache webserver - -We need to enable the rewrite module of the Apache webserver: - -``` -sudo a2enmod rewrite -``` - -Now look for this section in the `/etc/apache2/apache2.conf` file. - -``` - - Options Indexes FollowSymLinks - AllowOverride None - Require all granted - -``` - -and change it to: - -``` - - Options Indexes FollowSymLinks - AllowOverride All - Require all granted - -``` - -Save the apache2.conf file and open `/etc/apache2/sites-enabled/000-default.conf` and look for this line: - -``` -DocumentRoot /var/www/html -``` -and change it to: -``` -DocumentRoot /var/www/monica/public -``` - -After you save the 000-default.conf file you can finally restart Apache and are up and running. -``` -sudo service apache2 restart -``` diff --git a/docs/installation/docker.md b/docs/installation/docker.md deleted file mode 100644 index f35c2bbb639..00000000000 --- a/docs/installation/docker.md +++ /dev/null @@ -1,114 +0,0 @@ -# Running with Docker - -You can use [Docker](https://www.docker.com) and -[docker-compose](https://docs.docker.com/compose/) to pull or build -and run a Monica image, complete with a self-contained MySQL database. -This has the nice properties that you don't have to install lots of -software directly onto your system, and you can be up and running -quickly with a known working environment. - -Before you start, you need to get and edit a `.env` file. If you've already -cloned the [Monica Git repo](https://github.com/monicahq/monica), run: - -`$ cp .env.example .env` - -to create it. If not, you can fetch it from GitHub like: - -`$ curl https://raw.githubusercontent.com/monicahq/monica/master/.env.example > .env` - -Then open `.env` in an editor and update it for your own needs: - -- Set `APP_KEY` to a random 32-character string. For example, if you - have the `pwgen` utility installed, you could copy and paste the - output of `pwgen -s 32 1`. -- Edit the `MAIL_*` settings to point to your own mailserver. - -Note for macOS: you will need to stop Apache if you wish to have Monica available on port 80. - -You can do this like so: - -```sh -$ sudo /usr/sbin/apachectl stop -``` - -To start Apache up again use this command: - -```sh -$ sudo /usr/sbin/apachectl start -``` - -Now select one of these methods to be up and running quickly: - -#### Use docker-compose to run a pre-built image - -This is the easiest and fastest way to try Monica! Use this process -if you want to download the newest image from Docker Hub and run it -with a pre-packaged MySQL database. - -Start by fetching the latest `docker-compose.yml` and `.env` if you haven't done that allready. - -```sh -$ curl https://raw.githubusercontent.com/monicahq/monica/master/docker-compose.yml > docker-compose.yml -$ curl https://raw.githubusercontent.com/monicahq/monica/master/.env.example > .env -``` - -Edit the `docker-compose.yml` and change both the volumes on the monicahq service and the mysql service. Change the part before the `:` and point it to an existing, empty directory on your system. It is also be a good idea to change the webserver port from `80:80` to `3000:80`. - -Edit `.env` again to set `DB_HOST=mysql` (as `mysql` is the creative name of -the MySQL container). - -Start by downloading all the images and setup your new instance. - -```shell -$ docker-compose pull -$ docker-compose up -``` - -Wait until all migrations are done and check if you can open up the login page by going to http://localhost:3000. If this looks ok, shut down the instance and add your first user account. - -```shell -$ docker-compose run monicahq shell -$ php artisan setup:production -$ exit -``` - -Start your instance again with `docker-compose up` and login. - -#### Use docker-compose to build and run your own image - -Use this process if you want to modify Monica source code and build -your image to run. - -Edit `.env` again to set `DB_HOST=mysql` (as `mysql` is the creative name of -the MySQL container). - -Then run: - -```shell -$ docker-compose build -$ docker-compose up -``` - -#### Use Docker directly to run with your own database - -Use this process if you're a developer and want complete control over -your Monica container. - -Edit `.env` again to set the `DB_*` variables to match your -database. Then run: - -```shell -$ docker build -t monicahq/monicahq . -$ docker run --env-file .env -p 80:80 monicahq/monicahq # to run MonicaHQ -# ...or... -$ docker run --env-file .env -it monicahq/monicahq shell # to get a prompt -``` - -Note that uploaded files, like avatars, will disappear when you -restart the container. Map a volume to -`/var/www/monica/storage/app/public` if you want that data to persist -between runs. See `docker-compose.yml` for examples. - -#### Other documents to read - -[Connecting to MySQL inside of a Docker container](../database/connecting.md) diff --git a/docs/installation/generic.md b/docs/installation/generic.md deleted file mode 100644 index f2a83a8814f..00000000000 --- a/docs/installation/generic.md +++ /dev/null @@ -1,52 +0,0 @@ -# Setup the project on your server - -## Prerequisites - -If you don't want to use Docker, the best way to setup the project is to use the same configuration that [Homestead](https://laravel.com/docs/5.3/homestead) uses. Basically, Monica depends on the following: - -* Git -* PHP 7.0+ -* [Composer](https://getcomposer.org/) -* MySQL -* Optional: Redis or Beanstalk - -The preferred OS distribution is Ubuntu 16.04, simply because all the development is made on it and we know it works. However, any OS that lets you install the above packages should work. - -### Types of databases - -The official Monica installation uses mySQL as the database system and **this is the only official system we support**. While Laravel technically supports PostgreSQL and SQLite, we can't guarantee that it will work fine with Monica as we've never tested it. Feel free to read [Laravel's documentation](https://laravel.com/docs/5.5/database#configuration) on that topic if you feel adventurous. - -## Installation steps - -Once the softwares above are installed: - -1. Create a database called `monica` in your mySQL instance. This will let you store your data. -1. Clone the repository: `git clone https://github.com/monicahq/monica` in the folder you want to install the software to. -1. Run `cd monica` to go to the root of the newly created folder containing Monica's code. -1. Run `composer install` at the root of the folder Monica has been cloned. -1. Run `cp .env.example .env`. This will create the `.env` file that contains all the settings about Monica. -1. Run `php artisan key:generate` to generate an application key. This will set `APP_KEY` with the right value automatically. -1. Open the file `.env` to set the different variables needed by the project. The file comes with predefined values - you won't have to change most of them. -1. Run `php artisan setup:production` to run the migrations, seed the database and symlink folders. -1. Finally, Monica requires some background processes to continuously run. The list of things Monica does in the background is described [here](https://github.com/monicahq/monica/blob/master/app/Console/Kernel.php#L33). To do this, setup a cron that runs every minute and triggers the following command `php artisan schedule:run`. -1. (optional) If you want to use the API, you need to run `php artisan passport:install`. This command will create the encryption keys needed to generate secure access tokens. - -**Optional**: Setup the queues with Redis, Beanstalk or Amazon SQS - -Monica can work with a queue mechanism to handle different events, so we don't block the main thread while processing stuff that can be run asynchronously, like sending emails. By default, Monica does not use a queue mechanism but can be setup to do so. - -We recommend that you do not use a queue mechanism as it complexifies the overall system and can make debugging harder when things go wrong. - -This is why we suggest to use `QUEUE_DRIVER=sync` in your .env file. This will bypass the queues entirely and will process requests as they come. In practice, unless you have thousands of users, you don't need to use an asynchronous queue. - -That being said, if you still want to make your life more complicated, here is what you can do. - -There are several choices for the queue mechanism: -* Database (this will use the database used by the application to act as a queue) -* Redis -* Beanstalk -* Amazon SQS - -The simplest queue is the database driver. To set it up, simply change in your `.env` file the following `QUEUE_DRIVER=sync` by `QUEUE_DRIVER=database`. - -To configure the other queues, refer to the [official Laravel documentation](https://laravel.com/docs/5.4/queues#driver-prerequisites) on the topic. diff --git a/docs/installation/heroku.md b/docs/installation/heroku.md deleted file mode 100644 index 61fc9cd5231..00000000000 --- a/docs/installation/heroku.md +++ /dev/null @@ -1,21 +0,0 @@ -# Deploy on Heroku - -Monica can be deployed on Heroku using the button below: - -[![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy?template=https://github.com/monicahq/monica/tree/master) - -Please ensure to enter a custom `APP_KEY` when asked. Your Monica instance will utilise a [ClearDB Ignite plan](https://elements.heroku.com/addons/cleardb) (free) by default. Additional environment variables, such as details of the mail server, can be added after setup through the Heroku interface. - -Monica doesn't require a lot of power - it means it will run on the free plan provided by Heroku. - -## Limitations - -* No email by default. Email configuration isn't required to use Monica on Heroku, but it's recommended. Mailgun has a [free email add-on on Heroku](https://elements.heroku.com/addons/mailgun) that is easy to set up. -* No upload of photos for your contacts. Heroku doesn't support storage. -* No crons on the free version. That means no reminders by email, nor automatic checking of new versions of Monica. - -## Updating Heroku instance - -You can update your Monica instance to the latest version by cloning the repository and pushing it to Heroku git. - -Clone the Monica repository to your local environment by `git clone https://github.com/monicahq/monica`, and add heroku git repository by `heroku git:remote -a (heroku app name)`. Then, push to heroku by `git push heroku master`. Heroku will build and update the repository, automatically. diff --git a/docs/installation/update.md b/docs/installation/update.md deleted file mode 100644 index c54dcd3e16b..00000000000 --- a/docs/installation/update.md +++ /dev/null @@ -1,58 +0,0 @@ -# Update your Monica instance - -Monica uses the concept of releases and tries to follow -[Semantic Versioning](http://semver.org/) as much as possible. If you run the project locally, -or if you have installed Monica on your own server, you need to follow these -steps below to update it, **every single time**, or you will run into problems. - -1. Always make a backup of your data before upgrading. -1. Check that your backup is valid. -1. Read the [release notes](https://github.com/monicahq/monica/blob/master/CHANGELOG) -to check for breaking changes. -1. Then, run the following command at the root of the project: - -``` -git pull origin master -composer install --no-interaction --prefer-dist --optimize-autoloader -php artisan migrate --force -``` - -Your instance should be updated. - -## Importing vCards (CLI only) - -**Note**: this is only possible if you install Monica on your server or locally. - -You can import your contacts in vCard format in your account with one simple -CLI command: -`php artisan import:vcard {email user} {filename}.vcf` - -where `{email user}` is the email of the user in your Monica instance who will -be associated the new contacts to, and `{filename}` being the name of your .vcf file. -The .vcf file has to be in the root of your Monica installation (in the same directory -where the artisan file is). - -Example: `php artisan import:vcard john@doe.com contacts.vcf` - -The `.vcf` can contain as many contacts as you want. - -## Importing SQL from the exporter feature - -Monica allows you to export your data in SQL, under the Settings panel. When you -export your data in SQL, you'll get a file called `monica.sql`. - -To import it into your own instance, you need to make sure that the database of -your instance is completely empty (no tables, no data). - -Then, follow the steps: - -* `php artisan migrate` -* `php artisan db:seed --class ActivityTypesTableSeeder` -* `php artisan db:seed --class CountriesSeederTable` -* Then import `monica.sql` into your database. Tools like phpmyadmin or Sequel -Pro might help you with that. -* Finally, sign in with the same credentials as the ones used on -https://monicahq.com and you are good to go. - -There is one caveat with the SQL exporter: you can't get the photos you've -uploaded for now. diff --git a/docs/installation/vagrant.md b/docs/installation/vagrant.md deleted file mode 100644 index ffc331ff542..00000000000 --- a/docs/installation/vagrant.md +++ /dev/null @@ -1,31 +0,0 @@ -# Installing Monica using Vagrant - -If you want a quick and easy way to get a Monica development/test environment up and running without having to take care of the installation process yourself, you can create a pre-configured virtual machine using Vagrant. - -1. Download and install [Vagrant](https://www.vagrantup.com/) for your operating system -2. Create a folder to put the vagrant configuration files -3. Download the `Vagrantfile` and the `provision.sh` script from [this repository](https://github.com/dp87/vagrantfiles/tree/master/Monica) -4. Put both of these files inside the Vagrant folder you have created in step 2 -5. Open a terminal and `cd` to this folder -6. Initialize a virtual machine based on Ubuntu 16.04: `vagrant init ubuntu/xenial64` -7. Launch the virtual machine with `vagrant up` - -The virtual machine will be first created and then provisioned using the `provision.sh` script, which will take care of installing Monica for you. - -Once the installation process is complete (you will see all of the output in your terminal window), you can either access the virtual machine by typing `vagrant ssh` in your terminal, or access the Monica web interface by opening `http://localhost:8080` in your browser on your host machine. - -## Default Monica configuration in the VM - -### Database users - -* Root database user -* * Username: `root` -* * Password: `changeme` -* Monica database user -* * Username: `monica` -* * Password: `changeme` - -### Apache configuration - -* The project is installed in `/var/www/html/monica` -* The root folder for the web server is `/var/www/html/monica/public` diff --git a/docs/readme.md b/docs/readme.md new file mode 100644 index 00000000000..3b75fea30f6 --- /dev/null +++ b/docs/readme.md @@ -0,0 +1,3 @@ +## Documentation + +All documentation has moved to the [wiki](https://github.com/monicahq/monica/wiki) diff --git a/fortrabbit.yml b/fortrabbit.yml new file mode 100644 index 00000000000..db0c25000ec --- /dev/null +++ b/fortrabbit.yml @@ -0,0 +1,4 @@ +# optional Composer settings +composer: + # Resolves to the --no-dev parameter + no-dev: true diff --git a/package-lock.json b/package-lock.json index b7545cf92a3..40b8133a271 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2,6 +2,12 @@ "requires": true, "lockfileVersion": 1, "dependencies": { + "@sindresorhus/is": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", + "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==", + "dev": true + }, "abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", @@ -9,19 +15,19 @@ "dev": true }, "accepts": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz", - "integrity": "sha1-hiRnWMfdbSGmR0/whKR0DsBesh8=", + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", + "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", "dev": true, "requires": { - "mime-types": "2.1.17", + "mime-types": "2.1.18", "negotiator": "0.6.1" } }, "acorn": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.3.0.tgz", - "integrity": "sha512-Yej+zOJ1Dm/IMZzzj78OntP/r3zHEaKcyNoU2lAaxPtrseM6rF0xwqoz5Q5ysAiED9hTjI2hgtvLXitlCN1/Ug==", + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz", + "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==", "dev": true }, "acorn-dynamic-import": { @@ -42,9 +48,9 @@ } }, "adjust-sourcemap-loader": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-1.1.0.tgz", - "integrity": "sha1-QS2SQE62HkETY1ASy6U6M9AI4OI=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-1.2.0.tgz", + "integrity": "sha512-958oaHHVEXMvsY7v7cC5gEkNIcoaAVIhZ4mBReYVZJOTP9IgKmzLjIOhTtzpLMu+qriXvLsVjJ155EeInp45IQ==", "dev": true, "requires": { "assert": "1.4.1", @@ -53,7 +59,7 @@ "lodash.assign": "4.2.0", "lodash.defaults": "3.1.2", "object-path": "0.9.2", - "regex-parser": "2.2.8" + "regex-parser": "2.2.9" }, "dependencies": { "camelcase": { @@ -94,15 +100,15 @@ "dev": true, "requires": { "co": "4.6.0", - "fast-deep-equal": "1.0.0", + "fast-deep-equal": "1.1.0", "fast-json-stable-stringify": "2.0.0", "json-schema-traverse": "0.3.1" } }, "ajv-keywords": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", - "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.1.0.tgz", + "integrity": "sha1-rCsnk5xUPpXSwG5/f1wnvkqlQ74=", "dev": true }, "align-text": { @@ -129,9 +135,9 @@ "dev": true }, "animate.css": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/animate.css/-/animate.css-3.5.2.tgz", - "integrity": "sha1-keZo3AaagI5eSZUUhnuXquAWbDY=", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/animate.css/-/animate.css-3.6.1.tgz", + "integrity": "sha512-xEIzzKyQvQSIldgrtC2d/qptAEQLVlMb6xQrjQ6HU6NyGhF7LAIivRZVmhSAg4EICRASNiS+A1G+wvAKTCoC7A==", "dev": true }, "ansi-html": { @@ -152,20 +158,272 @@ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", "dev": true }, - "ansicolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.2.1.tgz", - "integrity": "sha1-vgiVmQl7dKXJxKhKDNvNtivYeu8=", - "dev": true - }, "anymatch": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", - "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", "dev": true, "requires": { - "micromatch": "2.3.11", + "micromatch": "3.1.9", "normalize-path": "2.1.1" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.1.tgz", + "integrity": "sha512-SO5lYHA3vO6gz66erVvedSCkp7AKWdv6VcQ2N4ysXfPxdAlxAMMAdwegGGcv1Bqwm7naF1hNdk5d6AAIEHV2nQ==", + "dev": true, + "requires": { + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "define-property": "1.0.0", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "kind-of": "6.0.2", + "repeat-element": "1.1.2", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "micromatch": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.9.tgz", + "integrity": "sha512-SlIz6sv5UPaAVVFRKodKjCg48EbNoIhgetzfK/Cy0v5U52Z6zB136M8tp0UC9jM53LYbmIRihJszvvqpKkfm9g==", + "dev": true, + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.1", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.9", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + } + } } }, "aproba": { @@ -204,7 +462,7 @@ "dev": true, "requires": { "delegates": "1.0.0", - "readable-stream": "2.3.3" + "readable-stream": "2.3.5" }, "dependencies": { "isarray": { @@ -213,16 +471,22 @@ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", "dev": true, "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", "isarray": "1.0.0", - "process-nextick-args": "1.0.7", + "process-nextick-args": "2.0.0", "safe-buffer": "5.1.1", "string_decoder": "1.0.3", "util-deprecate": "1.0.2" @@ -240,9 +504,9 @@ } }, "argparse": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", - "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "requires": { "sprintf-js": "1.0.3" @@ -337,9 +601,9 @@ "dev": true }, "asn1.js": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.2.tgz", - "integrity": "sha512-b/OsSjvWEo8Pi8H0zsDd2P6Uqo2TK2pH8gNLSJtNLM2Db0v2QaAZ0pBQJXVjAn4gBuugeVDr7s63ZogpUIwWDg==", + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", "dev": true, "requires": { "bn.js": "4.11.8", @@ -380,7 +644,7 @@ "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", "dev": true, "requires": { - "lodash": "4.17.4" + "lodash": "4.17.5" } }, "async-each": { @@ -408,22 +672,22 @@ "dev": true }, "atob": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/atob/-/atob-1.1.3.tgz", - "integrity": "sha1-lfE2KbEsOlGl0hWr3OKqnzL4B3M=", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.0.3.tgz", + "integrity": "sha1-GcenYEc3dEaPILLS0DNyrX1Mv10=", "dev": true }, "autoprefixer": { - "version": "7.2.4", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-7.2.4.tgz", - "integrity": "sha512-am8jJ7Rbh1sy7FvLvNxxQScWvhv2FwLAS3bIhvrZpx9HbX5PEcc/7v6ecgpWuiu0Dwlj+p/z/1boHd8x60JFwA==", + "version": "7.2.6", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-7.2.6.tgz", + "integrity": "sha512-Iq8TRIB+/9eQ8rbGhcP7ct5cYb/3qjNYAR2SnzLCEcwF6rvVOax8+9+fccgXk4bEhQGjOZd5TLhsksmAdsbGqQ==", "dev": true, "requires": { - "browserslist": "2.11.0", - "caniuse-lite": "1.0.30000787", + "browserslist": "2.11.3", + "caniuse-lite": "1.0.30000815", "normalize-range": "0.1.2", "num2fraction": "1.2.2", - "postcss": "6.0.16", + "postcss": "6.0.19", "postcss-value-parser": "3.3.0" } }, @@ -440,12 +704,12 @@ "dev": true }, "axios": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.17.1.tgz", - "integrity": "sha1-LY4+XQvb1zJ/kbyBT1xXZg+Bgk0=", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz", + "integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=", "dev": true, "requires": { - "follow-redirects": "1.3.0", + "follow-redirects": "1.4.1", "is-buffer": "1.1.6" } }, @@ -467,7 +731,7 @@ "dev": true, "requires": { "babel-code-frame": "6.26.0", - "babel-generator": "6.26.0", + "babel-generator": "6.26.1", "babel-helpers": "6.24.1", "babel-messages": "6.23.0", "babel-register": "6.26.0", @@ -479,7 +743,7 @@ "convert-source-map": "1.5.1", "debug": "2.6.9", "json5": "0.5.1", - "lodash": "4.17.4", + "lodash": "4.17.5", "minimatch": "3.0.4", "path-is-absolute": "1.0.1", "private": "0.1.8", @@ -505,9 +769,9 @@ } }, "babel-generator": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", - "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", "dev": true, "requires": { "babel-messages": "6.23.0", @@ -515,7 +779,7 @@ "babel-types": "6.26.0", "detect-indent": "4.0.0", "jsesc": "1.3.0", - "lodash": "4.17.4", + "lodash": "4.17.5", "source-map": "0.5.7", "trim-right": "1.0.1" }, @@ -560,7 +824,7 @@ "babel-helper-function-name": "6.24.1", "babel-runtime": "6.26.0", "babel-types": "6.26.0", - "lodash": "4.17.4" + "lodash": "4.17.5" } }, "babel-helper-explode-assignable-expression": { @@ -625,7 +889,7 @@ "requires": { "babel-runtime": "6.26.0", "babel-types": "6.26.0", - "lodash": "4.17.4" + "lodash": "4.17.5" } }, "babel-helper-remap-async-to-generator": { @@ -666,9 +930,9 @@ } }, "babel-loader": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-7.1.2.tgz", - "integrity": "sha512-jRwlFbINAeyDStqK6Dd5YuY0k5YuzQUvlz2ZamuXrXmxav3pNqe9vfJ402+2G+OmlJSXxCOpB6Uz0INM7RQe2A==", + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-7.1.4.tgz", + "integrity": "sha512-/hbyEvPzBJuGpk9o80R0ZyTej6heEOr59GoEUtn8qFKbnx4cJm9FWES6J/iv644sYgrtVw9JJQkjaLW/bqb5gw==", "dev": true, "requires": { "find-cache-dir": "1.0.0", @@ -757,7 +1021,7 @@ "babel-template": "6.26.0", "babel-traverse": "6.26.0", "babel-types": "6.26.0", - "lodash": "4.17.4" + "lodash": "4.17.5" } }, "babel-plugin-transform-es2015-classes": { @@ -1045,15 +1309,15 @@ "babel-plugin-transform-es2015-unicode-regex": "6.24.1", "babel-plugin-transform-exponentiation-operator": "6.24.1", "babel-plugin-transform-regenerator": "6.26.0", - "browserslist": "2.11.0", - "invariant": "2.2.2", - "semver": "5.4.1" + "browserslist": "2.11.3", + "invariant": "2.2.4", + "semver": "5.5.0" }, "dependencies": { "semver": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", "dev": true } } @@ -1068,7 +1332,7 @@ "babel-runtime": "6.26.0", "core-js": "2.5.3", "home-or-tmp": "2.0.0", - "lodash": "4.17.4", + "lodash": "4.17.5", "mkdirp": "0.5.1", "source-map-support": "0.4.18" } @@ -1093,7 +1357,7 @@ "babel-traverse": "6.26.0", "babel-types": "6.26.0", "babylon": "6.18.0", - "lodash": "4.17.4" + "lodash": "4.17.5" } }, "babel-traverse": { @@ -1109,8 +1373,8 @@ "babylon": "6.18.0", "debug": "2.6.9", "globals": "9.18.0", - "invariant": "2.2.2", - "lodash": "4.17.4" + "invariant": "2.2.4", + "lodash": "4.17.5" } }, "babel-types": { @@ -1121,7 +1385,7 @@ "requires": { "babel-runtime": "6.26.0", "esutils": "2.0.2", - "lodash": "4.17.4", + "lodash": "4.17.5", "to-fast-properties": "1.0.3" } }, @@ -1144,14 +1408,23 @@ "dev": true, "requires": { "cache-base": "1.0.1", - "class-utils": "0.3.5", + "class-utils": "0.3.6", "component-emitter": "1.2.1", "define-property": "1.0.0", "isobject": "3.0.1", - "mixin-deep": "1.3.0", + "mixin-deep": "1.3.1", "pascalcase": "0.1.1" }, "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", @@ -1161,9 +1434,9 @@ } }, "base64-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz", - "integrity": "sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw==", + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz", + "integrity": "sha1-EQHpVE9KdrG8OybUUsqW16NeeXg=", "dev": true }, "batch": { @@ -1283,7 +1556,7 @@ "integrity": "sha1-ysMo977kVzDUBLaSID/LWQ4XLV4=", "dev": true, "requires": { - "readable-stream": "2.3.3" + "readable-stream": "2.3.5" }, "dependencies": { "isarray": { @@ -1292,16 +1565,22 @@ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", "dev": true, "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", "isarray": "1.0.0", - "process-nextick-args": "1.0.7", + "process-nextick-args": "2.0.0", "safe-buffer": "5.1.1", "string_decoder": "1.0.3", "util-deprecate": "1.0.2" @@ -1348,13 +1627,13 @@ "bytes": "3.0.0", "content-type": "1.0.4", "debug": "2.6.9", - "depd": "1.1.1", + "depd": "1.1.2", "http-errors": "1.6.2", "iconv-lite": "0.4.19", "on-finished": "2.3.0", "qs": "6.5.1", "raw-body": "2.3.2", - "type-is": "1.6.15" + "type-is": "1.6.16" }, "dependencies": { "qs": { @@ -1375,10 +1654,16 @@ "deep-equal": "1.0.1", "dns-equal": "1.0.0", "dns-txt": "2.0.2", - "multicast-dns": "6.2.1", + "multicast-dns": "6.2.3", "multicast-dns-service-types": "1.1.0" } }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, "boom": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", @@ -1464,7 +1749,7 @@ "dev": true, "requires": { "bn.js": "4.11.8", - "randombytes": "2.0.5" + "randombytes": "2.0.6" } }, "browserify-sign": { @@ -1492,22 +1777,22 @@ } }, "browserslist": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.11.0.tgz", - "integrity": "sha512-mNYp0RNeu1xueGuJFSXkU+K0nH+dBE/gcjtyhtNKfU8hwdrVIfoA7i5iFSjOmzkGdL2QaO7YX9ExiVPE7AY9JA==", + "version": "2.11.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.11.3.tgz", + "integrity": "sha512-yWu5cXT7Av6mVwzWc8lMsJMHWn4xyjSuGYi4IozbVTLUOEYPSagUB8kiMDUHA1fS3zjr8nkxkn9jdvug4BBRmA==", "dev": true, "requires": { - "caniuse-lite": "1.0.30000787", - "electron-to-chromium": "1.3.30" + "caniuse-lite": "1.0.30000815", + "electron-to-chromium": "1.3.39" } }, "buffer": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", - "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-3.6.0.tgz", + "integrity": "sha1-pyyTb3e5a/UvX357RnGAYoVR3vs=", "dev": true, "requires": { - "base64-js": "1.2.1", + "base64-js": "0.0.8", "ieee754": "1.1.8", "isarray": "1.0.0" }, @@ -1526,6 +1811,12 @@ "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", "dev": true }, + "buffer-from": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-0.1.2.tgz", + "integrity": "sha512-RiWIenusJsmI2KcvqQABB83tLxCByE3upSP8QU3rJDMVFGPWLvPQJt/O1Su9moRWeH7d+Q2HYb68f6+v+tw2vg==", + "dev": true + }, "buffer-indexof": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", @@ -1539,7 +1830,7 @@ "dev": true, "requires": { "file-type": "3.9.0", - "readable-stream": "2.3.3", + "readable-stream": "2.3.5", "uuid": "2.0.3", "vinyl": "1.2.0" }, @@ -1556,16 +1847,22 @@ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", "dev": true, "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", "isarray": "1.0.0", - "process-nextick-args": "1.0.7", + "process-nextick-args": "2.0.0", "safe-buffer": "5.1.1", "string_decoder": "1.0.3", "util-deprecate": "1.0.2" @@ -1624,9 +1921,9 @@ "dev": true }, "cacache": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.1.tgz", - "integrity": "sha512-dRHYcs9LvG9cHgdPzjiI+/eS7e1xRhULrcyOx04RZQsszNJXU2SL9CyG60yLnge282Qq5nwTv+ieK2fH+WPZmA==", + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz", + "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", "dev": true, "requires": { "bluebird": "3.5.1", @@ -1634,14 +1931,14 @@ "glob": "7.1.2", "graceful-fs": "4.1.11", "lru-cache": "4.1.1", - "mississippi": "1.3.0", + "mississippi": "2.0.0", "mkdirp": "0.5.1", "move-concurrently": "1.0.1", "promise-inflight": "1.0.1", "rimraf": "2.6.2", - "ssri": "5.0.0", + "ssri": "5.3.0", "unique-filename": "1.1.0", - "y18n": "3.2.1" + "y18n": "4.0.0" }, "dependencies": { "glob": { @@ -1672,6 +1969,12 @@ "requires": { "brace-expansion": "1.1.8" } + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true } } }, @@ -1700,6 +2003,66 @@ } } }, + "cacheable-request": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", + "integrity": "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=", + "dev": true, + "requires": { + "clone-response": "1.0.2", + "get-stream": "3.0.0", + "http-cache-semantics": "3.8.1", + "keyv": "3.0.0", + "lowercase-keys": "1.0.0", + "normalize-url": "2.0.1", + "responselike": "1.0.2" + }, + "dependencies": { + "normalize-url": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", + "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", + "dev": true, + "requires": { + "prepend-http": "2.0.0", + "query-string": "5.1.0", + "sort-keys": "2.0.0" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "dev": true + }, + "query-string": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.0.tgz", + "integrity": "sha512-F3DkxxlY0AqD/rwe4YAwjRE2HjOkKW7TxsuteyrS/Jbwrxw887PqYBL4sWUJ9D/V1hmFns0SCD6FDyvlwo9RCQ==", + "dev": true, + "requires": { + "decode-uri-component": "0.2.0", + "object-assign": "4.1.1", + "strict-uri-encode": "1.1.0" + } + }, + "sort-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", + "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", + "dev": true, + "requires": { + "is-plain-obj": "1.1.0" + } + } + } + }, "camel-case": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", @@ -1733,7 +2096,7 @@ "dev": true, "requires": { "browserslist": "1.7.7", - "caniuse-db": "1.0.30000787", + "caniuse-db": "1.0.30000815", "lodash.memoize": "4.1.2", "lodash.uniq": "4.5.0" }, @@ -1744,22 +2107,22 @@ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "dev": true, "requires": { - "caniuse-db": "1.0.30000787", - "electron-to-chromium": "1.3.30" + "caniuse-db": "1.0.30000815", + "electron-to-chromium": "1.3.39" } } } }, "caniuse-db": { - "version": "1.0.30000787", - "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000787.tgz", - "integrity": "sha1-ygeigb5Taoi9f6yWuolfPPU/gRs=", + "version": "1.0.30000815", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000815.tgz", + "integrity": "sha1-DiGPoTPQ0HHIhqoEG0NSWMx0aJE=", "dev": true }, "caniuse-lite": { - "version": "1.0.30000787", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000787.tgz", - "integrity": "sha1-p2xPodasAGQER+yDwefGsz3WFcU=", + "version": "1.0.30000815", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000815.tgz", + "integrity": "sha512-PGSOPK6gFe5fWd+eD0u2bG0aOsN1qC4B1E66tl3jOsIoKkTIcBYAc2+O6AeNzKW8RsFykWgnhkTlfOyuTzgI9A==", "dev": true }, "capture-stack-trace": { @@ -1768,16 +2131,6 @@ "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=", "dev": true }, - "cardinal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-1.0.0.tgz", - "integrity": "sha1-UOIcGwqjdyn5N33vGWtanOyTLuk=", - "dev": true, - "requires": { - "ansicolors": "0.2.1", - "redeyed": "1.0.1" - } - }, "caseless": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", @@ -1804,14 +2157,6 @@ "requires": { "align-text": "0.1.4", "lazy-cache": "1.0.4" - }, - "dependencies": { - "lazy-cache": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", - "dev": true - } } }, "chalk": { @@ -1834,20 +2179,149 @@ "dev": true }, "chokidar": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", - "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.2.tgz", + "integrity": "sha512-l32Hw3wqB0L2kGVmSbK/a+xXLDrUEsc84pSgMkmwygHvD7ubRsP/vxxHa5BtB6oix1XLLVCHyYMsckRXxThmZw==", "dev": true, "requires": { - "anymatch": "1.3.2", + "anymatch": "2.0.0", "async-each": "1.0.1", + "braces": "2.3.1", "fsevents": "1.1.3", - "glob-parent": "2.0.0", + "glob-parent": "3.1.0", "inherits": "2.0.3", "is-binary-path": "1.0.1", - "is-glob": "2.0.1", + "is-glob": "4.0.0", + "normalize-path": "2.1.1", "path-is-absolute": "1.0.1", - "readdirp": "2.1.0" + "readdirp": "2.1.0", + "upath": "1.0.4" + }, + "dependencies": { + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.1.tgz", + "integrity": "sha512-SO5lYHA3vO6gz66erVvedSCkp7AKWdv6VcQ2N4ysXfPxdAlxAMMAdwegGGcv1Bqwm7naF1hNdk5d6AAIEHV2nQ==", + "dev": true, + "requires": { + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "define-property": "1.0.0", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "kind-of": "6.0.2", + "repeat-element": "1.1.2", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" + } + }, + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "3.1.0", + "path-dirname": "1.0.2" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + } + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } } }, "chownr": { @@ -1876,15 +2350,14 @@ } }, "class-utils": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.5.tgz", - "integrity": "sha1-F+eTEDdQ+WJ7IXbqNM/RtWWQPIA=", + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", "dev": true, "requires": { "arr-union": "3.1.0", "define-property": "0.2.5", "isobject": "3.0.1", - "lazy-cache": "2.0.2", "static-extend": "0.1.2" }, "dependencies": { @@ -1959,22 +2432,13 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", "dev": true - }, - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "dev": true, - "requires": { - "set-getter": "0.1.0" - } } } }, "clean-css": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.9.tgz", - "integrity": "sha1-Nc7ornaHpJuYA09w3gDE7dOCYwE=", + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.11.tgz", + "integrity": "sha1-Ls3xRaujj1R0DybO/Q/z4D4SXWo=", "dev": true, "requires": { "source-map": "0.5.7" @@ -1988,33 +2452,6 @@ } } }, - "cli-table": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.1.tgz", - "integrity": "sha1-9TsFJmqLGguTSz0IIebi3FkUriM=", - "dev": true, - "requires": { - "colors": "1.0.3" - }, - "dependencies": { - "colors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", - "dev": true - } - } - }, - "cli-usage": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/cli-usage/-/cli-usage-0.1.4.tgz", - "integrity": "sha1-fAHg3HBsI0s5yTODjI4gshdXduI=", - "dev": true, - "requires": { - "marked": "0.3.9", - "marked-terminal": "1.7.0" - } - }, "cliui": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", @@ -2033,15 +2470,15 @@ "dev": true }, "clone-deep": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-0.3.0.tgz", - "integrity": "sha1-NIxhrpzb4O3+BT2R/0zFIdeQ7eg=", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-2.0.2.tgz", + "integrity": "sha512-SZegPTKjCgpQH63E+eN6mVEEPdQBOUzjyJm5Pora4lrwWRFS8I0QAxV/KD6vV/i0WuijHZWQC1fMsPEdxfdVCQ==", "dev": true, "requires": { "for-own": "1.0.0", "is-plain-object": "2.0.4", - "kind-of": "3.2.2", - "shallow-clone": "0.1.2" + "kind-of": "6.0.2", + "shallow-clone": "1.0.0" }, "dependencies": { "for-own": { @@ -2052,9 +2489,24 @@ "requires": { "for-in": "1.0.2" } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true } } }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "dev": true, + "requires": { + "mimic-response": "1.0.0" + } + }, "clone-stats": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", @@ -2145,18 +2597,18 @@ "dev": true }, "combined-stream": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", - "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", "dev": true, "requires": { "delayed-stream": "1.0.0" } }, "commander": { - "version": "2.12.2", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.12.2.tgz", - "integrity": "sha512-BFnaq5ZOGcDN7FlrtBT4xxkgIToalIIxwjxLWVJ8bGTpe1LroqMiqQXdA7ygc7CRvaYS+9zfPGFnJqFSayx+AA==", + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.0.tgz", + "integrity": "sha512-7B1ilBwtYSbetCgTY1NJFg+gVpestg0fdA1MhC1Vs4ssyfSXnCAjFr+QcQM9/RedXC0EaUx1sG8Smgw2VfgKEg==", "dev": true }, "commondir": { @@ -2172,23 +2624,23 @@ "dev": true }, "compressible": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.12.tgz", - "integrity": "sha1-xZpcmdt2dn6YdlAOJx72OzSTvWY=", + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.13.tgz", + "integrity": "sha1-DRAgq5JLL9tNYnmHXH1tq6a6p6k=", "dev": true, "requires": { - "mime-db": "1.30.0" + "mime-db": "1.33.0" } }, "compression": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.1.tgz", - "integrity": "sha1-7/JgPvwuIs+G810uuTWJ+YdTc9s=", + "version": "1.7.2", + "resolved": "http://registry.npmjs.org/compression/-/compression-1.7.2.tgz", + "integrity": "sha1-qv+81qr4VLROuygDU9WtFlH1mmk=", "dev": true, "requires": { - "accepts": "1.3.4", + "accepts": "1.3.5", "bytes": "3.0.0", - "compressible": "2.0.12", + "compressible": "2.0.13", "debug": "2.6.9", "on-headers": "1.0.1", "safe-buffer": "5.1.1", @@ -2202,13 +2654,13 @@ "dev": true }, "concat-stream": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", - "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.1.tgz", + "integrity": "sha512-gslSSJx03QKa59cIKqeJO9HQ/WZMotvYJCuaUULrLpjj8oG40kV2Z+gz82pVxlTkOADi4PJxQPPfhl1ELYrrXw==", "dev": true, "requires": { "inherits": "2.0.3", - "readable-stream": "2.3.3", + "readable-stream": "2.3.5", "typedarray": "0.0.6" }, "dependencies": { @@ -2218,16 +2670,22 @@ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", "dev": true, "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", "isarray": "1.0.0", - "process-nextick-args": "1.0.7", + "process-nextick-args": "2.0.0", "safe-buffer": "5.1.1", "string_decoder": "1.0.3", "util-deprecate": "1.0.2" @@ -2253,6 +2711,16 @@ "globs": "0.1.3" } }, + "config-chain": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.11.tgz", + "integrity": "sha1-q6CXR9++TD5w52am5BWG4YWfxvI=", + "dev": true, + "requires": { + "ini": "1.3.4", + "proto-list": "1.2.4" + } + }, "connect-history-api-fallback": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", @@ -2408,7 +2876,7 @@ "cipher-base": "1.0.4", "inherits": "2.0.3", "ripemd160": "2.0.1", - "sha.js": "2.4.9" + "sha.js": "2.4.10" } }, "create-hmac": { @@ -2422,7 +2890,7 @@ "inherits": "2.0.3", "ripemd160": "2.0.1", "safe-buffer": "5.1.1", - "sha.js": "2.4.9" + "sha.js": "2.4.10" } }, "cross-env": { @@ -2476,8 +2944,8 @@ "inherits": "2.0.3", "pbkdf2": "3.0.14", "public-encrypt": "4.0.0", - "randombytes": "2.0.5", - "randomfill": "1.0.3" + "randombytes": "2.0.6", + "randomfill": "1.0.4" } }, "css": { @@ -2492,6 +2960,12 @@ "urix": "0.1.0" }, "dependencies": { + "atob": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/atob/-/atob-1.1.3.tgz", + "integrity": "sha1-lfE2KbEsOlGl0hWr3OKqnzL4B3M=", + "dev": true + }, "source-map": { "version": "0.1.43", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", @@ -2500,6 +2974,24 @@ "requires": { "amdefine": "1.0.1" } + }, + "source-map-resolve": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.3.1.tgz", + "integrity": "sha1-YQ9hIqRFuN1RU1oqcbeD38Ekh2E=", + "dev": true, + "requires": { + "atob": "1.1.3", + "resolve-url": "0.2.1", + "source-map-url": "0.3.0", + "urix": "0.1.0" + } + }, + "source-map-url": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.3.0.tgz", + "integrity": "sha1-fsrxO1e80J2opAxdJp2zN5nUqvk=", + "dev": true } } }, @@ -2510,9 +3002,9 @@ "dev": true }, "css-loader": { - "version": "0.28.8", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.8.tgz", - "integrity": "sha512-4jGj7Ag6WUZ5lQyE4te9sJLn0lgkz6HI3WDE4aw98AkW1IAKXPP4blTpPeorlLDpNsYvojo0SYgRJOdz2KbuAw==", + "version": "0.28.11", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.11.tgz", + "integrity": "sha512-wovHgjAx8ZIMGSL8pTys7edA1ClmzxHeY6n/d97gg5odgsxEgKjULPR0viqyC+FWMCL9sfqoC/QCUBo62tLvPg==", "dev": true, "requires": { "babel-code-frame": "6.26.0", @@ -2523,7 +3015,7 @@ "lodash.camelcase": "4.3.0", "object-assign": "4.1.1", "postcss": "5.2.18", - "postcss-modules-extract-imports": "1.1.0", + "postcss-modules-extract-imports": "1.2.0", "postcss-modules-local-by-default": "1.2.0", "postcss-modules-scope": "1.1.0", "postcss-modules-values": "1.3.0", @@ -2550,7 +3042,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.4.0", + "js-base64": "2.4.3", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -2572,6 +3064,24 @@ } } }, + "css-select": { + "version": "1.3.0-rc0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.3.0-rc0.tgz", + "integrity": "sha1-b5MZaqrnN2ZuoQNqjLFKj8t6kjE=", + "dev": true, + "requires": { + "boolbase": "1.0.0", + "css-what": "2.1.0", + "domutils": "1.5.1", + "nth-check": "1.0.1" + } + }, + "css-select-base-adapter": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.0.tgz", + "integrity": "sha1-AQKz0UYw34bD65+p9UVicBBs+ZA=", + "dev": true + }, "css-selector-tokenizer": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz", @@ -2596,9 +3106,39 @@ } } }, - "cssesc": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", + "css-tree": { + "version": "1.0.0-alpha25", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha25.tgz", + "integrity": "sha512-XC6xLW/JqIGirnZuUWHXCHRaAjje2b3OIB0Vj5RIJo6mIi/AdJo30quQl5LxUl0gkXDIrTrFGbMlcZjyFplz1A==", + "dev": true, + "requires": { + "mdn-data": "1.1.0", + "source-map": "0.5.7" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "css-url-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/css-url-regex/-/css-url-regex-1.1.0.tgz", + "integrity": "sha1-g4NCMMyfdMRX3lnuvRVD/uuDt+w=", + "dev": true + }, + "css-what": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz", + "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=", + "dev": true + }, + "cssesc": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=", "dev": true }, @@ -2649,7 +3189,7 @@ "dev": true, "requires": { "browserslist": "1.7.7", - "caniuse-db": "1.0.30000787", + "caniuse-db": "1.0.30000815", "normalize-range": "0.1.2", "num2fraction": "1.2.2", "postcss": "5.2.18", @@ -2662,8 +3202,8 @@ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "dev": true, "requires": { - "caniuse-db": "1.0.30000787", - "electron-to-chromium": "1.3.30" + "caniuse-db": "1.0.30000815", + "electron-to-chromium": "1.3.39" } }, "has-flag": { @@ -2685,7 +3225,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.4.0", + "js-base64": "2.4.3", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -2746,7 +3286,7 @@ "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", "dev": true, "requires": { - "es5-ext": "0.10.37" + "es5-ext": "0.10.41" } }, "dashdash": { @@ -2812,7 +3352,7 @@ "dev": true, "requires": { "buffer-to-vinyl": "1.1.0", - "concat-stream": "1.6.0", + "concat-stream": "1.6.1", "decompress-tar": "3.1.0", "decompress-tarbz2": "3.1.0", "decompress-targz": "3.1.0", @@ -2937,19 +3477,25 @@ "dev": true, "requires": { "is-stream": "1.1.0", - "readable-stream": "2.3.3" + "readable-stream": "2.3.5" } }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", "dev": true, "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", "isarray": "1.0.0", - "process-nextick-args": "1.0.7", + "process-nextick-args": "2.0.0", "safe-buffer": "5.1.1", "string_decoder": "1.0.3", "util-deprecate": "1.0.2" @@ -3000,7 +3546,7 @@ "integrity": "sha1-vm/zJwy1Xf19MGNkDegfJddTIjk=", "dev": true, "requires": { - "duplexify": "3.5.1", + "duplexify": "3.5.4", "glob-stream": "5.3.5", "graceful-fs": "4.1.11", "gulp-sourcemaps": "1.6.0", @@ -3010,7 +3556,7 @@ "merge-stream": "1.0.1", "mkdirp": "0.5.1", "object-assign": "4.1.1", - "readable-stream": "2.3.3", + "readable-stream": "2.3.5", "strip-bom": "2.0.0", "strip-bom-stream": "1.0.0", "through2": "2.0.3", @@ -3271,12 +3817,21 @@ } }, "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", "dev": true, "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "1.0.2", + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } } }, "defined": { @@ -3312,9 +3867,9 @@ "dev": true }, "depd": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", - "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", "dev": true }, "deprecated": { @@ -3371,7 +3926,7 @@ "requires": { "bn.js": "4.11.8", "miller-rabin": "4.0.1", - "randombytes": "2.0.5" + "randombytes": "2.0.6" } }, "dns-equal": { @@ -3381,9 +3936,9 @@ "dev": true }, "dns-packet": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.2.2.tgz", - "integrity": "sha512-kN+DjfGF7dJGUL7nWRktL9Z18t1rWP3aQlyZdY8XlpvU3Nc6GeFTQApftcjtWKxAZfiggZSGrCEoszNgvnpwDg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", + "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", "dev": true, "requires": { "ip": "1.1.5", @@ -3399,12 +3954,46 @@ "buffer-indexof": "1.1.1" } }, + "dom-serializer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", + "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "dev": true, + "requires": { + "domelementtype": "1.1.3", + "entities": "1.1.1" + }, + "dependencies": { + "domelementtype": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=", + "dev": true + } + } + }, "domain-browser": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz", - "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", "dev": true }, + "domelementtype": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", + "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=", + "dev": true + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dev": true, + "requires": { + "dom-serializer": "0.1.0", + "domelementtype": "1.3.0" + } + }, "dotenv": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-4.0.0.tgz", @@ -3412,9 +4001,9 @@ "dev": true }, "dotenv-expand": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-4.0.1.tgz", - "integrity": "sha1-aP3cFWGBTgoQlkERBX/xOM7X16g=", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-4.2.0.tgz", + "integrity": "sha1-3vHxyl1gWdJKdm5YeULCEQbOEnU=", "dev": true }, "download": { @@ -3424,7 +4013,7 @@ "dev": true, "requires": { "caw": "1.2.0", - "concat-stream": "1.6.0", + "concat-stream": "1.6.1", "each-async": "1.1.1", "filenamify": "1.2.1", "got": "5.7.1", @@ -3433,7 +4022,7 @@ "is-url": "1.2.2", "object-assign": "4.1.1", "read-all-stream": "3.1.0", - "readable-stream": "2.3.3", + "readable-stream": "2.3.5", "stream-combiner2": "1.1.1", "vinyl": "1.2.0", "vinyl-fs": "2.4.4", @@ -3555,19 +4144,25 @@ "dev": true, "requires": { "is-stream": "1.1.0", - "readable-stream": "2.3.3" + "readable-stream": "2.3.5" } }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", "dev": true, "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", "isarray": "1.0.0", - "process-nextick-args": "1.0.7", + "process-nextick-args": "2.0.0", "safe-buffer": "5.1.1", "string_decoder": "1.0.3", "util-deprecate": "1.0.2" @@ -3618,7 +4213,7 @@ "integrity": "sha1-vm/zJwy1Xf19MGNkDegfJddTIjk=", "dev": true, "requires": { - "duplexify": "3.5.1", + "duplexify": "3.5.4", "glob-stream": "5.3.5", "graceful-fs": "4.1.11", "gulp-sourcemaps": "1.6.0", @@ -3628,7 +4223,7 @@ "merge-stream": "1.0.1", "mkdirp": "0.5.1", "object-assign": "4.1.1", - "readable-stream": "2.3.3", + "readable-stream": "2.3.5", "strip-bom": "2.0.0", "strip-bom-stream": "1.0.0", "through2": "2.0.3", @@ -3655,21 +4250,21 @@ "dev": true }, "duplexify": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.1.tgz", - "integrity": "sha512-j5goxHTwVED1Fpe5hh3q9R93Kip0Bg2KVAt4f8CEYM3UEwYcPSvWbXaUQOzdX/HtiNomipv+gU7ASQPDbV7pGQ==", + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.4.tgz", + "integrity": "sha512-JzYSLYMhoVVBe8+mbHQ4KgpvHpm0DZpJuL8PY93Vyv1fW7jYJ90LoXa1di/CVbJM+TgMs91rbDapE/RNIfnJsA==", "dev": true, "requires": { - "end-of-stream": "1.4.0", + "end-of-stream": "1.4.1", "inherits": "2.0.3", - "readable-stream": "2.3.3", + "readable-stream": "2.3.5", "stream-shift": "1.0.0" }, "dependencies": { "end-of-stream": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz", - "integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", "dev": true, "requires": { "once": "1.4.0" @@ -3690,16 +4285,22 @@ "wrappy": "1.0.2" } }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", "dev": true, "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", "isarray": "1.0.0", - "process-nextick-args": "1.0.7", + "process-nextick-args": "2.0.0", "safe-buffer": "5.1.1", "string_decoder": "1.0.3", "util-deprecate": "1.0.2" @@ -3742,20 +4343,11 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", "dev": true }, - "electron-releases": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/electron-releases/-/electron-releases-2.1.0.tgz", - "integrity": "sha512-cyKFD1bTE/UgULXfaueIN1k5EPFzs+FRc/rvCY5tIynefAPqopQEgjr0EzY+U3Dqrk/G4m9tXSPuZ77v6dL/Rw==", - "dev": true - }, "electron-to-chromium": { - "version": "1.3.30", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.30.tgz", - "integrity": "sha512-zx1Prv7kYLfc4OA60FhxGbSo4qrEjgSzpo1/37i7l9ltXPYOoQBtjQxY9KmsgfHnBxHlBGXwLlsbt/gub1w5lw==", - "dev": true, - "requires": { - "electron-releases": "2.1.0" - } + "version": "1.3.39", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.39.tgz", + "integrity": "sha1-16RpZAnKCZXidQFW2mEsIhr62E0=", + "dev": true }, "elliptic": { "version": "6.4.0", @@ -3779,9 +4371,9 @@ "dev": true }, "encodeurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz", - "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", "dev": true }, "end-of-stream": { @@ -3819,10 +4411,16 @@ } } }, + "entities": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", + "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", + "dev": true + }, "errno": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.6.tgz", - "integrity": "sha512-IsORQDpaaSwcDP4ZZnHxgE85werpo34VYn1Ud3mq+eUsF593faR8oCZNXrROVkpFu2TsbrNhHin0aUrTsQ9vNw==", + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", "dev": true, "requires": { "prr": "1.0.1" @@ -3871,13 +4469,14 @@ } }, "es5-ext": { - "version": "0.10.37", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.37.tgz", - "integrity": "sha1-DudB0Ui4AGm6J9AgOTdWryV978M=", + "version": "0.10.41", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.41.tgz", + "integrity": "sha512-MYK02wXfwTMie5TEJWPolgOsXEmz7wKCQaGzgmRjZOoV6VLG8I5dSv2bn6AOClXhK64gnSQTQ9W9MKvx87J4gw==", "dev": true, "requires": { "es6-iterator": "2.0.3", - "es6-symbol": "3.1.1" + "es6-symbol": "3.1.1", + "next-tick": "1.0.0" } }, "es6-iterator": { @@ -3887,7 +4486,7 @@ "dev": true, "requires": { "d": "1.0.0", - "es5-ext": "0.10.37", + "es5-ext": "0.10.41", "es6-symbol": "3.1.1" } }, @@ -3898,7 +4497,7 @@ "dev": true, "requires": { "d": "1.0.0", - "es5-ext": "0.10.37", + "es5-ext": "0.10.41", "es6-iterator": "2.0.3", "es6-set": "0.1.5", "es6-symbol": "3.1.1", @@ -3912,7 +4511,7 @@ "dev": true, "requires": { "d": "1.0.0", - "es5-ext": "0.10.37", + "es5-ext": "0.10.41", "es6-iterator": "2.0.3", "es6-symbol": "3.1.1", "event-emitter": "0.3.5" @@ -3925,7 +4524,7 @@ "dev": true, "requires": { "d": "1.0.0", - "es5-ext": "0.10.37" + "es5-ext": "0.10.41" } }, "es6-templates": { @@ -3945,7 +4544,7 @@ "dev": true, "requires": { "d": "1.0.0", - "es5-ext": "0.10.37", + "es5-ext": "0.10.41", "es6-iterator": "2.0.3", "es6-symbol": "3.1.1" } @@ -3970,7 +4569,7 @@ "requires": { "es6-map": "0.1.5", "es6-weak-map": "2.0.2", - "esrecurse": "4.2.0", + "esrecurse": "4.2.1", "estraverse": "4.2.0" } }, @@ -3981,21 +4580,12 @@ "dev": true }, "esrecurse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz", - "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", "dev": true, "requires": { - "estraverse": "4.2.0", - "object-assign": "4.1.1" - }, - "dependencies": { - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - } + "estraverse": "4.2.0" } }, "estraverse": { @@ -4023,7 +4613,7 @@ "dev": true, "requires": { "d": "1.0.0", - "es5-ext": "0.10.37" + "es5-ext": "0.10.41" } }, "eventemitter3": { @@ -4140,12 +4730,12 @@ } }, "express": { - "version": "4.16.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.16.2.tgz", - "integrity": "sha1-41xt/i1kt9ygpc1PIXgb4ymeB2w=", + "version": "4.16.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.16.3.tgz", + "integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=", "dev": true, "requires": { - "accepts": "1.3.4", + "accepts": "1.3.5", "array-flatten": "1.1.1", "body-parser": "1.18.2", "content-disposition": "0.5.2", @@ -4153,26 +4743,26 @@ "cookie": "0.3.1", "cookie-signature": "1.0.6", "debug": "2.6.9", - "depd": "1.1.1", - "encodeurl": "1.0.1", + "depd": "1.1.2", + "encodeurl": "1.0.2", "escape-html": "1.0.3", "etag": "1.8.1", - "finalhandler": "1.1.0", + "finalhandler": "1.1.1", "fresh": "0.5.2", "merge-descriptors": "1.0.1", "methods": "1.1.2", "on-finished": "2.3.0", "parseurl": "1.3.2", "path-to-regexp": "0.1.7", - "proxy-addr": "2.0.2", + "proxy-addr": "2.0.3", "qs": "6.5.1", "range-parser": "1.2.0", "safe-buffer": "5.1.1", - "send": "0.16.1", - "serve-static": "1.13.1", + "send": "0.16.2", + "serve-static": "1.13.2", "setprototypeof": "1.1.0", - "statuses": "1.3.1", - "type-is": "1.6.15", + "statuses": "1.4.0", + "type-is": "1.6.16", "utils-merge": "1.0.1", "vary": "1.1.2" }, @@ -4191,6 +4781,25 @@ } } }, + "ext-list": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", + "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==", + "dev": true, + "requires": { + "mime-db": "1.33.0" + } + }, + "ext-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz", + "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==", + "dev": true, + "requires": { + "ext-list": "2.2.2", + "sort-keys-length": "1.0.1" + } + }, "extend": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", @@ -4198,12 +4807,24 @@ "dev": true }, "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "2.0.4" + } + } } }, "extglob": { @@ -4244,9 +4865,9 @@ } }, "fast-deep-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", - "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", "dev": true }, "fast-json-stable-stringify": { @@ -4349,17 +4970,17 @@ } }, "finalhandler": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", - "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", + "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", "dev": true, "requires": { "debug": "2.6.9", - "encodeurl": "1.0.1", + "encodeurl": "1.0.2", "escape-html": "1.0.3", "on-finished": "2.3.0", "parseurl": "1.3.2", - "statuses": "1.3.1", + "statuses": "1.4.0", "unpipe": "1.0.0" } }, @@ -4370,7 +4991,7 @@ "dev": true, "requires": { "commondir": "1.0.1", - "make-dir": "1.1.0", + "make-dir": "1.2.0", "pkg-dir": "2.0.0" } }, @@ -4462,7 +5083,7 @@ "dev": true, "requires": { "inherits": "2.0.3", - "readable-stream": "2.3.3" + "readable-stream": "2.3.5" }, "dependencies": { "isarray": { @@ -4471,16 +5092,22 @@ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", "dev": true, "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", "isarray": "1.0.0", - "process-nextick-args": "1.0.7", + "process-nextick-args": "2.0.0", "safe-buffer": "5.1.1", "string_decoder": "1.0.3", "util-deprecate": "1.0.2" @@ -4498,9 +5125,9 @@ } }, "follow-redirects": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.3.0.tgz", - "integrity": "sha1-9oSHH8EW0uMp/aVe9naH9Pq8kFw=", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.4.1.tgz", + "integrity": "sha512-uxYePVPogtya1ktGnAAXOacnbIuRMB4dkvqeNz2qTtTQsuzSfbDolV+wMMKxAmCx0bLgAKLbBOkjItMbbkR1vg==", "dev": true, "requires": { "debug": "3.1.0" @@ -4557,8 +5184,8 @@ "dev": true, "requires": { "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.17" + "combined-stream": "1.0.6", + "mime-types": "2.1.18" } }, "forwarded": { @@ -4693,7 +5320,7 @@ "dev": true, "optional": true, "requires": { - "nan": "2.8.0", + "nan": "2.10.0", "node-pre-gyp": "0.6.39" }, "dependencies": { @@ -5676,7 +6303,7 @@ "integrity": "sha1-iUhUSRvFkbDxR9euVw9cZ4tyVus=", "dev": true, "requires": { - "rc": "1.2.2" + "rc": "1.2.6" } }, "get-stdin": { @@ -6024,7 +6651,7 @@ "parse-json": "2.2.0", "pinkie-promise": "2.0.1", "read-all-stream": "3.1.0", - "readable-stream": "2.3.3", + "readable-stream": "2.3.5", "timed-out": "3.1.3", "unzip-response": "1.0.2", "url-parse-lax": "1.0.0" @@ -6036,7 +6663,7 @@ "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", "dev": true, "requires": { - "readable-stream": "2.3.3" + "readable-stream": "2.3.5" } }, "isarray": { @@ -6051,16 +6678,22 @@ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", "dev": true, "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", "isarray": "1.0.0", - "process-nextick-args": "1.0.7", + "process-nextick-args": "2.0.0", "safe-buffer": "5.1.1", "string_decoder": "1.0.3", "util-deprecate": "1.0.2" @@ -6128,7 +6761,7 @@ "archive-type": "3.2.0", "decompress": "3.0.0", "gulp-util": "3.0.8", - "readable-stream": "2.3.3" + "readable-stream": "2.3.5" }, "dependencies": { "isarray": { @@ -6137,16 +6770,22 @@ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", "dev": true, "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", "isarray": "1.0.0", - "process-nextick-args": "1.0.7", + "process-nextick-args": "2.0.0", "safe-buffer": "5.1.1", "string_decoder": "1.0.3", "util-deprecate": "1.0.2" @@ -6258,8 +6897,8 @@ "dev": true, "requires": { "chalk": "1.1.3", - "commander": "2.12.2", - "is-my-json-valid": "2.17.1", + "commander": "2.15.0", + "is-my-json-valid": "2.17.2", "pinkie-promise": "2.0.1" } }, @@ -6282,9 +6921,9 @@ } }, "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, "has-gulplog": { @@ -6463,9 +7102,9 @@ } }, "hosted-git-info": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", - "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", + "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==", "dev": true }, "hpack.js": { @@ -6475,9 +7114,9 @@ "dev": true, "requires": { "inherits": "2.0.3", - "obuf": "1.1.1", - "readable-stream": "2.3.3", - "wbuf": "1.7.2" + "obuf": "1.1.2", + "readable-stream": "2.3.5", + "wbuf": "1.7.3" }, "dependencies": { "isarray": { @@ -6486,16 +7125,22 @@ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", "dev": true, "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", "isarray": "1.0.0", - "process-nextick-args": "1.0.7", + "process-nextick-args": "2.0.0", "safe-buffer": "5.1.1", "string_decoder": "1.0.3", "util-deprecate": "1.0.2" @@ -6532,7 +7177,7 @@ "requires": { "es6-templates": "0.2.3", "fastparse": "1.1.1", - "html-minifier": "3.5.8", + "html-minifier": "3.5.11", "loader-utils": "1.1.0", "object-assign": "4.1.1" }, @@ -6546,33 +7191,39 @@ } }, "html-minifier": { - "version": "3.5.8", - "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.8.tgz", - "integrity": "sha512-WX7D6PB9PFq05fZ1/CyxPUuyqXed6vh2fGOM80+zJT5wAO93D/cUjLs0CcbBFjQmlwmCgRvl97RurtArIpOnkw==", + "version": "3.5.11", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.11.tgz", + "integrity": "sha512-kIi9C090qWW5cGxEf+EwNUczduyVR6krk29WB3zDSWBQN6xuh/1jCXgmY4SvqzaJMOZFCnf8wcNzA8iPsfLiUQ==", "dev": true, "requires": { "camel-case": "3.0.0", - "clean-css": "4.1.9", - "commander": "2.12.2", + "clean-css": "4.1.11", + "commander": "2.15.0", "he": "1.1.1", "ncname": "1.0.0", "param-case": "2.1.1", "relateurl": "0.2.7", - "uglify-js": "3.3.4" + "uglify-js": "3.3.15" }, "dependencies": { "uglify-js": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.3.4.tgz", - "integrity": "sha512-hfIwuAQI5dlXP30UtdmWoYF9k+ypVqBXIdmd6ZKBiaNHHvA8ty7ZloMe3+7S5AEKVkxHbjByl4DfRHQ7QpZquw==", + "version": "3.3.15", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.3.15.tgz", + "integrity": "sha512-bqtBCAINYXX/OkdnqMGpbXr+OPWc00hsozRpk+dAtfnbdk2jjKiLmyOkQ7zamg648lVMnzATL8JrSN6LmaVpYA==", "dev": true, "requires": { - "commander": "2.12.2", + "commander": "2.15.0", "source-map": "0.6.1" } } } }, + "http-cache-semantics": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", + "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", + "dev": true + }, "http-deceiver": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", @@ -6588,9 +7239,15 @@ "depd": "1.1.1", "inherits": "2.0.3", "setprototypeof": "1.0.3", - "statuses": "1.3.1" + "statuses": "1.4.0" }, "dependencies": { + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", + "dev": true + }, "setprototypeof": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", @@ -6600,9 +7257,9 @@ } }, "http-parser-js": { - "version": "0.4.9", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.9.tgz", - "integrity": "sha1-6hoE+2St/wJC6ZdPKX3Uw8rSceE=", + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.11.tgz", + "integrity": "sha512-QCR5O2AjjMW8Mo4HyI1ctFcv+O99j/0g367V3YoVnrNw5hkDvAWZD0lWGcc+F4yN3V55USPCVix4efb75HxFfA==", "dev": true }, "http-proxy": { @@ -6623,7 +7280,7 @@ "requires": { "http-proxy": "1.16.2", "is-glob": "3.1.0", - "lodash": "4.17.4", + "lodash": "4.17.5", "micromatch": "2.3.11" }, "dependencies": { @@ -6652,7 +7309,7 @@ "requires": { "assert-plus": "0.2.0", "jsprim": "1.4.1", - "sshpk": "1.13.1" + "sshpk": "1.14.1" } }, "https-browserify": { @@ -6679,7 +7336,7 @@ "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=", "dev": true, "requires": { - "postcss": "6.0.16" + "postcss": "6.0.19" } }, "ieee754": { @@ -6702,7 +7359,7 @@ "requires": { "file-type": "4.4.0", "globby": "6.1.0", - "make-dir": "1.1.0", + "make-dir": "1.2.0", "p-pipe": "1.2.0", "pify": "2.3.0", "replace-ext": "1.0.0" @@ -6734,14 +7391,31 @@ } }, "imagemin-mozjpeg": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/imagemin-mozjpeg/-/imagemin-mozjpeg-6.0.0.tgz", - "integrity": "sha1-caMqRXqhsmEXpo7u8tmxkMLlCR4=", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/imagemin-mozjpeg/-/imagemin-mozjpeg-7.0.0.tgz", + "integrity": "sha1-2SZHf8bvXzp2ikIi97LYCNPrpWg=", "dev": true, "requires": { - "exec-buffer": "3.2.0", + "execa": "0.8.0", "is-jpg": "1.0.0", - "mozjpeg": "4.1.1" + "mozjpeg": "5.0.0" + }, + "dependencies": { + "execa": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz", + "integrity": "sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=", + "dev": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + } + } } }, "imagemin-optipng": { @@ -6756,59 +7430,173 @@ } }, "imagemin-pngquant": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/imagemin-pngquant/-/imagemin-pngquant-5.0.1.tgz", - "integrity": "sha1-2KMp2lU6+iJrEc5i3r4Lfje0OeY=", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/imagemin-pngquant/-/imagemin-pngquant-5.1.0.tgz", + "integrity": "sha512-RtIUPbp8/HYX5EKY6p/L1NLKnkxNj37I92IFNsrptzBVql8FqBgPra9DO/eUgE4EWx+zq6ih4a/Y9YhF3pNM5A==", "dev": true, "requires": { - "exec-buffer": "3.2.0", + "execa": "0.10.0", "is-png": "1.1.0", - "pngquant-bin": "3.1.1" + "is-stream": "1.1.0", + "pngquant-bin": "4.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "1.0.4", + "path-key": "2.0.1", + "semver": "5.5.0", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + }, + "execa": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz", + "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==", + "dev": true, + "requires": { + "cross-spawn": "6.0.5", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + } + }, + "semver": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "dev": true + } } }, "imagemin-svgo": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/imagemin-svgo/-/imagemin-svgo-5.2.4.tgz", - "integrity": "sha512-1bNZdlWVKdfxzu0xDD1pWjwK/G8FLcztUh/GWaI7xLgCFrn0j35o+uBbY7VcdY2AmKgiLYTXhrzrbkQk6xj8aA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/imagemin-svgo/-/imagemin-svgo-6.0.0.tgz", + "integrity": "sha512-xwjBZQKpbkklHtJYnCOwRJjTRJA/nR0hQzKMh+CUZRvm/L0QwKKPJQ9tkPWQHrg+cydPu2i1vLgHuy2E0hKEkg==", "dev": true, "requires": { + "buffer-from": "0.1.2", "is-svg": "2.1.0", - "svgo": "0.7.2" - } - }, - "img-loader": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/img-loader/-/img-loader-2.0.0.tgz", - "integrity": "sha1-WDdAs+KjiuulQ1x91TC+nOdFT9k=", - "dev": true, - "requires": { - "imagemin": "5.3.1", - "imagemin-gifsicle": "5.2.0", - "imagemin-mozjpeg": "6.0.0", - "imagemin-optipng": "5.2.1", - "imagemin-pngquant": "5.0.1", - "imagemin-svgo": "5.2.4", - "loader-utils": "1.1.0" - } - }, - "import-local": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-1.0.0.tgz", - "integrity": "sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==", - "dev": true, - "requires": { - "pkg-dir": "2.0.0", - "resolve-cwd": "2.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "in-publish": { - "version": "2.0.0", + "svgo": "1.0.5" + }, + "dependencies": { + "coa": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.1.tgz", + "integrity": "sha512-5wfTTO8E2/ja4jFSxePXlG5nRu5bBtL/r1HCIpJW/lzT6yDtKl0u0Z4o/Vpz32IpKmBn7HerheEZQgA9N2DarQ==", + "dev": true, + "requires": { + "q": "1.5.1" + } + }, + "csso": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-3.5.0.tgz", + "integrity": "sha512-WtJjFP3ZsSdWhiZr4/k1B9uHPgYjFYnDxfbaJxk1hz5PDLIJ5BCRWkJqaztZ0DbP8d2ZIVwUPIJb2YmCwkPaMw==", + "dev": true, + "requires": { + "css-tree": "1.0.0-alpha.27" + }, + "dependencies": { + "css-tree": { + "version": "1.0.0-alpha.27", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.27.tgz", + "integrity": "sha512-BAYp9FyN4jLXjfvRpTDchBllDptqlK9I7OsagXCG9Am5C+5jc8eRZHgqb9x500W2OKS14MMlpQc/nmh/aA7TEQ==", + "dev": true, + "requires": { + "mdn-data": "1.1.0", + "source-map": "0.5.7" + } + } + } + }, + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "dev": true + }, + "js-yaml": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", + "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", + "dev": true, + "requires": { + "argparse": "1.0.10", + "esprima": "4.0.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "svgo": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.0.5.tgz", + "integrity": "sha512-nYrifviB77aNKDNKKyuay3M9aYiK6Hv5gJVDdjj2ZXTQmI8WZc8+UPLR5IpVlktJfSu3co/4XcWgrgI6seGBPg==", + "dev": true, + "requires": { + "coa": "2.0.1", + "colors": "1.1.2", + "css-select": "1.3.0-rc0", + "css-select-base-adapter": "0.1.0", + "css-tree": "1.0.0-alpha25", + "css-url-regex": "1.1.0", + "csso": "3.5.0", + "js-yaml": "3.10.0", + "mkdirp": "0.5.1", + "object.values": "1.0.4", + "sax": "1.2.4", + "stable": "0.1.6", + "unquote": "1.1.1", + "util.promisify": "1.0.0" + } + } + } + }, + "img-loader": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/img-loader/-/img-loader-2.0.1.tgz", + "integrity": "sha512-cD5D+zzIDvVPyX9nmz6+GL20BfpRUKUEXFur9IPeUC8/LRJT/PQ3YJVyKelIum8R5rCVZXgSFB0ccpsnS4IyAQ==", + "dev": true, + "requires": { + "imagemin": "5.3.1", + "imagemin-gifsicle": "5.2.0", + "imagemin-mozjpeg": "7.0.0", + "imagemin-optipng": "5.2.1", + "imagemin-pngquant": "5.1.0", + "imagemin-svgo": "6.0.0", + "loader-utils": "1.1.0" + } + }, + "import-local": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-1.0.0.tgz", + "integrity": "sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==", + "dev": true, + "requires": { + "pkg-dir": "2.0.0", + "resolve-cwd": "2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "in-publish": { + "version": "2.0.0", "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz", "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=", "dev": true @@ -6871,10 +7659,20 @@ "integrity": "sha1-ggzdWIuGj/sZGoCVBtbJyPISsbA=", "dev": true }, + "into-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", + "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=", + "dev": true, + "requires": { + "from2": "2.3.0", + "p-is-promise": "1.1.0" + } + }, "invariant": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", - "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", "dev": true, "requires": { "loose-envify": "1.3.1" @@ -6899,9 +7697,9 @@ "dev": true }, "ipaddr.js": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.5.2.tgz", - "integrity": "sha1-1LUFvemUaYfM8PxY2QEP+WB+P6A=", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.6.0.tgz", + "integrity": "sha1-4/o1e3c9phnybpXwSdBVxyeW+Gs=", "dev": true }, "is-absolute": { @@ -7107,14 +7905,21 @@ "integrity": "sha1-KVnBfnNDDbOCZNp1uQ3VTy2G2hw=", "dev": true }, + "is-my-ip-valid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz", + "integrity": "sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ==", + "dev": true + }, "is-my-json-valid": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.17.1.tgz", - "integrity": "sha512-Q2khNw+oBlWuaYvEEHtKSw/pCxD2L5Rc1C+UQme9X6JdRDh7m5D7HkozA0qa3DUkQ6VzCnEm8mVIQPyIRkI5sQ==", + "version": "2.17.2", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.17.2.tgz", + "integrity": "sha512-IBhBslgngMQN8DDSppmgDv7RNrlFotuuDsKcrCP3+HbFaVivIBU7u9oiiErw8sH4ynx3+gOGQ3q2otkgiSi6kg==", "dev": true, "requires": { "generate-function": "2.0.0", "generate-object-property": "1.2.0", + "is-my-ip-valid": "1.0.0", "jsonpointer": "4.0.1", "xtend": "4.0.1" } @@ -7147,22 +7952,19 @@ "dev": true }, "is-odd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-1.0.0.tgz", - "integrity": "sha1-O4qTLrAos3dcObsJ6RdnrM22kIg=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", + "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", "dev": true, "requires": { - "is-number": "3.0.0" + "is-number": "4.0.0" }, "dependencies": { "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true } } }, @@ -7395,15 +8197,15 @@ "dev": true }, "jquery": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.2.1.tgz", - "integrity": "sha1-XE2d5lKvbNCncBVKYxu6ErAVx4c=", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.3.1.tgz", + "integrity": "sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg==", "dev": true }, "js-base64": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.0.tgz", - "integrity": "sha512-Wehd+7Pf9tFvGb+ydPm9TjYjV8X1YHOVyG8QyELZxEMqOhemVwGRmoG8iQ/soqI3n8v4xn59zaLxiCJiaaRzKA==", + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.3.tgz", + "integrity": "sha512-H7ErYLM34CvDMto3GbD6xD0JLUGYXR3QTcH6B/tr4Hi/QpSThnCsIp+Sy5FRTw3B0d6py4HcNkW7nO/wdtGWEw==", "dev": true }, "js-tokens": { @@ -7418,7 +8220,7 @@ "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=", "dev": true, "requires": { - "argparse": "1.0.9", + "argparse": "1.0.10", "esprima": "2.7.3" } }, @@ -7435,6 +8237,12 @@ "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", "dev": true }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", + "dev": true + }, "json-loader": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", @@ -7530,6 +8338,15 @@ } } }, + "keyv": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", + "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==", + "dev": true, + "requires": { + "json-buffer": "3.0.0" + } + }, "killable": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.0.tgz", @@ -7546,46 +8363,46 @@ } }, "laravel-mix": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/laravel-mix/-/laravel-mix-1.7.2.tgz", - "integrity": "sha512-La1eAsCkEdySc9J9MJ/g8Dj1EfGo7aXW92GZKoSbrSg4uQWNNoV824e6+o4f4Eo/YWYrYwZTkdnWJJ1uVqP+dw==", + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/laravel-mix/-/laravel-mix-2.1.7.tgz", + "integrity": "sha512-vLjyC5gM8Oqbr/B5wtl+G47vlfXofPGNnR9MKLTzaZVBku95g+AxtXKty9gtITGIQxn6yrgvhacAGj4qpiH1cQ==", "dev": true, "requires": { - "autoprefixer": "7.2.4", + "autoprefixer": "7.2.6", "babel-core": "6.26.0", - "babel-loader": "7.1.2", + "babel-loader": "7.1.4", "babel-plugin-transform-object-rest-spread": "6.26.0", "babel-plugin-transform-runtime": "6.23.0", "babel-preset-env": "1.6.1", - "chokidar": "1.7.0", - "clean-css": "4.1.9", + "chokidar": "2.0.2", + "clean-css": "4.1.11", "concatenate": "0.0.2", - "css-loader": "0.28.8", + "css-loader": "0.28.11", "dotenv": "4.0.0", - "dotenv-expand": "4.0.1", + "dotenv-expand": "4.2.0", "extract-text-webpack-plugin": "3.0.2", "file-loader": "0.11.2", "friendly-errors-webpack-plugin": "1.6.1", "fs-extra": "3.0.1", "glob": "7.1.2", "html-loader": "0.4.5", - "img-loader": "2.0.0", - "lodash": "4.17.4", + "img-loader": "2.0.1", + "lodash": "4.17.5", "md5": "2.2.1", "node-sass": "4.7.2", - "postcss-loader": "2.0.10", - "resolve-url-loader": "2.2.1", - "sass-loader": "6.0.6", + "postcss-loader": "2.1.1", + "resolve-url-loader": "2.3.0", + "sass-loader": "6.0.7", "style-loader": "0.18.2", "uglify-js": "2.8.29", - "uglifyjs-webpack-plugin": "1.1.6", - "vue-loader": "13.6.2", - "vue-template-compiler": "2.5.13", - "webpack": "3.10.0", + "uglifyjs-webpack-plugin": "1.2.4", + "vue-loader": "13.7.1", + "vue-template-compiler": "2.5.16", + "webpack": "3.11.0", "webpack-chunk-hash": "0.4.0", - "webpack-dev-server": "2.10.0", - "webpack-merge": "4.1.1", - "webpack-notifier": "1.5.0", + "webpack-dev-server": "2.11.2", + "webpack-merge": "4.1.2", + "webpack-notifier": "1.6.0", "yargs": "8.0.2" }, "dependencies": { @@ -7615,9 +8432,9 @@ } }, "lazy-cache": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", - "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", "dev": true }, "lazy-req": { @@ -7632,7 +8449,7 @@ "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", "dev": true, "requires": { - "readable-stream": "2.3.3" + "readable-stream": "2.3.5" }, "dependencies": { "isarray": { @@ -7641,16 +8458,22 @@ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", "dev": true, "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", "isarray": "1.0.0", - "process-nextick-args": "1.0.7", + "process-nextick-args": "2.0.0", "safe-buffer": "5.1.1", "string_decoder": "1.0.3", "util-deprecate": "1.0.2" @@ -7766,21 +8589,9 @@ } }, "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", - "dev": true - }, - "lodash._arraycopy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._arraycopy/-/lodash._arraycopy-3.0.0.tgz", - "integrity": "sha1-due3wfH7klRzdIeKVi7Qaj5Q9uE=", - "dev": true - }, - "lodash._arrayeach": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._arrayeach/-/lodash._arrayeach-3.0.0.tgz", - "integrity": "sha1-urFWsqkNPxu9XGU0AzSeXlkz754=", + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", "dev": true }, "lodash._baseassign": { @@ -7793,32 +8604,12 @@ "lodash.keys": "3.1.2" } }, - "lodash._baseclone": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/lodash._baseclone/-/lodash._baseclone-3.3.0.tgz", - "integrity": "sha1-MDUZv2OT/n5C802LYw73eU41Qrc=", - "dev": true, - "requires": { - "lodash._arraycopy": "3.0.0", - "lodash._arrayeach": "3.0.0", - "lodash._baseassign": "3.2.0", - "lodash._basefor": "3.0.3", - "lodash.isarray": "3.0.4", - "lodash.keys": "3.1.2" - } - }, "lodash._basecopy": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", "dev": true }, - "lodash._basefor": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash._basefor/-/lodash._basefor-3.0.3.tgz", - "integrity": "sha1-dVC06SGO8J+tJDQ7YSAhx5tMIMI=", - "dev": true - }, "lodash._basetostring": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", @@ -7971,9 +8762,9 @@ "dev": true }, "lodash.mergewith": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.0.tgz", - "integrity": "sha1-FQzwoWeR9ZA7iJHqsVRgknS96lU=", + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz", + "integrity": "sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ==", "dev": true }, "lodash.restparam": { @@ -8015,12 +8806,6 @@ "lodash.escape": "3.2.0" } }, - "lodash.toarray": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz", - "integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE=", - "dev": true - }, "lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", @@ -8038,9 +8823,9 @@ } }, "loglevel": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.0.tgz", - "integrity": "sha1-rgyqVhERSYxboTcj1vtjHSQAOTQ=", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz", + "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=", "dev": true }, "longest": { @@ -8109,9 +8894,9 @@ "dev": true }, "make-dir": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.1.0.tgz", - "integrity": "sha512-0Pkui4wLJ7rxvmfUvs87skoEaxmu0hCUApF8nonzpl7q//FWp9zu8W61Scz4sd/kUiqDxvUhtoam2efDyiBzcA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.2.0.tgz", + "integrity": "sha512-aNUAa4UMg/UougV25bbrU4ZaaKNjJ/3/xnvg/twpmKROPdKZPZ9wGgI0opdZzO8q/zUFawoUuixuOv33eZ61Iw==", "dev": true, "requires": { "pify": "3.0.0" @@ -8139,24 +8924,11 @@ } }, "marked": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.9.tgz", - "integrity": "sha512-nW5u0dxpXxHfkHzzrveY45gCbi+R4PaO4WRZYqZNl+vB0hVGeqlFn0aOg1c8AKL63TrNFn9Bm2UP4AdiZ9TPLw==", + "version": "0.3.12", + "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.12.tgz", + "integrity": "sha512-k4NaW+vS7ytQn6MgJn3fYpQt20/mOgYM5Ft9BYMfQJDz2QT6yEeS9XJ8k2Nw8JTeWK/znPPW2n3UJGzyYEiMoA==", "dev": true }, - "marked-terminal": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-1.7.0.tgz", - "integrity": "sha1-yMRgiBx3LHYEtkNnAH7l938SWQQ=", - "dev": true, - "requires": { - "cardinal": "1.0.0", - "chalk": "1.1.3", - "cli-table": "0.3.1", - "lodash.assign": "4.2.0", - "node-emoji": "1.8.1" - } - }, "math-expression-evaluator": { "version": "1.2.17", "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz", @@ -8196,6 +8968,12 @@ } } }, + "mdn-data": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-1.1.0.tgz", + "integrity": "sha512-jC6B3BFC07cCOU8xx1d+sQtDkVIpGKWv4TzK7pN7PyObdbwlIFJbHYk8ofvr0zrU8SkV1rSi87KAHhWCdLGw1Q==", + "dev": true + }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -8208,7 +8986,7 @@ "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", "dev": true, "requires": { - "mimic-fn": "1.1.0" + "mimic-fn": "1.2.0" } }, "memory-fs": { @@ -8217,8 +8995,8 @@ "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", "dev": true, "requires": { - "errno": "0.1.6", - "readable-stream": "2.3.3" + "errno": "0.1.7", + "readable-stream": "2.3.5" }, "dependencies": { "isarray": { @@ -8227,16 +9005,22 @@ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", "dev": true, "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", "isarray": "1.0.0", - "process-nextick-args": "1.0.7", + "process-nextick-args": "2.0.0", "safe-buffer": "5.1.1", "string_decoder": "1.0.3", "util-deprecate": "1.0.2" @@ -8291,7 +9075,7 @@ "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", "dev": true, "requires": { - "readable-stream": "2.3.3" + "readable-stream": "2.3.5" }, "dependencies": { "isarray": { @@ -8300,16 +9084,22 @@ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", "dev": true, "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", "isarray": "1.0.0", - "process-nextick-args": "1.0.7", + "process-nextick-args": "2.0.0", "safe-buffer": "5.1.1", "string_decoder": "1.0.3", "util-deprecate": "1.0.2" @@ -8370,24 +9160,24 @@ "dev": true }, "mime-db": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", - "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", "dev": true }, "mime-types": { - "version": "2.1.17", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", - "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", "dev": true, "requires": { - "mime-db": "1.30.0" + "mime-db": "1.33.0" } }, "mimic-fn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", - "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", "dev": true }, "mimic-response": { @@ -8424,27 +9214,27 @@ "dev": true }, "mississippi": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-1.3.0.tgz", - "integrity": "sha1-0gFYPrEjJ+PFwWQqQEqcrPlONPU=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz", + "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==", "dev": true, "requires": { - "concat-stream": "1.6.0", - "duplexify": "3.5.1", - "end-of-stream": "1.4.0", + "concat-stream": "1.6.1", + "duplexify": "3.5.4", + "end-of-stream": "1.4.1", "flush-write-stream": "1.0.2", "from2": "2.3.0", "parallel-transform": "1.1.0", - "pump": "1.0.3", - "pumpify": "1.3.5", + "pump": "2.0.1", + "pumpify": "1.4.0", "stream-each": "1.2.2", "through2": "2.0.3" }, "dependencies": { "end-of-stream": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz", - "integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", "dev": true, "requires": { "once": "1.4.0" @@ -8462,9 +9252,9 @@ } }, "mixin-deep": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.0.tgz", - "integrity": "sha512-dgaCvoh6i1nosAUBKb0l0pfJ78K8+S9fluyIR2YvAeUD/QuMahnFnF3xYty5eYXMjhGSsB0DsW6A0uAZyetoAg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", "dev": true, "requires": { "for-in": "1.0.2", @@ -8532,9 +9322,9 @@ } }, "mozjpeg": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/mozjpeg/-/mozjpeg-4.1.1.tgz", - "integrity": "sha1-hZAwsk9omlPbm0DwFg2JGVuI/VA=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/mozjpeg/-/mozjpeg-5.0.0.tgz", + "integrity": "sha1-uGccSSRWijY94AP/L9OXq4P3UsU=", "dev": true, "requires": { "bin-build": "2.2.0", @@ -8549,13 +9339,13 @@ "dev": true }, "multicast-dns": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.1.tgz", - "integrity": "sha512-uV3/ckdsffHx9IrGQrx613mturMdMqQ06WTq+C09NsStJ9iNG6RcUWgPKs1Rfjy+idZT6tfQoXEusGNnEZhT3w==", + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", "dev": true, "requires": { - "dns-packet": "1.2.2", - "thunky": "0.1.0" + "dns-packet": "1.3.1", + "thunky": "1.0.2" } }, "multicast-dns-service-types": { @@ -8574,28 +9364,29 @@ } }, "nan": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz", - "integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", + "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", "dev": true }, "nanomatch": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.6.tgz", - "integrity": "sha512-WJ6XTCbvWXUFPbi/bDwKcYkCeOGUHzaJj72KbuPqGn78Ba/F5Vu26Zlo6SuMQbCIst1RGKL1zfWBCOGAlbRLAg==", + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", + "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", "dev": true, "requires": { "arr-diff": "4.0.0", "array-unique": "0.3.2", - "define-property": "1.0.0", - "extend-shallow": "2.0.1", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", "fragment-cache": "0.2.1", - "is-odd": "1.0.0", - "kind-of": "5.1.0", + "is-odd": "2.0.0", + "is-windows": "1.0.2", + "kind-of": "6.0.2", "object.pick": "1.3.0", - "regex-not": "1.0.0", - "snapdragon": "0.8.1", - "to-regex": "3.0.1" + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" }, "dependencies": { "arr-diff": { @@ -8610,10 +9401,16 @@ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", "dev": true } } @@ -8639,6 +9436,24 @@ "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", "dev": true }, + "neo-async": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.5.0.tgz", + "integrity": "sha512-nJmSswG4As/MkRq7QZFuH/sf/yuv8ODdMZrY4Bedjp77a5MK4A6s7YbBB64c9u79EBUOfXUXBvArmvzTD0X+6g==", + "dev": true + }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", + "dev": true + }, + "nice-try": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.4.tgz", + "integrity": "sha512-2NpiFHqC87y/zFke0fC0spBXL3bBsoh/p5H1EFhshxjCR5+0g2d6BiXbUFz9v1sAcxsk2htp2eQnNIci2dIYcA==", + "dev": true + }, "no-case": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", @@ -8648,19 +9463,10 @@ "lower-case": "1.1.4" } }, - "node-emoji": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.8.1.tgz", - "integrity": "sha512-+ktMAh1Jwas+TnGodfCfjUbJKoANqPaJFN0z0iqh41eqD8dvguNzcitVSBSVK1pidz0AqGbLKcoVuVLRVZ/aVg==", - "dev": true, - "requires": { - "lodash.toarray": "4.4.0" - } - }, "node-forge": { - "version": "0.6.33", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.6.33.tgz", - "integrity": "sha1-RjgRh59XPUUVWtap9D3ClujoXrw=", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.1.tgz", + "integrity": "sha1-naYR6giYL0uUIGs760zJZl8gwwA=", "dev": true }, "node-gyp": { @@ -8676,7 +9482,7 @@ "mkdirp": "0.5.1", "nopt": "3.0.6", "npmlog": "4.1.2", - "osenv": "0.1.4", + "osenv": "0.1.5", "request": "2.79.0", "rimraf": "2.6.2", "semver": "5.3.0", @@ -8733,7 +9539,7 @@ "console-browserify": "1.1.0", "constants-browserify": "1.0.0", "crypto-browserify": "3.12.0", - "domain-browser": "1.1.7", + "domain-browser": "1.2.0", "events": "1.1.1", "https-browserify": "1.0.0", "os-browserify": "0.3.0", @@ -8741,42 +9547,76 @@ "process": "0.11.10", "punycode": "1.4.1", "querystring-es3": "0.2.1", - "readable-stream": "2.3.3", + "readable-stream": "2.3.5", "stream-browserify": "2.0.1", - "stream-http": "2.7.2", - "string_decoder": "1.0.3", - "timers-browserify": "2.0.4", + "stream-http": "2.8.1", + "string_decoder": "1.1.0", + "timers-browserify": "2.0.6", "tty-browserify": "0.0.0", "url": "0.11.0", "util": "0.10.3", "vm-browserify": "0.0.4" }, "dependencies": { + "base64-js": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.3.tgz", + "integrity": "sha512-MsAhsUW1GxCdgYSO6tAfZrNapmUKk7mWx/k5mFY/A1gBtkaCaNapTg+FExCw1r9yeaZhqx/xPg43xgTFH6KL5w==", + "dev": true + }, + "buffer": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "dev": true, + "requires": { + "base64-js": "1.2.3", + "ieee754": "1.1.8", + "isarray": "1.0.0" + } + }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", "dev": true, "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", "isarray": "1.0.0", - "process-nextick-args": "1.0.7", + "process-nextick-args": "2.0.0", "safe-buffer": "5.1.1", "string_decoder": "1.0.3", "util-deprecate": "1.0.2" + }, + "dependencies": { + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + } } }, "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.0.tgz", + "integrity": "sha512-8zQpRF6juocE69ae7CSPmYEGJe4VCXwP6S6dxUWI7i53Gwv54/ec41fiUA+X7BPGGv7fRSQJjBQVa0gomGaOgg==", "dev": true, "requires": { "safe-buffer": "5.1.1" @@ -8785,34 +9625,21 @@ } }, "node-notifier": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-4.6.1.tgz", - "integrity": "sha1-BW0UJE89zBzq3+aK+c/wxUc6M/M=", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.2.1.tgz", + "integrity": "sha512-MIBs+AAd6dJ2SklbbE8RUDRlIVhU8MaNLh1A9SUZDUHPiZkWLFde6UNwG41yQHZEToHgJMXqyVZ9UcS/ReOVTg==", "dev": true, "requires": { - "cli-usage": "0.1.4", "growly": "1.3.0", - "lodash.clonedeep": "3.0.2", - "minimist": "1.2.0", - "semver": "5.4.1", + "semver": "5.5.0", "shellwords": "0.1.1", "which": "1.3.0" }, "dependencies": { - "lodash.clonedeep": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-3.0.2.tgz", - "integrity": "sha1-oKHkDYKl6on/WxR7hETtY9koJ9s=", - "dev": true, - "requires": { - "lodash._baseclone": "3.3.0", - "lodash._bindcallback": "3.0.1" - } - }, "semver": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", "dev": true } } @@ -8832,10 +9659,10 @@ "in-publish": "2.0.0", "lodash.assign": "4.2.0", "lodash.clonedeep": "4.5.0", - "lodash.mergewith": "4.6.0", + "lodash.mergewith": "4.6.1", "meow": "3.7.0", "mkdirp": "0.5.1", - "nan": "2.8.0", + "nan": "2.10.0", "node-gyp": "3.6.2", "npmlog": "4.1.2", "request": "2.79.0", @@ -8884,7 +9711,7 @@ "dev": true, "requires": { "glob": "7.1.2", - "lodash": "4.17.4", + "lodash": "4.17.5", "minimatch": "3.0.4" } }, @@ -8920,10 +9747,10 @@ "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", "dev": true, "requires": { - "hosted-git-info": "2.5.0", + "hosted-git-info": "2.6.0", "is-builtin-module": "1.0.0", "semver": "4.3.6", - "validate-npm-package-license": "3.0.1" + "validate-npm-package-license": "3.0.3" } }, "normalize-path": { @@ -8961,6 +9788,16 @@ } } }, + "npm-conf": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz", + "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==", + "dev": true, + "requires": { + "config-chain": "1.1.11", + "pify": "3.0.0" + } + }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", @@ -8982,6 +9819,15 @@ "set-blocking": "2.0.0" } }, + "nth-check": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", + "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", + "dev": true, + "requires": { + "boolbase": "1.0.0" + } + }, "num2fraction": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", @@ -9123,6 +9969,16 @@ } } }, + "object.getownpropertydescriptors": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", + "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", + "dev": true, + "requires": { + "define-properties": "1.1.2", + "es-abstract": "1.10.0" + } + }, "object.omit": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", @@ -9150,10 +10006,22 @@ } } }, + "object.values": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.0.4.tgz", + "integrity": "sha1-5STaCbT2b/Bd9FdUbscqyZ8TBpo=", + "dev": true, + "requires": { + "define-properties": "1.1.2", + "es-abstract": "1.10.0", + "function-bind": "1.1.1", + "has": "1.0.1" + } + }, "obuf": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.1.tgz", - "integrity": "sha1-EEEktsYCxnlogaBCVB0220OlJk4=", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", "dev": true }, "on-finished": { @@ -9182,14 +10050,14 @@ }, "onetime": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", "dev": true }, "opn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.1.0.tgz", - "integrity": "sha512-iPNl7SyM8L30Rm1sjGdLLheyHVw5YXVfi3SKWJzBI7efxRwHojfRFjwE/OLM6qp9xJYMgab8WicTU1cPoY+Hpg==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", + "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", "dev": true, "requires": { "is-wsl": "1.1.0" @@ -9278,9 +10146,9 @@ "dev": true }, "osenv": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", - "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", "dev": true, "requires": { "os-homedir": "1.0.2", @@ -9293,12 +10161,38 @@ "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==", "dev": true }, + "p-event": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-event/-/p-event-1.3.0.tgz", + "integrity": "sha1-jmtPT2XHK8W2/ii3XtqHT5akoIU=", + "dev": true, + "requires": { + "p-timeout": "1.2.1" + }, + "dependencies": { + "p-timeout": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz", + "integrity": "sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y=", + "dev": true, + "requires": { + "p-finally": "1.0.0" + } + } + } + }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", "dev": true }, + "p-is-promise": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", + "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=", + "dev": true + }, "p-limit": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", @@ -9323,16 +10217,31 @@ "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", "dev": true }, + "p-map-series": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-map-series/-/p-map-series-1.0.0.tgz", + "integrity": "sha1-v5j+V1cFZYqeE1G++4WuTB8Hvco=", + "dev": true, + "requires": { + "p-reduce": "1.0.0" + } + }, "p-pipe": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/p-pipe/-/p-pipe-1.2.0.tgz", "integrity": "sha1-SxoROZoRUgpneQ7loMHViB1r7+k=", "dev": true }, + "p-reduce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", + "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=", + "dev": true + }, "p-timeout": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz", - "integrity": "sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", + "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", "dev": true, "requires": { "p-finally": "1.0.0" @@ -9358,7 +10267,7 @@ "requires": { "cyclist": "0.2.2", "inherits": "2.0.3", - "readable-stream": "2.3.3" + "readable-stream": "2.3.5" }, "dependencies": { "isarray": { @@ -9367,16 +10276,22 @@ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", "dev": true, "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", "isarray": "1.0.0", - "process-nextick-args": "1.0.7", + "process-nextick-args": "2.0.0", "safe-buffer": "5.1.1", "string_decoder": "1.0.3", "util-deprecate": "1.0.2" @@ -9408,7 +10323,7 @@ "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", "dev": true, "requires": { - "asn1.js": "4.9.2", + "asn1.js": "4.10.1", "browserify-aes": "1.1.1", "create-hash": "1.1.3", "evp_bytestokey": "1.0.3", @@ -9563,7 +10478,7 @@ "create-hmac": "1.1.6", "ripemd160": "2.0.1", "safe-buffer": "5.1.1", - "sha.js": "2.4.9" + "sha.js": "2.4.10" } }, "pend": { @@ -9603,14 +10518,348 @@ } }, "pngquant-bin": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/pngquant-bin/-/pngquant-bin-3.1.1.tgz", - "integrity": "sha1-0STZinWpSH9AwWQLTb/Lsr1aH9E=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pngquant-bin/-/pngquant-bin-4.0.0.tgz", + "integrity": "sha512-jhjMp87bvaUeQOfNaPhSKx3tLCEwRaAycgDpIhMflgFr2+vYhw4ZrcK06eQeYg4OprXPanFljXLl5VuuAP2IHw==", "dev": true, "requires": { - "bin-build": "2.2.0", + "bin-build": "3.0.0", "bin-wrapper": "3.0.2", + "execa": "0.10.0", "logalot": "2.1.0" + }, + "dependencies": { + "bin-build": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bin-build/-/bin-build-3.0.0.tgz", + "integrity": "sha512-jcUOof71/TNAI2uM5uoUaDq2ePcVBQ3R/qhxAz1rX7UfvduAL/RXD3jXzvn8cVcDJdGVkiR1shal3OH0ImpuhA==", + "dev": true, + "requires": { + "decompress": "4.2.0", + "download": "6.2.5", + "execa": "0.7.0", + "p-map-series": "1.0.0", + "tempfile": "2.0.0" + }, + "dependencies": { + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + } + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + } + } + }, + "caw": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/caw/-/caw-2.0.1.tgz", + "integrity": "sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==", + "dev": true, + "requires": { + "get-proxy": "2.1.0", + "isurl": "1.0.0", + "tunnel-agent": "0.6.0", + "url-to-options": "1.0.1" + } + }, + "decompress": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.0.tgz", + "integrity": "sha1-eu3YVCflqS2s/lVnSnxQXpbQH50=", + "dev": true, + "requires": { + "decompress-tar": "4.1.1", + "decompress-tarbz2": "4.1.1", + "decompress-targz": "4.1.1", + "decompress-unzip": "4.0.1", + "graceful-fs": "4.1.11", + "make-dir": "1.2.0", + "pify": "2.3.0", + "strip-dirs": "2.1.0" + } + }, + "decompress-tar": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", + "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==", + "dev": true, + "requires": { + "file-type": "5.2.0", + "is-stream": "1.1.0", + "tar-stream": "1.5.5" + } + }, + "decompress-tarbz2": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz", + "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==", + "dev": true, + "requires": { + "decompress-tar": "4.1.1", + "file-type": "6.2.0", + "is-stream": "1.1.0", + "seek-bzip": "1.0.5", + "unbzip2-stream": "1.2.5" + }, + "dependencies": { + "file-type": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz", + "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==", + "dev": true + } + } + }, + "decompress-targz": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz", + "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==", + "dev": true, + "requires": { + "decompress-tar": "4.1.1", + "file-type": "5.2.0", + "is-stream": "1.1.0" + } + }, + "decompress-unzip": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz", + "integrity": "sha1-3qrM39FK6vhVePczroIQ+bSEj2k=", + "dev": true, + "requires": { + "file-type": "3.9.0", + "get-stream": "2.3.1", + "pify": "2.3.0", + "yauzl": "2.9.1" + }, + "dependencies": { + "file-type": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", + "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=", + "dev": true + } + } + }, + "download": { + "version": "6.2.5", + "resolved": "https://registry.npmjs.org/download/-/download-6.2.5.tgz", + "integrity": "sha512-DpO9K1sXAST8Cpzb7kmEhogJxymyVUd5qz/vCOSyvwtp2Klj2XcDt5YUuasgxka44SxF0q5RriKIwJmQHG2AuA==", + "dev": true, + "requires": { + "caw": "2.0.1", + "content-disposition": "0.5.2", + "decompress": "4.2.0", + "ext-name": "5.0.0", + "file-type": "5.2.0", + "filenamify": "2.0.0", + "get-stream": "3.0.0", + "got": "7.1.0", + "make-dir": "1.2.0", + "p-event": "1.3.0", + "pify": "3.0.0" + }, + "dependencies": { + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "execa": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz", + "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==", + "dev": true, + "requires": { + "cross-spawn": "6.0.5", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "1.0.4", + "path-key": "2.0.1", + "semver": "5.5.0", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + } + } + }, + "file-type": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", + "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=", + "dev": true + }, + "filename-reserved-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", + "integrity": "sha1-q/c9+rc10EVECr/qLZHzieu/oik=", + "dev": true + }, + "filenamify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-2.0.0.tgz", + "integrity": "sha1-vRYiYsC26Uv7zc8Zo7uzdk94VpU=", + "dev": true, + "requires": { + "filename-reserved-regex": "2.0.0", + "strip-outer": "1.0.0", + "trim-repeated": "1.0.0" + } + }, + "get-proxy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/get-proxy/-/get-proxy-2.1.0.tgz", + "integrity": "sha512-zmZIaQTWnNQb4R4fJUEp/FC51eZsc6EkErspy3xtIYStaq8EB/hDIWipxsal+E8rz0qD7f2sL/NA9Xee4RInJw==", + "dev": true, + "requires": { + "npm-conf": "1.1.3" + } + }, + "get-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", + "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", + "dev": true, + "requires": { + "object-assign": "4.1.1", + "pinkie-promise": "2.0.1" + } + }, + "got": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", + "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", + "dev": true, + "requires": { + "decompress-response": "3.3.0", + "duplexer3": "0.1.4", + "get-stream": "3.0.0", + "is-plain-obj": "1.1.0", + "is-retry-allowed": "1.1.0", + "is-stream": "1.1.0", + "isurl": "1.0.0", + "lowercase-keys": "1.0.0", + "p-cancelable": "0.3.0", + "p-timeout": "1.2.1", + "safe-buffer": "5.1.1", + "timed-out": "4.0.1", + "url-parse-lax": "1.0.0", + "url-to-options": "1.0.1" + }, + "dependencies": { + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + } + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "is-natural-number": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", + "integrity": "sha1-q5124dtM7VHjXeDHLr7PCfc0zeg=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "p-timeout": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz", + "integrity": "sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y=", + "dev": true, + "requires": { + "p-finally": "1.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "semver": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "dev": true + }, + "strip-dirs": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", + "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==", + "dev": true, + "requires": { + "is-natural-number": "4.0.1" + } + }, + "timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + } } }, "popper.js": { @@ -9645,54 +10894,43 @@ "dev": true }, "postcss": { - "version": "6.0.16", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.16.tgz", - "integrity": "sha512-m758RWPmSjFH/2MyyG3UOW1fgYbR9rtdzz5UNJnlm7OLtu4B2h9C6gi+bE4qFKghsBRFfZT8NzoQBs6JhLotoA==", + "version": "6.0.19", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.19.tgz", + "integrity": "sha512-f13HRz0HtVwVaEuW6J6cOUCBLFtymhgyLPV7t4QEk2UD3twRI9IluDcQNdzQdBpiixkXj2OmzejhhTbSbDxNTg==", "dev": true, "requires": { - "chalk": "2.3.0", + "chalk": "2.3.2", "source-map": "0.6.1", - "supports-color": "5.1.0" + "supports-color": "5.3.0" }, "dependencies": { "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { "color-convert": "1.9.1" } }, "chalk": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", - "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz", + "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", "dev": true, "requires": { - "ansi-styles": "3.2.0", + "ansi-styles": "3.2.1", "escape-string-regexp": "1.0.5", - "supports-color": "4.5.0" - }, - "dependencies": { - "supports-color": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", - "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", - "dev": true, - "requires": { - "has-flag": "2.0.0" - } - } + "supports-color": "5.3.0" } }, "supports-color": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.1.0.tgz", - "integrity": "sha512-Ry0AwkoKjDpVKK4sV4h6o3UJmNRbjYm2uXhwfj3J56lMVdvnUNqzQVRztOOMGQ++w1K/TjNDFvpJk0F/LoeBCQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz", + "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", "dev": true, "requires": { - "has-flag": "2.0.0" + "has-flag": "3.0.0" } } } @@ -9721,7 +10959,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.4.0", + "js-base64": "2.4.3", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -9767,7 +11005,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.4.0", + "js-base64": "2.4.3", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -9812,7 +11050,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.4.0", + "js-base64": "2.4.3", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -9856,7 +11094,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.4.0", + "js-base64": "2.4.3", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -9900,7 +11138,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.4.0", + "js-base64": "2.4.3", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -9944,7 +11182,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.4.0", + "js-base64": "2.4.3", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -9988,7 +11226,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.4.0", + "js-base64": "2.4.3", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -10033,7 +11271,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.4.0", + "js-base64": "2.4.3", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -10078,7 +11316,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.4.0", + "js-base64": "2.4.3", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -10157,24 +11395,47 @@ } }, "postcss-loader": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-2.0.10.tgz", - "integrity": "sha512-xQaDcEgJ/2JqFY18zpFkik8vyYs7oS5ZRbrjvDqkP97k2wYWfPT4+qA0m4o3pTSCsz0u26PNqs8ZO9FRUWAqrA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-2.1.1.tgz", + "integrity": "sha512-f0J/DWE/hyO9/LH0WHpXkny/ZZ238sSaG3p1SRBtVZnFWUtD7GXIEgHoBg8cnAeRbmEvUxHQptY46zWfwNYj/w==", "dev": true, "requires": { "loader-utils": "1.1.0", - "postcss": "6.0.16", + "postcss": "6.0.19", "postcss-load-config": "1.2.0", - "schema-utils": "0.3.0" - } - }, - "postcss-merge-idents": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz", - "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=", - "dev": true, - "requires": { - "has": "1.0.1", + "schema-utils": "0.4.5" + }, + "dependencies": { + "ajv": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.2.1.tgz", + "integrity": "sha1-KKarxJOiq+D7TIUHrK7bQ/pVBnE=", + "dev": true, + "requires": { + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "schema-utils": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.5.tgz", + "integrity": "sha512-yYrjb9TX2k/J1Y5UNy3KYdZq10xhYcF8nMpAW6o3hy6Q8WSIEf9lJHG/ePnOBfziPM3fvQwfOwa13U/Fh8qTfA==", + "dev": true, + "requires": { + "ajv": "6.2.1", + "ajv-keywords": "3.1.0" + } + } + } + }, + "postcss-merge-idents": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz", + "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=", + "dev": true, + "requires": { + "has": "1.0.1", "postcss": "5.2.18", "postcss-value-parser": "3.3.0" }, @@ -10192,7 +11453,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.4.0", + "js-base64": "2.4.3", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -10236,7 +11497,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.4.0", + "js-base64": "2.4.3", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -10277,8 +11538,8 @@ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "dev": true, "requires": { - "caniuse-db": "1.0.30000787", - "electron-to-chromium": "1.3.30" + "caniuse-db": "1.0.30000815", + "electron-to-chromium": "1.3.39" } }, "has-flag": { @@ -10294,7 +11555,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.4.0", + "js-base64": "2.4.3", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -10352,7 +11613,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.4.0", + "js-base64": "2.4.3", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -10397,7 +11658,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.4.0", + "js-base64": "2.4.3", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -10444,7 +11705,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.4.0", + "js-base64": "2.4.3", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -10491,7 +11752,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.4.0", + "js-base64": "2.4.3", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -10514,12 +11775,12 @@ } }, "postcss-modules-extract-imports": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz", - "integrity": "sha1-thTJcgvmgW6u41+zpfqh26agXds=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.0.tgz", + "integrity": "sha1-ZhQOzs447wa/DT41XWm/WdFB6oU=", "dev": true, "requires": { - "postcss": "6.0.16" + "postcss": "6.0.19" } }, "postcss-modules-local-by-default": { @@ -10529,7 +11790,7 @@ "dev": true, "requires": { "css-selector-tokenizer": "0.7.0", - "postcss": "6.0.16" + "postcss": "6.0.19" } }, "postcss-modules-scope": { @@ -10539,7 +11800,7 @@ "dev": true, "requires": { "css-selector-tokenizer": "0.7.0", - "postcss": "6.0.16" + "postcss": "6.0.19" } }, "postcss-modules-values": { @@ -10549,7 +11810,7 @@ "dev": true, "requires": { "icss-replace-symbols": "1.1.0", - "postcss": "6.0.16" + "postcss": "6.0.19" } }, "postcss-normalize-charset": { @@ -10574,7 +11835,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.4.0", + "js-base64": "2.4.3", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -10621,7 +11882,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.4.0", + "js-base64": "2.4.3", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -10666,7 +11927,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.4.0", + "js-base64": "2.4.3", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -10711,7 +11972,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.4.0", + "js-base64": "2.4.3", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -10755,7 +12016,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.4.0", + "js-base64": "2.4.3", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -10801,7 +12062,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.4.0", + "js-base64": "2.4.3", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -10859,7 +12120,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.4.0", + "js-base64": "2.4.3", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -10905,7 +12166,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.4.0", + "js-base64": "2.4.3", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -10957,7 +12218,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.4.0", + "js-base64": "2.4.3", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -10992,9 +12253,9 @@ "dev": true }, "prettier": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.9.2.tgz", - "integrity": "sha512-piXx9N2WT8hWb7PBbX1glAuJVIkEyUV9F5fMXFINpZ0x3otVOFKKeGmeuiclFJlP/UrgTckyV606VjH2rNK4bw==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.11.1.tgz", + "integrity": "sha512-T/KD65Ot0PB97xTrG8afQ46x3oiVhnfGjGESSI9NWYcG92+OUPZKkwHqGWXH2t9jK1crnQjubECW0FuOth+hxw==", "dev": true }, "pretty-hrtime": { @@ -11027,14 +12288,20 @@ "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", "dev": true }, + "proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", + "dev": true + }, "proxy-addr": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.2.tgz", - "integrity": "sha1-ZXFQT0e7mI7IGAJT+F3X4UlSvew=", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.3.tgz", + "integrity": "sha512-jQTChiCJteusULxjBp8+jftSQE5Obdl3k4cnmLA6WXtK6XFuWRnvVL7aCiBqaLPM8c4ph0S4tKna8XvmIwEnXQ==", "dev": true, "requires": { "forwarded": "0.1.2", - "ipaddr.js": "1.5.2" + "ipaddr.js": "1.6.0" } }, "prr": { @@ -11059,23 +12326,23 @@ "browserify-rsa": "4.0.1", "create-hash": "1.1.3", "parse-asn1": "5.1.0", - "randombytes": "2.0.5" + "randombytes": "2.0.6" } }, "pump": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz", - "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", "dev": true, "requires": { - "end-of-stream": "1.4.0", + "end-of-stream": "1.4.1", "once": "1.3.3" }, "dependencies": { "end-of-stream": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz", - "integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", "dev": true, "requires": { "once": "1.4.0" @@ -11095,14 +12362,14 @@ } }, "pumpify": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.3.5.tgz", - "integrity": "sha1-G2ccYZlAq8rqwK0OOjwWS+dgmTs=", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.4.0.tgz", + "integrity": "sha512-2kmNR9ry+Pf45opRVirpNuIFotsxUGLaYqxIwuR77AYrYRMuFCz9eryHBS52L360O+NcR383CL4QYlMKPq4zYA==", "dev": true, "requires": { - "duplexify": "3.5.1", + "duplexify": "3.5.4", "inherits": "2.0.3", - "pump": "1.0.3" + "pump": "2.0.1" } }, "punycode": { @@ -11201,21 +12468,21 @@ } }, "randombytes": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz", - "integrity": "sha512-8T7Zn1AhMsQ/HI1SjcCfT/t4ii3eAqco3yOcSzS4mozsOz69lHLsoMXmF9nZgnFanYscnSlUSgs8uZyKzpE6kg==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", + "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", "dev": true, "requires": { "safe-buffer": "5.1.1" } }, "randomfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.3.tgz", - "integrity": "sha512-YL6GrhrWoic0Eq8rXVbMptH7dAxCs0J+mh5Y0euNekPPYaxEmdVGim6GdoxoRzKW2yJoU8tueifS7mYxvcFDEQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", "dev": true, "requires": { - "randombytes": "2.0.5", + "randombytes": "2.0.6", "safe-buffer": "5.1.1" } }, @@ -11238,9 +12505,9 @@ } }, "rc": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.2.tgz", - "integrity": "sha1-2M6ctX6NZNnHut2YdsfDTL48cHc=", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.6.tgz", + "integrity": "sha1-6xiYnG1PTxYsOZ953dKfODVWgJI=", "dev": true, "requires": { "deep-extend": "0.4.2", @@ -11256,7 +12523,7 @@ "dev": true, "requires": { "pinkie-promise": "2.0.1", - "readable-stream": "2.3.3" + "readable-stream": "2.3.5" }, "dependencies": { "isarray": { @@ -11265,16 +12532,22 @@ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", "dev": true, "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", "isarray": "1.0.0", - "process-nextick-args": "1.0.7", + "process-nextick-args": "2.0.0", "safe-buffer": "5.1.1", "string_decoder": "1.0.3", "util-deprecate": "1.0.2" @@ -11353,7 +12626,7 @@ "requires": { "graceful-fs": "4.1.11", "minimatch": "3.0.4", - "readable-stream": "2.3.3", + "readable-stream": "2.3.5", "set-immediate-shim": "1.0.1" }, "dependencies": { @@ -11378,16 +12651,22 @@ "brace-expansion": "1.1.8" } }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", "dev": true, "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", "isarray": "1.0.0", - "process-nextick-args": "1.0.7", + "process-nextick-args": "2.0.0", "safe-buffer": "5.1.1", "string_decoder": "1.0.3", "util-deprecate": "1.0.2" @@ -11449,23 +12728,6 @@ "strip-indent": "1.0.1" } }, - "redeyed": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-1.0.1.tgz", - "integrity": "sha1-6WwZO0DAgWsArshCaY5hGF5VSYo=", - "dev": true, - "requires": { - "esprima": "3.0.0" - }, - "dependencies": { - "esprima": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.0.0.tgz", - "integrity": "sha1-U88kes2ncxPlUcOqLnM0LT+099k=", - "dev": true - } - } - }, "reduce-css-calc": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", @@ -11535,18 +12797,19 @@ } }, "regex-not": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.0.tgz", - "integrity": "sha1-Qvg+OXcWIt+CawKvF2Ul1qXxV/k=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", "dev": true, "requires": { - "extend-shallow": "2.0.1" + "extend-shallow": "3.0.2", + "safe-regex": "1.1.0" } }, "regex-parser": { - "version": "2.2.8", - "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.8.tgz", - "integrity": "sha1-2kwM2lqChVkJQWiTD0VfUytv+6w=", + "version": "2.2.9", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.9.tgz", + "integrity": "sha512-VncXxOF6uFlYog5prG2j+e2UGJeam5MfNiJnB/qEgo4KTnMm2XrELCg4rNZ6IlaEUZnGlb8aB6lXowCRQtTkkA==", "dev": true }, "regexpu-core": { @@ -11631,7 +12894,7 @@ "aws-sign2": "0.6.0", "aws4": "1.6.0", "caseless": "0.11.0", - "combined-stream": "1.0.5", + "combined-stream": "1.0.6", "extend": "3.0.1", "forever-agent": "0.6.1", "form-data": "2.1.4", @@ -11641,13 +12904,13 @@ "is-typedarray": "1.0.0", "isstream": "0.1.2", "json-stringify-safe": "5.0.1", - "mime-types": "2.1.17", + "mime-types": "2.1.18", "oauth-sign": "0.8.2", "qs": "6.3.2", "stringstream": "0.0.5", - "tough-cookie": "2.3.3", + "tough-cookie": "2.3.4", "tunnel-agent": "0.4.3", - "uuid": "3.1.0" + "uuid": "3.2.1" } }, "require-directory": { @@ -11715,12 +12978,12 @@ "dev": true }, "resolve-url-loader": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-2.2.1.tgz", - "integrity": "sha512-ywToZt/yttp4qG/SiiGMLAgaGuSaWSujAaf3WCadXehvQLxIgKFmMOSegaoH9Laa70Ayl4kti0zCAqLR48H/Mw==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-2.3.0.tgz", + "integrity": "sha512-RaEUWgF/B6aTg9VKaOv2o6dfm5f75/lGh8S+SQwoMcBm48WkA2nhLR+V7KEawkxXjU4lLB16IVeHCe7F69nyVw==", "dev": true, "requires": { - "adjust-sourcemap-loader": "1.1.0", + "adjust-sourcemap-loader": "1.2.0", "camelcase": "4.1.0", "convert-source-map": "1.5.1", "loader-utils": "1.1.0", @@ -11745,6 +13008,21 @@ } } }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "dev": true, + "requires": { + "lowercase-keys": "1.0.0" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, "rework": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/rework/-/rework-1.0.1.tgz", @@ -11837,6 +13115,15 @@ "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", "dev": true }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "0.1.15" + } + }, "sass-graph": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz", @@ -11844,7 +13131,7 @@ "dev": true, "requires": { "glob": "7.1.2", - "lodash": "4.17.4", + "lodash": "4.17.5", "scss-tokenizer": "0.2.3", "yargs": "7.1.0" }, @@ -11902,15 +13189,15 @@ } }, "sass-loader": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-6.0.6.tgz", - "integrity": "sha512-c3/Zc+iW+qqDip6kXPYLEgsAu2lf4xz0EZDplB7EmSUMda12U1sGJPetH55B/j9eu0bTtKzKlNPWWyYC7wFNyQ==", + "version": "6.0.7", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-6.0.7.tgz", + "integrity": "sha512-JoiyD00Yo1o61OJsoP2s2kb19L1/Y2p3QFcCdWdF6oomBGKVYuZyqHWemRBfQ2uGYsk+CH3eCguXNfpjzlcpaA==", "dev": true, "requires": { - "async": "2.6.0", - "clone-deep": "0.3.0", + "clone-deep": "2.0.2", "loader-utils": "1.1.0", "lodash.tail": "4.1.1", + "neo-async": "2.5.0", "pify": "3.0.0" } }, @@ -11935,7 +13222,7 @@ "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", "dev": true, "requires": { - "js-base64": "2.4.0", + "js-base64": "2.4.3", "source-map": "0.4.4" }, "dependencies": { @@ -11977,12 +13264,12 @@ "dev": true }, "selfsigned": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.1.tgz", - "integrity": "sha1-v4y3uDJWxFUeMTR8YxF3jbme7FI=", + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.2.tgz", + "integrity": "sha1-tESVgNmZKbZbEKSDiTAaZZIIh1g=", "dev": true, "requires": { - "node-forge": "0.6.33" + "node-forge": "0.7.1" } }, "semver": { @@ -12003,27 +13290,27 @@ "integrity": "sha1-V/Qd5pcHpicJp+AQS6IRcQnqR+g=", "dev": true, "requires": { - "semver": "5.4.1" + "semver": "5.5.0" }, "dependencies": { "semver": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", "dev": true } } }, "send": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.1.tgz", - "integrity": "sha512-ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==", + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", + "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", "dev": true, "requires": { "debug": "2.6.9", - "depd": "1.1.1", + "depd": "1.1.2", "destroy": "1.0.4", - "encodeurl": "1.0.1", + "encodeurl": "1.0.2", "escape-html": "1.0.3", "etag": "1.8.1", "fresh": "0.5.2", @@ -12032,7 +13319,7 @@ "ms": "2.0.0", "on-finished": "2.3.0", "range-parser": "1.2.0", - "statuses": "1.3.1" + "statuses": "1.4.0" } }, "sequencify": { @@ -12053,25 +13340,25 @@ "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", "dev": true, "requires": { - "accepts": "1.3.4", + "accepts": "1.3.5", "batch": "0.6.1", "debug": "2.6.9", "escape-html": "1.0.3", "http-errors": "1.6.2", - "mime-types": "2.1.17", + "mime-types": "2.1.18", "parseurl": "1.3.2" } }, "serve-static": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.1.tgz", - "integrity": "sha512-hSMUZrsPa/I09VYFJwa627JJkNs0NrfL1Uzuup+GqHfToR2KcsXFymXSV90hoyw3M+msjFuQly+YzIH/q0MGlQ==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", "dev": true, "requires": { - "encodeurl": "1.0.1", + "encodeurl": "1.0.2", "escape-html": "1.0.3", "parseurl": "1.3.2", - "send": "0.16.1" + "send": "0.16.2" } }, "set-blocking": { @@ -12080,15 +13367,6 @@ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, - "set-getter": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/set-getter/-/set-getter-0.1.0.tgz", - "integrity": "sha1-12nBgsnVpR9AkUXy+6guXoboA3Y=", - "dev": true, - "requires": { - "to-object-path": "0.3.0" - } - }, "set-immediate-shim": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", @@ -12105,6 +13383,17 @@ "is-extendable": "0.1.1", "is-plain-object": "2.0.4", "split-string": "3.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } } }, "setimmediate": { @@ -12120,9 +13409,9 @@ "dev": true }, "sha.js": { - "version": "2.4.9", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.9.tgz", - "integrity": "sha512-G8zektVqbiPHrylgew9Zg1VRB1L/DtXNUVAM6q4QLy8NE3qtHlFXTf8VLL4k1Yl6c7NMjtZUTdXV+X44nFaT6A==", + "version": "2.4.10", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.10.tgz", + "integrity": "sha512-vnwmrFDlOExK4Nm16J2KMWHLrp14lBrjxMxBJpu++EnsuBmpiYaM/MEs46Vxxm/4FvdP5yTwuCTO9it5FSjrqA==", "dev": true, "requires": { "inherits": "2.0.3", @@ -12130,25 +13419,21 @@ } }, "shallow-clone": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-0.1.2.tgz", - "integrity": "sha1-WQnodLp3EG1zrEFM/sH/yofZcGA=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-1.0.0.tgz", + "integrity": "sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA==", "dev": true, "requires": { "is-extendable": "0.1.1", - "kind-of": "2.0.1", - "lazy-cache": "0.2.7", + "kind-of": "5.1.0", "mixin-object": "2.0.1" }, "dependencies": { "kind-of": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz", - "integrity": "sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true } } }, @@ -12192,9 +13477,9 @@ "dev": true }, "snapdragon": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.1.tgz", - "integrity": "sha1-4StUh/re0+PeoKyR6UAL91tAE3A=", + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", "dev": true, "requires": { "base": "0.11.2", @@ -12204,15 +13489,9 @@ "map-cache": "0.2.2", "source-map": "0.5.7", "source-map-resolve": "0.5.1", - "use": "2.0.2" + "use": "3.1.0" }, "dependencies": { - "atob": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.0.3.tgz", - "integrity": "sha1-GcenYEc3dEaPILLS0DNyrX1Mv10=", - "dev": true - }, "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", @@ -12222,6 +13501,15 @@ "is-descriptor": "0.1.6" } }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, "is-accessor-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", @@ -12284,25 +13572,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true - }, - "source-map-resolve": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.1.tgz", - "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==", - "dev": true, - "requires": { - "atob": "2.0.3", - "decode-uri-component": "0.2.0", - "resolve-url": "0.2.1", - "source-map-url": "0.4.0", - "urix": "0.1.0" - } - }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "dev": true } } }, @@ -12317,6 +13586,15 @@ "snapdragon-util": "3.0.1" }, "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", @@ -12350,7 +13628,7 @@ "dev": true, "requires": { "faye-websocket": "0.10.0", - "uuid": "3.1.0" + "uuid": "3.2.1" } }, "sockjs-client": { @@ -12387,6 +13665,15 @@ "is-plain-obj": "1.1.0" } }, + "sort-keys-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz", + "integrity": "sha1-nLb09OnkgVWmqgZx7dM2/xR5oYg=", + "dev": true, + "requires": { + "sort-keys": "1.1.2" + } + }, "source-list-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", @@ -12400,14 +13687,15 @@ "dev": true }, "source-map-resolve": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.3.1.tgz", - "integrity": "sha1-YQ9hIqRFuN1RU1oqcbeD38Ekh2E=", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.1.tgz", + "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==", "dev": true, "requires": { - "atob": "1.1.3", + "atob": "2.0.3", + "decode-uri-component": "0.2.0", "resolve-url": "0.2.1", - "source-map-url": "0.3.0", + "source-map-url": "0.4.0", "urix": "0.1.0" } }, @@ -12429,9 +13717,9 @@ } }, "source-map-url": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.3.0.tgz", - "integrity": "sha1-fsrxO1e80J2opAxdJp2zN5nUqvk=", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", "dev": true }, "sparkles": { @@ -12441,24 +13729,35 @@ "dev": true }, "spdx-correct": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", - "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", + "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", "dev": true, "requires": { - "spdx-license-ids": "1.2.2" + "spdx-expression-parse": "3.0.0", + "spdx-license-ids": "3.0.0" } }, - "spdx-expression-parse": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", - "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", + "spdx-exceptions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", + "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", "dev": true }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "2.1.0", + "spdx-license-ids": "3.0.0" + } + }, "spdx-license-ids": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", - "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", + "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", "dev": true }, "spdy": { @@ -12484,10 +13783,10 @@ "debug": "2.6.9", "detect-node": "2.0.3", "hpack.js": "2.1.6", - "obuf": "1.1.1", - "readable-stream": "2.3.3", + "obuf": "1.1.2", + "readable-stream": "2.3.5", "safe-buffer": "5.1.1", - "wbuf": "1.7.2" + "wbuf": "1.7.3" }, "dependencies": { "isarray": { @@ -12496,16 +13795,22 @@ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", "dev": true, "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", "isarray": "1.0.0", - "process-nextick-args": "1.0.7", + "process-nextick-args": "2.0.0", "safe-buffer": "5.1.1", "string_decoder": "1.0.3", "util-deprecate": "1.0.2" @@ -12529,27 +13834,6 @@ "dev": true, "requires": { "extend-shallow": "3.0.2" - }, - "dependencies": { - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "1.0.0", - "is-extendable": "1.0.1" - } - }, - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "2.0.4" - } - } } }, "sprintf-js": { @@ -12570,9 +13854,9 @@ } }, "sshpk": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", - "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.1.tgz", + "integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=", "dev": true, "requires": { "asn1": "0.2.3", @@ -12594,14 +13878,20 @@ } }, "ssri": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.0.0.tgz", - "integrity": "sha512-728D4yoQcQm1ooZvSbywLkV1RjfITZXh0oWrhM/lnsx3nAHx7LsRGJWB/YyvoceAYRq98xqbstiN4JBv1/wNHg==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz", + "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", "dev": true, "requires": { "safe-buffer": "5.1.1" } }, + "stable": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.6.tgz", + "integrity": "sha1-kQ9dKu17Ugxud3SZwfMuE5/eyxA=", + "dev": true + }, "stackframe": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.0.4.tgz", @@ -12693,9 +13983,9 @@ } }, "statuses": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", - "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", "dev": true }, "stdout-stream": { @@ -12704,7 +13994,7 @@ "integrity": "sha1-osfIWH5U2UJ+qe2zrD8s1SLfN4s=", "dev": true, "requires": { - "readable-stream": "2.3.3" + "readable-stream": "2.3.5" }, "dependencies": { "isarray": { @@ -12713,16 +14003,22 @@ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", "dev": true, "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", "isarray": "1.0.0", - "process-nextick-args": "1.0.7", + "process-nextick-args": "2.0.0", "safe-buffer": "5.1.1", "string_decoder": "1.0.3", "util-deprecate": "1.0.2" @@ -12746,7 +14042,7 @@ "dev": true, "requires": { "inherits": "2.0.3", - "readable-stream": "2.3.3" + "readable-stream": "2.3.5" }, "dependencies": { "isarray": { @@ -12755,16 +14051,22 @@ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", "dev": true, "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", "isarray": "1.0.0", - "process-nextick-args": "1.0.7", + "process-nextick-args": "2.0.0", "safe-buffer": "5.1.1", "string_decoder": "1.0.3", "util-deprecate": "1.0.2" @@ -12788,7 +14090,7 @@ "dev": true, "requires": { "duplexer2": "0.1.4", - "readable-stream": "2.3.3" + "readable-stream": "2.3.5" }, "dependencies": { "duplexer2": { @@ -12797,7 +14099,7 @@ "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", "dev": true, "requires": { - "readable-stream": "2.3.3" + "readable-stream": "2.3.5" } }, "isarray": { @@ -12806,16 +14108,22 @@ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", "dev": true, "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", "isarray": "1.0.0", - "process-nextick-args": "1.0.7", + "process-nextick-args": "2.0.0", "safe-buffer": "5.1.1", "string_decoder": "1.0.3", "util-deprecate": "1.0.2" @@ -12844,14 +14152,14 @@ "integrity": "sha512-mc1dbFhGBxvTM3bIWmAAINbqiuAk9TATcfIQC8P+/+HJefgaiTlMn2dHvkX8qlI12KeYKSQ1Ua9RrIqrn1VPoA==", "dev": true, "requires": { - "end-of-stream": "1.4.0", + "end-of-stream": "1.4.1", "stream-shift": "1.0.0" }, "dependencies": { "end-of-stream": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz", - "integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", "dev": true, "requires": { "once": "1.4.0" @@ -12869,14 +14177,14 @@ } }, "stream-http": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz", - "integrity": "sha512-c0yTD2rbQzXtSsFSVhtpvY/vS6u066PcXOX9kBB3mSO76RiUQzL340uJkGBWnlBg4/HZzqiUXtaVA7wcRcJgEw==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.1.tgz", + "integrity": "sha512-cQ0jo17BLca2r0GfRdZKYAGLU6JRoIWxqSOakUMuKOT6MOK7AAlE856L33QuDmAy/eeOrhLee3dZKX0Uadu93A==", "dev": true, "requires": { "builtin-status-codes": "3.0.0", "inherits": "2.0.3", - "readable-stream": "2.3.3", + "readable-stream": "2.3.5", "to-arraybuffer": "1.0.1", "xtend": "4.0.1" }, @@ -12887,16 +14195,22 @@ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", "dev": true, "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", "isarray": "1.0.0", - "process-nextick-args": "1.0.7", + "process-nextick-args": "2.0.0", "safe-buffer": "5.1.1", "string_decoder": "1.0.3", "util-deprecate": "1.0.2" @@ -13139,15 +14453,15 @@ "dev": true, "requires": { "bl": "1.2.1", - "end-of-stream": "1.4.0", - "readable-stream": "2.3.3", + "end-of-stream": "1.4.1", + "readable-stream": "2.3.5", "xtend": "4.0.1" }, "dependencies": { "end-of-stream": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz", - "integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", "dev": true, "requires": { "once": "1.4.0" @@ -13168,16 +14482,22 @@ "wrappy": "1.0.2" } }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", "dev": true, "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", "isarray": "1.0.0", - "process-nextick-args": "1.0.7", + "process-nextick-args": "2.0.0", "safe-buffer": "5.1.1", "string_decoder": "1.0.3", "util-deprecate": "1.0.2" @@ -13207,7 +14527,7 @@ "dev": true, "requires": { "temp-dir": "1.0.0", - "uuid": "3.1.0" + "uuid": "3.2.1" } }, "through": { @@ -13269,9 +14589,9 @@ } }, "thunky": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-0.1.0.tgz", - "integrity": "sha1-vzAUaCTituZ7Dy16Ssi+smkIaE4=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.0.2.tgz", + "integrity": "sha1-qGLgGOP7HqLsP85dVWBc9X8kc3E=", "dev": true }, "tildify": { @@ -13296,9 +14616,9 @@ "dev": true }, "timers-browserify": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.4.tgz", - "integrity": "sha512-uZYhyU3EX8O7HQP+J9fTVYwsq90Vr68xPEFo7yrVImIxYvHgukBEgOB/SgGoorWVTzGM/3Z+wUNnboA4M8jWrg==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.6.tgz", + "integrity": "sha512-HQ3nbYRAowdVd0ckGFvmJPPCOH/CHleFN/Y0YQCX1DVaB7t+KFvisuyN09fuP8Jtp1CpfSh8O8bMkHbdbPe6Pw==", "dev": true, "requires": { "setimmediate": "1.0.5" @@ -13311,9 +14631,20 @@ "dev": true, "requires": { "extend-shallow": "2.0.1" - } - }, - "to-arraybuffer": { + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "to-arraybuffer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", @@ -13335,82 +14666,15 @@ } }, "to-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.1.tgz", - "integrity": "sha1-FTWL7kosg712N3uh3ASdDxiDeq4=", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", "dev": true, "requires": { - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "regex-not": "1.0.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "0.1.6" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "regex-not": "1.0.2", + "safe-regex": "1.1.0" } }, "to-regex-range": { @@ -13435,9 +14699,9 @@ } }, "tough-cookie": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", - "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", + "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", "dev": true, "requires": { "punycode": "1.4.1" @@ -13508,13 +14772,13 @@ "optional": true }, "type-is": { - "version": "1.6.15", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", - "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=", + "version": "1.6.16", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", + "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", "dev": true, "requires": { "media-typer": "0.3.0", - "mime-types": "2.1.17" + "mime-types": "2.1.18" } }, "typeahead.js": { @@ -13523,7 +14787,7 @@ "integrity": "sha1-TmTmcbIjEKhgb0rsgFkkuoSwFbg=", "dev": true, "requires": { - "jquery": "3.2.1" + "jquery": "3.3.1" } }, "typedarray": { @@ -13588,43 +14852,70 @@ "optional": true }, "uglifyjs-webpack-plugin": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.1.6.tgz", - "integrity": "sha512-VUja+7rYbznEvUaeb8IxOCTUrq4BCb1ml0vffa+mfwKtrAwlqnU0ENF14DtYltV1cxd/HSuK51CCA/D/8kMQVw==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.4.tgz", + "integrity": "sha512-z0IbjpW8b3O/OVn+TTZN4pI29RN1zktFBXLIzzfZ+++cUtZ1ERSlLWgpE/5OERuEUs1ijVQnpYAkSlpoVmQmSQ==", "dev": true, "requires": { - "cacache": "10.0.1", + "cacache": "10.0.4", "find-cache-dir": "1.0.0", - "schema-utils": "0.4.3", + "schema-utils": "0.4.5", "serialize-javascript": "1.4.0", "source-map": "0.6.1", - "uglify-es": "3.3.4", + "uglify-es": "3.3.9", "webpack-sources": "1.1.0", - "worker-farm": "1.5.2" + "worker-farm": "1.6.0" }, "dependencies": { + "ajv": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.2.1.tgz", + "integrity": "sha1-KKarxJOiq+D7TIUHrK7bQ/pVBnE=", + "dev": true, + "requires": { + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "commander": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", + "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", + "dev": true + }, "schema-utils": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.3.tgz", - "integrity": "sha512-sgv/iF/T4/SewJkaVpldKC4WjSkz0JsOh2eKtxCPpCO1oR05+7MOF+H476HVRbLArkgA7j5TRJJ4p2jdFkUGQQ==", + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.5.tgz", + "integrity": "sha512-yYrjb9TX2k/J1Y5UNy3KYdZq10xhYcF8nMpAW6o3hy6Q8WSIEf9lJHG/ePnOBfziPM3fvQwfOwa13U/Fh8qTfA==", "dev": true, "requires": { - "ajv": "5.5.2", - "ajv-keywords": "2.1.1" + "ajv": "6.2.1", + "ajv-keywords": "3.1.0" } }, "uglify-es": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.4.tgz", - "integrity": "sha512-vDOyDaf7LcABZI5oJt8bin5FD8kYONux5jd8FY6SsV2SfD+MMXaPeGUotysbycSxdu170y5IQ8FvlKzU/TUryw==", + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", + "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", "dev": true, "requires": { - "commander": "2.12.2", + "commander": "2.13.0", "source-map": "0.6.1" } } } }, + "unbzip2-stream": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.2.5.tgz", + "integrity": "sha512-izD3jxT8xkzwtXRUZjtmRwKnZoeECrfZ8ra/ketwOcusbZEp4mjULMnJOCfTDZBgGQAAY1AJ/IgxcwkavcX9Og==", + "dev": true, + "requires": { + "buffer": "3.6.0", + "through": "2.3.8" + } + }, "unc-path-regex": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", @@ -13643,6 +14934,15 @@ "set-value": "0.4.3" }, "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, "set-value": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", @@ -13714,6 +15014,12 @@ "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", "dev": true }, + "unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", + "dev": true + }, "unset-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", @@ -13772,6 +15078,12 @@ "integrity": "sha1-uYTwh3/AqJwsdzzB73tbIytbBv4=", "dev": true }, + "upath": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.0.4.tgz", + "integrity": "sha512-d4SJySNBXDaQp+DPrziv3xGS6w3d2Xt69FijJr86zMPBy23JEloMCEOUBBzuN7xCtjLCnmB9tI/z7SBCahHBOw==", + "dev": true + }, "upper-case": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", @@ -13845,96 +15157,19 @@ "dev": true }, "use": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/use/-/use-2.0.2.tgz", - "integrity": "sha1-riig1y+TvyJCKhii43mZMRLeyOg=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", + "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==", "dev": true, "requires": { - "define-property": "0.2.5", - "isobject": "3.0.1", - "lazy-cache": "2.0.2" + "kind-of": "6.0.2" }, "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "0.1.6" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", "dev": true - }, - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "dev": true, - "requires": { - "set-getter": "0.1.0" - } } } }, @@ -13967,6 +15202,16 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, + "util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "dev": true, + "requires": { + "define-properties": "1.1.2", + "object.getownpropertydescriptors": "2.0.3" + } + }, "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", @@ -13974,9 +15219,9 @@ "dev": true }, "uuid": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", - "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", + "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==", "dev": true }, "v8flags": { @@ -13995,13 +15240,13 @@ "dev": true }, "validate-npm-package-license": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", - "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", + "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", "dev": true, "requires": { - "spdx-correct": "1.0.2", - "spdx-expression-parse": "1.0.4" + "spdx-correct": "3.0.0", + "spdx-expression-parse": "3.0.0" } }, "vary": { @@ -14011,9 +15256,9 @@ "dev": true }, "velocity-animate": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/velocity-animate/-/velocity-animate-1.5.0.tgz", - "integrity": "sha1-/Idx2N/hE2/wKnB+EPuwlXxLAw8=", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/velocity-animate/-/velocity-animate-1.5.1.tgz", + "integrity": "sha512-VJ3csMz5zP1ifkbBlsNYpxnoWkPHfVRQ8tUongS78W5DxSGHB68pjYHDTgUYBkVM7P/HpYdVukgVUFcxjr1gGg==", "dev": true }, "vendors": { @@ -14059,7 +15304,7 @@ "dev": true, "requires": { "object-assign": "4.1.1", - "readable-stream": "2.3.3" + "readable-stream": "2.3.5" }, "dependencies": { "isarray": { @@ -14074,16 +15319,22 @@ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", "dev": true, "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", "isarray": "1.0.0", - "process-nextick-args": "1.0.7", + "process-nextick-args": "2.0.0", "safe-buffer": "5.1.1", "string_decoder": "1.0.3", "util-deprecate": "1.0.2" @@ -14166,9 +15417,15 @@ } }, "vue": { - "version": "2.5.13", - "resolved": "https://registry.npmjs.org/vue/-/vue-2.5.13.tgz", - "integrity": "sha512-3D+lY7HTkKbtswDM4BBHgqyq+qo8IAEE8lz8va1dz3LLmttjgo0FxairO4r1iN2OBqk8o1FyL4hvzzTFEdQSEw==", + "version": "2.5.16", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.5.16.tgz", + "integrity": "sha512-/ffmsiVuPC8PsWcFkZngdpas19ABm5mh2wA7iDqcltyCTwlgZjHGeJYOXkBMo422iPwIcviOtrTCUpSfXmToLQ==", + "dev": true + }, + "vue-checkbox-radio": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/vue-checkbox-radio/-/vue-checkbox-radio-0.6.0.tgz", + "integrity": "sha512-qaXzRR9Mji5onbYPvxXbXdCSHkJmauMirCWnHYG4uNLy7xXNoSBJOtetMnuE2KkVL6DbLycFe/uCLmx7LrXoNg==", "dev": true }, "vue-directive-tooltip": { @@ -14181,84 +15438,114 @@ } }, "vue-hot-reload-api": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.2.4.tgz", - "integrity": "sha512-e+ThJMYmZg4D9UnrLcr6LQxGu6YlcxkrmZGPCyIN4malcNhdeGGKxmFuM5y6ICMJJxQywLfT8MM1rYZr4LpeLw==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.0.tgz", + "integrity": "sha512-2j/t+wIbyVMP5NvctQoSUvLkYKoWAAk2QlQiilrM2a6/ulzFgdcLUJfTvs4XQ/3eZhHiBmmEojbjmM4AzZj8JA==", + "dev": true + }, + "vue-i18n": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-7.6.0.tgz", + "integrity": "sha512-IqyGj4nOFrGopCCpRucfMPJSgp5WauuI8HTaAQc7XIpHT7iOH4flndy1g09FiUzidi0lRVKJME+S7sPJny/t/A==", + "dev": true + }, + "vue-js-toggle-button": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/vue-js-toggle-button/-/vue-js-toggle-button-1.2.2.tgz", + "integrity": "sha512-+I1ZtI8c4WB/ufeyF39mt6Qrx78SMdsEYtn5YVKSVsFSTcEYZCMgHS1UW9TwvbXqQ50Hs4nB05/+TukXNVi3FQ==", "dev": true }, "vue-loader": { - "version": "13.6.2", - "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-13.6.2.tgz", - "integrity": "sha512-6Ya+XLa07FI98izNLXgUpn09b1jrE+kjxqdmYWlCRE79xiOAGEQ6OchMy9aIEO9WtNGjUGvJMpPIoR+B9TnaRw==", + "version": "13.7.1", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-13.7.1.tgz", + "integrity": "sha512-v6PbKMGl/hWHGPxB2uGHsA66vusrXF66J/h1QiFXtU6z5zVSK8jq5xl95M1p3QNXmuEJKNP3nxoXfbgQNs7hJg==", "dev": true, "requires": { "consolidate": "0.14.5", "hash-sum": "1.0.2", "loader-utils": "1.1.0", "lru-cache": "4.1.1", - "postcss": "6.0.16", + "postcss": "6.0.19", "postcss-load-config": "1.2.0", "postcss-selector-parser": "2.2.3", - "prettier": "1.9.2", + "prettier": "1.11.1", "resolve": "1.5.0", "source-map": "0.6.1", - "vue-hot-reload-api": "2.2.4", - "vue-style-loader": "3.0.3", + "vue-hot-reload-api": "2.3.0", + "vue-style-loader": "3.1.2", "vue-template-es2015-compiler": "1.6.0" } }, "vue-notification": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/vue-notification/-/vue-notification-1.3.4.tgz", - "integrity": "sha512-d9AJikJPYsigRrxPBdz5IpIlbms4evk5C4rijr0D8Ebr+onRCFYKuVWCePS57cdpChrTUIniDN8wPMSK2UfNdg==", + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/vue-notification/-/vue-notification-1.3.6.tgz", + "integrity": "sha512-K4P0CmDQmfXHxrUwAHVIufMx4SaTaeuAVmvpGix78TmhMNLeI46CIFhW3wZ8Nr5P7A3pkQM1ZBt2kE39lsGqUQ==", "dev": true, "requires": { - "velocity-animate": "1.5.0" + "velocity-animate": "1.5.1" } }, "vue-resource": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/vue-resource/-/vue-resource-1.3.5.tgz", - "integrity": "sha512-m9UC5q0Mcd6MphEVVPCeC609XrsWHatmT39UKhE3oQz1GojnjbyReU1ggX9uQqM6FB81XXFX/GU28yMHJ69O7w==", + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/vue-resource/-/vue-resource-1.3.6.tgz", + "integrity": "sha512-VEpW5RvXRM/DAAveq+eSyB7qQBxaYfFqci3r+u62bJkp+WYAs7qMyVXo8lKOhx0D2KB/DGrNiqTqGKd7L/XR5A==", "dev": true, "requires": { - "got": "7.1.0" + "got": "8.0.3" }, "dependencies": { "got": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", - "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/got/-/got-8.0.3.tgz", + "integrity": "sha512-U9GopEw0RLE8c3rbMmQ5/LtM2pLMopRxV7cVh6pNcX6ITLsH/iweqEn6GqoFxoGJHRbNZFvpFJ/knc+RITL6lg==", "dev": true, "requires": { + "@sindresorhus/is": "0.7.0", + "cacheable-request": "2.1.4", "decompress-response": "3.3.0", "duplexer3": "0.1.4", "get-stream": "3.0.0", - "is-plain-obj": "1.1.0", + "into-stream": "3.1.0", "is-retry-allowed": "1.1.0", - "is-stream": "1.1.0", "isurl": "1.0.0", "lowercase-keys": "1.0.0", + "mimic-response": "1.0.0", "p-cancelable": "0.3.0", - "p-timeout": "1.2.1", + "p-timeout": "2.0.1", + "pify": "3.0.0", "safe-buffer": "5.1.1", "timed-out": "4.0.1", - "url-parse-lax": "1.0.0", + "url-parse-lax": "3.0.0", "url-to-options": "1.0.1" } }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "dev": true + }, "timed-out": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", "dev": true + }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "dev": true, + "requires": { + "prepend-http": "2.0.0" + } } } }, "vue-style-loader": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-3.0.3.tgz", - "integrity": "sha512-P/ihpaZKU23T1kq3E0y4c+F8sbm1HQO69EFYoLoGMSGVAHroHsGir/WQ9qUavP8dyFYHmXenzHaJ/nqd8vfaxw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-3.1.2.tgz", + "integrity": "sha512-ICtVdK/p+qXWpdSs2alWtsXt9YnDoYjQe0w5616j9+/EhjoxZkbun34uWgsMFnC1MhrMMwaWiImz3K2jK1Yp2Q==", "dev": true, "requires": { "hash-sum": "1.0.2", @@ -14266,9 +15553,9 @@ } }, "vue-template-compiler": { - "version": "2.5.13", - "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.5.13.tgz", - "integrity": "sha512-15HWSgIxrGUcV0v7QRen2Y3fQsbgxXwMvjT/5XKMO0ANmaCcNh7y2OeIDTAuSGeosjb9+E1Pn2PHZ61VQWEgBQ==", + "version": "2.5.16", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.5.16.tgz", + "integrity": "sha512-ZbuhCcF/hTYmldoUOVcu2fcbeSAZnfzwDskGduOrnjBiIWHgELAd+R8nAtX80aZkceWDKGQ6N9/0/EUpt+l22A==", "dev": true, "requires": { "de-indent": "1.0.2", @@ -14281,6 +15568,12 @@ "integrity": "sha512-x3LV3wdmmERhVCYy3quqA57NJW7F3i6faas++pJQWtknWT+n7k30F4TVdHvCLn48peTJFRvCpxs3UuFPqgeELg==", "dev": true }, + "vuejs-datepicker": { + "version": "0.9.25", + "resolved": "https://registry.npmjs.org/vuejs-datepicker/-/vuejs-datepicker-0.9.25.tgz", + "integrity": "sha512-+Vldt5bl2/7tW8ScQm7eE9wVIOq7eNSGupRNLP8ej9vTR3wWz9i8fwJjWgxZ3HyGrUo4J5ki1hAzyY9cdxccoQ==", + "dev": true + }, "ware": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/ware/-/ware-1.3.0.tgz", @@ -14291,14 +15584,14 @@ } }, "watchpack": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.4.0.tgz", - "integrity": "sha1-ShRyvLuVK9Cpu0A2gB+VTfs5+qw=", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.5.0.tgz", + "integrity": "sha512-RSlipNQB1u48cq0wH/BNfCu1tD/cJ8ydFIkNYhp9o+3d+8unClkIovpW5qpFPgmL9OE48wfAnlZydXByWP82AA==", "dev": true, "requires": { - "async": "2.6.0", - "chokidar": "1.7.0", - "graceful-fs": "4.1.11" + "chokidar": "2.0.2", + "graceful-fs": "4.1.11", + "neo-async": "2.5.0" }, "dependencies": { "graceful-fs": { @@ -14310,24 +15603,24 @@ } }, "wbuf": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.2.tgz", - "integrity": "sha1-1pe5nx9ZUS3ydRvkJ2nBWAtYAf4=", + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", "dev": true, "requires": { "minimalistic-assert": "1.0.0" } }, "webpack": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.10.0.tgz", - "integrity": "sha512-fxxKXoicjdXNUMY7LIdY89tkJJJ0m1Oo8PQutZ5rLgWbV5QVKI15Cn7+/IHnRTd3vfKfiwBx6SBqlorAuNA8LA==", + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.11.0.tgz", + "integrity": "sha512-3kOFejWqj5ISpJk4Qj/V7w98h9Vl52wak3CLiw/cDOfbVTq7FeoZ0SdoHHY9PYlHr50ZS42OfvzE2vB4nncKQg==", "dev": true, "requires": { - "acorn": "5.3.0", + "acorn": "5.5.3", "acorn-dynamic-import": "2.0.2", - "ajv": "5.5.2", - "ajv-keywords": "2.1.1", + "ajv": "6.2.1", + "ajv-keywords": "3.1.0", "async": "2.6.0", "enhanced-resolve": "3.4.1", "escope": "3.6.0", @@ -14343,14 +15636,31 @@ "supports-color": "4.5.0", "tapable": "0.2.8", "uglifyjs-webpack-plugin": "0.4.6", - "watchpack": "1.4.0", + "watchpack": "1.5.0", "webpack-sources": "1.1.0", "yargs": "8.0.2" }, "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "ajv": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.2.1.tgz", + "integrity": "sha1-KKarxJOiq+D7TIUHrK7bQ/pVBnE=", + "dev": true, + "requires": { + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, @@ -14410,112 +15720,46 @@ } }, "webpack-dev-server": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-2.10.0.tgz", - "integrity": "sha512-mFq5S5Sg6nbiGXry+nRlaUoaCcl0IH/LVP60kwwJKBT/8IcwK/ZKduOSBK8bsLwRBh1yFoUYJMKfCo6oeP07+g==", + "version": "2.11.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-2.11.2.tgz", + "integrity": "sha512-zrPoX97bx47vZiAXfDrkw8pe9QjJ+lunQl3dypojyWwWr1M5I2h0VSrMPfTjopHQPRNn+NqfjcMmhoLcUJe2gA==", "dev": true, "requires": { "ansi-html": "0.0.7", "array-includes": "3.0.3", "bonjour": "3.5.0", - "chokidar": "2.0.0", - "compression": "1.7.1", + "chokidar": "2.0.2", + "compression": "1.7.2", "connect-history-api-fallback": "1.5.0", "debug": "3.1.0", "del": "3.0.0", - "express": "4.16.2", + "express": "4.16.3", "html-entities": "1.2.1", "http-proxy-middleware": "0.17.4", "import-local": "1.0.0", "internal-ip": "1.2.0", "ip": "1.1.5", "killable": "1.0.0", - "loglevel": "1.6.0", - "opn": "5.1.0", + "loglevel": "1.6.1", + "opn": "5.3.0", "portfinder": "1.0.13", - "selfsigned": "1.10.1", + "selfsigned": "1.10.2", "serve-index": "1.9.1", "sockjs": "0.3.19", "sockjs-client": "1.1.4", "spdy": "3.4.7", - "strip-ansi": "4.0.0", - "supports-color": "5.1.0", + "strip-ansi": "3.0.1", + "supports-color": "5.3.0", "webpack-dev-middleware": "1.12.2", - "yargs": "10.0.3" + "yargs": "6.6.0" }, "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "3.1.4", - "normalize-path": "2.1.1" - } - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "braces": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.0.tgz", - "integrity": "sha512-P4O8UQRdGiMLWSizsApmXVQDBS6KCt7dSexgLKBmH5Hr1CZq7vsnscFh8oR1sP1ab1Zj0uCHCEzZeV6SfUf3rA==", - "dev": true, - "requires": { - "arr-flatten": "1.1.0", - "array-unique": "0.3.2", - "define-property": "1.0.0", - "extend-shallow": "2.0.1", - "fill-range": "4.0.0", - "isobject": "3.0.1", - "repeat-element": "1.1.2", - "snapdragon": "0.8.1", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.1" - } - }, "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", "dev": true }, - "chokidar": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.0.tgz", - "integrity": "sha512-OgXCNv2U6TnG04D3tth0gsvdbV4zdbxFG3sYUqcoQMoEFVd1j1pZR6TZ8iknC45o9IJ6PeQI/J6wT/+cHcniAw==", - "dev": true, - "requires": { - "anymatch": "2.0.0", - "async-each": "1.0.1", - "braces": "2.3.0", - "fsevents": "1.1.3", - "glob-parent": "3.1.0", - "inherits": "2.0.3", - "is-binary-path": "1.0.1", - "is-glob": "4.0.0", - "normalize-path": "2.1.1", - "path-is-absolute": "1.0.1", - "readdirp": "2.1.0" - } - }, "debug": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", @@ -14525,315 +15769,63 @@ "ms": "2.0.0" } }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.0", - "snapdragon": "0.8.1", - "to-regex": "3.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "0.1.6" - } - } - } - }, - "extglob": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.3.tgz", - "integrity": "sha512-AyptZexgu7qppEPq59DtN/XJGZDrLcVxSHai+4hdgMMS9EpF4GBvygcWWApno8lL9qSjVpYt7Raao28qzJX1ww==", - "dev": true, - "requires": { - "array-unique": "0.3.2", - "define-property": "1.0.0", - "expand-brackets": "2.1.4", - "extend-shallow": "2.0.1", - "fragment-cache": "0.2.1", - "regex-not": "1.0.0", - "snapdragon": "0.8.1", - "to-regex": "3.0.1" - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "2.0.1", - "is-number": "3.0.0", - "repeat-string": "1.6.1", - "to-regex-range": "2.1.1" - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "3.1.0", - "path-dirname": "1.0.2" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "2.1.1" - } - } - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "is-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", - "dev": true, - "requires": { - "is-extglob": "2.1.1" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - }, - "micromatch": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.4.tgz", - "integrity": "sha512-kFRtviKYoAJT+t7HggMl0tBFGNAKLw/S7N+CO9qfEQyisob1Oy4pao+geRbkyeEd+V9aOkvZ4mhuyPvI/q9Sfg==", - "dev": true, - "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "braces": "2.3.0", - "define-property": "1.0.0", - "extend-shallow": "2.0.1", - "extglob": "2.0.3", - "fragment-cache": "0.2.1", - "kind-of": "6.0.2", - "nanomatch": "1.2.6", - "object.pick": "1.3.0", - "regex-not": "1.0.0", - "snapdragon": "0.8.1", - "to-regex": "3.0.1" - } - }, - "os-locale": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", - "dev": true, - "requires": { - "execa": "0.7.0", - "lcid": "1.0.0", - "mem": "1.1.0" - } - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "3.0.0" - } - }, "supports-color": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.1.0.tgz", - "integrity": "sha512-Ry0AwkoKjDpVKK4sV4h6o3UJmNRbjYm2uXhwfj3J56lMVdvnUNqzQVRztOOMGQ++w1K/TjNDFvpJk0F/LoeBCQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz", + "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", "dev": true, "requires": { - "has-flag": "2.0.0" + "has-flag": "3.0.0" } }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, "yargs": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.0.3.tgz", - "integrity": "sha512-DqBpQ8NAUX4GyPP/ijDGHsJya4tYqLQrjPr95HNsr1YwL3+daCfvBwg7+gIC6IdJhR2kATh3hb61vjzMWEtjdw==", + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", + "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", "dev": true, "requires": { + "camelcase": "3.0.0", "cliui": "3.2.0", "decamelize": "1.2.0", - "find-up": "2.1.0", "get-caller-file": "1.0.2", - "os-locale": "2.1.0", + "os-locale": "1.4.0", + "read-pkg-up": "1.0.1", "require-directory": "2.1.1", "require-main-filename": "1.0.1", "set-blocking": "2.0.0", - "string-width": "2.1.1", - "which-module": "2.0.0", + "string-width": "1.0.2", + "which-module": "1.0.0", "y18n": "3.2.1", - "yargs-parser": "8.1.0" + "yargs-parser": "4.2.1" } }, "yargs-parser": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz", - "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", + "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", "dev": true, "requires": { - "camelcase": "4.1.0" + "camelcase": "3.0.0" } } } }, "webpack-merge": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.1.1.tgz", - "integrity": "sha512-geQsZ86YkXOVOjvPC5yv3JSNnL6/X3Kzh935AQ/gJNEYXEfJDQFu/sdFuktS9OW2JcH/SJec8TGfRdrpHshH7A==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.1.2.tgz", + "integrity": "sha512-/0QYwW/H1N/CdXYA2PNPVbsxO3u2Fpz34vs72xm03SRfg6bMNGfMJIQEpQjKRvkG2JvT6oRJFpDtSrwbX8Jzvw==", "dev": true, "requires": { - "lodash": "4.17.4" + "lodash": "4.17.5" } }, "webpack-notifier": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/webpack-notifier/-/webpack-notifier-1.5.0.tgz", - "integrity": "sha1-wBAAfUSM68NN78mezyiPpejGuvY=", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/webpack-notifier/-/webpack-notifier-1.6.0.tgz", + "integrity": "sha1-/6yOVf+MRpdSuMG7sBGhbxCYbgI=", "dev": true, "requires": { - "node-notifier": "4.6.1", + "node-notifier": "5.2.1", "object-assign": "4.1.1", "strip-ansi": "3.0.1" }, @@ -14862,7 +15854,7 @@ "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", "dev": true, "requires": { - "http-parser-js": "0.4.9", + "http-parser-js": "0.4.11", "websocket-extensions": "0.1.3" } }, @@ -14915,13 +15907,12 @@ "dev": true }, "worker-farm": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.5.2.tgz", - "integrity": "sha512-XxiQ9kZN5n6mmnW+mFJ+wXjNNI/Nx4DIdaAKLX1Bn6LYBWlN/zaBhu34DQYPZ1AJobQuu67S2OfDdNSVULvXkQ==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz", + "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==", "dev": true, "requires": { - "errno": "0.1.6", - "xtend": "4.0.1" + "errno": "0.1.7" } }, "wrap-ansi": { diff --git a/package.json b/package.json index ad401580f0c..ef37651ff06 100644 --- a/package.json +++ b/package.json @@ -10,25 +10,29 @@ "production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js" }, "devDependencies": { - "animate.css": "^3.5.2", - "axios": "^0.17.1", + "animate.css": "^3.6.1", + "axios": "^0.18.0", "bootstrap": "4.0.0-alpha.2", "cross-env": "^5.1.3", "font-awesome": "^4.7.0", "gulp": "^3.9.1", "hint.css": "^2.3.2", "jQuery-Tags-Input": "git://github.com/xoxco/jQuery-Tags-Input.git#v1.3.6", - "jquery": "^3.2.1", - "laravel-mix": "^1.7.2", + "jquery": "^3.3.1", + "laravel-mix": "^2.1.7", "list.js": "^1.5.0", - "lodash": "^4.16.2", - "marked": "^0.3.9", + "lodash": "^4.17.5", + "marked": "^0.3.12", "tachyons": "^4.9.1", "typeahead.js": "^0.11.1", - "vue": "^2.5.13", + "vue": "^2.5.16", + "vue-checkbox-radio": "^0.6.0", "vue-directive-tooltip": "^1.4.2", - "vue-notification": "^1.3.4", - "vue-resource": "^1.3.5" + "vue-i18n": "^7.6.0", + "vue-js-toggle-button": "^1.2.2", + "vue-notification": "^1.3.6", + "vue-resource": "^1.3.6", + "vuejs-datepicker": "^0.9.25" }, "dependencies": { "sweet-modal-vue": "^2.0.0" diff --git a/phpunit.xml b/phpunit.xml index 4ff2bfd88b4..36510a4efac 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -38,16 +38,13 @@ - - - - + - + diff --git a/phpunitpostgres.xml b/phpunitpostgres.xml new file mode 100644 index 00000000000..9f84e3ba353 --- /dev/null +++ b/phpunitpostgres.xml @@ -0,0 +1,50 @@ + + + + + ./tests/Unit + + + + ./tests/Helper + + + + ./tests/Feature + + + + ./tests/Api + + + + + ./app + + ./app/Http/routes.php + + + + + + + + + + + + + + + + + diff --git a/public/css/app.css b/public/css/app.css index 67096506f99..ca911956cee 100644 --- a/public/css/app.css +++ b/public/css/app.css @@ -11,5 +11,5 @@ /*! * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */@font-face{font-family:FontAwesome;src:url(/fonts/vendor/font-awesome/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713);src:url(/fonts/vendor/font-awesome/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713) format("embedded-opentype"),url(/fonts/vendor/font-awesome/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(/fonts/vendor/font-awesome/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(/fonts/vendor/font-awesome/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(/fonts/vendor/font-awesome/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde) format("svg");font-weight:400;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scaleY(-1);transform:scaleY(-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\F000"}.fa-music:before{content:"\F001"}.fa-search:before{content:"\F002"}.fa-envelope-o:before{content:"\F003"}.fa-heart:before{content:"\F004"}.fa-star:before{content:"\F005"}.fa-star-o:before{content:"\F006"}.fa-user:before{content:"\F007"}.fa-film:before{content:"\F008"}.fa-th-large:before{content:"\F009"}.fa-th:before{content:"\F00A"}.fa-th-list:before{content:"\F00B"}.fa-check:before{content:"\F00C"}.fa-close:before,.fa-remove:before,.fa-times:before{content:"\F00D"}.fa-search-plus:before{content:"\F00E"}.fa-search-minus:before{content:"\F010"}.fa-power-off:before{content:"\F011"}.fa-signal:before{content:"\F012"}.fa-cog:before,.fa-gear:before{content:"\F013"}.fa-trash-o:before{content:"\F014"}.fa-home:before{content:"\F015"}.fa-file-o:before{content:"\F016"}.fa-clock-o:before{content:"\F017"}.fa-road:before{content:"\F018"}.fa-download:before{content:"\F019"}.fa-arrow-circle-o-down:before{content:"\F01A"}.fa-arrow-circle-o-up:before{content:"\F01B"}.fa-inbox:before{content:"\F01C"}.fa-play-circle-o:before{content:"\F01D"}.fa-repeat:before,.fa-rotate-right:before{content:"\F01E"}.fa-refresh:before{content:"\F021"}.fa-list-alt:before{content:"\F022"}.fa-lock:before{content:"\F023"}.fa-flag:before{content:"\F024"}.fa-headphones:before{content:"\F025"}.fa-volume-off:before{content:"\F026"}.fa-volume-down:before{content:"\F027"}.fa-volume-up:before{content:"\F028"}.fa-qrcode:before{content:"\F029"}.fa-barcode:before{content:"\F02A"}.fa-tag:before{content:"\F02B"}.fa-tags:before{content:"\F02C"}.fa-book:before{content:"\F02D"}.fa-bookmark:before{content:"\F02E"}.fa-print:before{content:"\F02F"}.fa-camera:before{content:"\F030"}.fa-font:before{content:"\F031"}.fa-bold:before{content:"\F032"}.fa-italic:before{content:"\F033"}.fa-text-height:before{content:"\F034"}.fa-text-width:before{content:"\F035"}.fa-align-left:before{content:"\F036"}.fa-align-center:before{content:"\F037"}.fa-align-right:before{content:"\F038"}.fa-align-justify:before{content:"\F039"}.fa-list:before{content:"\F03A"}.fa-dedent:before,.fa-outdent:before{content:"\F03B"}.fa-indent:before{content:"\F03C"}.fa-video-camera:before{content:"\F03D"}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:"\F03E"}.fa-pencil:before{content:"\F040"}.fa-map-marker:before{content:"\F041"}.fa-adjust:before{content:"\F042"}.fa-tint:before{content:"\F043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\F044"}.fa-share-square-o:before{content:"\F045"}.fa-check-square-o:before{content:"\F046"}.fa-arrows:before{content:"\F047"}.fa-step-backward:before{content:"\F048"}.fa-fast-backward:before{content:"\F049"}.fa-backward:before{content:"\F04A"}.fa-play:before{content:"\F04B"}.fa-pause:before{content:"\F04C"}.fa-stop:before{content:"\F04D"}.fa-forward:before{content:"\F04E"}.fa-fast-forward:before{content:"\F050"}.fa-step-forward:before{content:"\F051"}.fa-eject:before{content:"\F052"}.fa-chevron-left:before{content:"\F053"}.fa-chevron-right:before{content:"\F054"}.fa-plus-circle:before{content:"\F055"}.fa-minus-circle:before{content:"\F056"}.fa-times-circle:before{content:"\F057"}.fa-check-circle:before{content:"\F058"}.fa-question-circle:before{content:"\F059"}.fa-info-circle:before{content:"\F05A"}.fa-crosshairs:before{content:"\F05B"}.fa-times-circle-o:before{content:"\F05C"}.fa-check-circle-o:before{content:"\F05D"}.fa-ban:before{content:"\F05E"}.fa-arrow-left:before{content:"\F060"}.fa-arrow-right:before{content:"\F061"}.fa-arrow-up:before{content:"\F062"}.fa-arrow-down:before{content:"\F063"}.fa-mail-forward:before,.fa-share:before{content:"\F064"}.fa-expand:before{content:"\F065"}.fa-compress:before{content:"\F066"}.fa-plus:before{content:"\F067"}.fa-minus:before{content:"\F068"}.fa-asterisk:before{content:"\F069"}.fa-exclamation-circle:before{content:"\F06A"}.fa-gift:before{content:"\F06B"}.fa-leaf:before{content:"\F06C"}.fa-fire:before{content:"\F06D"}.fa-eye:before{content:"\F06E"}.fa-eye-slash:before{content:"\F070"}.fa-exclamation-triangle:before,.fa-warning:before{content:"\F071"}.fa-plane:before{content:"\F072"}.fa-calendar:before{content:"\F073"}.fa-random:before{content:"\F074"}.fa-comment:before{content:"\F075"}.fa-magnet:before{content:"\F076"}.fa-chevron-up:before{content:"\F077"}.fa-chevron-down:before{content:"\F078"}.fa-retweet:before{content:"\F079"}.fa-shopping-cart:before{content:"\F07A"}.fa-folder:before{content:"\F07B"}.fa-folder-open:before{content:"\F07C"}.fa-arrows-v:before{content:"\F07D"}.fa-arrows-h:before{content:"\F07E"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\F080"}.fa-twitter-square:before{content:"\F081"}.fa-facebook-square:before{content:"\F082"}.fa-camera-retro:before{content:"\F083"}.fa-key:before{content:"\F084"}.fa-cogs:before,.fa-gears:before{content:"\F085"}.fa-comments:before{content:"\F086"}.fa-thumbs-o-up:before{content:"\F087"}.fa-thumbs-o-down:before{content:"\F088"}.fa-star-half:before{content:"\F089"}.fa-heart-o:before{content:"\F08A"}.fa-sign-out:before{content:"\F08B"}.fa-linkedin-square:before{content:"\F08C"}.fa-thumb-tack:before{content:"\F08D"}.fa-external-link:before{content:"\F08E"}.fa-sign-in:before{content:"\F090"}.fa-trophy:before{content:"\F091"}.fa-github-square:before{content:"\F092"}.fa-upload:before{content:"\F093"}.fa-lemon-o:before{content:"\F094"}.fa-phone:before{content:"\F095"}.fa-square-o:before{content:"\F096"}.fa-bookmark-o:before{content:"\F097"}.fa-phone-square:before{content:"\F098"}.fa-twitter:before{content:"\F099"}.fa-facebook-f:before,.fa-facebook:before{content:"\F09A"}.fa-github:before{content:"\F09B"}.fa-unlock:before{content:"\F09C"}.fa-credit-card:before{content:"\F09D"}.fa-feed:before,.fa-rss:before{content:"\F09E"}.fa-hdd-o:before{content:"\F0A0"}.fa-bullhorn:before{content:"\F0A1"}.fa-bell:before{content:"\F0F3"}.fa-certificate:before{content:"\F0A3"}.fa-hand-o-right:before{content:"\F0A4"}.fa-hand-o-left:before{content:"\F0A5"}.fa-hand-o-up:before{content:"\F0A6"}.fa-hand-o-down:before{content:"\F0A7"}.fa-arrow-circle-left:before{content:"\F0A8"}.fa-arrow-circle-right:before{content:"\F0A9"}.fa-arrow-circle-up:before{content:"\F0AA"}.fa-arrow-circle-down:before{content:"\F0AB"}.fa-globe:before{content:"\F0AC"}.fa-wrench:before{content:"\F0AD"}.fa-tasks:before{content:"\F0AE"}.fa-filter:before{content:"\F0B0"}.fa-briefcase:before{content:"\F0B1"}.fa-arrows-alt:before{content:"\F0B2"}.fa-group:before,.fa-users:before{content:"\F0C0"}.fa-chain:before,.fa-link:before{content:"\F0C1"}.fa-cloud:before{content:"\F0C2"}.fa-flask:before{content:"\F0C3"}.fa-cut:before,.fa-scissors:before{content:"\F0C4"}.fa-copy:before,.fa-files-o:before{content:"\F0C5"}.fa-paperclip:before{content:"\F0C6"}.fa-floppy-o:before,.fa-save:before{content:"\F0C7"}.fa-square:before{content:"\F0C8"}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:"\F0C9"}.fa-list-ul:before{content:"\F0CA"}.fa-list-ol:before{content:"\F0CB"}.fa-strikethrough:before{content:"\F0CC"}.fa-underline:before{content:"\F0CD"}.fa-table:before{content:"\F0CE"}.fa-magic:before{content:"\F0D0"}.fa-truck:before{content:"\F0D1"}.fa-pinterest:before{content:"\F0D2"}.fa-pinterest-square:before{content:"\F0D3"}.fa-google-plus-square:before{content:"\F0D4"}.fa-google-plus:before{content:"\F0D5"}.fa-money:before{content:"\F0D6"}.fa-caret-down:before{content:"\F0D7"}.fa-caret-up:before{content:"\F0D8"}.fa-caret-left:before{content:"\F0D9"}.fa-caret-right:before{content:"\F0DA"}.fa-columns:before{content:"\F0DB"}.fa-sort:before,.fa-unsorted:before{content:"\F0DC"}.fa-sort-desc:before,.fa-sort-down:before{content:"\F0DD"}.fa-sort-asc:before,.fa-sort-up:before{content:"\F0DE"}.fa-envelope:before{content:"\F0E0"}.fa-linkedin:before{content:"\F0E1"}.fa-rotate-left:before,.fa-undo:before{content:"\F0E2"}.fa-gavel:before,.fa-legal:before{content:"\F0E3"}.fa-dashboard:before,.fa-tachometer:before{content:"\F0E4"}.fa-comment-o:before{content:"\F0E5"}.fa-comments-o:before{content:"\F0E6"}.fa-bolt:before,.fa-flash:before{content:"\F0E7"}.fa-sitemap:before{content:"\F0E8"}.fa-umbrella:before{content:"\F0E9"}.fa-clipboard:before,.fa-paste:before{content:"\F0EA"}.fa-lightbulb-o:before{content:"\F0EB"}.fa-exchange:before{content:"\F0EC"}.fa-cloud-download:before{content:"\F0ED"}.fa-cloud-upload:before{content:"\F0EE"}.fa-user-md:before{content:"\F0F0"}.fa-stethoscope:before{content:"\F0F1"}.fa-suitcase:before{content:"\F0F2"}.fa-bell-o:before{content:"\F0A2"}.fa-coffee:before{content:"\F0F4"}.fa-cutlery:before{content:"\F0F5"}.fa-file-text-o:before{content:"\F0F6"}.fa-building-o:before{content:"\F0F7"}.fa-hospital-o:before{content:"\F0F8"}.fa-ambulance:before{content:"\F0F9"}.fa-medkit:before{content:"\F0FA"}.fa-fighter-jet:before{content:"\F0FB"}.fa-beer:before{content:"\F0FC"}.fa-h-square:before{content:"\F0FD"}.fa-plus-square:before{content:"\F0FE"}.fa-angle-double-left:before{content:"\F100"}.fa-angle-double-right:before{content:"\F101"}.fa-angle-double-up:before{content:"\F102"}.fa-angle-double-down:before{content:"\F103"}.fa-angle-left:before{content:"\F104"}.fa-angle-right:before{content:"\F105"}.fa-angle-up:before{content:"\F106"}.fa-angle-down:before{content:"\F107"}.fa-desktop:before{content:"\F108"}.fa-laptop:before{content:"\F109"}.fa-tablet:before{content:"\F10A"}.fa-mobile-phone:before,.fa-mobile:before{content:"\F10B"}.fa-circle-o:before{content:"\F10C"}.fa-quote-left:before{content:"\F10D"}.fa-quote-right:before{content:"\F10E"}.fa-spinner:before{content:"\F110"}.fa-circle:before{content:"\F111"}.fa-mail-reply:before,.fa-reply:before{content:"\F112"}.fa-github-alt:before{content:"\F113"}.fa-folder-o:before{content:"\F114"}.fa-folder-open-o:before{content:"\F115"}.fa-smile-o:before{content:"\F118"}.fa-frown-o:before{content:"\F119"}.fa-meh-o:before{content:"\F11A"}.fa-gamepad:before{content:"\F11B"}.fa-keyboard-o:before{content:"\F11C"}.fa-flag-o:before{content:"\F11D"}.fa-flag-checkered:before{content:"\F11E"}.fa-terminal:before{content:"\F120"}.fa-code:before{content:"\F121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\F122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\F123"}.fa-location-arrow:before{content:"\F124"}.fa-crop:before{content:"\F125"}.fa-code-fork:before{content:"\F126"}.fa-chain-broken:before,.fa-unlink:before{content:"\F127"}.fa-question:before{content:"\F128"}.fa-info:before{content:"\F129"}.fa-exclamation:before{content:"\F12A"}.fa-superscript:before{content:"\F12B"}.fa-subscript:before{content:"\F12C"}.fa-eraser:before{content:"\F12D"}.fa-puzzle-piece:before{content:"\F12E"}.fa-microphone:before{content:"\F130"}.fa-microphone-slash:before{content:"\F131"}.fa-shield:before{content:"\F132"}.fa-calendar-o:before{content:"\F133"}.fa-fire-extinguisher:before{content:"\F134"}.fa-rocket:before{content:"\F135"}.fa-maxcdn:before{content:"\F136"}.fa-chevron-circle-left:before{content:"\F137"}.fa-chevron-circle-right:before{content:"\F138"}.fa-chevron-circle-up:before{content:"\F139"}.fa-chevron-circle-down:before{content:"\F13A"}.fa-html5:before{content:"\F13B"}.fa-css3:before{content:"\F13C"}.fa-anchor:before{content:"\F13D"}.fa-unlock-alt:before{content:"\F13E"}.fa-bullseye:before{content:"\F140"}.fa-ellipsis-h:before{content:"\F141"}.fa-ellipsis-v:before{content:"\F142"}.fa-rss-square:before{content:"\F143"}.fa-play-circle:before{content:"\F144"}.fa-ticket:before{content:"\F145"}.fa-minus-square:before{content:"\F146"}.fa-minus-square-o:before{content:"\F147"}.fa-level-up:before{content:"\F148"}.fa-level-down:before{content:"\F149"}.fa-check-square:before{content:"\F14A"}.fa-pencil-square:before{content:"\F14B"}.fa-external-link-square:before{content:"\F14C"}.fa-share-square:before{content:"\F14D"}.fa-compass:before{content:"\F14E"}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:"\F150"}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:"\F151"}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:"\F152"}.fa-eur:before,.fa-euro:before{content:"\F153"}.fa-gbp:before{content:"\F154"}.fa-dollar:before,.fa-usd:before{content:"\F155"}.fa-inr:before,.fa-rupee:before{content:"\F156"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:"\F157"}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:"\F158"}.fa-krw:before,.fa-won:before{content:"\F159"}.fa-bitcoin:before,.fa-btc:before{content:"\F15A"}.fa-file:before{content:"\F15B"}.fa-file-text:before{content:"\F15C"}.fa-sort-alpha-asc:before{content:"\F15D"}.fa-sort-alpha-desc:before{content:"\F15E"}.fa-sort-amount-asc:before{content:"\F160"}.fa-sort-amount-desc:before{content:"\F161"}.fa-sort-numeric-asc:before{content:"\F162"}.fa-sort-numeric-desc:before{content:"\F163"}.fa-thumbs-up:before{content:"\F164"}.fa-thumbs-down:before{content:"\F165"}.fa-youtube-square:before{content:"\F166"}.fa-youtube:before{content:"\F167"}.fa-xing:before{content:"\F168"}.fa-xing-square:before{content:"\F169"}.fa-youtube-play:before{content:"\F16A"}.fa-dropbox:before{content:"\F16B"}.fa-stack-overflow:before{content:"\F16C"}.fa-instagram:before{content:"\F16D"}.fa-flickr:before{content:"\F16E"}.fa-adn:before{content:"\F170"}.fa-bitbucket:before{content:"\F171"}.fa-bitbucket-square:before{content:"\F172"}.fa-tumblr:before{content:"\F173"}.fa-tumblr-square:before{content:"\F174"}.fa-long-arrow-down:before{content:"\F175"}.fa-long-arrow-up:before{content:"\F176"}.fa-long-arrow-left:before{content:"\F177"}.fa-long-arrow-right:before{content:"\F178"}.fa-apple:before{content:"\F179"}.fa-windows:before{content:"\F17A"}.fa-android:before{content:"\F17B"}.fa-linux:before{content:"\F17C"}.fa-dribbble:before{content:"\F17D"}.fa-skype:before{content:"\F17E"}.fa-foursquare:before{content:"\F180"}.fa-trello:before{content:"\F181"}.fa-female:before{content:"\F182"}.fa-male:before{content:"\F183"}.fa-gittip:before,.fa-gratipay:before{content:"\F184"}.fa-sun-o:before{content:"\F185"}.fa-moon-o:before{content:"\F186"}.fa-archive:before{content:"\F187"}.fa-bug:before{content:"\F188"}.fa-vk:before{content:"\F189"}.fa-weibo:before{content:"\F18A"}.fa-renren:before{content:"\F18B"}.fa-pagelines:before{content:"\F18C"}.fa-stack-exchange:before{content:"\F18D"}.fa-arrow-circle-o-right:before{content:"\F18E"}.fa-arrow-circle-o-left:before{content:"\F190"}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:"\F191"}.fa-dot-circle-o:before{content:"\F192"}.fa-wheelchair:before{content:"\F193"}.fa-vimeo-square:before{content:"\F194"}.fa-try:before,.fa-turkish-lira:before{content:"\F195"}.fa-plus-square-o:before{content:"\F196"}.fa-space-shuttle:before{content:"\F197"}.fa-slack:before{content:"\F198"}.fa-envelope-square:before{content:"\F199"}.fa-wordpress:before{content:"\F19A"}.fa-openid:before{content:"\F19B"}.fa-bank:before,.fa-institution:before,.fa-university:before{content:"\F19C"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\F19D"}.fa-yahoo:before{content:"\F19E"}.fa-google:before{content:"\F1A0"}.fa-reddit:before{content:"\F1A1"}.fa-reddit-square:before{content:"\F1A2"}.fa-stumbleupon-circle:before{content:"\F1A3"}.fa-stumbleupon:before{content:"\F1A4"}.fa-delicious:before{content:"\F1A5"}.fa-digg:before{content:"\F1A6"}.fa-pied-piper-pp:before{content:"\F1A7"}.fa-pied-piper-alt:before{content:"\F1A8"}.fa-drupal:before{content:"\F1A9"}.fa-joomla:before{content:"\F1AA"}.fa-language:before{content:"\F1AB"}.fa-fax:before{content:"\F1AC"}.fa-building:before{content:"\F1AD"}.fa-child:before{content:"\F1AE"}.fa-paw:before{content:"\F1B0"}.fa-spoon:before{content:"\F1B1"}.fa-cube:before{content:"\F1B2"}.fa-cubes:before{content:"\F1B3"}.fa-behance:before{content:"\F1B4"}.fa-behance-square:before{content:"\F1B5"}.fa-steam:before{content:"\F1B6"}.fa-steam-square:before{content:"\F1B7"}.fa-recycle:before{content:"\F1B8"}.fa-automobile:before,.fa-car:before{content:"\F1B9"}.fa-cab:before,.fa-taxi:before{content:"\F1BA"}.fa-tree:before{content:"\F1BB"}.fa-spotify:before{content:"\F1BC"}.fa-deviantart:before{content:"\F1BD"}.fa-soundcloud:before{content:"\F1BE"}.fa-database:before{content:"\F1C0"}.fa-file-pdf-o:before{content:"\F1C1"}.fa-file-word-o:before{content:"\F1C2"}.fa-file-excel-o:before{content:"\F1C3"}.fa-file-powerpoint-o:before{content:"\F1C4"}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:"\F1C5"}.fa-file-archive-o:before,.fa-file-zip-o:before{content:"\F1C6"}.fa-file-audio-o:before,.fa-file-sound-o:before{content:"\F1C7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\F1C8"}.fa-file-code-o:before{content:"\F1C9"}.fa-vine:before{content:"\F1CA"}.fa-codepen:before{content:"\F1CB"}.fa-jsfiddle:before{content:"\F1CC"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:"\F1CD"}.fa-circle-o-notch:before{content:"\F1CE"}.fa-ra:before,.fa-rebel:before,.fa-resistance:before{content:"\F1D0"}.fa-empire:before,.fa-ge:before{content:"\F1D1"}.fa-git-square:before{content:"\F1D2"}.fa-git:before{content:"\F1D3"}.fa-hacker-news:before,.fa-y-combinator-square:before,.fa-yc-square:before{content:"\F1D4"}.fa-tencent-weibo:before{content:"\F1D5"}.fa-qq:before{content:"\F1D6"}.fa-wechat:before,.fa-weixin:before{content:"\F1D7"}.fa-paper-plane:before,.fa-send:before{content:"\F1D8"}.fa-paper-plane-o:before,.fa-send-o:before{content:"\F1D9"}.fa-history:before{content:"\F1DA"}.fa-circle-thin:before{content:"\F1DB"}.fa-header:before{content:"\F1DC"}.fa-paragraph:before{content:"\F1DD"}.fa-sliders:before{content:"\F1DE"}.fa-share-alt:before{content:"\F1E0"}.fa-share-alt-square:before{content:"\F1E1"}.fa-bomb:before{content:"\F1E2"}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:"\F1E3"}.fa-tty:before{content:"\F1E4"}.fa-binoculars:before{content:"\F1E5"}.fa-plug:before{content:"\F1E6"}.fa-slideshare:before{content:"\F1E7"}.fa-twitch:before{content:"\F1E8"}.fa-yelp:before{content:"\F1E9"}.fa-newspaper-o:before{content:"\F1EA"}.fa-wifi:before{content:"\F1EB"}.fa-calculator:before{content:"\F1EC"}.fa-paypal:before{content:"\F1ED"}.fa-google-wallet:before{content:"\F1EE"}.fa-cc-visa:before{content:"\F1F0"}.fa-cc-mastercard:before{content:"\F1F1"}.fa-cc-discover:before{content:"\F1F2"}.fa-cc-amex:before{content:"\F1F3"}.fa-cc-paypal:before{content:"\F1F4"}.fa-cc-stripe:before{content:"\F1F5"}.fa-bell-slash:before{content:"\F1F6"}.fa-bell-slash-o:before{content:"\F1F7"}.fa-trash:before{content:"\F1F8"}.fa-copyright:before{content:"\F1F9"}.fa-at:before{content:"\F1FA"}.fa-eyedropper:before{content:"\F1FB"}.fa-paint-brush:before{content:"\F1FC"}.fa-birthday-cake:before{content:"\F1FD"}.fa-area-chart:before{content:"\F1FE"}.fa-pie-chart:before{content:"\F200"}.fa-line-chart:before{content:"\F201"}.fa-lastfm:before{content:"\F202"}.fa-lastfm-square:before{content:"\F203"}.fa-toggle-off:before{content:"\F204"}.fa-toggle-on:before{content:"\F205"}.fa-bicycle:before{content:"\F206"}.fa-bus:before{content:"\F207"}.fa-ioxhost:before{content:"\F208"}.fa-angellist:before{content:"\F209"}.fa-cc:before{content:"\F20A"}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:"\F20B"}.fa-meanpath:before{content:"\F20C"}.fa-buysellads:before{content:"\F20D"}.fa-connectdevelop:before{content:"\F20E"}.fa-dashcube:before{content:"\F210"}.fa-forumbee:before{content:"\F211"}.fa-leanpub:before{content:"\F212"}.fa-sellsy:before{content:"\F213"}.fa-shirtsinbulk:before{content:"\F214"}.fa-simplybuilt:before{content:"\F215"}.fa-skyatlas:before{content:"\F216"}.fa-cart-plus:before{content:"\F217"}.fa-cart-arrow-down:before{content:"\F218"}.fa-diamond:before{content:"\F219"}.fa-ship:before{content:"\F21A"}.fa-user-secret:before{content:"\F21B"}.fa-motorcycle:before{content:"\F21C"}.fa-street-view:before{content:"\F21D"}.fa-heartbeat:before{content:"\F21E"}.fa-venus:before{content:"\F221"}.fa-mars:before{content:"\F222"}.fa-mercury:before{content:"\F223"}.fa-intersex:before,.fa-transgender:before{content:"\F224"}.fa-transgender-alt:before{content:"\F225"}.fa-venus-double:before{content:"\F226"}.fa-mars-double:before{content:"\F227"}.fa-venus-mars:before{content:"\F228"}.fa-mars-stroke:before{content:"\F229"}.fa-mars-stroke-v:before{content:"\F22A"}.fa-mars-stroke-h:before{content:"\F22B"}.fa-neuter:before{content:"\F22C"}.fa-genderless:before{content:"\F22D"}.fa-facebook-official:before{content:"\F230"}.fa-pinterest-p:before{content:"\F231"}.fa-whatsapp:before{content:"\F232"}.fa-server:before{content:"\F233"}.fa-user-plus:before{content:"\F234"}.fa-user-times:before{content:"\F235"}.fa-bed:before,.fa-hotel:before{content:"\F236"}.fa-viacoin:before{content:"\F237"}.fa-train:before{content:"\F238"}.fa-subway:before{content:"\F239"}.fa-medium:before{content:"\F23A"}.fa-y-combinator:before,.fa-yc:before{content:"\F23B"}.fa-optin-monster:before{content:"\F23C"}.fa-opencart:before{content:"\F23D"}.fa-expeditedssl:before{content:"\F23E"}.fa-battery-4:before,.fa-battery-full:before,.fa-battery:before{content:"\F240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\F241"}.fa-battery-2:before,.fa-battery-half:before{content:"\F242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\F243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\F244"}.fa-mouse-pointer:before{content:"\F245"}.fa-i-cursor:before{content:"\F246"}.fa-object-group:before{content:"\F247"}.fa-object-ungroup:before{content:"\F248"}.fa-sticky-note:before{content:"\F249"}.fa-sticky-note-o:before{content:"\F24A"}.fa-cc-jcb:before{content:"\F24B"}.fa-cc-diners-club:before{content:"\F24C"}.fa-clone:before{content:"\F24D"}.fa-balance-scale:before{content:"\F24E"}.fa-hourglass-o:before{content:"\F250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\F251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\F252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\F253"}.fa-hourglass:before{content:"\F254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\F255"}.fa-hand-paper-o:before,.fa-hand-stop-o:before{content:"\F256"}.fa-hand-scissors-o:before{content:"\F257"}.fa-hand-lizard-o:before{content:"\F258"}.fa-hand-spock-o:before{content:"\F259"}.fa-hand-pointer-o:before{content:"\F25A"}.fa-hand-peace-o:before{content:"\F25B"}.fa-trademark:before{content:"\F25C"}.fa-registered:before{content:"\F25D"}.fa-creative-commons:before{content:"\F25E"}.fa-gg:before{content:"\F260"}.fa-gg-circle:before{content:"\F261"}.fa-tripadvisor:before{content:"\F262"}.fa-odnoklassniki:before{content:"\F263"}.fa-odnoklassniki-square:before{content:"\F264"}.fa-get-pocket:before{content:"\F265"}.fa-wikipedia-w:before{content:"\F266"}.fa-safari:before{content:"\F267"}.fa-chrome:before{content:"\F268"}.fa-firefox:before{content:"\F269"}.fa-opera:before{content:"\F26A"}.fa-internet-explorer:before{content:"\F26B"}.fa-television:before,.fa-tv:before{content:"\F26C"}.fa-contao:before{content:"\F26D"}.fa-500px:before{content:"\F26E"}.fa-amazon:before{content:"\F270"}.fa-calendar-plus-o:before{content:"\F271"}.fa-calendar-minus-o:before{content:"\F272"}.fa-calendar-times-o:before{content:"\F273"}.fa-calendar-check-o:before{content:"\F274"}.fa-industry:before{content:"\F275"}.fa-map-pin:before{content:"\F276"}.fa-map-signs:before{content:"\F277"}.fa-map-o:before{content:"\F278"}.fa-map:before{content:"\F279"}.fa-commenting:before{content:"\F27A"}.fa-commenting-o:before{content:"\F27B"}.fa-houzz:before{content:"\F27C"}.fa-vimeo:before{content:"\F27D"}.fa-black-tie:before{content:"\F27E"}.fa-fonticons:before{content:"\F280"}.fa-reddit-alien:before{content:"\F281"}.fa-edge:before{content:"\F282"}.fa-credit-card-alt:before{content:"\F283"}.fa-codiepie:before{content:"\F284"}.fa-modx:before{content:"\F285"}.fa-fort-awesome:before{content:"\F286"}.fa-usb:before{content:"\F287"}.fa-product-hunt:before{content:"\F288"}.fa-mixcloud:before{content:"\F289"}.fa-scribd:before{content:"\F28A"}.fa-pause-circle:before{content:"\F28B"}.fa-pause-circle-o:before{content:"\F28C"}.fa-stop-circle:before{content:"\F28D"}.fa-stop-circle-o:before{content:"\F28E"}.fa-shopping-bag:before{content:"\F290"}.fa-shopping-basket:before{content:"\F291"}.fa-hashtag:before{content:"\F292"}.fa-bluetooth:before{content:"\F293"}.fa-bluetooth-b:before{content:"\F294"}.fa-percent:before{content:"\F295"}.fa-gitlab:before{content:"\F296"}.fa-wpbeginner:before{content:"\F297"}.fa-wpforms:before{content:"\F298"}.fa-envira:before{content:"\F299"}.fa-universal-access:before{content:"\F29A"}.fa-wheelchair-alt:before{content:"\F29B"}.fa-question-circle-o:before{content:"\F29C"}.fa-blind:before{content:"\F29D"}.fa-audio-description:before{content:"\F29E"}.fa-volume-control-phone:before{content:"\F2A0"}.fa-braille:before{content:"\F2A1"}.fa-assistive-listening-systems:before{content:"\F2A2"}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before{content:"\F2A3"}.fa-deaf:before,.fa-deafness:before,.fa-hard-of-hearing:before{content:"\F2A4"}.fa-glide:before{content:"\F2A5"}.fa-glide-g:before{content:"\F2A6"}.fa-sign-language:before,.fa-signing:before{content:"\F2A7"}.fa-low-vision:before{content:"\F2A8"}.fa-viadeo:before{content:"\F2A9"}.fa-viadeo-square:before{content:"\F2AA"}.fa-snapchat:before{content:"\F2AB"}.fa-snapchat-ghost:before{content:"\F2AC"}.fa-snapchat-square:before{content:"\F2AD"}.fa-pied-piper:before{content:"\F2AE"}.fa-first-order:before{content:"\F2B0"}.fa-yoast:before{content:"\F2B1"}.fa-themeisle:before{content:"\F2B2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\F2B3"}.fa-fa:before,.fa-font-awesome:before{content:"\F2B4"}.fa-handshake-o:before{content:"\F2B5"}.fa-envelope-open:before{content:"\F2B6"}.fa-envelope-open-o:before{content:"\F2B7"}.fa-linode:before{content:"\F2B8"}.fa-address-book:before{content:"\F2B9"}.fa-address-book-o:before{content:"\F2BA"}.fa-address-card:before,.fa-vcard:before{content:"\F2BB"}.fa-address-card-o:before,.fa-vcard-o:before{content:"\F2BC"}.fa-user-circle:before{content:"\F2BD"}.fa-user-circle-o:before{content:"\F2BE"}.fa-user-o:before{content:"\F2C0"}.fa-id-badge:before{content:"\F2C1"}.fa-drivers-license:before,.fa-id-card:before{content:"\F2C2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\F2C3"}.fa-quora:before{content:"\F2C4"}.fa-free-code-camp:before{content:"\F2C5"}.fa-telegram:before{content:"\F2C6"}.fa-thermometer-4:before,.fa-thermometer-full:before,.fa-thermometer:before{content:"\F2C7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\F2C8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\F2C9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\F2CA"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\F2CB"}.fa-shower:before{content:"\F2CC"}.fa-bath:before,.fa-bathtub:before,.fa-s15:before{content:"\F2CD"}.fa-podcast:before{content:"\F2CE"}.fa-window-maximize:before{content:"\F2D0"}.fa-window-minimize:before{content:"\F2D1"}.fa-window-restore:before{content:"\F2D2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\F2D3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\F2D4"}.fa-bandcamp:before{content:"\F2D5"}.fa-grav:before{content:"\F2D6"}.fa-etsy:before{content:"\F2D7"}.fa-imdb:before{content:"\F2D8"}.fa-ravelry:before{content:"\F2D9"}.fa-eercast:before{content:"\F2DA"}.fa-microchip:before{content:"\F2DB"}.fa-snowflake-o:before{content:"\F2DC"}.fa-superpowers:before{content:"\F2DD"}.fa-wpexplorer:before{content:"\F2DE"}.fa-meetup:before{content:"\F2E0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.btn{color:#333;background-color:#eee;background-image:-webkit-gradient(linear,left top,left bottom,from(#fcfcfc),to(#eee));background-image:linear-gradient(#fcfcfc,#eee);border:1px solid #d5d5d5;border-radius:3px;text-align:center}.btn:hover{background-color:#ddd;background-image:-webkit-gradient(linear,left top,left bottom,from(#eee),to(#ddd));background-image:linear-gradient(#eee,#ddd);border-color:#ccc;color:#333;text-decoration:none}.btn-primary{background-color:#60b044;background-image:-webkit-gradient(linear,left top,left bottom,from(#8add6d),to(#60b044));background-image:linear-gradient(#8add6d,#60b044);border-color:#5ca941;text-shadow:0 -1px 0 rgba(0,0,0,.15)}.btn-primary:hover{background-color:#569e3d;background-image:-webkit-gradient(linear,left top,left bottom,from(#79d858),to(#569e3d));background-image:linear-gradient(#79d858,#569e3d);border-color:#4a993e;color:#fff}.btn-danger{color:#900}.btn-danger:hover{background-color:#b33630;background-image:-webkit-gradient(linear,left top,left bottom,from(#dc5f59),to(#b33630));background-image:linear-gradient(#dc5f59,#b33630);border-color:#cd504a;color:#fff}.btn-add{position:relative;top:3px;border:1px solid #576675;border-radius:50%;width:15px;margin-right:3px}header{background-color:#325776}header .main-cta{position:relative;top:16px}.logo{margin:10px 15px}.logo a:hover{background-color:transparent;color:#fff}.header-search{padding:0;margin:auto 0}.header-search-form{position:relative}.header-search-form span{color:#d7d7d7;font-size:12px;left:10px;position:absolute;top:10px}.header-search-form input{border:0;color:#fff;padding-left:29px}.header-nav{margin-top:24px;text-align:right}.header-nav-item{display:inline;margin-right:10px}.header-nav-item:last-child{margin-right:0}.header-nav-item-link{color:#fff;font-weight:300;padding:3px 11px;text-decoration:none}.header-nav-item-link:hover{background-color:#497193;border-radius:3px;color:#fff;padding:3px 11px;text-decoration:none}.header-search-input{background:#497193;border-color:#497193;color:#fff}.header-search-input::-webkit-input-placeholder{color:hsla(0,0%,100%,.4)}.header-search-input::-ms-input-placeholder{color:hsla(0,0%,100%,.4)}.header-search-input::placeholder{color:hsla(0,0%,100%,.4)}.header-search-input:-ms-input-placeholder{color:hsla(0,0%,100%,.4)}.header-search-input:focus{background:#fff;color:#323232}.header-search-results{position:absolute;width:100%;z-index:10}.header-search-result{position:relative;background:#fff;-webkit-box-shadow:0 3px 3px 0 rgba(0,0,0,.3);box-shadow:0 3px 3px 0 rgba(0,0,0,.3);border-bottom:1px solid #eee}.header-search-result a{color:inherit;text-decoration:none;vertical-align:middle;background:transparent}.header-search-result a span{position:absolute;width:100%;height:100%;top:0;left:0;z-index:1}.header-search-result a:hover{background:inherit;color:inherit}.header-search-result .avatar{border-radius:3px;display:inline-block;height:36px;margin:10px;width:36px}.header-search-result .avatar-initials{text-align:center;padding-top:6px;font-size:15px;color:#fff}.header-search-result:last-child{border-bottom:initial}.header-search-result:hover{background:#f5f5f5}@media (max-width:767px){header .mobile-menu{background-color:#58748c;border:1px solid #325776;margin-bottom:20px}header .mobile-menu li{border-bottom:1px solid #475b6b;margin-bottom:0;padding:4px 0}header .mobile-menu li a{text-decoration:none}header .mobile-menu li:last-child{border-bottom:0}header .mobile-menu li.cta{border:0}header .mobile-menu li.cta a{width:100%}.header-search{padding:0;margin:20px 0}.header-search ul{padding-right:26px}}.people-list .breadcrumb{border-bottom:1px solid #eee}.people-list .main-content{margin-top:20px}.people-list .sidebar .sidebar-cta{margin-bottom:20px;padding:15px;text-align:center;width:100%}.people-list .sidebar li{margin-bottom:7px;padding-left:15px;position:relative}.people-list .sidebar li.selected:before{color:#999;content:">";left:0;position:absolute}.people-list .sidebar li .number-contacts-per-tag{float:right}.people-list .clear-filter,.people-list .list{border:1px solid #eee;border-radius:3px}.people-list .clear-filter{position:relative;padding:6px}.people-list .clear-filter a{position:absolute;right:10px}.people-list .people-list-item{border-bottom:1px solid #eee;padding:10px}.people-list .people-list-item:hover{background-color:#f7fbfc}.people-list .people-list-item.sorting{background-color:#f6f8fa;position:relative;padding:10px}.people-list .people-list-item.sorting .options{display:inline;position:absolute;right:10px}.people-list .people-list-item.sorting .options .dropdown-btn:after{content:"\F0D7";font-family:FontAwesome;margin-left:5px}.people-list .people-list-item.sorting .options .dropdown-item{padding:3px 20px 3px 10px}.people-list .people-list-item.sorting .options .dropdown-item:before{content:"\F00C";font-family:FontAwesome;margin-right:5px;color:#fff}.people-list .people-list-item.sorting .options .dropdown-item:hover{background-color:#0366d6;color:#fff}.people-list .people-list-item.sorting .options .dropdown-item.selected:before{color:#999}.people-list .people-list-item .avatar{background-color:#93521e;border-radius:3px;color:#fff;display:inline-block;font-size:15px;height:43px;margin-right:5px;padding-left:5px;padding-top:10px;vertical-align:middle;width:43px}.people-list .people-list-item .avatar.one-letter{padding-left:0;text-align:center}.people-list .people-list-item img{border-radius:3px;margin-right:5px}.people-list .people-list-item a{color:#333;text-decoration:none}.people-list .people-list-item a:hover{background-color:transparent;color:#333}.people-list .people-list-item .people-list-item-information{color:#999;float:right;font-size:12px;font-style:italic;position:relative;text-align:right;top:16px}.blank-people-state{margin-top:30px;text-align:center}.blank-people-state h3{font-weight:400;margin-bottom:30px}.blank-people-state .cta-blank{margin-bottom:30px}.blank-people-state .illustration-blank p{margin-top:30px}.blank-people-state .illustration-blank img{display:block;margin:0 auto 20px}.people-show .pagehead{background-color:#f9f9fb;border-bottom:1px solid #eee;position:relative;padding-bottom:20px}.people-show .pagehead .people-profile-information{margin-bottom:10px;position:relative}.people-show .pagehead .people-profile-information .avatar{background-color:#93521e;border-radius:3px;color:#fff;display:inline-block;font-size:30px;height:87px;margin-right:5px;padding-left:5px;padding-top:21px;position:absolute;width:87px}.people-show .pagehead .people-profile-information .avatar.one-letter{padding-left:0;text-align:center}.people-show .pagehead .people-profile-information img{border-radius:3px;position:absolute}.people-show .pagehead .people-profile-information h2{display:block;font-size:24px;font-weight:300;margin-bottom:0;padding-left:100px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;width:calc(100% - 245px);margin-right:-9999px}@media (max-width:480px){.people-show .pagehead .people-profile-information h2{width:100%}}.people-show .pagehead .people-profile-information .profile-detail-summary{padding-left:100px;margin-top:3px}.people-show .pagehead .people-profile-information .profile-detail-summary li:not(:last-child){margin-right:10px}.people-show .pagehead .people-profile-information #tagsForm{padding-left:100px;position:relative}.people-show .pagehead .people-profile-information #tagsForm #tags_tagsinput{height:40px!important;min-height:40px!important;width:370px!important;display:inline-block;overflow:hidden}.people-show .pagehead .people-profile-information #tagsForm .tagsFormActions{display:inline;position:relative;top:-17px}.people-show .pagehead .people-profile-information .tags{padding:0;padding-left:100px;list-style:none;line-height:20px;margin:0;overflow:hidden;margin-top:8px}.people-show .pagehead .people-profile-information .tags li{float:left}.people-show .pagehead .quick-actions{position:absolute;right:0;top:14px}.people-show .main-content{background-color:#fff;padding-bottom:20px;padding-top:40px}.people-show .main-content .delete-contact{font-size:12px;margin-bottom:30px;text-align:center}.people-show .main-content .section-title{position:relative}.people-show .main-content .section-title h3{border-bottom:1px solid #e1e2e3;font-size:18px;font-weight:400;margin-bottom:20px;padding-bottom:10px;padding-left:23px;padding-top:10px;position:relative}.people-show .main-content .section-title .icon-section{position:absolute;top:14px;width:17px}.people-show .main-content .sidebar .sidebar-cta a{margin-bottom:20px;width:100%}.people-show .profile .sidebar-box{background-color:#fafafa;border:1px solid #eee;border-radius:3px;color:#333;margin-bottom:25px;padding:10px;position:relative}.people-show .profile .sidebar-box-title{margin-bottom:4px;position:relative}.people-show .profile .sidebar-box-title strong{font-size:12px;font-weight:500;text-transform:uppercase}.people-show .profile .sidebar-box-title a{position:absolute;right:7px}.people-show .profile .sidebar-box-title img{left:-3px;position:relative;width:20px}.people-show .profile .sidebar-box-title img.people-information{top:-4px}.people-show .profile .sidebar-box-paragraph{margin-bottom:0}.people-show .profile .people-list li{margin-bottom:4px}.people-show .profile .introductions li,.people-show .profile .people-information li,.people-show .profile .work li{color:#999;font-size:12px;margin-bottom:10px}.people-show .profile .introductions li:last-child,.people-show .profile .people-information li:last-child,.people-show .profile .work li:last-child{margin-bottom:0}.people-show .profile .introductions li i,.people-show .profile .people-information li i,.people-show .profile .work li i{text-align:center;width:17px}.people-show .profile .section{margin-bottom:35px}.people-show .profile .section.food-preferencies .section-heading img,.people-show .profile .section.kids .section-heading img{position:relative;top:-3px}.people-show .profile .section .inline-action{display:inline;margin-left:10px}.people-show .profile .section .inline-action a{margin-right:5px}.people-show .profile .section .section-heading{border-bottom:1px solid #eee;padding-bottom:4px;margin-bottom:10px}.people-show .profile .section .section-heading img{width:25px}.people-show .profile .section .section-action{display:inline;float:right}.people-show .profile .section .section-blank{background-color:#fafafa;border:1px solid #eee;border-radius:3px;padding:15px;text-align:center}.people-show .profile .section .section-blank h3{font-weight:400;font-size:14px}.people-show .gifts .gift-recipient{font-size:15px}.people-show .gifts .gift-recipient:not(:first-child){margin-top:25px}.people-show .gifts .offered{background-color:#5cb85c;border-radius:10rem;display:inline-block;font-size:75%;font-weight:400;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;padding:2px 0;padding-right:.6em;padding-left:.6em}.people-show .gifts .gift-list-item{border-top:1px solid #eee;padding:5px 0}.people-show .gifts .gift-list-item:last-child{border-bottom:0}.people-show .gifts .gift-list-item-url{display:inline;font-size:12px;margin-left:10px;padding:5px 0 0}.people-show .gifts .gift-list-item-information{display:inline;margin-left:10px}.people-show .gifts .gift-list-item-actions,.people-show .gifts .gift-list-item-date{color:#999;display:inline;font-size:12px}.people-show .gifts .gift-list-item-actions a,.people-show .gifts .gift-list-item-date a{color:#999;font-size:11px;margin-right:5px;text-decoration:underline}.people-show .gifts .gift-list-item-actions li,.people-show .gifts .gift-list-item-date li{display:inline}.people-show .gifts .gift-list-item-actions{margin-left:5px}.people-show .gifts .for{font-style:italic;margin-left:10px}.people-show .activities .date,.people-show .calls .date,.people-show .debts .date,.people-show .gifts .date,.people-show .reminders .date,.people-show .tasks .date{color:#777;font-size:12px;margin-right:10px;width:100px}.people-show .activities .frequency-type,.people-show .activities .value,.people-show .calls .frequency-type,.people-show .calls .value,.people-show .debts .frequency-type,.people-show .debts .value,.people-show .gifts .frequency-type,.people-show .gifts .value,.people-show .reminders .frequency-type,.people-show .reminders .value,.people-show .tasks .frequency-type,.people-show .tasks .value{background-color:#ecf9ff;border:1px solid #eee;border-radius:3px;display:inline;font-size:12px;padding:0 6px}.people-show .activities .list-actions,.people-show .calls .list-actions,.people-show .debts .list-actions,.people-show .gifts .list-actions,.people-show .reminders .list-actions,.people-show .tasks .list-actions{position:relative;text-align:center;width:60px}.people-show .activities .list-actions a:first-child,.people-show .calls .list-actions a:first-child,.people-show .debts .list-actions a:first-child,.people-show .gifts .list-actions a:first-child,.people-show .reminders .list-actions a:first-child,.people-show .tasks .list-actions a:first-child{margin-right:5px}.people-show .activities .list-actions a.edit,.people-show .calls .list-actions a.edit,.people-show .debts .list-actions a.edit,.people-show .gifts .list-actions a.edit,.people-show .reminders .list-actions a.edit,.people-show .tasks .list-actions a.edit{position:relative;top:1px}.people-show .activities .empty,.people-show .calls .empty,.people-show .debts .empty,.people-show .gifts .empty,.people-show .reminders .empty,.people-show .tasks .empty{font-style:italic}.people-show .reminders .frequency-type{white-space:nowrap}.people-show .reminders input[type=date]{margin-bottom:20px;width:170px}.people-show .reminders .form-check input[type=number]{display:inline;width:50px}.people-show .debts .debts-list .debt-nature{width:220px}.people-show.kid .significant-other-blank-state,.people-show.significantother .significant-other-blank-state{text-align:center}.people-show.kid .significant-other-blank-state img,.people-show.significantother .significant-other-blank-state img{margin-bottom:20px;margin-top:10px}.people-show.kid .central-form .hint-reminder,.people-show.significantother .central-form .hint-reminder{margin-top:10px}.people-show.kid .central-form .hint-reminder p,.people-show.kid .central-form .real-contact-checkbox,.people-show.significantother .central-form .hint-reminder p,.people-show.significantother .central-form .real-contact-checkbox{margin-bottom:0}.people-show.kid .central-form .real-contact-checkbox input,.people-show.significantother .central-form .real-contact-checkbox input{margin-right:5px}.people-show.kid .central-form .real-contact-checkbox .help,.people-show.significantother .central-form .real-contact-checkbox .help{color:#999}.create-people .import{margin-bottom:30px;text-align:center}@media (max-width:480px){.people-list{margin-top:20px}.people-list .people-list-mobile{border-bottom:1px solid #dfdfdf}.people-list .people-list-mobile li{padding:6px 0}.people-list .people-list-item .people-list-item-information{display:none}.people-show .pagehead .people-profile-information{margin-bottom:20px;margin-top:10px}.people-show .pagehead .people-profile-information h2{padding-left:80px}.people-show .pagehead .people-profile-information h2 span{display:none}.people-show .pagehead .people-profile-information #tagsForm{display:block;margin-top:40px;padding-left:0}.people-show .pagehead .people-profile-information #tagsForm #tags_tagsinput{width:100%!important}.people-show .pagehead .people-profile-information #tagsForm .tagsFormActions{display:block;margin-top:20px}.people-show .pagehead .people-profile-information .profile-detail-summary{padding-left:0;margin-top:10px}.people-show .pagehead .people-profile-information .profile-detail-summary li{display:block;margin-right:0}.people-show .pagehead .people-profile-information .profile-detail-summary li:not(:last-child):after{content:"";margin-left:0}.people-show .pagehead .people-profile-information .avatar{height:67px;width:67px;padding-top:11px}.people-show .pagehead .people-profile-information .tags{padding-left:80px}.people-show .pagehead .edit-information{position:relative;width:100%;margin-bottom:10px}.people-show .main-content.modal{margin-top:0}.people-show .main-content.dashboard .sidebar-box{margin-bottom:15px}.people-show .main-content.dashboard .sidebar-cta{margin-top:15px}.people-show .main-content.activities .cta-mobile,.people-show .main-content.dashboard .people-information-actions{margin-bottom:20px}.people-show .main-content.activities .cta-mobile a{width:100%}.people-show .main-content.activities .activities-list .activity-item-date{top:-4px}.create-people,.create-people .btn{width:100%}.list-add-item{margin-left:0}.inline-form .task-add-title,.inline-form textarea{width:100%}.box-links{margin-bottom:10px;position:relative;right:0;top:0}.box-links li{margin-left:0}}.journal-calendar-text{top:19px;line-height:16px;width:62px}.journal-calendar-box{width:62px;margin-right:11px}.journal-calendar-content{width:calc(100% - 73px)}.journal-line{-webkit-transition:all .2s;transition:all .2s}.journal-line:hover{border-color:#00a8ff}.marketing.homepage .top-page{background-color:#313940;border-bottom:1px solid #d0d0d0;color:#fff;padding-top:40px;text-align:center}.marketing.homepage .top-page .navigation{position:absolute;right:20px;top:20px}.marketing.homepage .top-page .navigation a{border:1px solid #fff;border-radius:6px;color:#fff;padding:10px;text-decoration:none}.marketing.homepage .top-page h1{font-size:32px;font-weight:300;margin-bottom:40px}.marketing.homepage .top-page p{font-size:18px;font-weight:300;margin:0 auto;max-width:550px}.marketing.homepage .top-page p.cta{margin-bottom:50px;margin-top:70px}.marketing.homepage .top-page p.cta a{font-size:20px;font-weight:300;padding:20px 50px}.marketing.homepage .top-page .logo{margin-bottom:20px}.marketing.homepage .before-sections{text-align:center}.marketing.homepage .before-sections h3{font-size:25px;font-weight:300;margin-bottom:40px;margin-top:80px}.marketing.homepage .section-homepage{border-bottom:1px solid #dcdcdc;padding:60px 0}.marketing.homepage .section-homepage .visual{text-align:center}.marketing.homepage .section-homepage h2{font-size:18px;font-weight:300;margin-bottom:25px}.marketing.homepage .section-homepage.dates h2{margin-top:40px}.marketing.homepage .section-homepage.activities h2{margin-top:130px}.marketing.homepage .section-homepage.features h3{font-size:18px;font-weight:300;margin-bottom:40px;text-align:center}.marketing.homepage .section-homepage.features ul li{font-size:16px;margin:10px auto;max-width:60%}.marketing.homepage .section-homepage.features ul li i{color:#417741}.marketing.homepage .section-homepage.try{text-align:center}.marketing.homepage .section-homepage.try p{margin-bottom:50px;margin-top:70px}.marketing.homepage .section-homepage.try p a{font-size:20px;font-weight:300;padding:20px 50px}.marketing.homepage .why{background-color:#313940;color:#fff;padding-bottom:50px}.marketing.homepage .why h3{font-size:20px;font-weight:300;margin-bottom:30px;padding-top:50px;text-align:center}.marketing.homepage .why p{font-size:16px;font-weight:300;margin:10px auto 20px;max-width:550px}.marketing .footer-marketing{margin-bottom:40px;padding-top:40px;text-align:center}.marketing .footer-marketing a{margin-right:10px}.marketing.register{background-color:#fafbfc;padding-top:90px;padding-bottom:40px}.marketing.register .signup-box{background-color:#fff;border:1px solid #e4edf5;border-radius:5px;padding:50px 20px 20px}.marketing.register .signup-box .logo{left:45%;position:absolute;top:-33px}.marketing.register .signup-box h2,.marketing.register .signup-box h3{font-weight:300;text-align:center}.marketing.register .signup-box h2{margin-top:20px;margin-bottom:20px}.marketing.register .signup-box h3{font-size:15px;margin-bottom:30px}.marketing.register .signup-box .form-inline label{display:block}.marketing.register .signup-box a.action,.marketing.register .signup-box button{margin-top:10px;width:100%}.marketing.register .signup-box .help{font-size:13px;text-align:center}.marketing.register .signup-box .checkbox{display:none}.marketing.register .signup-box .links{margin-top:20px}.marketing.register .signup-box .links li{font-size:14px;margin-bottom:5px}.marketing .subpages .header{background-color:#313940;text-align:center}.privacy,.releases,.statistics{max-width:750px;margin-left:auto;margin-right:auto;padding:20px 30px 100px;margin-top:50px;background-color:#fff;-webkit-box-shadow:0 8px 20px #dadbdd;box-shadow:0 8px 20px #dadbdd}.privacy h2,.releases h2,.statistics h2{text-align:center}.privacy h3,.releases h3,.statistics h3{font-size:15px;margin-top:30px}.releases ul{list-style-type:disc;margin-left:20px}@media (max-width:480px){.marketing.homepage img{max-width:100%}.marketing.homepage .before-sections h3{margin-bottom:0}.marketing.homepage .section-homepage.people .visual{margin-top:40px}.marketing.homepage .section-homepage.activities h2{margin-top:0}.marketing.homepage .section-homepage.activities .visual{margin-top:40px}.marketing.homepage .section-homepage.features ul li{max-width:100%}.marketing.homepage .section-homepage.try{padding:30px 0}.marketing.register .signup-box .logo{left:39%;top:-47px}}.settings .breadcrumb{margin-bottom:20px}.settings .sidebar-menu ul{border:1px solid #dfdfdf;border-radius:3px}.settings .sidebar-menu li{padding:10px}.settings .sidebar-menu li:not(:last-child){border-bottom:1px solid #dfdfdf}.settings .sidebar-menu li.selected{background-color:#f7fbfc}.settings .sidebar-menu li.selected i{color:green}.settings .sidebar-menu li a{width:100%}.settings .sidebar-menu li i{margin-right:5px;color:#999}.settings h3{border-bottom:1px solid #dfdfdf;font-size:20px;font-weight:400;margin-bottom:20px}.settings h3:not(:first-child){margin-top:30px}.settings .settings-delete,.settings .settings-reset{border:1px solid;padding:10px;margin-top:40px}.settings .settings-delete h2,.settings .settings-reset h2{font-weight:400;font-size:16px}.settings .settings-delete{border-color:#d9534f;border-radius:3px}.settings .settings-reset{border-color:#f0ad4e;border-radius:3px}.settings .warning-zone{margin-bottom:30px;margin-top:30px;padding:10px 10px 5px 15px;border:1px solid #f1c897;border-radius:3px;background-color:#ffe8bc}.settings .users-list h3.with-actions{padding-bottom:13px}.settings .users-list h3.with-actions a{float:right}.settings .users-list .table-cell.actions{text-align:right}.settings .blank-screen{text-align:center}.settings .blank-screen img{margin-bottom:30px;margin-top:30px}.settings .blank-screen h2{font-weight:400;margin-bottom:10px}.settings .blank-screen h3{margin-top:0;border-bottom:0}.settings .blank-screen p{margin:0 auto;width:400px}.settings .blank-screen p.cta{margin-top:40px;margin-bottom:10px}.settings .blank-screen .requires-subscription{margin-top:20px;font-size:13px;color:#999}.settings .subscriptions .upgrade-benefits{margin-bottom:20px}.settings .subscriptions .upgrade-benefits li{margin-left:20px;list-style-type:disc}.settings .subscriptions #label-card-element{margin-bottom:15px}.settings .subscriptions .downgrade ul{background-color:#f8f8f8;border:1px solid #dfdfdf;border-radius:6px;margin-bottom:20px;padding:25px}.settings .subscriptions .downgrade li{padding-bottom:15px}.settings .subscriptions .downgrade li:not(:last-child){border-bottom:1px solid #dfdfdf}.settings .subscriptions .downgrade li:not(:first-child){margin-top:10px}.settings .subscriptions .downgrade li.success .rule-title{text-decoration:line-through}.settings .subscriptions .downgrade li.success .icon:after{font-family:FontAwesome;font-size:17px;color:#0eb0b7;content:"\F058";top:10px;position:relative}.settings .subscriptions .downgrade li.fail .icon:after{font-family:FontAwesome;font-size:17px;color:#cd4400;content:"\F057";top:10px;position:relative}.settings .subscriptions .downgrade li .rule-title{font-size:18px;padding-left:5px}.settings .subscriptions .downgrade li .rule-to-succeed{font-size:13px;display:block;padding-left:27px}.settings .report .report-summary{background-color:#fafafa;border:1px solid #dfdfdf;border-radius:3px;margin-bottom:30px}.settings .report .report-summary li{padding:5px 10px}.settings .report .report-summary li:not(:last-child){border-bottom:1px solid #dfdfdf}.settings .report .report-summary li span{font-weight:600}.settings .report .status{text-align:center;width:95px}.settings .report .reason{font-style:italic}.settings.import .success{color:#5cb85c}.settings.import .failure{color:#d9534f}.settings.import .warning{color:#f0ad4e}.settings.import .date{font-size:13px;margin-left:10px}.settings.import h3.with-actions{padding-bottom:13px}.settings.import h3.with-actions a{float:right}.settings.upload .warning-zone{padding:20px 15px}.settings.upload .warning-zone ul{margin-left:20px;list-style-type:disc}.settings .tags-list .tags-list-contact-number{margin-left:10px;color:#999}.settings .tags-list .actions{text-align:right}.modal h5{font-size:20px;font-weight:500}.modal label{padding-left:0}.modal .close{position:absolute;right:19px;top:14px;font-size:30px}.modal.log-call .date-it-happened{margin-top:20px}.modal.log-call .exact-date{display:none;margin-top:20px}.modal.log-call .exact-date input{display:inline;width:165px}.bg-gray-monica{background-color:#f2f4f8}.b--gray-monica{border-color:#dde2e9}.w-5{width:5%}.w-95{width:95%}.border-bottom{border-bottom:1px solid #dfdfdf}.border-top{border-top:1px solid #dfdfdf}.border-right{border-right:1px solid #dfdfdf}.border-left{border-left:1px solid #dfdfdf}.padding-left-none{padding-left:0}.boxed{background:#fff;border:1px solid #dfdfdf;border-radius:3px;-webkit-box-shadow:0 1px 3px 0 rgba(0,0,0,.05);box-shadow:0 1px 3px 0 rgba(0,0,0,.05)}.box-padding{padding:15px}.badge{display:inline-block;padding:4px 5px;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge-success{background-color:#5cb85c}.badge-danger{background-color:#d9534f}.pretty-tag{background:#eee;border-radius:3px;color:#555;display:inline-block;font-size:11px;height:22px;line-height:22px;padding:0 10px 0 19px;position:relative;margin:0 10px 0 0;text-decoration:none;-webkit-transition:color .2s}.pretty-tag:before{background:#fff;border-radius:10px;-webkit-box-shadow:inset 0 1px rgba(0,0,0,.25);box-shadow:inset 0 1px rgba(0,0,0,.25);content:"";height:6px;left:7px;position:absolute;width:6px;top:9px}.pretty-tag:hover{background-color:#0366d6}.pretty-tag:hover a{color:#fff}.pretty-tag a{text-decoration:none;color:#555}.pretty-tag a:hover{background-color:transparent;color:#fff}body{color:#323b43}a{color:#0366d6;padding:1px;text-decoration:underline}a:hover{background-color:#0366d6;color:#fff;text-decoration:none}a.action-link{color:#999;font-size:11px;margin-right:5px;text-decoration:underline}ul{list-style-type:none;margin:0;padding:0}ul.horizontal li{display:inline}.hidden{display:none}input:disabled{background-color:#999}.pagination-box{margin-top:30px;text-align:center}.alert-success{margin:20px 0}.central-form{margin-top:40px}.central-form h2{font-weight:400;margin-bottom:20px;text-align:center}.central-form .form-check-inline{margin-right:10px}.central-form .form-group>label:not(:first-child){margin-top:10px}.central-form input[type=radio]{margin-right:5px}.central-form .dates .form-inline{display:inline}.central-form .dates .form-inline input[type=number]{margin:0 10px;width:52px}.central-form .dates .form-inline input[type=date]{margin-left:20px;margin-top:10px}.central-form .form-group:not(:last-child){border-bottom:1px solid #eee;padding-bottom:20px}.central-form .nav{margin-top:40px}.central-form .nav .nav-link{text-decoration:none}.central-form .tab-content{border-right:1px solid #ddd;border-left:1px solid #ddd;border-bottom:1px solid #ddd;padding:15px}.avatar-photo img{border-radius:3px}.breadcrumb{background-color:#f9f9fb}.breadcrumb ul{font-size:12px;padding:30px 0 24px}.breadcrumb ul li:not(:last-child):after{content:">";margin-left:5px;margin-right:1px}.btn{color:#24292e;background-color:#eff3f6;background-image:-webkit-gradient(linear,left top,left bottom,from(#fafbfc),color-stop(90%,#eff3f6));background-image:linear-gradient(-180deg,#fafbfc,#eff3f6 90%);position:relative;display:inline-block;padding:6px 12px;font-size:14px;font-weight:600;line-height:20px;white-space:nowrap;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-position:-1px -1px;background-size:110% 110%;border:1px solid rgba(27,31,35,.2);border-radius:.25em;-webkit-appearance:none;-moz-appearance:none;appearance:none}.btn,.btn:hover,.btn:visited{background-repeat:repeat-x;text-decoration:none}.btn:hover,.btn:visited{background-color:#e6ebf1;background-image:-webkit-gradient(linear,left top,left bottom,from(#f0f3f6),color-stop(90%,#e6ebf1));background-image:linear-gradient(-180deg,#f0f3f6,#e6ebf1 90%);background-position:0 -.5em;border-color:rgba(27,31,35,.35)}.btn:active{background-color:#e9ecef;background-image:none;border-color:rgba(27,31,35,.35);-webkit-box-shadow:inset 0 .15em .3em rgba(27,31,35,.15);box-shadow:inset 0 .15em .3em rgba(27,31,35,.15)}.btn:disabled{background-image:-webkit-gradient(linear,left top,left bottom,from(#63b175),color-stop(90%,#61986e));background-image:linear-gradient(-180deg,#63b175,#61986e 90%)}.btn:focus{outline:none;text-decoration:none}.btn-primary{color:#fff;background-color:#28a745;background-image:-webkit-gradient(linear,left top,left bottom,from(#34d058),color-stop(90%,#28a745));background-image:linear-gradient(-180deg,#34d058,#28a745 90%)}.btn-primary:hover{background-color:#269f42;background-image:-webkit-gradient(linear,left top,left bottom,from(#2fcb53),color-stop(90%,#269f42));background-image:linear-gradient(-180deg,#2fcb53,#269f42 90%);background-position:0 -.5em;border-color:rgba(27,31,35,.5)}.table{border-collapse:collapse;display:table;width:100%}.table .table-row{border-left:1px solid #ddd;border-right:1px solid #ddd;border-top:1px solid #ddd;display:table-row}.table .table-row:first-child .table-cell:first-child{border-top-left-radius:3px}.table .table-row:first-child .table-cell:last-child{border-top-right-radius:3px}.table .table-row:last-child{border-bottom:1px solid #ddd}.table .table-row:hover{background-color:#f6f8fa}.table .table-cell{display:table-cell;padding:8px 10px}footer .badge-success{font-size:12px;font-weight:400}footer .show-version{text-align:left}footer .show-version h2{font-size:16px}footer .show-version .note{margin-bottom:20px}footer .show-version .note ul{list-style-type:disc}footer .show-version .note li{display:block;font-size:15px;text-align:left}@media (max-width:480px){.sidebar-box{border:1px solid #dfdfdf;border-radius:3px}.sidebar-box .sidebar-heading{background-color:#fafafa;margin-top:0;padding:5px}.sidebar-box .sidebar-blank{background-color:#fff;border:0}.sidebar-box li{padding:5px}} + */@font-face{font-family:FontAwesome;src:url(/fonts/vendor/font-awesome/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713);src:url(/fonts/vendor/font-awesome/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713) format("embedded-opentype"),url(/fonts/vendor/font-awesome/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(/fonts/vendor/font-awesome/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(/fonts/vendor/font-awesome/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(/fonts/vendor/font-awesome/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde) format("svg");font-weight:400;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scaleY(-1);transform:scaleY(-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\F000"}.fa-music:before{content:"\F001"}.fa-search:before{content:"\F002"}.fa-envelope-o:before{content:"\F003"}.fa-heart:before{content:"\F004"}.fa-star:before{content:"\F005"}.fa-star-o:before{content:"\F006"}.fa-user:before{content:"\F007"}.fa-film:before{content:"\F008"}.fa-th-large:before{content:"\F009"}.fa-th:before{content:"\F00A"}.fa-th-list:before{content:"\F00B"}.fa-check:before{content:"\F00C"}.fa-close:before,.fa-remove:before,.fa-times:before{content:"\F00D"}.fa-search-plus:before{content:"\F00E"}.fa-search-minus:before{content:"\F010"}.fa-power-off:before{content:"\F011"}.fa-signal:before{content:"\F012"}.fa-cog:before,.fa-gear:before{content:"\F013"}.fa-trash-o:before{content:"\F014"}.fa-home:before{content:"\F015"}.fa-file-o:before{content:"\F016"}.fa-clock-o:before{content:"\F017"}.fa-road:before{content:"\F018"}.fa-download:before{content:"\F019"}.fa-arrow-circle-o-down:before{content:"\F01A"}.fa-arrow-circle-o-up:before{content:"\F01B"}.fa-inbox:before{content:"\F01C"}.fa-play-circle-o:before{content:"\F01D"}.fa-repeat:before,.fa-rotate-right:before{content:"\F01E"}.fa-refresh:before{content:"\F021"}.fa-list-alt:before{content:"\F022"}.fa-lock:before{content:"\F023"}.fa-flag:before{content:"\F024"}.fa-headphones:before{content:"\F025"}.fa-volume-off:before{content:"\F026"}.fa-volume-down:before{content:"\F027"}.fa-volume-up:before{content:"\F028"}.fa-qrcode:before{content:"\F029"}.fa-barcode:before{content:"\F02A"}.fa-tag:before{content:"\F02B"}.fa-tags:before{content:"\F02C"}.fa-book:before{content:"\F02D"}.fa-bookmark:before{content:"\F02E"}.fa-print:before{content:"\F02F"}.fa-camera:before{content:"\F030"}.fa-font:before{content:"\F031"}.fa-bold:before{content:"\F032"}.fa-italic:before{content:"\F033"}.fa-text-height:before{content:"\F034"}.fa-text-width:before{content:"\F035"}.fa-align-left:before{content:"\F036"}.fa-align-center:before{content:"\F037"}.fa-align-right:before{content:"\F038"}.fa-align-justify:before{content:"\F039"}.fa-list:before{content:"\F03A"}.fa-dedent:before,.fa-outdent:before{content:"\F03B"}.fa-indent:before{content:"\F03C"}.fa-video-camera:before{content:"\F03D"}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:"\F03E"}.fa-pencil:before{content:"\F040"}.fa-map-marker:before{content:"\F041"}.fa-adjust:before{content:"\F042"}.fa-tint:before{content:"\F043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\F044"}.fa-share-square-o:before{content:"\F045"}.fa-check-square-o:before{content:"\F046"}.fa-arrows:before{content:"\F047"}.fa-step-backward:before{content:"\F048"}.fa-fast-backward:before{content:"\F049"}.fa-backward:before{content:"\F04A"}.fa-play:before{content:"\F04B"}.fa-pause:before{content:"\F04C"}.fa-stop:before{content:"\F04D"}.fa-forward:before{content:"\F04E"}.fa-fast-forward:before{content:"\F050"}.fa-step-forward:before{content:"\F051"}.fa-eject:before{content:"\F052"}.fa-chevron-left:before{content:"\F053"}.fa-chevron-right:before{content:"\F054"}.fa-plus-circle:before{content:"\F055"}.fa-minus-circle:before{content:"\F056"}.fa-times-circle:before{content:"\F057"}.fa-check-circle:before{content:"\F058"}.fa-question-circle:before{content:"\F059"}.fa-info-circle:before{content:"\F05A"}.fa-crosshairs:before{content:"\F05B"}.fa-times-circle-o:before{content:"\F05C"}.fa-check-circle-o:before{content:"\F05D"}.fa-ban:before{content:"\F05E"}.fa-arrow-left:before{content:"\F060"}.fa-arrow-right:before{content:"\F061"}.fa-arrow-up:before{content:"\F062"}.fa-arrow-down:before{content:"\F063"}.fa-mail-forward:before,.fa-share:before{content:"\F064"}.fa-expand:before{content:"\F065"}.fa-compress:before{content:"\F066"}.fa-plus:before{content:"\F067"}.fa-minus:before{content:"\F068"}.fa-asterisk:before{content:"\F069"}.fa-exclamation-circle:before{content:"\F06A"}.fa-gift:before{content:"\F06B"}.fa-leaf:before{content:"\F06C"}.fa-fire:before{content:"\F06D"}.fa-eye:before{content:"\F06E"}.fa-eye-slash:before{content:"\F070"}.fa-exclamation-triangle:before,.fa-warning:before{content:"\F071"}.fa-plane:before{content:"\F072"}.fa-calendar:before{content:"\F073"}.fa-random:before{content:"\F074"}.fa-comment:before{content:"\F075"}.fa-magnet:before{content:"\F076"}.fa-chevron-up:before{content:"\F077"}.fa-chevron-down:before{content:"\F078"}.fa-retweet:before{content:"\F079"}.fa-shopping-cart:before{content:"\F07A"}.fa-folder:before{content:"\F07B"}.fa-folder-open:before{content:"\F07C"}.fa-arrows-v:before{content:"\F07D"}.fa-arrows-h:before{content:"\F07E"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\F080"}.fa-twitter-square:before{content:"\F081"}.fa-facebook-square:before{content:"\F082"}.fa-camera-retro:before{content:"\F083"}.fa-key:before{content:"\F084"}.fa-cogs:before,.fa-gears:before{content:"\F085"}.fa-comments:before{content:"\F086"}.fa-thumbs-o-up:before{content:"\F087"}.fa-thumbs-o-down:before{content:"\F088"}.fa-star-half:before{content:"\F089"}.fa-heart-o:before{content:"\F08A"}.fa-sign-out:before{content:"\F08B"}.fa-linkedin-square:before{content:"\F08C"}.fa-thumb-tack:before{content:"\F08D"}.fa-external-link:before{content:"\F08E"}.fa-sign-in:before{content:"\F090"}.fa-trophy:before{content:"\F091"}.fa-github-square:before{content:"\F092"}.fa-upload:before{content:"\F093"}.fa-lemon-o:before{content:"\F094"}.fa-phone:before{content:"\F095"}.fa-square-o:before{content:"\F096"}.fa-bookmark-o:before{content:"\F097"}.fa-phone-square:before{content:"\F098"}.fa-twitter:before{content:"\F099"}.fa-facebook-f:before,.fa-facebook:before{content:"\F09A"}.fa-github:before{content:"\F09B"}.fa-unlock:before{content:"\F09C"}.fa-credit-card:before{content:"\F09D"}.fa-feed:before,.fa-rss:before{content:"\F09E"}.fa-hdd-o:before{content:"\F0A0"}.fa-bullhorn:before{content:"\F0A1"}.fa-bell:before{content:"\F0F3"}.fa-certificate:before{content:"\F0A3"}.fa-hand-o-right:before{content:"\F0A4"}.fa-hand-o-left:before{content:"\F0A5"}.fa-hand-o-up:before{content:"\F0A6"}.fa-hand-o-down:before{content:"\F0A7"}.fa-arrow-circle-left:before{content:"\F0A8"}.fa-arrow-circle-right:before{content:"\F0A9"}.fa-arrow-circle-up:before{content:"\F0AA"}.fa-arrow-circle-down:before{content:"\F0AB"}.fa-globe:before{content:"\F0AC"}.fa-wrench:before{content:"\F0AD"}.fa-tasks:before{content:"\F0AE"}.fa-filter:before{content:"\F0B0"}.fa-briefcase:before{content:"\F0B1"}.fa-arrows-alt:before{content:"\F0B2"}.fa-group:before,.fa-users:before{content:"\F0C0"}.fa-chain:before,.fa-link:before{content:"\F0C1"}.fa-cloud:before{content:"\F0C2"}.fa-flask:before{content:"\F0C3"}.fa-cut:before,.fa-scissors:before{content:"\F0C4"}.fa-copy:before,.fa-files-o:before{content:"\F0C5"}.fa-paperclip:before{content:"\F0C6"}.fa-floppy-o:before,.fa-save:before{content:"\F0C7"}.fa-square:before{content:"\F0C8"}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:"\F0C9"}.fa-list-ul:before{content:"\F0CA"}.fa-list-ol:before{content:"\F0CB"}.fa-strikethrough:before{content:"\F0CC"}.fa-underline:before{content:"\F0CD"}.fa-table:before{content:"\F0CE"}.fa-magic:before{content:"\F0D0"}.fa-truck:before{content:"\F0D1"}.fa-pinterest:before{content:"\F0D2"}.fa-pinterest-square:before{content:"\F0D3"}.fa-google-plus-square:before{content:"\F0D4"}.fa-google-plus:before{content:"\F0D5"}.fa-money:before{content:"\F0D6"}.fa-caret-down:before{content:"\F0D7"}.fa-caret-up:before{content:"\F0D8"}.fa-caret-left:before{content:"\F0D9"}.fa-caret-right:before{content:"\F0DA"}.fa-columns:before{content:"\F0DB"}.fa-sort:before,.fa-unsorted:before{content:"\F0DC"}.fa-sort-desc:before,.fa-sort-down:before{content:"\F0DD"}.fa-sort-asc:before,.fa-sort-up:before{content:"\F0DE"}.fa-envelope:before{content:"\F0E0"}.fa-linkedin:before{content:"\F0E1"}.fa-rotate-left:before,.fa-undo:before{content:"\F0E2"}.fa-gavel:before,.fa-legal:before{content:"\F0E3"}.fa-dashboard:before,.fa-tachometer:before{content:"\F0E4"}.fa-comment-o:before{content:"\F0E5"}.fa-comments-o:before{content:"\F0E6"}.fa-bolt:before,.fa-flash:before{content:"\F0E7"}.fa-sitemap:before{content:"\F0E8"}.fa-umbrella:before{content:"\F0E9"}.fa-clipboard:before,.fa-paste:before{content:"\F0EA"}.fa-lightbulb-o:before{content:"\F0EB"}.fa-exchange:before{content:"\F0EC"}.fa-cloud-download:before{content:"\F0ED"}.fa-cloud-upload:before{content:"\F0EE"}.fa-user-md:before{content:"\F0F0"}.fa-stethoscope:before{content:"\F0F1"}.fa-suitcase:before{content:"\F0F2"}.fa-bell-o:before{content:"\F0A2"}.fa-coffee:before{content:"\F0F4"}.fa-cutlery:before{content:"\F0F5"}.fa-file-text-o:before{content:"\F0F6"}.fa-building-o:before{content:"\F0F7"}.fa-hospital-o:before{content:"\F0F8"}.fa-ambulance:before{content:"\F0F9"}.fa-medkit:before{content:"\F0FA"}.fa-fighter-jet:before{content:"\F0FB"}.fa-beer:before{content:"\F0FC"}.fa-h-square:before{content:"\F0FD"}.fa-plus-square:before{content:"\F0FE"}.fa-angle-double-left:before{content:"\F100"}.fa-angle-double-right:before{content:"\F101"}.fa-angle-double-up:before{content:"\F102"}.fa-angle-double-down:before{content:"\F103"}.fa-angle-left:before{content:"\F104"}.fa-angle-right:before{content:"\F105"}.fa-angle-up:before{content:"\F106"}.fa-angle-down:before{content:"\F107"}.fa-desktop:before{content:"\F108"}.fa-laptop:before{content:"\F109"}.fa-tablet:before{content:"\F10A"}.fa-mobile-phone:before,.fa-mobile:before{content:"\F10B"}.fa-circle-o:before{content:"\F10C"}.fa-quote-left:before{content:"\F10D"}.fa-quote-right:before{content:"\F10E"}.fa-spinner:before{content:"\F110"}.fa-circle:before{content:"\F111"}.fa-mail-reply:before,.fa-reply:before{content:"\F112"}.fa-github-alt:before{content:"\F113"}.fa-folder-o:before{content:"\F114"}.fa-folder-open-o:before{content:"\F115"}.fa-smile-o:before{content:"\F118"}.fa-frown-o:before{content:"\F119"}.fa-meh-o:before{content:"\F11A"}.fa-gamepad:before{content:"\F11B"}.fa-keyboard-o:before{content:"\F11C"}.fa-flag-o:before{content:"\F11D"}.fa-flag-checkered:before{content:"\F11E"}.fa-terminal:before{content:"\F120"}.fa-code:before{content:"\F121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\F122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\F123"}.fa-location-arrow:before{content:"\F124"}.fa-crop:before{content:"\F125"}.fa-code-fork:before{content:"\F126"}.fa-chain-broken:before,.fa-unlink:before{content:"\F127"}.fa-question:before{content:"\F128"}.fa-info:before{content:"\F129"}.fa-exclamation:before{content:"\F12A"}.fa-superscript:before{content:"\F12B"}.fa-subscript:before{content:"\F12C"}.fa-eraser:before{content:"\F12D"}.fa-puzzle-piece:before{content:"\F12E"}.fa-microphone:before{content:"\F130"}.fa-microphone-slash:before{content:"\F131"}.fa-shield:before{content:"\F132"}.fa-calendar-o:before{content:"\F133"}.fa-fire-extinguisher:before{content:"\F134"}.fa-rocket:before{content:"\F135"}.fa-maxcdn:before{content:"\F136"}.fa-chevron-circle-left:before{content:"\F137"}.fa-chevron-circle-right:before{content:"\F138"}.fa-chevron-circle-up:before{content:"\F139"}.fa-chevron-circle-down:before{content:"\F13A"}.fa-html5:before{content:"\F13B"}.fa-css3:before{content:"\F13C"}.fa-anchor:before{content:"\F13D"}.fa-unlock-alt:before{content:"\F13E"}.fa-bullseye:before{content:"\F140"}.fa-ellipsis-h:before{content:"\F141"}.fa-ellipsis-v:before{content:"\F142"}.fa-rss-square:before{content:"\F143"}.fa-play-circle:before{content:"\F144"}.fa-ticket:before{content:"\F145"}.fa-minus-square:before{content:"\F146"}.fa-minus-square-o:before{content:"\F147"}.fa-level-up:before{content:"\F148"}.fa-level-down:before{content:"\F149"}.fa-check-square:before{content:"\F14A"}.fa-pencil-square:before{content:"\F14B"}.fa-external-link-square:before{content:"\F14C"}.fa-share-square:before{content:"\F14D"}.fa-compass:before{content:"\F14E"}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:"\F150"}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:"\F151"}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:"\F152"}.fa-eur:before,.fa-euro:before{content:"\F153"}.fa-gbp:before{content:"\F154"}.fa-dollar:before,.fa-usd:before{content:"\F155"}.fa-inr:before,.fa-rupee:before{content:"\F156"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:"\F157"}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:"\F158"}.fa-krw:before,.fa-won:before{content:"\F159"}.fa-bitcoin:before,.fa-btc:before{content:"\F15A"}.fa-file:before{content:"\F15B"}.fa-file-text:before{content:"\F15C"}.fa-sort-alpha-asc:before{content:"\F15D"}.fa-sort-alpha-desc:before{content:"\F15E"}.fa-sort-amount-asc:before{content:"\F160"}.fa-sort-amount-desc:before{content:"\F161"}.fa-sort-numeric-asc:before{content:"\F162"}.fa-sort-numeric-desc:before{content:"\F163"}.fa-thumbs-up:before{content:"\F164"}.fa-thumbs-down:before{content:"\F165"}.fa-youtube-square:before{content:"\F166"}.fa-youtube:before{content:"\F167"}.fa-xing:before{content:"\F168"}.fa-xing-square:before{content:"\F169"}.fa-youtube-play:before{content:"\F16A"}.fa-dropbox:before{content:"\F16B"}.fa-stack-overflow:before{content:"\F16C"}.fa-instagram:before{content:"\F16D"}.fa-flickr:before{content:"\F16E"}.fa-adn:before{content:"\F170"}.fa-bitbucket:before{content:"\F171"}.fa-bitbucket-square:before{content:"\F172"}.fa-tumblr:before{content:"\F173"}.fa-tumblr-square:before{content:"\F174"}.fa-long-arrow-down:before{content:"\F175"}.fa-long-arrow-up:before{content:"\F176"}.fa-long-arrow-left:before{content:"\F177"}.fa-long-arrow-right:before{content:"\F178"}.fa-apple:before{content:"\F179"}.fa-windows:before{content:"\F17A"}.fa-android:before{content:"\F17B"}.fa-linux:before{content:"\F17C"}.fa-dribbble:before{content:"\F17D"}.fa-skype:before{content:"\F17E"}.fa-foursquare:before{content:"\F180"}.fa-trello:before{content:"\F181"}.fa-female:before{content:"\F182"}.fa-male:before{content:"\F183"}.fa-gittip:before,.fa-gratipay:before{content:"\F184"}.fa-sun-o:before{content:"\F185"}.fa-moon-o:before{content:"\F186"}.fa-archive:before{content:"\F187"}.fa-bug:before{content:"\F188"}.fa-vk:before{content:"\F189"}.fa-weibo:before{content:"\F18A"}.fa-renren:before{content:"\F18B"}.fa-pagelines:before{content:"\F18C"}.fa-stack-exchange:before{content:"\F18D"}.fa-arrow-circle-o-right:before{content:"\F18E"}.fa-arrow-circle-o-left:before{content:"\F190"}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:"\F191"}.fa-dot-circle-o:before{content:"\F192"}.fa-wheelchair:before{content:"\F193"}.fa-vimeo-square:before{content:"\F194"}.fa-try:before,.fa-turkish-lira:before{content:"\F195"}.fa-plus-square-o:before{content:"\F196"}.fa-space-shuttle:before{content:"\F197"}.fa-slack:before{content:"\F198"}.fa-envelope-square:before{content:"\F199"}.fa-wordpress:before{content:"\F19A"}.fa-openid:before{content:"\F19B"}.fa-bank:before,.fa-institution:before,.fa-university:before{content:"\F19C"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\F19D"}.fa-yahoo:before{content:"\F19E"}.fa-google:before{content:"\F1A0"}.fa-reddit:before{content:"\F1A1"}.fa-reddit-square:before{content:"\F1A2"}.fa-stumbleupon-circle:before{content:"\F1A3"}.fa-stumbleupon:before{content:"\F1A4"}.fa-delicious:before{content:"\F1A5"}.fa-digg:before{content:"\F1A6"}.fa-pied-piper-pp:before{content:"\F1A7"}.fa-pied-piper-alt:before{content:"\F1A8"}.fa-drupal:before{content:"\F1A9"}.fa-joomla:before{content:"\F1AA"}.fa-language:before{content:"\F1AB"}.fa-fax:before{content:"\F1AC"}.fa-building:before{content:"\F1AD"}.fa-child:before{content:"\F1AE"}.fa-paw:before{content:"\F1B0"}.fa-spoon:before{content:"\F1B1"}.fa-cube:before{content:"\F1B2"}.fa-cubes:before{content:"\F1B3"}.fa-behance:before{content:"\F1B4"}.fa-behance-square:before{content:"\F1B5"}.fa-steam:before{content:"\F1B6"}.fa-steam-square:before{content:"\F1B7"}.fa-recycle:before{content:"\F1B8"}.fa-automobile:before,.fa-car:before{content:"\F1B9"}.fa-cab:before,.fa-taxi:before{content:"\F1BA"}.fa-tree:before{content:"\F1BB"}.fa-spotify:before{content:"\F1BC"}.fa-deviantart:before{content:"\F1BD"}.fa-soundcloud:before{content:"\F1BE"}.fa-database:before{content:"\F1C0"}.fa-file-pdf-o:before{content:"\F1C1"}.fa-file-word-o:before{content:"\F1C2"}.fa-file-excel-o:before{content:"\F1C3"}.fa-file-powerpoint-o:before{content:"\F1C4"}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:"\F1C5"}.fa-file-archive-o:before,.fa-file-zip-o:before{content:"\F1C6"}.fa-file-audio-o:before,.fa-file-sound-o:before{content:"\F1C7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\F1C8"}.fa-file-code-o:before{content:"\F1C9"}.fa-vine:before{content:"\F1CA"}.fa-codepen:before{content:"\F1CB"}.fa-jsfiddle:before{content:"\F1CC"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:"\F1CD"}.fa-circle-o-notch:before{content:"\F1CE"}.fa-ra:before,.fa-rebel:before,.fa-resistance:before{content:"\F1D0"}.fa-empire:before,.fa-ge:before{content:"\F1D1"}.fa-git-square:before{content:"\F1D2"}.fa-git:before{content:"\F1D3"}.fa-hacker-news:before,.fa-y-combinator-square:before,.fa-yc-square:before{content:"\F1D4"}.fa-tencent-weibo:before{content:"\F1D5"}.fa-qq:before{content:"\F1D6"}.fa-wechat:before,.fa-weixin:before{content:"\F1D7"}.fa-paper-plane:before,.fa-send:before{content:"\F1D8"}.fa-paper-plane-o:before,.fa-send-o:before{content:"\F1D9"}.fa-history:before{content:"\F1DA"}.fa-circle-thin:before{content:"\F1DB"}.fa-header:before{content:"\F1DC"}.fa-paragraph:before{content:"\F1DD"}.fa-sliders:before{content:"\F1DE"}.fa-share-alt:before{content:"\F1E0"}.fa-share-alt-square:before{content:"\F1E1"}.fa-bomb:before{content:"\F1E2"}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:"\F1E3"}.fa-tty:before{content:"\F1E4"}.fa-binoculars:before{content:"\F1E5"}.fa-plug:before{content:"\F1E6"}.fa-slideshare:before{content:"\F1E7"}.fa-twitch:before{content:"\F1E8"}.fa-yelp:before{content:"\F1E9"}.fa-newspaper-o:before{content:"\F1EA"}.fa-wifi:before{content:"\F1EB"}.fa-calculator:before{content:"\F1EC"}.fa-paypal:before{content:"\F1ED"}.fa-google-wallet:before{content:"\F1EE"}.fa-cc-visa:before{content:"\F1F0"}.fa-cc-mastercard:before{content:"\F1F1"}.fa-cc-discover:before{content:"\F1F2"}.fa-cc-amex:before{content:"\F1F3"}.fa-cc-paypal:before{content:"\F1F4"}.fa-cc-stripe:before{content:"\F1F5"}.fa-bell-slash:before{content:"\F1F6"}.fa-bell-slash-o:before{content:"\F1F7"}.fa-trash:before{content:"\F1F8"}.fa-copyright:before{content:"\F1F9"}.fa-at:before{content:"\F1FA"}.fa-eyedropper:before{content:"\F1FB"}.fa-paint-brush:before{content:"\F1FC"}.fa-birthday-cake:before{content:"\F1FD"}.fa-area-chart:before{content:"\F1FE"}.fa-pie-chart:before{content:"\F200"}.fa-line-chart:before{content:"\F201"}.fa-lastfm:before{content:"\F202"}.fa-lastfm-square:before{content:"\F203"}.fa-toggle-off:before{content:"\F204"}.fa-toggle-on:before{content:"\F205"}.fa-bicycle:before{content:"\F206"}.fa-bus:before{content:"\F207"}.fa-ioxhost:before{content:"\F208"}.fa-angellist:before{content:"\F209"}.fa-cc:before{content:"\F20A"}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:"\F20B"}.fa-meanpath:before{content:"\F20C"}.fa-buysellads:before{content:"\F20D"}.fa-connectdevelop:before{content:"\F20E"}.fa-dashcube:before{content:"\F210"}.fa-forumbee:before{content:"\F211"}.fa-leanpub:before{content:"\F212"}.fa-sellsy:before{content:"\F213"}.fa-shirtsinbulk:before{content:"\F214"}.fa-simplybuilt:before{content:"\F215"}.fa-skyatlas:before{content:"\F216"}.fa-cart-plus:before{content:"\F217"}.fa-cart-arrow-down:before{content:"\F218"}.fa-diamond:before{content:"\F219"}.fa-ship:before{content:"\F21A"}.fa-user-secret:before{content:"\F21B"}.fa-motorcycle:before{content:"\F21C"}.fa-street-view:before{content:"\F21D"}.fa-heartbeat:before{content:"\F21E"}.fa-venus:before{content:"\F221"}.fa-mars:before{content:"\F222"}.fa-mercury:before{content:"\F223"}.fa-intersex:before,.fa-transgender:before{content:"\F224"}.fa-transgender-alt:before{content:"\F225"}.fa-venus-double:before{content:"\F226"}.fa-mars-double:before{content:"\F227"}.fa-venus-mars:before{content:"\F228"}.fa-mars-stroke:before{content:"\F229"}.fa-mars-stroke-v:before{content:"\F22A"}.fa-mars-stroke-h:before{content:"\F22B"}.fa-neuter:before{content:"\F22C"}.fa-genderless:before{content:"\F22D"}.fa-facebook-official:before{content:"\F230"}.fa-pinterest-p:before{content:"\F231"}.fa-whatsapp:before{content:"\F232"}.fa-server:before{content:"\F233"}.fa-user-plus:before{content:"\F234"}.fa-user-times:before{content:"\F235"}.fa-bed:before,.fa-hotel:before{content:"\F236"}.fa-viacoin:before{content:"\F237"}.fa-train:before{content:"\F238"}.fa-subway:before{content:"\F239"}.fa-medium:before{content:"\F23A"}.fa-y-combinator:before,.fa-yc:before{content:"\F23B"}.fa-optin-monster:before{content:"\F23C"}.fa-opencart:before{content:"\F23D"}.fa-expeditedssl:before{content:"\F23E"}.fa-battery-4:before,.fa-battery-full:before,.fa-battery:before{content:"\F240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\F241"}.fa-battery-2:before,.fa-battery-half:before{content:"\F242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\F243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\F244"}.fa-mouse-pointer:before{content:"\F245"}.fa-i-cursor:before{content:"\F246"}.fa-object-group:before{content:"\F247"}.fa-object-ungroup:before{content:"\F248"}.fa-sticky-note:before{content:"\F249"}.fa-sticky-note-o:before{content:"\F24A"}.fa-cc-jcb:before{content:"\F24B"}.fa-cc-diners-club:before{content:"\F24C"}.fa-clone:before{content:"\F24D"}.fa-balance-scale:before{content:"\F24E"}.fa-hourglass-o:before{content:"\F250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\F251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\F252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\F253"}.fa-hourglass:before{content:"\F254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\F255"}.fa-hand-paper-o:before,.fa-hand-stop-o:before{content:"\F256"}.fa-hand-scissors-o:before{content:"\F257"}.fa-hand-lizard-o:before{content:"\F258"}.fa-hand-spock-o:before{content:"\F259"}.fa-hand-pointer-o:before{content:"\F25A"}.fa-hand-peace-o:before{content:"\F25B"}.fa-trademark:before{content:"\F25C"}.fa-registered:before{content:"\F25D"}.fa-creative-commons:before{content:"\F25E"}.fa-gg:before{content:"\F260"}.fa-gg-circle:before{content:"\F261"}.fa-tripadvisor:before{content:"\F262"}.fa-odnoklassniki:before{content:"\F263"}.fa-odnoklassniki-square:before{content:"\F264"}.fa-get-pocket:before{content:"\F265"}.fa-wikipedia-w:before{content:"\F266"}.fa-safari:before{content:"\F267"}.fa-chrome:before{content:"\F268"}.fa-firefox:before{content:"\F269"}.fa-opera:before{content:"\F26A"}.fa-internet-explorer:before{content:"\F26B"}.fa-television:before,.fa-tv:before{content:"\F26C"}.fa-contao:before{content:"\F26D"}.fa-500px:before{content:"\F26E"}.fa-amazon:before{content:"\F270"}.fa-calendar-plus-o:before{content:"\F271"}.fa-calendar-minus-o:before{content:"\F272"}.fa-calendar-times-o:before{content:"\F273"}.fa-calendar-check-o:before{content:"\F274"}.fa-industry:before{content:"\F275"}.fa-map-pin:before{content:"\F276"}.fa-map-signs:before{content:"\F277"}.fa-map-o:before{content:"\F278"}.fa-map:before{content:"\F279"}.fa-commenting:before{content:"\F27A"}.fa-commenting-o:before{content:"\F27B"}.fa-houzz:before{content:"\F27C"}.fa-vimeo:before{content:"\F27D"}.fa-black-tie:before{content:"\F27E"}.fa-fonticons:before{content:"\F280"}.fa-reddit-alien:before{content:"\F281"}.fa-edge:before{content:"\F282"}.fa-credit-card-alt:before{content:"\F283"}.fa-codiepie:before{content:"\F284"}.fa-modx:before{content:"\F285"}.fa-fort-awesome:before{content:"\F286"}.fa-usb:before{content:"\F287"}.fa-product-hunt:before{content:"\F288"}.fa-mixcloud:before{content:"\F289"}.fa-scribd:before{content:"\F28A"}.fa-pause-circle:before{content:"\F28B"}.fa-pause-circle-o:before{content:"\F28C"}.fa-stop-circle:before{content:"\F28D"}.fa-stop-circle-o:before{content:"\F28E"}.fa-shopping-bag:before{content:"\F290"}.fa-shopping-basket:before{content:"\F291"}.fa-hashtag:before{content:"\F292"}.fa-bluetooth:before{content:"\F293"}.fa-bluetooth-b:before{content:"\F294"}.fa-percent:before{content:"\F295"}.fa-gitlab:before{content:"\F296"}.fa-wpbeginner:before{content:"\F297"}.fa-wpforms:before{content:"\F298"}.fa-envira:before{content:"\F299"}.fa-universal-access:before{content:"\F29A"}.fa-wheelchair-alt:before{content:"\F29B"}.fa-question-circle-o:before{content:"\F29C"}.fa-blind:before{content:"\F29D"}.fa-audio-description:before{content:"\F29E"}.fa-volume-control-phone:before{content:"\F2A0"}.fa-braille:before{content:"\F2A1"}.fa-assistive-listening-systems:before{content:"\F2A2"}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before{content:"\F2A3"}.fa-deaf:before,.fa-deafness:before,.fa-hard-of-hearing:before{content:"\F2A4"}.fa-glide:before{content:"\F2A5"}.fa-glide-g:before{content:"\F2A6"}.fa-sign-language:before,.fa-signing:before{content:"\F2A7"}.fa-low-vision:before{content:"\F2A8"}.fa-viadeo:before{content:"\F2A9"}.fa-viadeo-square:before{content:"\F2AA"}.fa-snapchat:before{content:"\F2AB"}.fa-snapchat-ghost:before{content:"\F2AC"}.fa-snapchat-square:before{content:"\F2AD"}.fa-pied-piper:before{content:"\F2AE"}.fa-first-order:before{content:"\F2B0"}.fa-yoast:before{content:"\F2B1"}.fa-themeisle:before{content:"\F2B2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\F2B3"}.fa-fa:before,.fa-font-awesome:before{content:"\F2B4"}.fa-handshake-o:before{content:"\F2B5"}.fa-envelope-open:before{content:"\F2B6"}.fa-envelope-open-o:before{content:"\F2B7"}.fa-linode:before{content:"\F2B8"}.fa-address-book:before{content:"\F2B9"}.fa-address-book-o:before{content:"\F2BA"}.fa-address-card:before,.fa-vcard:before{content:"\F2BB"}.fa-address-card-o:before,.fa-vcard-o:before{content:"\F2BC"}.fa-user-circle:before{content:"\F2BD"}.fa-user-circle-o:before{content:"\F2BE"}.fa-user-o:before{content:"\F2C0"}.fa-id-badge:before{content:"\F2C1"}.fa-drivers-license:before,.fa-id-card:before{content:"\F2C2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\F2C3"}.fa-quora:before{content:"\F2C4"}.fa-free-code-camp:before{content:"\F2C5"}.fa-telegram:before{content:"\F2C6"}.fa-thermometer-4:before,.fa-thermometer-full:before,.fa-thermometer:before{content:"\F2C7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\F2C8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\F2C9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\F2CA"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\F2CB"}.fa-shower:before{content:"\F2CC"}.fa-bath:before,.fa-bathtub:before,.fa-s15:before{content:"\F2CD"}.fa-podcast:before{content:"\F2CE"}.fa-window-maximize:before{content:"\F2D0"}.fa-window-minimize:before{content:"\F2D1"}.fa-window-restore:before{content:"\F2D2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\F2D3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\F2D4"}.fa-bandcamp:before{content:"\F2D5"}.fa-grav:before{content:"\F2D6"}.fa-etsy:before{content:"\F2D7"}.fa-imdb:before{content:"\F2D8"}.fa-ravelry:before{content:"\F2D9"}.fa-eercast:before{content:"\F2DA"}.fa-microchip:before{content:"\F2DB"}.fa-snowflake-o:before{content:"\F2DC"}.fa-superpowers:before{content:"\F2DD"}.fa-wpexplorer:before{content:"\F2DE"}.fa-meetup:before{content:"\F2E0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.btn{color:#333;background-color:#eee;background-image:-webkit-gradient(linear,left top,left bottom,from(#fcfcfc),to(#eee));background-image:linear-gradient(#fcfcfc,#eee);border:1px solid #d5d5d5;border-radius:3px;text-align:center}.btn:hover{background-color:#ddd;background-image:-webkit-gradient(linear,left top,left bottom,from(#eee),to(#ddd));background-image:linear-gradient(#eee,#ddd);border-color:#ccc;color:#333;text-decoration:none}.btn-primary{background-color:#60b044;background-image:-webkit-gradient(linear,left top,left bottom,from(#8add6d),to(#60b044));background-image:linear-gradient(#8add6d,#60b044);border-color:#5ca941;text-shadow:0 -1px 0 rgba(0,0,0,.15)}.btn-primary:hover{background-color:#569e3d;background-image:-webkit-gradient(linear,left top,left bottom,from(#79d858),to(#569e3d));background-image:linear-gradient(#79d858,#569e3d);border-color:#4a993e;color:#fff}.btn-danger{color:#900}.btn-danger:hover{background-color:#b33630;background-image:-webkit-gradient(linear,left top,left bottom,from(#dc5f59),to(#b33630));background-image:linear-gradient(#dc5f59,#b33630);border-color:#cd504a;color:#fff}.btn-add{position:relative;top:3px;border:1px solid #576675;border-radius:50%;width:15px;margin-right:3px}header{background-color:#325776}header .main-cta{position:relative;top:16px}.logo{margin:10px 15px}.logo a:hover{background-color:transparent;color:#fff}.header-search{padding:0;margin:auto 0}.header-search-form{position:relative}.header-search-form span{color:#d7d7d7;font-size:12px;left:10px;position:absolute;top:10px}.header-search-form input{border:0;color:#fff;padding-left:29px}.header-nav{margin-top:24px;text-align:right}.header-nav-item{display:inline;margin-right:10px}.header-nav-item:last-child{margin-right:0}.header-nav-item-link{color:#fff;font-weight:300;padding:3px 11px;text-decoration:none}.header-nav-item-link:hover{background-color:#497193;border-radius:3px;color:#fff;padding:3px 11px;text-decoration:none}.header-search-input{background:#497193;border-color:#497193;color:#fff}.header-search-input::-webkit-input-placeholder{color:hsla(0,0%,100%,.4)}.header-search-input::-ms-input-placeholder{color:hsla(0,0%,100%,.4)}.header-search-input::placeholder{color:hsla(0,0%,100%,.4)}.header-search-input:-ms-input-placeholder{color:hsla(0,0%,100%,.4)}.header-search-input:focus{background:#fff;color:#323232}.header-search-results{position:absolute;width:100%;z-index:10}.header-search-result{position:relative;background:#fff;-webkit-box-shadow:0 3px 3px 0 rgba(0,0,0,.3);box-shadow:0 3px 3px 0 rgba(0,0,0,.3);border-bottom:1px solid #eee}.header-search-result a{color:inherit;text-decoration:none;vertical-align:middle;background:transparent}.header-search-result a span{position:absolute;width:100%;height:100%;top:0;left:0;z-index:1}.header-search-result a:hover{background:inherit;color:inherit}.header-search-result .avatar{border-radius:3px;display:inline-block;height:36px;margin:10px;width:36px}.header-search-result .avatar-initials{text-align:center;padding-top:6px;font-size:15px;color:#fff}.header-search-result:last-child{border-bottom:initial}.header-search-result:hover{background:#f5f5f5}@media (max-width:767px){header .mobile-menu{background-color:#58748c;border:1px solid #325776;margin-bottom:20px}header .mobile-menu li{border-bottom:1px solid #475b6b;margin-bottom:0;padding:4px 0}header .mobile-menu li a{text-decoration:none}header .mobile-menu li:last-child{border-bottom:0}header .mobile-menu li.cta{border:0}header .mobile-menu li.cta a{width:100%}.header-search{padding:0;margin:20px 0}.header-search ul{padding-right:26px}}.people-list .breadcrumb{border-bottom:1px solid #eee}.people-list .main-content{margin-top:20px}.people-list .sidebar .sidebar-cta{margin-bottom:20px;padding:15px;text-align:center;width:100%}.people-list .sidebar li{margin-bottom:7px;padding-left:15px;position:relative}.people-list .sidebar li.selected:before{color:#999;content:">";left:0;position:absolute}.people-list .sidebar li .number-contacts-per-tag{float:right}.people-list .clear-filter,.people-list .list{border:1px solid #eee;border-radius:3px}.people-list .clear-filter{position:relative;padding:6px}.people-list .clear-filter a{position:absolute;right:10px}.people-list .people-list-item{border-bottom:1px solid #eee;padding:10px}.people-list .people-list-item:hover{background-color:#f7fbfc}.people-list .people-list-item.sorting{background-color:#f6f8fa;position:relative;padding:10px}.people-list .people-list-item.sorting .options{display:inline;position:absolute;right:10px}.people-list .people-list-item.sorting .options .dropdown-btn:after{content:"\F0D7";font-family:FontAwesome;margin-left:5px}.people-list .people-list-item.sorting .options .dropdown-item{padding:3px 20px 3px 10px}.people-list .people-list-item.sorting .options .dropdown-item:before{content:"\F00C";font-family:FontAwesome;margin-right:5px;color:#fff}.people-list .people-list-item.sorting .options .dropdown-item:hover{background-color:#0366d6;color:#fff}.people-list .people-list-item.sorting .options .dropdown-item.selected:before{color:#999}.people-list .people-list-item .avatar{background-color:#93521e;border-radius:3px;color:#fff;display:inline-block;font-size:15px;height:43px;margin-right:5px;padding-left:5px;padding-top:10px;vertical-align:middle;width:43px}.people-list .people-list-item .avatar.one-letter{padding-left:0;text-align:center}.people-list .people-list-item img{border-radius:3px;margin-right:5px}.people-list .people-list-item a{color:#333;text-decoration:none}.people-list .people-list-item a:hover{background-color:transparent;color:#333}.people-list .people-list-item .people-list-item-information{color:#999;float:right;font-size:12px;font-style:italic;position:relative;text-align:right;top:16px}.blank-people-state{margin-top:30px;text-align:center}.blank-people-state h3{font-weight:400;margin-bottom:30px}.blank-people-state .cta-blank{margin-bottom:30px}.blank-people-state .illustration-blank p{margin-top:30px}.blank-people-state .illustration-blank img{display:block;margin:0 auto 20px}.people-show .pagehead{background-color:#f9f9fb;border-bottom:1px solid #eee;position:relative;padding-bottom:20px}.people-show .pagehead .people-profile-information{margin-bottom:10px;position:relative}.people-show .pagehead .people-profile-information .avatar{background-color:#93521e;border-radius:3px;color:#fff;display:inline-block;font-size:30px;height:87px;margin-right:5px;padding-left:5px;padding-top:21px;position:absolute;width:87px}.people-show .pagehead .people-profile-information .avatar.one-letter{padding-left:0;text-align:center}.people-show .pagehead .people-profile-information img{border-radius:3px;position:absolute}.people-show .pagehead .people-profile-information h2{display:block;font-size:24px;font-weight:300;margin-bottom:0;padding-left:100px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;width:calc(100% - 245px);margin-right:-9999px}@media (max-width:480px){.people-show .pagehead .people-profile-information h2{width:100%}}.people-show .pagehead .people-profile-information .profile-detail-summary{padding-left:100px;margin-top:3px}.people-show .pagehead .people-profile-information .profile-detail-summary li:not(:last-child){margin-right:10px}.people-show .pagehead .people-profile-information #tagsForm{padding-left:100px;position:relative}.people-show .pagehead .people-profile-information #tagsForm #tags_tagsinput{height:40px!important;min-height:40px!important;width:370px!important;display:inline-block;overflow:hidden}.people-show .pagehead .people-profile-information #tagsForm .tagsFormActions{display:inline;position:relative;top:-17px}.people-show .pagehead .people-profile-information .tags{padding:0;padding-left:100px;list-style:none;line-height:20px;margin:0;overflow:hidden;margin-top:8px}.people-show .pagehead .people-profile-information .tags li{float:left}.people-show .pagehead .quick-actions{position:absolute;right:0;top:14px}.people-show .main-content{background-color:#fff;padding-bottom:20px;padding-top:40px}.people-show .main-content .section-title{position:relative}.people-show .main-content .section-title h3{border-bottom:1px solid #e1e2e3;font-size:18px;font-weight:400;margin-bottom:20px;padding-bottom:10px;padding-left:23px;padding-top:10px;position:relative}.people-show .main-content .section-title .icon-section{position:absolute;top:14px;width:17px}.people-show .main-content .sidebar .sidebar-cta a{margin-bottom:20px;width:100%}.people-show .profile .sidebar-box{background-color:#fafafa;border:1px solid #eee;border-radius:3px;color:#333;margin-bottom:25px;padding:10px;position:relative}.people-show .profile .sidebar-box-title{margin-bottom:4px;position:relative}.people-show .profile .sidebar-box-title strong{font-size:12px;font-weight:500;text-transform:uppercase}.people-show .profile .sidebar-box-title a{position:absolute;right:7px}.people-show .profile .sidebar-box-title img{left:-3px;position:relative;width:20px}.people-show .profile .sidebar-box-title img.people-information{top:-4px}.people-show .profile .sidebar-box-paragraph{margin-bottom:0}.people-show .profile .people-list li{margin-bottom:4px}.people-show .profile .introductions li,.people-show .profile .people-information li,.people-show .profile .work li{color:#999;font-size:12px;margin-bottom:10px}.people-show .profile .introductions li:last-child,.people-show .profile .people-information li:last-child,.people-show .profile .work li:last-child{margin-bottom:0}.people-show .profile .introductions li i,.people-show .profile .people-information li i,.people-show .profile .work li i{text-align:center;width:17px}.people-show .profile .section{margin-bottom:35px}.people-show .profile .section.food-preferencies .section-heading img,.people-show .profile .section.kids .section-heading img{position:relative;top:-3px}.people-show .profile .section .inline-action{display:inline;margin-left:10px}.people-show .profile .section .inline-action a{margin-right:5px}.people-show .profile .section .section-heading{border-bottom:1px solid #eee;padding-bottom:4px;margin-bottom:10px}.people-show .profile .section .section-heading img{width:25px}.people-show .profile .section .section-action{display:inline;float:right}.people-show .profile .section .section-blank{background-color:#fafafa;border:1px solid #eee;border-radius:3px;padding:15px;text-align:center}.people-show .profile .section .section-blank h3{font-weight:400;font-size:14px}.people-show .gifts .gift-recipient{font-size:15px}.people-show .gifts .gift-recipient:not(:first-child){margin-top:25px}.people-show .gifts .offered{background-color:#5cb85c;border-radius:10rem;display:inline-block;font-size:75%;font-weight:400;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;padding:2px 0;padding-right:.6em;padding-left:.6em}.people-show .gifts .gift-list-item{border-top:1px solid #eee;padding:5px 0}.people-show .gifts .gift-list-item:last-child{border-bottom:0}.people-show .gifts .gift-list-item-url{display:inline;font-size:12px;margin-left:10px;padding:5px 0 0}.people-show .gifts .gift-list-item-information{display:inline;margin-left:10px}.people-show .gifts .gift-list-item-actions,.people-show .gifts .gift-list-item-date{color:#999;display:inline;font-size:12px}.people-show .gifts .gift-list-item-actions a,.people-show .gifts .gift-list-item-date a{color:#999;font-size:11px;margin-right:5px;text-decoration:underline}.people-show .gifts .gift-list-item-actions li,.people-show .gifts .gift-list-item-date li{display:inline}.people-show .gifts .gift-list-item-actions{margin-left:5px}.people-show .gifts .for{font-style:italic;margin-left:10px}.people-show .activities .date,.people-show .calls .date,.people-show .debts .date,.people-show .gifts .date,.people-show .reminders .date,.people-show .tasks .date{color:#777;font-size:12px;margin-right:10px;width:100px}.people-show .activities .pa2 li,.people-show .calls .pa2 li,.people-show .debts .pa2 li,.people-show .gifts .pa2 li,.people-show .reminders .pa2 li,.people-show .tasks .pa2 li{list-style:inside disc}.people-show .activities .frequency-type,.people-show .activities .value,.people-show .calls .frequency-type,.people-show .calls .value,.people-show .debts .frequency-type,.people-show .debts .value,.people-show .gifts .frequency-type,.people-show .gifts .value,.people-show .reminders .frequency-type,.people-show .reminders .value,.people-show .tasks .frequency-type,.people-show .tasks .value{background-color:#ecf9ff;border:1px solid #eee;border-radius:3px;display:inline;font-size:12px;padding:0 6px}.people-show .activities .list-actions,.people-show .calls .list-actions,.people-show .debts .list-actions,.people-show .gifts .list-actions,.people-show .reminders .list-actions,.people-show .tasks .list-actions{position:relative;text-align:center;width:60px}.people-show .activities .list-actions a:first-child,.people-show .calls .list-actions a:first-child,.people-show .debts .list-actions a:first-child,.people-show .gifts .list-actions a:first-child,.people-show .reminders .list-actions a:first-child,.people-show .tasks .list-actions a:first-child{margin-right:5px}.people-show .activities .list-actions a.edit,.people-show .calls .list-actions a.edit,.people-show .debts .list-actions a.edit,.people-show .gifts .list-actions a.edit,.people-show .reminders .list-actions a.edit,.people-show .tasks .list-actions a.edit{position:relative;top:1px}.people-show .activities .empty,.people-show .calls .empty,.people-show .debts .empty,.people-show .gifts .empty,.people-show .reminders .empty,.people-show .tasks .empty{font-style:italic}.people-show .reminders .frequency-type{white-space:nowrap}.people-show .reminders input[type=date]{margin-bottom:20px;width:170px}.people-show .reminders .form-check input[type=number]{display:inline;width:50px}.people-show .debts .debts-list .debt-nature{width:220px}.people-show.kid .significant-other-blank-state,.people-show.significantother .significant-other-blank-state{text-align:center}.people-show.kid .significant-other-blank-state img,.people-show.significantother .significant-other-blank-state img{margin-bottom:20px;margin-top:10px}.people-show.kid .central-form .hint-reminder,.people-show.significantother .central-form .hint-reminder{margin-top:10px}.people-show.kid .central-form .hint-reminder p,.people-show.kid .central-form .real-contact-checkbox,.people-show.significantother .central-form .hint-reminder p,.people-show.significantother .central-form .real-contact-checkbox{margin-bottom:0}.people-show.kid .central-form .real-contact-checkbox input,.people-show.significantother .central-form .real-contact-checkbox input{margin-right:5px}.people-show.kid .central-form .real-contact-checkbox .help,.people-show.significantother .central-form .real-contact-checkbox .help{color:#999}.create-people .import{margin-bottom:30px;text-align:center}@media (max-width:480px){.people-list{margin-top:20px}.people-list .people-list-mobile{border-bottom:1px solid #dfdfdf}.people-list .people-list-mobile li{padding:6px 0}.people-list .people-list-item .people-list-item-information{display:none}.people-show .pagehead .people-profile-information{margin-bottom:20px;margin-top:10px}.people-show .pagehead .people-profile-information h2{padding-left:80px}.people-show .pagehead .people-profile-information h2 span{display:none}.people-show .pagehead .people-profile-information #tagsForm{display:block;margin-top:40px;padding-left:0}.people-show .pagehead .people-profile-information #tagsForm #tags_tagsinput{width:100%!important}.people-show .pagehead .people-profile-information #tagsForm .tagsFormActions{display:block;margin-top:20px}.people-show .pagehead .people-profile-information .profile-detail-summary{padding-left:0;margin-top:10px}.people-show .pagehead .people-profile-information .profile-detail-summary li{display:block;margin-right:0}.people-show .pagehead .people-profile-information .profile-detail-summary li:not(:last-child):after{content:"";margin-left:0}.people-show .pagehead .people-profile-information .avatar{height:67px;width:67px;padding-top:11px}.people-show .pagehead .people-profile-information .tags{padding-left:80px}.people-show .pagehead .edit-information{position:relative;width:100%;margin-bottom:10px}.people-show .main-content.modal{margin-top:0}.people-show .main-content.dashboard .sidebar-box{margin-bottom:15px}.people-show .main-content.dashboard .sidebar-cta{margin-top:15px}.people-show .main-content.activities .cta-mobile,.people-show .main-content.dashboard .people-information-actions{margin-bottom:20px}.people-show .main-content.activities .cta-mobile a{width:100%}.people-show .main-content.activities .activities-list .activity-item-date{top:-4px}.create-people,.create-people .btn{width:100%}.list-add-item{margin-left:0}.inline-form .task-add-title,.inline-form textarea{width:100%}.box-links{margin-bottom:10px;position:relative;right:0;top:0}.box-links li{margin-left:0}}.journal-calendar-text{top:19px;line-height:16px;width:62px}.journal-calendar-box{width:62px;margin-right:11px}.journal-calendar-content{width:calc(100% - 73px)}.journal-line{-webkit-transition:all .2s;transition:all .2s}.journal-line:hover{border-color:#00a8ff}.marketing.homepage .top-page{background-color:#313940;border-bottom:1px solid #d0d0d0;color:#fff;padding-top:40px;text-align:center}.marketing.homepage .top-page .navigation{position:absolute;right:20px;top:20px}.marketing.homepage .top-page .navigation a{border:1px solid #fff;border-radius:6px;color:#fff;padding:10px;text-decoration:none}.marketing.homepage .top-page h1{font-size:32px;font-weight:300;margin-bottom:40px}.marketing.homepage .top-page p{font-size:18px;font-weight:300;margin:0 auto;max-width:550px}.marketing.homepage .top-page p.cta{margin-bottom:50px;margin-top:70px}.marketing.homepage .top-page p.cta a{font-size:20px;font-weight:300;padding:20px 50px}.marketing.homepage .top-page .logo{margin-bottom:20px}.marketing.homepage .before-sections{text-align:center}.marketing.homepage .before-sections h3{font-size:25px;font-weight:300;margin-bottom:40px;margin-top:80px}.marketing.homepage .section-homepage{border-bottom:1px solid #dcdcdc;padding:60px 0}.marketing.homepage .section-homepage .visual{text-align:center}.marketing.homepage .section-homepage h2{font-size:18px;font-weight:300;margin-bottom:25px}.marketing.homepage .section-homepage.dates h2{margin-top:40px}.marketing.homepage .section-homepage.activities h2{margin-top:130px}.marketing.homepage .section-homepage.features h3{font-size:18px;font-weight:300;margin-bottom:40px;text-align:center}.marketing.homepage .section-homepage.features ul li{font-size:16px;margin:10px auto;max-width:60%}.marketing.homepage .section-homepage.features ul li i{color:#417741}.marketing.homepage .section-homepage.try{text-align:center}.marketing.homepage .section-homepage.try p{margin-bottom:50px;margin-top:70px}.marketing.homepage .section-homepage.try p a{font-size:20px;font-weight:300;padding:20px 50px}.marketing.homepage .why{background-color:#313940;color:#fff;padding-bottom:50px}.marketing.homepage .why h3{font-size:20px;font-weight:300;margin-bottom:30px;padding-top:50px;text-align:center}.marketing.homepage .why p{font-size:16px;font-weight:300;margin:10px auto 20px;max-width:550px}.marketing .footer-marketing{margin-bottom:40px;padding-top:40px;text-align:center}.marketing .footer-marketing a{margin-right:10px}.marketing.register{background-color:#fafbfc;padding-top:90px;padding-bottom:40px}.marketing.register .signup-box{background-color:#fff;border:1px solid #e4edf5;border-radius:5px;padding:50px 20px 20px}.marketing.register .signup-box .logo{left:40%;position:absolute;top:-33px}.marketing.register .signup-box h1{font-weight:700;text-align:center}.marketing.register .signup-box h2,.marketing.register .signup-box h3{font-weight:300;text-align:center}.marketing.register .signup-box h2{margin-top:20px;margin-bottom:20px}.marketing.register .signup-box h3{font-size:15px;margin-bottom:30px}.marketing.register .signup-box .form-inline label{display:block}.marketing.register .signup-box a.action,.marketing.register .signup-box button{margin-top:10px;width:100%}.marketing.register .signup-box .help{font-size:13px;text-align:center}.marketing.register .signup-box .checkbox{display:none}.marketing.register .signup-box .links{margin-top:20px}.marketing.register .signup-box .links li{font-size:14px;margin-bottom:5px}.marketing .subpages .header{background-color:#313940;text-align:center}.privacy,.releases,.statistics{max-width:750px;margin-left:auto;margin-right:auto;padding:20px 30px 100px;margin-top:50px;background-color:#fff;-webkit-box-shadow:0 8px 20px #dadbdd;box-shadow:0 8px 20px #dadbdd}.privacy h2,.releases h2,.statistics h2{text-align:center}.privacy h3,.releases h3,.statistics h3{font-size:15px;margin-top:30px}.releases ul{list-style-type:disc;margin-left:20px}@media (max-width:480px){.marketing.homepage img{max-width:100%}.marketing.homepage .before-sections h3{margin-bottom:0}.marketing.homepage .section-homepage.people .visual{margin-top:40px}.marketing.homepage .section-homepage.activities h2{margin-top:0}.marketing.homepage .section-homepage.activities .visual{margin-top:40px}.marketing.homepage .section-homepage.features ul li{max-width:100%}.marketing.homepage .section-homepage.try{padding:30px 0}.marketing.register .signup-box .logo{left:39%;top:-47px}}.settings .breadcrumb{margin-bottom:20px}.settings .sidebar-menu ul{border:1px solid #dfdfdf;border-radius:3px}.settings .sidebar-menu li{padding:10px}.settings .sidebar-menu li:not(:last-child){border-bottom:1px solid #dfdfdf}.settings .sidebar-menu li.selected{background-color:#f7fbfc}.settings .sidebar-menu li.selected i{color:green}.settings .sidebar-menu li a{width:100%}.settings .sidebar-menu li i{margin-right:5px;color:#999}.settings .settings-delete,.settings .settings-reset{border:1px solid;padding:10px;margin-top:40px}.settings .settings-delete h2,.settings .settings-reset h2{font-weight:400;font-size:16px}.settings .settings-delete{border-color:#d9534f;border-radius:3px}.settings .settings-reset{border-color:#f0ad4e;border-radius:3px}.settings .warning-zone{margin-bottom:30px;margin-top:30px;padding:10px 10px 5px 15px;border:1px solid #f1c897;border-radius:3px;background-color:#ffe8bc}.settings .users-list h3.with-actions{padding-bottom:13px}.settings .users-list h3.with-actions a{float:right}.settings .users-list .table-cell.actions{text-align:right}.settings .blank-screen{text-align:center}.settings .blank-screen img{margin-bottom:30px;margin-top:30px}.settings .blank-screen h2{font-weight:400;margin-bottom:10px}.settings .blank-screen h3{margin-top:0;border-bottom:0}.settings .blank-screen p{margin:0 auto;width:400px}.settings .blank-screen p.cta{margin-top:40px;margin-bottom:10px}.settings .blank-screen .requires-subscription{margin-top:20px;font-size:13px;color:#999}.settings .subscriptions .upgrade-benefits{margin-bottom:20px}.settings .subscriptions .upgrade-benefits li{margin-left:20px;list-style-type:disc}.settings .subscriptions #label-card-element{margin-bottom:15px}.settings .subscriptions .downgrade ul{background-color:#f8f8f8;border:1px solid #dfdfdf;border-radius:6px;margin-bottom:20px;padding:25px}.settings .subscriptions .downgrade li{padding-bottom:15px}.settings .subscriptions .downgrade li:not(:last-child){border-bottom:1px solid #dfdfdf}.settings .subscriptions .downgrade li:not(:first-child){margin-top:10px}.settings .subscriptions .downgrade li.success .rule-title{text-decoration:line-through}.settings .subscriptions .downgrade li.success .icon:after{font-family:FontAwesome;font-size:17px;color:#0eb0b7;content:"\F058";top:10px;position:relative}.settings .subscriptions .downgrade li.fail .icon:after{font-family:FontAwesome;font-size:17px;color:#cd4400;content:"\F057";top:10px;position:relative}.settings .subscriptions .downgrade li .rule-title{font-size:18px;padding-left:5px}.settings .subscriptions .downgrade li .rule-to-succeed{font-size:13px;display:block;padding-left:27px}.settings .report .report-summary{background-color:#fafafa;border:1px solid #dfdfdf;border-radius:3px;margin-bottom:30px}.settings .report .report-summary li{padding:5px 10px}.settings .report .report-summary li:not(:last-child){border-bottom:1px solid #dfdfdf}.settings .report .report-summary li span{font-weight:600}.settings .report .status{text-align:center;width:95px}.settings .report .reason{font-style:italic}.settings.import .success{color:#5cb85c}.settings.import .failure{color:#d9534f}.settings.import .warning{color:#f0ad4e}.settings.import .date{font-size:13px;margin-left:10px}.settings.import h3.with-actions{padding-bottom:13px}.settings.import h3.with-actions a{float:right}.settings.upload .warning-zone{padding:20px 15px}.settings.upload .warning-zone ul{margin-left:20px;list-style-type:disc}.settings .tags-list .tags-list-contact-number{margin-left:10px;color:#999}.settings .tags-list .actions{text-align:right}.modal h5{font-size:20px;font-weight:500}.modal label{padding-left:0}.modal .close{position:absolute;right:19px;top:14px;font-size:30px}.modal.log-call .date-it-happened{margin-top:20px}.modal.log-call .exact-date{display:none;margin-top:20px}.modal.log-call .exact-date input{display:inline;width:165px}.bg-gray-monica{background-color:#f2f4f8}.b--gray-monica{border-color:#dde2e9}.w-5{width:5%}.w-95{width:95%}.form-error-message{border-top:1px solid #ed6246;background-color:#fbeae5;-webkit-box-shadow:inset 0 3px 0 0 #ed6347,inset 0 0 0 0 transparent,0 0 0 1px rgba(63,63,68,.05),0 1px 3px 0 rgba(63,63,68,.15);box-shadow:inset 0 3px 0 0 #ed6347,inset 0 0 0 0 transparent,0 0 0 1px rgba(63,63,68,.05),0 1px 3px 0 rgba(63,63,68,.15)}.form-information-message{border-top:1px solid #46c1bf;background-color:#e0f5f5;-webkit-box-shadow:inset 0 3px 0 0 #47c1bf,inset 0 0 0 0 transparent,0 0 0 1px rgba(63,63,68,.05),0 1px 3px 0 rgba(63,63,68,.15);box-shadow:inset 0 3px 0 0 #47c1bf,inset 0 0 0 0 transparent,0 0 0 1px rgba(63,63,68,.05),0 1px 3px 0 rgba(63,63,68,.15)}.form-information-message svg{width:20px;fill:#00848e;color:#fff}.border-bottom{border-bottom:1px solid #dfdfdf}.border-top{border-top:1px solid #dfdfdf}.border-right{border-right:1px solid #dfdfdf}.border-left{border-left:1px solid #dfdfdf}.padding-left-none{padding-left:0}.boxed{background:#fff;border:1px solid #dfdfdf;border-radius:3px;-webkit-box-shadow:0 1px 3px 0 rgba(0,0,0,.05);box-shadow:0 1px 3px 0 rgba(0,0,0,.05)}.box-padding{padding:15px}.badge{display:inline-block;padding:4px 5px;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge-success{background-color:#5cb85c}.badge-danger{background-color:#d9534f}.pretty-tag{background:#eee;border-radius:3px;color:#555;display:inline-block;font-size:11px;height:22px;line-height:22px;padding:0 10px 0 19px;position:relative;margin:0 10px 0 0;text-decoration:none;-webkit-transition:color .2s}.pretty-tag:before{background:#fff;border-radius:10px;-webkit-box-shadow:inset 0 1px rgba(0,0,0,.25);box-shadow:inset 0 1px rgba(0,0,0,.25);content:"";height:6px;left:7px;position:absolute;width:6px;top:9px}.pretty-tag:hover{background-color:#0366d6}.pretty-tag:hover a{color:#fff}.pretty-tag a{text-decoration:none;color:#555}.pretty-tag a:hover{background-color:transparent;color:#fff}body{color:#323b43}a{color:#0366d6;padding:1px;text-decoration:underline}a:hover{background-color:#0366d6;color:#fff;text-decoration:none}a.action-link{color:#999;font-size:11px;margin-right:5px;text-decoration:underline}a[hreflang]:after{content:" (" attr(hreflang) ")"}ul{list-style-type:none;margin:0;padding:0}ul.horizontal li{display:inline}.hidden{display:none}input:disabled{background-color:#999}.pagination-box{margin-top:30px;text-align:center}.alert-success{margin:20px 0}.central-form{margin-top:40px}.central-form h2{font-weight:400;margin-bottom:20px;text-align:center}.central-form .form-check-inline{margin-right:10px}.central-form .form-group>label:not(:first-child){margin-top:10px}.central-form input[type=radio]{margin-right:5px}.central-form .dates .form-inline{display:inline}.central-form .dates .form-inline input[type=number]{margin:0 10px;width:52px}.central-form .dates .form-inline input[type=date]{margin-left:20px;margin-top:10px}.central-form .form-group:not(:last-child){border-bottom:1px solid #eee;padding-bottom:20px}.central-form .nav{margin-top:40px}.central-form .nav .nav-link{text-decoration:none}.central-form .tab-content{border-right:1px solid #ddd;border-left:1px solid #ddd;border-bottom:1px solid #ddd;padding:15px}.avatar-photo img{border-radius:3px}.breadcrumb{background-color:#f9f9fb}.breadcrumb ul{font-size:12px;padding:30px 0 24px}.breadcrumb ul li:not(:last-child):after{content:">";margin-left:5px;margin-right:1px}.btn{color:#24292e;background-color:#eff3f6;background-image:-webkit-gradient(linear,left top,left bottom,from(#fafbfc),color-stop(90%,#eff3f6));background-image:linear-gradient(-180deg,#fafbfc,#eff3f6 90%);position:relative;display:inline-block;padding:6px 12px;font-size:14px;font-weight:600;line-height:20px;white-space:nowrap;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-position:-1px -1px;background-size:110% 110%;border:1px solid rgba(27,31,35,.2);border-radius:.25em;-webkit-appearance:none;-moz-appearance:none;appearance:none}.btn,.btn:hover,.btn:visited{background-repeat:repeat-x;text-decoration:none}.btn:hover,.btn:visited{background-color:#e6ebf1;background-image:-webkit-gradient(linear,left top,left bottom,from(#f0f3f6),color-stop(90%,#e6ebf1));background-image:linear-gradient(-180deg,#f0f3f6,#e6ebf1 90%);background-position:0 -.5em;border-color:rgba(27,31,35,.35)}.btn:active{background-color:#e9ecef;background-image:none;border-color:rgba(27,31,35,.35);-webkit-box-shadow:inset 0 .15em .3em rgba(27,31,35,.15);box-shadow:inset 0 .15em .3em rgba(27,31,35,.15)}.btn:disabled{background-image:-webkit-gradient(linear,left top,left bottom,from(#63b175),color-stop(90%,#61986e));background-image:linear-gradient(-180deg,#63b175,#61986e 90%)}.btn:focus{outline:none;text-decoration:none}.btn-primary{color:#fff;background-color:#28a745;background-image:-webkit-gradient(linear,left top,left bottom,from(#34d058),color-stop(90%,#28a745));background-image:linear-gradient(-180deg,#34d058,#28a745 90%)}.btn-primary:hover{background-color:#269f42;background-image:-webkit-gradient(linear,left top,left bottom,from(#2fcb53),color-stop(90%,#269f42));background-image:linear-gradient(-180deg,#2fcb53,#269f42 90%);background-position:0 -.5em;border-color:rgba(27,31,35,.5)}.table{border-collapse:collapse;display:table;width:100%}.table .table-row{border-left:1px solid #ddd;border-right:1px solid #ddd;border-top:1px solid #ddd;display:table-row}.table .table-row:first-child .table-cell:first-child{border-top-left-radius:3px}.table .table-row:first-child .table-cell:last-child{border-top-right-radius:3px}.table .table-row:last-child{border-bottom:1px solid #ddd}.table .table-row:hover{background-color:#f6f8fa}.table .table-cell{display:table-cell;padding:8px 10px}footer .badge-success{font-size:12px;font-weight:400}footer .show-version{text-align:left}footer .show-version h2{font-size:16px}footer .show-version .note{margin-bottom:20px}footer .show-version .note ul{list-style-type:disc}footer .show-version .note li{display:block;font-size:15px;text-align:left}@media (max-width:480px){.sidebar-box{border:1px solid #dfdfdf;border-radius:3px}.sidebar-box .sidebar-heading{background-color:#fafafa;margin-top:0;padding:5px}.sidebar-box .sidebar-blank{background-color:#fff;border:0}.sidebar-box li{padding:5px}} /*# sourceMappingURL=app.css.map*/ \ No newline at end of file diff --git a/public/css/app.css.map b/public/css/app.css.map index 13e7fe19a89..b733eb57660 100644 --- a/public/css/app.css.map +++ b/public/css/app.css.map @@ -1 +1 @@ -{"version":3,"file":"/css/app.css","sources":[],"mappings":";;;;;;;;;;;;;A","sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///./resources/assets/sass/node_modules/bootstrap/scss/_normalize.scss","webpack:///./resources/assets/sass/app.scss","webpack:///./resources/assets/sass/node_modules/bootstrap/scss/_print.scss","webpack:///./resources/assets/sass/node_modules/bootstrap/scss/_reboot.scss","webpack:///./resources/assets/sass/node_modules/bootstrap/scss/mixins/_hover.scss","webpack:///./resources/assets/sass/node_modules/bootstrap/scss/mixins/_tab-focus.scss","webpack:///./resources/assets/sass/node_modules/bootstrap/scss/_grid.scss","webpack:///./resources/assets/sass/node_modules/bootstrap/scss/mixins/_grid.scss","webpack:///./resources/assets/sass/node_modules/bootstrap/scss/mixins/_breakpoints.scss","webpack:///./resources/assets/sass/node_modules/bootstrap/scss/mixins/_grid-framework.scss","webpack:///./resources/assets/sass/node_modules/bootstrap/scss/_tables.scss","webpack:///./resources/assets/sass/node_modules/bootstrap/scss/mixins/_table-row.scss","webpack:///./resources/assets/sass/node_modules/bootstrap/scss/_forms.scss","webpack:///./resources/assets/sass/node_modules/bootstrap/scss/mixins/_border-radius.scss","webpack:///./resources/assets/sass/node_modules/bootstrap/scss/mixins/_forms.scss","webpack:///./resources/assets/sass/node_modules/bootstrap/scss/_dropdown.scss","webpack:///./resources/assets/sass/node_modules/bootstrap/scss/mixins/_nav-divider.scss","webpack:///./resources/assets/sass/node_modules/bootstrap/scss/mixins/_reset-filter.scss","webpack:///./resources/assets/sass/node_modules/bootstrap/scss/_nav.scss","webpack:///./resources/assets/sass/node_modules/bootstrap/scss/mixins/_clearfix.scss","webpack:///./resources/assets/sass/node_modules/bootstrap/scss/_card.scss","webpack:///./resources/assets/sass/node_modules/bootstrap/scss/mixins/_cards.scss","webpack:///./resources/assets/sass/node_modules/bootstrap/scss/_pagination.scss","webpack:///./resources/assets/sass/node_modules/bootstrap/scss/mixins/_pagination.scss","webpack:///./resources/assets/sass/node_modules/bootstrap/scss/_alert.scss","webpack:///./resources/assets/sass/node_modules/bootstrap/scss/mixins/_alert.scss","webpack:///./resources/assets/sass/node_modules/bootstrap/scss/_close.scss","webpack:///./resources/assets/sass/node_modules/bootstrap/scss/_modal.scss","webpack:///./resources/assets/sass/node_modules/bootstrap/scss/_utilities-responsive.scss","webpack:///./resources/assets/sass/node_modules/hint.css/hint.min.css","webpack:///./resources/assets/sass/node_modules/tachyons/css/tachyons.min.css","webpack:///./resources/assets/sass/node_modules/jQuery-Tags-Input/dist/jquery.tagsinput.min.css","webpack:///./resources/assets/sass/resources/assets/sass/_datatable.min.scss","webpack:///./resources/assets/sass/node_modules/font-awesome/scss/font-awesome.scss","webpack:///./resources/assets/sass/node_modules/font-awesome/scss/_path.scss","webpack:///./resources/assets/sass/node_modules/font-awesome/scss/_core.scss","webpack:///./resources/assets/sass/node_modules/font-awesome/scss/_larger.scss","webpack:///./resources/assets/sass/node_modules/font-awesome/scss/_fixed-width.scss","webpack:///./resources/assets/sass/node_modules/font-awesome/scss/_list.scss","webpack:///./resources/assets/sass/node_modules/font-awesome/scss/_bordered-pulled.scss","webpack:///./resources/assets/sass/node_modules/font-awesome/scss/_animated.scss","webpack:///./resources/assets/sass/node_modules/font-awesome/scss/_rotated-flipped.scss","webpack:///./resources/assets/sass/node_modules/font-awesome/scss/_mixins.scss","webpack:///./resources/assets/sass/node_modules/font-awesome/scss/_stacked.scss","webpack:///./resources/assets/sass/node_modules/font-awesome/scss/_icons.scss","webpack:///./resources/assets/sass/node_modules/font-awesome/scss/_screen-reader.scss","webpack:///./resources/assets/sass/resources/assets/sass/buttons.scss","webpack:///./resources/assets/sass/resources/assets/sass/header.scss","webpack:///./resources/assets/sass/resources/assets/sass/people.scss","webpack:///./resources/assets/sass/resources/assets/sass/journal.scss","webpack:///./resources/assets/sass/resources/assets/sass/marketing.scss","webpack:///./resources/assets/sass/resources/assets/sass/settings.scss","webpack:///./resources/assets/sass/resources/assets/sass/modal.scss","webpack:///./resources/assets/sass/resources/assets/sass/app.scss"],"names":[],"mappings":"AAAA,4EAQA,KACE,uBCDD,2FDqCC,cCjBD,4BD6BC,qBACA,wBCtBD,iBDkEG,UC5CH,YDwDC,yBCpDD,SD6DC,gBCxDD,KDkFC,gBCpED,ID4GC,SCpFD,IDwHC,cCvGD,kBDkHC,gCACA,cC3GD,sCDkIC,cACA,aCzHD,ODkIC,iBC9HD,oEDyJC,0BACA,eC7ID,sCDsJC,eCjJD,iDD0JC,SACA,UCrJD,MD8JC,mBC1JD,uCDuKC,oDACA,UClKD,4FD6KC,YCxKD,mBDiLC,6BACA,sDC7KD,+FDwLC,wBCnLD,SD2LC,wBACA,aACA,2BCvLD,ODgMC,SC3LD,SD6MC,gBCrMD,MDgNC,yBACA,iBC5MD,MDiNC,UEnaF,aACE,iBAGE,2BACA,4DAGF,YAEE,0BAGF,kBACE,6BAGF,eAEE,sBACA,wBAGF,MACE,2BAGF,OAEE,wBAGF,IACE,yBAGF,QAGE,UACA,SAGF,MAEE,uBAMF,QACE,aAEF,gCAGI,gCAGJ,OACE,sBAGF,OACE,mCADF,oBAKI,gCAIF,sCAEE,gCDuNH,CEtRH,KACE,oDAGF,iBAGE,8CAuBA,eAAsB,mBACtB,cAAsB,mBACtB,aAAsB,mBACtB,kBAAsB,mBACtB,UAAsB,mBAQxB,KAEE,eAEA,wCAGF,KAEE,oHACA,eACA,gBAEA,cAEA,sBFyQD,sBEhQC,uBAYF,kBACE,aACA,oBAOF,EACE,aACA,mBAIF,sCAGE,YACA,iCAGF,QAEE,kBACA,oBAGF,iBALE,mBAKF,SAGE,aAIC,wBAID,gBAGF,GACE,gBAGF,GACE,oBACA,cAGF,WACE,gBAQF,EACE,cACA,qBC5IE,gBD+IA,cACA,0BANJ,QEzJE,oBAEA,0CACA,oBFyKF,IAEE,aAEA,mBAQF,OAGE,gBAQF,IAGE,sBFmOD,cEtNC,eAcF,gEASE,wDAQF,MAEE,6BAGF,QACE,mBACA,sBACA,cAEA,oBAGF,WAJE,gBAcF,MAEE,qBACA,oBAOF,aACE,mBACA,0CAGF,6BAKE,SAIA,oBAEA,gBAGF,SAEE,gBAGF,SAIE,YAEA,UACA,SACA,SAGF,OAEE,cACA,WAEA,oBACA,iBACA,oBAIF,mBAEE,8CAKA,wBAIF,OACE,qBF4KD,SEpKC,uBGrVF,WCCE,iBACA,kBACA,sBACA,uBCqCE,yBFzCJ,WCeM,gBN0fH,COheC,yBFzCJ,WCeM,gBNggBH,COteC,yBFzCJ,WCeM,gBNsgBH,CO5eC,0BFzCJ,WCeM,iBN4gBH,CK/gBH,iBCXE,iBACA,kBACA,sBACA,uBDkBA,KCAE,qDACA,kCAIF,sBACA,uBEfI,umBATF,kBAEA,eAEA,sBACA,uBAcI,UFoBJ,iEEpBI,UFoBJ,mEEpBI,UFoBJ,iDEpBI,UFoBJ,mEEpBI,UFoBJ,mEEpBI,UFoBJ,iDEpBI,UFoBJ,mEEpBI,UFoBJ,mEEpBI,UFoBJ,iDEpBI,WFoBJ,mEEpBI,WFoBJ,mEEpBI,WFoBJ,mDEXM,eF0BR,WE1BQ,eF0BR,kBE1BQ,eF0BR,mBE1BQ,eF0BR,UE1BQ,eF0BR,mBE1BQ,eF0BR,mBE1BQ,eF0BR,UE1BQ,eF0BR,mBE1BQ,eF0BR,mBE1BQ,eF0BR,UE1BQ,gBF0BR,mBE1BQ,gBF0BR,mBE1BQ,gBF0BR,WE1BQ,eFsBR,UEtBQ,eFsBR,iBEtBQ,eFsBR,kBEtBQ,eFsBR,SEtBQ,eFsBR,kBEtBQ,eFsBR,kBEtBQ,eFsBR,SEtBQ,eFsBR,kBEtBQ,eFsBR,kBEtBQ,eFsBR,SEtBQ,gBFsBR,kBEtBQ,gBFsBR,kBEtBQ,gBFsBR,UEtBQ,iBFkBR,cElBQ,iBFkBR,wBElBQ,iBFkBR,yBElBQ,iBFkBR,gBElBQ,iBFkBR,yBElBQ,iBFkBR,yBElBQ,iBFkBR,gBElBQ,iBFkBR,yBElBQ,iBFkBR,yBElBQ,iBFkBR,gBElBQ,kBFkBR,yBElBQ,kBFkBR,yBElBQ,kBFkBR,iBCTE,yBClBI,UFoBJ,iEEpBI,UFoBJ,mEEpBI,UFoBJ,iDEpBI,UFoBJ,mEEpBI,UFoBJ,mEEpBI,UFoBJ,iDEpBI,UFoBJ,mEEpBI,UFoBJ,mEEpBI,UFoBJ,iDEpBI,WFoBJ,mEEpBI,WFoBJ,mEEpBI,WFoBJ,mDEXM,eF0BR,WE1BQ,eF0BR,kBE1BQ,eF0BR,mBE1BQ,eF0BR,UE1BQ,eF0BR,mBE1BQ,eF0BR,mBE1BQ,eF0BR,UE1BQ,eF0BR,mBE1BQ,eF0BR,mBE1BQ,eF0BR,UE1BQ,gBF0BR,mBE1BQ,gBF0BR,mBE1BQ,gBF0BR,WE1BQ,eFsBR,UEtBQ,eFsBR,iBEtBQ,eFsBR,kBEtBQ,eFsBR,SEtBQ,eFsBR,kBEtBQ,eFsBR,kBEtBQ,eFsBR,SEtBQ,eFsBR,kBEtBQ,eFsBR,kBEtBQ,eFsBR,SEtBQ,gBFsBR,kBEtBQ,gBFsBR,kBEtBQ,gBFsBR,UEtBQ,iBFkBR,cElBQ,iBFkBR,wBElBQ,iBFkBR,yBElBQ,iBFkBR,gBElBQ,iBFkBR,yBElBQ,iBFkBR,yBElBQ,iBFkBR,gBElBQ,iBFkBR,yBElBQ,iBFkBR,yBElBQ,iBFkBR,gBElBQ,kBFkBR,yBElBQ,kBFkBR,yBElBQ,kBFkBR,iBNm9BC,CO59BC,yBClBI,UFoBJ,iEEpBI,UFoBJ,mEEpBI,UFoBJ,iDEpBI,UFoBJ,mEEpBI,UFoBJ,mEEpBI,UFoBJ,iDEpBI,UFoBJ,mEEpBI,UFoBJ,mEEpBI,UFoBJ,iDEpBI,WFoBJ,mEEpBI,WFoBJ,mEEpBI,WFoBJ,mDEXM,eF0BR,WE1BQ,eF0BR,kBE1BQ,eF0BR,mBE1BQ,eF0BR,UE1BQ,eF0BR,mBE1BQ,eF0BR,mBE1BQ,eF0BR,UE1BQ,eF0BR,mBE1BQ,eF0BR,mBE1BQ,eF0BR,UE1BQ,gBF0BR,mBE1BQ,gBF0BR,mBE1BQ,gBF0BR,WE1BQ,eFsBR,UEtBQ,eFsBR,iBEtBQ,eFsBR,kBEtBQ,eFsBR,SEtBQ,eFsBR,kBEtBQ,eFsBR,kBEtBQ,eFsBR,SEtBQ,eFsBR,kBEtBQ,eFsBR,kBEtBQ,eFsBR,SEtBQ,gBFsBR,kBEtBQ,gBFsBR,kBEtBQ,gBFsBR,UEtBQ,iBFkBR,cElBQ,iBFkBR,wBElBQ,iBFkBR,yBElBQ,iBFkBR,gBElBQ,iBFkBR,yBElBQ,iBFkBR,yBElBQ,iBFkBR,gBElBQ,iBFkBR,yBElBQ,iBFkBR,yBElBQ,iBFkBR,gBElBQ,kBFkBR,yBElBQ,kBFkBR,yBElBQ,kBFkBR,iBNiqCC,CO1qCC,yBClBI,UFoBJ,iEEpBI,UFoBJ,mEEpBI,UFoBJ,iDEpBI,UFoBJ,mEEpBI,UFoBJ,mEEpBI,UFoBJ,iDEpBI,UFoBJ,mEEpBI,UFoBJ,mEEpBI,UFoBJ,iDEpBI,WFoBJ,mEEpBI,WFoBJ,mEEpBI,WFoBJ,mDEXM,eF0BR,WE1BQ,eF0BR,kBE1BQ,eF0BR,mBE1BQ,eF0BR,UE1BQ,eF0BR,mBE1BQ,eF0BR,mBE1BQ,eF0BR,UE1BQ,eF0BR,mBE1BQ,eF0BR,mBE1BQ,eF0BR,UE1BQ,gBF0BR,mBE1BQ,gBF0BR,mBE1BQ,gBF0BR,WE1BQ,eFsBR,UEtBQ,eFsBR,iBEtBQ,eFsBR,kBEtBQ,eFsBR,SEtBQ,eFsBR,kBEtBQ,eFsBR,kBEtBQ,eFsBR,SEtBQ,eFsBR,kBEtBQ,eFsBR,kBEtBQ,eFsBR,SEtBQ,gBFsBR,kBEtBQ,gBFsBR,kBEtBQ,gBFsBR,UEtBQ,iBFkBR,cElBQ,iBFkBR,wBElBQ,iBFkBR,yBElBQ,iBFkBR,gBElBQ,iBFkBR,yBElBQ,iBFkBR,yBElBQ,iBFkBR,gBElBQ,iBFkBR,yBElBQ,iBFkBR,yBElBQ,iBFkBR,gBElBQ,kBFkBR,yBElBQ,kBFkBR,yBElBQ,kBFkBR,iBN+2CC,COx3CC,0BClBI,UFoBJ,iEEpBI,UFoBJ,mEEpBI,UFoBJ,iDEpBI,UFoBJ,mEEpBI,UFoBJ,mEEpBI,UFoBJ,iDEpBI,UFoBJ,mEEpBI,UFoBJ,mEEpBI,UFoBJ,iDEpBI,WFoBJ,mEEpBI,WFoBJ,mEEpBI,WFoBJ,mDEXM,eF0BR,WE1BQ,eF0BR,kBE1BQ,eF0BR,mBE1BQ,eF0BR,UE1BQ,eF0BR,mBE1BQ,eF0BR,mBE1BQ,eF0BR,UE1BQ,eF0BR,mBE1BQ,eF0BR,mBE1BQ,eF0BR,UE1BQ,gBF0BR,mBE1BQ,gBF0BR,mBE1BQ,gBF0BR,WE1BQ,eFsBR,UEtBQ,eFsBR,iBEtBQ,eFsBR,kBEtBQ,eFsBR,SEtBQ,eFsBR,kBEtBQ,eFsBR,kBEtBQ,eFsBR,SEtBQ,eFsBR,kBEtBQ,eFsBR,kBEtBQ,eFsBR,SEtBQ,gBFsBR,kBEtBQ,gBFsBR,kBEtBQ,gBFsBR,UEtBQ,iBFkBR,cElBQ,iBFkBR,wBElBQ,iBFkBR,yBElBQ,iBFkBR,gBElBQ,iBFkBR,yBElBQ,iBFkBR,yBElBQ,iBFkBR,gBElBQ,iBFkBR,yBElBQ,iBFkBR,yBElBQ,iBFkBR,gBElBQ,kBFkBR,yBElBQ,kBFkBR,yBElBQ,kBFkBR,iBN6jDC,CKhkDG,cAA4B,uDAC5B,aAA4B,qDEP9B,yBFME,cAA4B,uDAC5B,aAA4B,qDLilD/B,COxlDC,yBFME,cAA4B,uDAC5B,aAA4B,qDL2lD/B,COlmDC,yBFME,cAA4B,uDAC5B,aAA4B,qDLqmD/B,CO5mDC,0BFME,cAA4B,uDAC5B,aAA4B,qDL+mD/B,CKvmDG,YAA6B,oEAC7B,eAA6B,kEAC7B,eAA6B,8DEjB/B,yBFeE,YAA6B,oEAC7B,eAA6B,kEAC7B,eAA6B,8DL+nDhC,COhpDC,yBFeE,YAA6B,oEAC7B,eAA6B,kEAC7B,eAA6B,8DL6oDhC,CO9pDC,yBFeE,YAA6B,oEAC7B,eAA6B,kEAC7B,eAA6B,8DL2pDhC,CO5qDC,0BFeE,YAA6B,oEAC7B,eAA6B,kEAC7B,eAA6B,8DLyqDhC,CKjqDG,YAA6B,gDAC7B,eAA6B,6CAC7B,eAA6B,4CE3B/B,yBFyBE,YAA6B,gDAC7B,eAA6B,6CAC7B,eAA6B,4CLyrDhC,COptDC,yBFyBE,YAA6B,gDAC7B,eAA6B,6CAC7B,eAA6B,4CLusDhC,COluDC,yBFyBE,YAA6B,gDAC7B,eAA6B,6CAC7B,eAA6B,4CLqtDhC,COhvDC,0BFyBE,YAA6B,gDAC7B,eAA6B,6CAC7B,eAA6B,4CLmuDhC,CSvyDH,OAEE,eACA,mBAEA,oBAEE,eACA,gBACA,mBACA,6BAVJ,gBAcI,sBACA,gCAfJ,mBAmBI,6BAGF,cACE,sBAUF,0BAEE,cAYF,sDAEE,yBALJ,kDAWM,wBAUN,yCAEI,yBClEF,4EAII,yBAaI,yGAEA,yBAnBR,mDAII,yBAMJ,4GASQ,yBAnBR,0CAII,yBAaI,mGAEA,yBAlBN,mDAGE,yBAMJ,4GASQ,yBAnBR,gDAII,yBAMJ,yGASQ,yBDoFV,kBACE,cACA,WACA,gBACA,gBAUA,kBACE,WACA,yBAIF,kBACE,cACA,yBAIJ,eACE,cACA,yBAFF,8BAKI,SAGF,4DAGE,qBAKJ,oBAEI,WAFJ,oBAMI,cACA,mBAPJ,kCAYI,6BACA,8BAHF,wDAMI,+BASE,gSAEE,gCAMR,iBACE,WAlCJ,wCAsCM,wBACA,yBEzLN,cACE,cACA,WAGA,uBACA,eACA,gBACA,cACA,sBAEA,sBACA,sBCZE,qBDAJ,0BA4BI,6BACA,SEuBF,oBACE,qBACA,aFtDJ,yCAqCI,WAEA,UAvCJ,yEAqCI,WAEA,UAvCJ,2BAqCI,WAEA,UAvCJ,+CAiDI,yBAEA,UAGF,uBACE,mBAMJ,uCAEE,cAUF,oBACE,uBACA,gBAeF,qDACE,mIAKI,oBALJ,sTAUI,sBAVJ,sTAeI,0BX09DH,CW/8DH,qBACE,mBAEA,oBACA,uBAEA,gBAEA,0EAEE,gBACA,eAaJ,iBAEE,uBACA,kBACA,gBCjJE,oBDqJJ,iBAEE,uBACA,kBACA,uBCzJE,oBDmKJ,YACE,mBAQF,iBAEE,kBACA,cAEA,qBAEA,6BACE,qBACA,gBACA,gBACA,eAXJ,+DAeM,gBAIC,8HAIL,kBACA,kBAEA,qBAGO,kCAGP,mBAIF,+BAEE,kBACA,qBACA,qBACA,gBACA,gBACA,sBACA,eAEF,8DAEE,aACA,mBAyBE,kNACE,mBAUN,iEAGE,sBACA,4BACA,0CACA,oCAIF,qRE9PI,cF8PJ,2BE1PI,qBAWF,gCACE,cACA,qBACA,yBAGF,oCACE,cFwOJ,mCAII,ucAIJ,qREtQI,cAGF,2BACE,qBAWF,gCACE,cACA,qBACA,sBFoPJ,oCEhPI,cFgPJ,mCAII,+eEpRF,2QAUE,cAGF,0BACE,qBAWF,+BACE,cACA,qBACA,yBF4PJ,mCExPI,cF2PF,iCACE,uiBJtPA,yBIkVJ,yBAMM,qBACA,gBACA,sBARN,2BAaM,qBACA,WACA,sBAIF,kCACE,qBApBN,0BAwBM,qBACA,sBAEA,gIAGE,WA9BR,wCAoCM,WApCN,iCAwCM,gBACA,sBAzCN,2CAgDM,qBACA,aACA,gBACA,sBAnDN,uDAsDQ,eAtDR,kFA2DM,kBACA,cAIY,kDACZ,MX84DH,Cc70EH,kBAEE,kBAGF,uBAGI,qBACA,QACA,SACA,oBACA,mBACA,sBACA,WACA,sBACA,oCACA,mCAZJ,uBAiBI,UAKF,+BAEI,aACA,yBAMN,eACE,kBACA,SACA,OACA,aACA,aACA,WACA,gBACA,cACA,eACA,eACA,cACA,gBACA,gBACA,sBACA,4BACA,qDFjDE,CEuDJ,kBCtDE,WACA,eACA,gBACA,yBD0DF,eACE,cACA,WACA,iBACA,WACA,gBACA,gBACA,cACA,mBACA,mBACA,gBACA,SX1DE,0CW6DA,cACA,qBACA,yBX/CA,8EWqDE,WACA,qBACA,yBACA,UXxDF,oFWiEE,cAlCN,4DAuCM,qBACA,mBACA,6BACA,sBEtGJ,qEF6GF,qBAGI,cAIA,QACA,UAQJ,qBACE,QACA,UAQF,oBACE,WACA,OAIF,iBACE,cACA,iBACA,kBACA,gBACA,cACA,mBAIF,mBACE,eACA,MACA,QACA,SACA,OACA,YAIY,2BACZ,QACA,UAQF,qDAII,WACA,aACA,yBAIF,qEACE,SACA,YACA,kBGzLJ,KACE,eACA,gBACA,gBAGF,UACE,qBdOE,gCcJA,qBAIF,mBACE,cATJ,qEAYM,cACA,mBACA,6BAQN,sBAEI,qBAFJ,gEAOI,iBASJ,UACE,6BCjDA,gBACE,WACA,cACA,WD6CJ,oBAKI,WAEA,mBAPJ,8BAUM,kBAVN,oBAeI,cACA,iBACA,4DL9DA,CK2DF,oDAOI,kCArBN,mGA0BQ,cACA,6BACA,yBA5BR,kNAoCM,cACA,sBACA,mCCtFJ,iBACE,WACA,cACA,WDgGF,qBACE,WAJJ,+BAOM,kBAIJ,qBACE,cACA,qCL1GA,CK6FJ,wNAoBM,WACA,eACA,yBAMJ,uBACE,cACA,WAHJ,iCAMM,iBACA,cAWN,uBAEI,aAFJ,qBAKI,cASJ,yBAEE,0CLnJE,yBOPJ,MACE,kBACA,cACA,qBACA,sBACA,6CPLE,COSJ,YACE,gBAGF,YACE,qBAGF,eACE,oBAIF,qCAHE,gBAeF,iBAEI,qBAFJ,sBAMI,oBAOE,2DACE,gCAKF,yDACE,gCAWR,aACE,uBACA,yBACA,gCAEA,yBPtEE,gCO2EJ,aACE,uBACA,yBACA,6BAHF,wBP3EI,gCO0FJ,cC3FE,yBACA,qBD6FF,cC9FE,yBACA,qBDgGF,WCjGE,yBACA,qBDmGF,cCpGE,yBACA,qBDsGF,aCvGE,yBACA,qBD2GF,sBCvGE,6BACA,qBDyGF,wBC1GE,6BACA,kBD4GF,mBC7GE,6BACA,qBD+GF,sBChHE,6BACA,qBDkHF,sBCnHE,6BACA,qBDqHF,qBCtHE,6BACA,qBAQA,sDAEE,2CDmHJ,+GC7GI,WD6GJ,wFCxGI,0BDwGJ,8DCpGM,WD4GN,iBACE,UACA,gBACA,cAIF,UPjJI,qBOqJJ,kBACE,kBACA,MACA,QACA,SACA,OACA,gBAMF,cPjKI,gCOoKJ,iBPpKI,gCLyCA,yBYsIA,WACE,qDACA,qGACA,sBACA,qBAJF,iBAOI,+CACA,qBACA,oBnB+mFL,CO9vFC,yBY4KF,YAEI,qDACA,qGAHJ,kBAYM,+CAZN,wBAmBM,cACA,cAVJ,8BPlNA,6BACA,0BOuMF,4CA6BU,0BA7BV,+CAgCU,6BAtBR,6BPpMA,4BACA,yBOyLF,2CAuCU,yBAEF,8CACE,4BAOF,8LAEE,gBnBklFT,COjzFC,yBY6OF,cACE,sCACA,8CAFF,oBAKI,qBACA,WnB0kFH,CqB12FH,YACE,qBACA,eACA,gBACA,uCTAE,CSIJ,WACE,eADF,kCAKM,+CTmBF,8BSxBJ,iCTSI,kCACA,+BSVJ,mGAiBM,UACA,WACA,eACA,yBACA,qBAIO,yGAEP,cACA,mBACA,sBACA,kBAKN,WACE,kBACA,WACA,qBACA,iBACA,gBACA,cACA,qBACA,sBACA,sBlBjCE,kCkBoCA,cACA,yBACA,kBCtDF,0BACE,sBACA,kBACA,uBD4DJ,iDTnCI,gCACA,6BUhBE,gDVCF,iCACA,8BSoDJ,0BClEI,uBACA,kBACA,gBDgEJ,iDTvCI,gCACA,6BUhBE,gDVCF,iCACA,8BWdJ,OACE,aACA,mBACA,iDXHE,CWAJ,mBASI,gBAEI,WACJ,eAKJ,eAEE,cAIF,YACE,gBAQF,mBACE,mBADF,0BAKI,kBACA,SACA,YACA,cASJ,eClDE,yBACA,qBACA,cAEA,kBACE,yBD6CJ,2BC1CI,cD6CJ,YCrDE,yBACA,qBACA,cDmDF,eChDI,yBDgDJ,wBC7CI,cDgDJ,eCxDE,yBACA,qBACA,cDsDF,kBCnDI,yBDmDJ,2BChDI,cDmDJ,cC3DE,yBACA,qBACA,cDyDF,iBCtDI,yBDsDJ,0BCnDI,cCXJ,OACE,YACA,iBACA,gBACA,cACA,WACA,yBACA,WAPF,0BAUI,WACA,qBACA,eACA,WAQJ,aACE,UACA,eACA,uBACA,SACA,wBCdF,mBAJE,gBAIF,OACE,eACA,MACA,QACA,SACA,OACA,aACA,aAIA,UACA,iCAZF,0BAgBI,+LACA,8DAEG,wBAAgB,sDAEX,mBACV,kBACA,gBAIF,cACE,kBACA,WACA,YAIF,eACE,kBACA,sBACA,4BACA,gCACA,oBAGA,UAIF,gBACE,eACA,MACA,QACA,SACA,OACA,aACA,sBAPF,qBAUW,UAVX,mBAWS,WAKT,cACE,aACA,gCR3EA,oBACE,WACA,cACA,WQ4EJ,qBACE,gBAIF,aACE,SACA,gBAKF,YACE,kBACA,aAIF,cACE,aACA,iBACA,6BAHF,oBRhGI,WACA,cACA,WQqGK,wBACL,gBACA,gBATJ,mCAaI,iBAGW,oCACX,cAKJ,yBACE,kBACA,YACA,WACA,YACA,gBnBhFE,yBmBsFF,cACE,YACA,iBAOF,UAAY,Y1BqjGX,COppGC,yBmBmGF,UAAY,Y1BujGX,C2BlsGD,cAEI,uBpBmDF,yBoBhDF,gBAEI,uB3BqsGH,COpqGC,yBoBxCF,cAEI,uB3BgtGH,CO7pGC,yBoBhDF,gBAEI,uB3BitGH,COhrGC,yBoBxCF,cAEI,uB3B4tGH,COzqGC,yBoBhDF,gBAEI,uB3B6tGH,CO5rGC,yBoBxCF,cAEI,uB3BwuGH,COrrGC,0BoBhDF,gBAEI,uB3ByuGH,COxsGC,0BoBxCF,cAEI,uB3BovGH,C2BruGH,qCACE,uBAEA,aAHF,qBAII,wB3B+uGD,C2B5uGH,sBACE,uBAEA,aAHF,sBAII,yB3BkvGD,C2B/uGH,4BACE,uBAEA,aAHF,4BAII,+B3BqvGD,C2BhvGD,aADF,cAEI,uB3BqvGD,CACF;;A4BpyGD;;qC5BwyGqC,gB4BpyGrB,kBAAmB,qB5ByyGlC,6C4BzyGqG,kBAAmB,gCAAuE,wBAA6B,kBAAmB,UAAW,gBAAiB,oBAAqB,4BAAuD,oBAAqB,4BAAuD,oB5B2zGna,yD4B3zGif,mBAAoB,UAAW,6BAAyD,qB5Bo0GzkB,uB4Bp0GsnB,WAAY,kBAAmB,eAAgB,6BAA8B,gB5B40GnsB,sB4B50G0uB,mBAAoB,WAAY,iBAAkB,eAAgB,sDAAyD,iBAAkB,mBAAoB,0BAA2B,oF5Bw1Gt6B,kC4Bx1G8+B,yB5B41G9+B,iC4B51GwiC,wB5Bg2GxiC,wF4Bh2GwpC,uBAAuB,iEAAiE,yBAA0B,0EAA0E,4BAA6B,mCAAmC,YAAa,SAAU,kBAAkB,oBAAqB,qBAAqB,iBAAiB,mCAAmE,2BAA2B,wBAAwB,mCAAmE,2BAA2B,uBAAuB,oDAAqG,4CAA4C,yCAAyC,SAAU,SAAU,qBAAqB,iBAAkB,qBAAqB,oBAAoB,mCAAmE,2BAA2B,2BAA2B,kCAAiE,0BAA0B,0BAA0B,mDAAmG,2CAA2C,oBAAoB,2BAA4B,kBAAmB,mBAAoB,mBAAmB,oBAAqB,uCAAuC,UAAW,WAAY,mDAAmD,kCAAiE,0BAA0B,mBAAmB,0BAA2B,mBAAoB,mBAAoB,kBAAkB,oBAAqB,qCAAqC,WAAY,WAAY,iDAAiD,mCAAmE,2BAA2B,6CAA6C,YAAa,SAAU,uBAAuB,oBAAqB,qBAAqB,sBAAsB,oCAAqE,4BAA4B,iBAAkB,6BAA6B,mCAAmE,2BAA2B,4BAA4B,qDAAuG,6CAA6C,+CAA+C,YAAa,SAAU,wBAAwB,oBAAqB,qBAAqB,uBAAuB,gCAA6D,wBAAwB,kBAAmB,2DAA2D,mCAAmE,2BAA2B,mDAAmD,SAAU,SAAU,0BAA0B,iBAAkB,qBAAqB,yBAAyB,oCAAqE,4BAA4B,iBAAkB,gCAAgC,kCAAiE,0BAA0B,+BAA+B,oDAAqG,4CAA4C,qDAAqD,SAAU,SAAU,2BAA2B,iBAAkB,qBAAqB,0BAA0B,gCAA6D,wBAAwB,kBAAmB,iEAAiE,kCAAiE,0BAA0B,0DAA0D,mBAAoB,kBAAmB,qBAAsB,mBAAmB,WAAY,oBAAoB,YAAa,mBAAmB,YAAa,mBAAmB,yBAA0B,6BAA8B,qGAAqG,yBAA0B,8GAA8G,4BAA6B,+BAA+B,0BAA2B,gCAAgC,2BAA4B,qBAAqB,yBAA0B,6BAA8B,2GAA2G,yBAA0B,oHAAoH,4BAA6B,iCAAiC,0BAA2B,kCAAkC,2BAA4B,kBAAkB,yBAA0B,6BAA8B,kGAAkG,yBAA0B,2GAA2G,4BAA6B,8BAA8B,0BAA2B,+BAA+B,2BAA4B,qBAAqB,yBAA0B,6BAA8B,2GAA2G,yBAA0B,oHAAoH,4BAA6B,iCAAiC,0BAA2B,kCAAkC,2BAA4B,yCAAyC,UAAW,mBAAoB,+BAA+B,mCAAmE,2BAA2B,8BAA8B,oDAAqG,4CAA4C,oCAAoC,mCAAmE,2BAA2B,mCAAmC,qDAAuG,6CAA6C,yEAAyE,mCAAmE,2BAA2B,kCAAkC,kCAAiE,0BAA0B,iCAAiC,mDAAmG,2CAA2C,uCAAuC,kCAAiE,0BAA0B,sCAAsC,oDAAqG,4CAA4C,+EAA+E,kCAAiE,0BAA0B,+DAA+D,mCAAmE,2BAA2B,iEAAiE,kCAAiE,0BAA0B,qBAAqB,kBAAmB,iDAAiD,+BAA6D,uBAAwB,yCAAyC,6GAAoN,oV5BqyHvzS;;A6BzyHD;;AACA,4EAA4E,KAAK,iBAAkB,0BAA2B,8BAA+B,KAAK,SAAU,wCAAwC,cAAe,GAAG,cAAe,eAAgB,uBAAuB,cAAe,OAAO,gBAAiB,GAAG,sDAAwB,SAAU,iBAAkB,IAAI,gCAAiC,cAAe,EAAE,6BAA8B,qCAAsC,YAAY,mBAAoB,0BAA2B,0EAAkC,SAAS,oBAAqB,mBAAoB,cAAc,gCAAiC,cAAe,IAAI,kBAAmB,KAAK,sBAAuB,WAAY,MAAM,cAAe,QAAQ,cAAe,cAAe,kBAAmB,wBAAyB,IAAI,cAAe,IAAI,UAAW,YAAY,qBAAsB,sBAAsB,aAAc,SAAU,IAAI,kBAAmB,eAAe,gBAAiB,sCAAsC,uBAAwB,eAAgB,iBAAkB,SAAU,aAAa,iBAAkB,cAAc,oB7Bq7HtqC,qD6Br7HwvC,0B7B87HxvC,wH6B97H24C,kBAAmB,U7Bs8H95C,4G6Bt8HqhD,8BAA+B,SAAS,2BAA4B,OAAO,oDAAuB,cAAe,cAAe,eAAgB,UAAW,mBAAoB,SAAS,qBAAsB,wBAAyB,SAAS,c7Bm+HrwD,6B6Bn+HizD,oDAAuB,U7By+Hx0D,kF6Bz+Hq6D,Y7B8+Hr6D,c6B9+Hg8D,6BAA8B,oB7Bm/H99D,qF6Bn/HwkE,wBAAyB,6BAA6B,0BAA2B,aAAsB,aAAa,cAAe,QAAQ,kBAAmB,OAAO,qB7B4gI7uE,kB6B5gIqxE,aAAc,6SAA6S,oDAAuB,cAAc,SAAU,kBAAmB,oBAAoB,sBAAuB,oBAAoB,uBAAwB,mBAAmB,mBAAoB,mBAAmB,uBAAwB,mBAAmB,qBAAsB,mBAAmB,oBAAqB,mBAAmB,qBAAsB,mBAAmB,oBAAqB,mBAAmB,sBAAuB,mBAAmB,oBAAqB,mBAAmB,oBAAqB,sBAAsB,kBAAmB,MAAO,QAAS,SAAU,OAAQ,WAAY,YAAa,YAAa,IAAI,eAAgB,OAAO,gCAAgC,SAAS,kCAAkC,WAAW,wBAAyB,mBAAmB,4BAA6B,QAAQ,wBAAyB,UAAU,yBAA0B,qBAAqB,4BAA6B,WAAW,2BAA4B,SAAS,4BAA6B,sBAAuB,SAAS,kBAAmB,qBAAqB,8BAA+B,WAAW,UAAW,IAAI,mBAAoB,iBAAkB,IAAI,uBAAwB,qBAAsB,IAAI,yBAA0B,uBAAwB,IAAI,0BAA2B,wBAAyB,IAAI,wBAAyB,sBAAuB,IAAI,kBAAmB,eAAgB,UAAU,kBAAmB,eAAe,kBAAmB,cAAc,kBAAmB,aAAa,kBAAmB,SAAS,kBAAmB,WAAW,kBAAmB,iBAAiB,kBAAmB,cAAc,kBAAmB,eAAe,kBAAmB,eAAe,qBAAsB,UAAU,kBAAmB,aAAa,gCAAgC,aAAa,gCAAgC,aAAa,gCAAgC,aAAa,gCAAgC,aAAa,gCAAgC,aAAa,gCAAgC,aAAa,gCAAgC,aAAa,gCAAgC,aAAa,gCAAgC,aAAa,iCAAiC,cAAc,kCAAkC,eAAe,mCAAmC,aAAa,4BAA4B,aAAa,4BAA4B,aAAa,4BAA4B,aAAa,4BAA4B,aAAa,4BAA4B,aAAa,4BAA4B,aAAa,4BAA4B,aAAa,4BAA4B,aAAa,4BAA4B,aAAa,6BAA6B,cAAc,8BAA8B,eAAe,+BAA+B,aAAa,qBAAsB,QAAQ,qBAAsB,cAAc,qBAAsB,WAAW,qBAAsB,SAAS,qBAAsB,WAAW,kBAAmB,iBAAiB,qBAAsB,WAAW,qBAAsB,iBAAiB,qBAAsB,cAAc,qBAAsB,aAAa,qBAAsB,SAAS,qBAAsB,eAAe,qBAAsB,eAAe,qBAAsB,UAAU,qBAAsB,gBAAgB,qBAAsB,SAAS,qBAAsB,cAAc,qBAAsB,SAAS,qBAAsB,eAAe,qBAAsB,kBAAkB,qBAAsB,gBAAgB,qBAAsB,iBAAiB,qBAAsB,kBAAkB,qBAAsB,eAAe,qBAAsB,gBAAgB,yBAA0B,YAAY,qBAAsB,KAAK,gBAAiB,KAAK,sBAAuB,KAAK,qBAAsB,KAAK,oBAAqB,KAAK,mBAAoB,QAAQ,mBAAoB,SAAS,qBAAsB,YAAY,yBAA0B,0BAA2B,SAAS,6BAA8B,oBAAoB,4BAA6B,WAAW,yBAA0B,UAAU,0BAA2B,6BAA8B,WAAW,oBAAqB,WAAW,oBAAqB,UAAU,mBAAoB,SAAS,kBAAmB,KAAK,eAAgB,KAAK,qBAAsB,KAAK,oBAAqB,KAAK,mBAAoB,KAAK,kBAAmB,KAAK,kBAAmB,MAAM,mBAAoB,MAAM,qBAAsB,MAAM,sBAAuB,MAAM,oBAAqB,UAAU,oFAAsC,UAAU,oFAAsC,UAAU,4FAA0C,UAAU,wFAAwC,UAAU,wFAAwC,KAAK,gBAAiB,kBAAmB,gBAAiB,OAAO,MAAO,SAAS,QAAS,UAAU,SAAU,QAAQ,OAAQ,OAAO,SAAU,SAAS,WAAY,UAAU,YAAa,QAAQ,UAAW,OAAO,SAAU,SAAS,WAAY,UAAU,YAAa,QAAQ,UAAW,QAAQ,UAAW,UAAU,YAAa,WAAW,aAAc,SAAS,WAAY,QAAQ,UAAW,UAAU,YAAa,WAAW,aAAc,SAAS,WAAY,gBAAgB,MAAO,QAAS,SAAU,OAAQ,qBAAqB,YAAa,cAAe,UAAU,WAAY,K7Bm4Jv5P,M6Bn4J25P,CAAS,IAAI,WAAY,IAAI,YAAa,IAAI,WAAY,IAAI,WAAY,IAAI,aAAc,IAAI,eAAgB,IAAI,cAAe,KAAK,qBAAsB,KAAK,qBAAsB,IAAI,cAAe,KAAK,mBAAoB,QAAQ,kBAAmB,cAAc,wBAAyB,WAAW,qBAAsB,iBAAiB,2BAA4B,WAAW,mBAAoB,WAAY,MAAM,oBAAqB,oBAAqB,aAAc,aAAa,2BAA4B,2BAA4B,oBAAqB,WAAW,mBAAoB,kBAAmB,cAAe,YAAa,aAAc,WAAW,mBAAoB,cAAe,UAAW,aAAa,4BAA6B,0BAA2B,sBAAuB,uBAAuB,6BAA8B,UAAU,8BAA+B,uBAAwB,mBAAoB,WAAW,mBAAoB,eAAgB,aAAa,qBAAsB,iBAAkB,mBAAmB,2BAA4B,uBAAwB,qBAAqB,4BAA6B,8BAA+B,kCAAmC,8BAA+B,kBAAkB,8BAA+B,8BAA+B,+BAAgC,2BAA4B,aAAa,wBAAyB,qBAAsB,uBAAwB,WAAW,sBAAuB,mBAAoB,qBAAsB,cAAc,yBAA0B,sBAAuB,mBAAoB,gBAAgB,2BAA4B,wBAAyB,qBAAsB,eAAe,0BAA2B,uBAAwB,oBAAqB,YAAY,0BAA2B,sBAAuB,UAAU,wBAAyB,oBAAqB,aAAa,2BAA4B,0BAA2B,kBAAmB,eAAe,6BAA8B,oBAAqB,cAAc,4BAA6B,2BAA4B,mBAAoB,eAAe,uBAAwB,oBAAqB,2BAA4B,aAAa,qBAAsB,kBAAmB,yBAA0B,gBAAgB,wBAAyB,qBAAsB,uBAAwB,iBAAiB,yBAA0B,sBAAuB,8BAA+B,gBAAgB,yBAA0B,6BAA8B,eAAe,yBAA0B,yBAA0B,aAAa,uBAAwB,uBAAwB,gBAAgB,0BAA2B,qBAAsB,iBAAiB,2BAA4B,4BAA6B,gBAAgB,8BAA+B,2BAA4B,iBAAiB,2BAA4B,sBAAuB,SAAS,4BAA6B,iBAAkB,QAAS,SAAS,4BAA6B,iBAAkB,QAAS,SAAS,4BAA6B,iBAAkB,QAAS,SAAS,4BAA6B,iBAAkB,QAAS,SAAS,4BAA6B,iBAAkB,QAAS,SAAS,4BAA6B,iBAAkB,QAAS,SAAS,4BAA6B,iBAAkB,QAAS,SAAS,4BAA6B,iBAAkB,QAAS,SAAS,4BAA6B,iBAAkB,QAAS,YAAY,iCAAkC,qBAAsB,YAAa,aAAa,mBAAoB,oBAAqB,YAAa,aAAa,mBAAoB,oBAAqB,YAAa,eAAe,oBAAqB,cAAe,eAAe,oBAAqB,cAAe,IAAI,WAAY,S7B2tK/vX,c6B3tKuwX,CAAiB,IAAI,YAAa,IAAI,WAAY,YAAY,sIAAuI,OAAO,gCAAiC,mBAAmB,uBAAwB,cAAc,kBAAmB,WAAW,sCAAuC,SAAS,2CAA4C,WAAW,gDAAiD,QAAQ,0CAA2C,SAAS,kCAAmC,SAAS,0BAA2B,OAAO,wBAAyB,QAAQ,4BAA6B,SAAS,6BAA8B,UAAU,2BAA4B,aAAa,8BAA+B,GAAG,kBAAmB,WAAW,kBAAmB,QAAQ,gBAAiB,GAAG,gBAAiB,KAAK,gBAAiB,KAAK,gBAAiB,KAAK,gBAAiB,KAAK,gBAAiB,KAAK,gBAAiB,KAAK,gBAAiB,KAAK,gBAAiB,KAAK,gBAAiB,KAAK,gBAAiB,aAAa,wBAAyB,qBAAsB,+DAA+D,SAAU,UAAW,IAAI,YAAa,IAAI,YAAa,IAAI,YAAa,IAAI,YAAa,IAAI,aAAc,MAAM,WAAY,MAAM,WAAY,MAAM,WAAY,OAAO,YAAa,WAAW,gBAAiB,OAAO,YAAa,OAAO,YAAa,OAAO,YAAa,QAAQ,aAAc,YAAY,iBAAkB,QAAQ,YAAa,WAAW,eAAgB,SAAS,oBAAqB,eAAe,sBAAuB,cAAc,qBAAsB,UAAU,cAAe,UAAU,iBAAkB,SAAS,gBAAiB,MAAM,qBAAsB,oEAAoE,oEAA+B,YAAY,gCAAiC,MAAM,qBAAsB,QAAQ,eAAgB,KAAK,eAAgB,KAAK,eAAgB,KAAK,eAAgB,KAAK,eAAgB,KAAK,gBAAiB,KAAK,gBAAiB,KAAK,gBAAiB,KAAK,gBAAiB,KAAK,gBAAiB,SAAS,eAAgB,IAAI,WAAY,IAAI,WAAY,IAAI,WAAY,IAAI,WAAY,IAAI,YAAa,MAAM,UAAW,MAAM,UAAW,MAAM,UAAW,MAAM,UAAW,MAAM,UAAW,MAAM,UAAW,MAAM,UAAW,MAAM,UAAW,MAAM,UAAW,MAAM,UAAW,MAAM,UAAW,MAAM,UAAW,MAAM,UAAW,OAAO,WAAY,SAAS,gBAAiB,cAAc,gBAAiB,QAAQ,WAAY,kBAAkB,iBAAkB,iBAAiB,gBAAiB,iBAAiB,gBAAiB,eAAe,cAAe,oBAAoB,mBAAoB,mBAAmB,kBAAmB,mBAAmB,kBAAmB,iBAAiB,gBAAiB,oBAAoB,mBAAoB,mBAAmB,kBAAmB,mBAAmB,kBAAmB,iBAAiB,gBAAiB,QAAQ,gBAAiB,UAAU,kBAAmB,UAAU,kBAAmB,OAAO,eAAgB,OAAO,UAAW,MAAM,WAAY,MAAM,WAAY,MAAM,WAAY,MAAM,WAAY,MAAM,WAAY,MAAM,WAAY,MAAM,WAAY,MAAM,WAAY,MAAM,WAAY,MAAM,YAAa,OAAO,aAAc,KAAK,UAAW,WAAW,gCAAgC,wBAAwB,WAAW,gCAAgC,wBAAwB,YAAY,iCAAiC,yBAAyB,YAAY,iCAAiC,yBAAyB,YAAY,iCAAiC,yBAAyB,YAAY,iCAAiC,yBAAyB,YAAY,iCAAiC,yBAAyB,UAAU,qBAAqB,UAAU,qBAAqB,UAAU,qBAAqB,UAAU,qBAAqB,UAAU,qBAAqB,UAAU,qBAAqB,UAAU,qBAAqB,UAAU,qBAAqB,UAAU,qBAAqB,UAAU,sBAAsB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,OAAO,WAAY,YAAY,WAAY,WAAW,WAAY,UAAU,WAAY,MAAM,WAAY,QAAQ,WAAY,cAAc,WAAY,WAAW,WAAY,YAAY,WAAY,YAAY,cAAe,OAAO,WAAY,UAAU,cAAe,KAAK,cAAe,WAAW,cAAe,QAAQ,cAAe,MAAM,cAAe,QAAQ,WAAY,cAAc,cAAe,QAAQ,cAAe,cAAc,cAAe,WAAW,cAAe,UAAU,cAAe,MAAM,cAAe,YAAY,cAAe,YAAY,cAAe,OAAO,cAAe,aAAa,cAAe,MAAM,cAAe,WAAW,cAAe,MAAM,cAAe,YAAY,cAAe,eAAe,cAAe,aAAa,cAAe,cAAc,cAAe,eAAe,cAAe,YAAY,cAAe,eAAe,cAAe,aAAa,gCAAgC,aAAa,gCAAgC,aAAa,gCAAgC,aAAa,gCAAgC,aAAa,gCAAgC,aAAa,gCAAgC,aAAa,gCAAgC,aAAa,gCAAgC,aAAa,gCAAgC,aAAa,iCAAiC,aAAa,oCAAoC,aAAa,oCAAoC,aAAa,oCAAoC,aAAa,oCAAoC,aAAa,oCAAoC,aAAa,oCAAoC,aAAa,oCAAoC,aAAa,oCAAoC,aAAa,oCAAoC,UAAU,sBAAuB,eAAe,sBAAuB,cAAc,sBAAuB,aAAa,sBAAuB,SAAS,sBAAuB,WAAW,sBAAuB,iBAAiB,sBAAuB,cAAc,sBAAuB,eAAe,sBAAuB,eAAe,yBAA0B,UAAU,sBAAuB,gBAAgB,6BAA8B,aAAa,yBAA0B,QAAQ,yBAA0B,cAAc,yBAA0B,WAAW,yBAA0B,SAAS,yBAA0B,WAAW,sBAAuB,iBAAiB,yBAA0B,WAAW,yBAA0B,iBAAiB,yBAA0B,cAAc,yBAA0B,aAAa,yBAA0B,SAAS,yBAA0B,eAAe,yBAA0B,eAAe,yBAA0B,UAAU,yBAA0B,gBAAgB,yBAA0B,SAAS,yBAA0B,cAAc,yBAA0B,SAAS,yBAA0B,eAAe,yBAA0B,kBAAkB,yBAA0B,gBAAgB,yBAA0B,iBAAiB,yBAA0B,kBAAkB,yBAA0B,eAAe,yBAA0B,YAAY,yBAA0B,sCAAsC,WAAY,gDAAgD,WAAY,8CAA8C,WAAY,4CAA4C,WAAY,oCAAoC,WAAY,wCAAwC,WAAY,oDAAoD,WAAY,8CAA8C,WAAY,gDAAgD,WAAY,gDAAgD,cAAe,sCAAsC,WAAY,4CAA4C,qBAAqB,4CAA4C,qBAAqB,4CAA4C,qBAAqB,4CAA4C,qBAAqB,4CAA4C,qBAAqB,4CAA4C,qBAAqB,4CAA4C,qBAAqB,4CAA4C,qBAAqB,4CAA4C,qBAAqB,4CAA4C,yBAAyB,4CAA4C,yBAAyB,4CAA4C,yBAAyB,4CAA4C,yBAAyB,4CAA4C,yBAAyB,4CAA4C,yBAAyB,4CAA4C,yBAAyB,4CAA4C,yBAAyB,4CAA4C,yBAAyB,0CAA0C,cAAe,4CAA4C,sBAAuB,sDAAsD,sBAAuB,oDAAoD,sBAAuB,kDAAkD,sBAAuB,0CAA0C,sBAAuB,8CAA8C,sBAAuB,0DAA0D,sBAAuB,oDAAoD,sBAAuB,sDAAsD,sBAAuB,sDAAsD,yBAA0B,4CAA4C,sBAAuB,wDAAwD,6BAA8B,kDAAkD,gCAAgC,kDAAkD,gCAAgC,kDAAkD,gCAAgC,kDAAkD,gCAAgC,kDAAkD,gCAAgC,kDAAkD,gCAAgC,kDAAkD,gCAAgC,kDAAkD,gCAAgC,kDAAkD,gCAAgC,kDAAkD,oCAAoC,kDAAkD,oCAAoC,kDAAkD,oCAAoC,kDAAkD,oCAAoC,kDAAkD,oCAAoC,kDAAkD,oCAAoC,kDAAkD,oCAAoC,kDAAkD,oCAAoC,kDAAkD,oCAAoC,4CAA4C,cAAe,kCAAkC,cAAe,8CAA8C,cAAe,wCAAwC,cAAe,oCAAoC,cAAe,wCAAwC,WAAY,oDAAoD,cAAe,wCAAwC,cAAe,oDAAoD,cAAe,8CAA8C,cAAe,4CAA4C,cAAe,oCAAoC,cAAe,gDAAgD,cAAe,gDAAgD,cAAe,sCAAsC,cAAe,kDAAkD,cAAe,oCAAoC,cAAe,8CAA8C,cAAe,oCAAoC,cAAe,gDAAgD,cAAe,sDAAsD,cAAe,kDAAkD,cAAe,oDAAoD,cAAe,sDAAsD,cAAe,gDAAgD,cAAe,kDAAkD,yBAA0B,wCAAwC,yBAA0B,oDAAoD,yBAA0B,8CAA8C,yBAA0B,0CAA0C,yBAA0B,8CAA8C,sBAAuB,0DAA0D,yBAA0B,8CAA8C,yBAA0B,0DAA0D,yBAA0B,oDAAoD,yBAA0B,kDAAkD,yBAA0B,0CAA0C,yBAA0B,sDAAsD,yBAA0B,sDAAsD,yBAA0B,4CAA4C,yBAA0B,wDAAwD,yBAA0B,0CAA0C,yBAA0B,oDAAoD,yBAA0B,0CAA0C,yBAA0B,sDAAsD,yBAA0B,4DAA4D,yBAA0B,wDAAwD,yBAA0B,0DAA0D,yBAA0B,4DAA4D,yBAA0B,sDAAsD,yBAA0B,gDAAgD,yBAA0B,KAAK,UAAW,KAAK,eAAgB,KAAK,cAAe,KAAK,aAAc,KAAK,aAAc,KAAK,aAAc,KAAK,aAAc,KAAK,cAAe,KAAK,eAAgB,KAAK,oBAAqB,KAAK,mBAAoB,KAAK,kBAAmB,KAAK,kBAAmB,KAAK,kBAAmB,KAAK,kBAAmB,KAAK,mBAAoB,KAAK,gBAAiB,KAAK,qBAAsB,KAAK,oBAAqB,KAAK,mBAAoB,KAAK,mBAAoB,KAAK,mBAAoB,KAAK,mBAAoB,KAAK,oBAAqB,KAAK,iBAAkB,KAAK,sBAAuB,KAAK,qBAAsB,KAAK,oBAAqB,KAAK,oBAAqB,KAAK,oBAAqB,KAAK,oBAAqB,KAAK,qBAAsB,KAAK,cAAe,KAAK,mBAAoB,KAAK,kBAAmB,KAAK,iBAAkB,KAAK,iBAAkB,KAAK,iBAAkB,KAAK,iBAAkB,KAAK,kBAAmB,KAAK,cAAe,iBAAkB,KAAK,mBAAoB,sBAAuB,KAAK,kBAAmB,qBAAsB,KAAK,iBAAkB,oBAAqB,KAAK,iBAAkB,oBAAqB,KAAK,iBAAkB,oBAAqB,KAAK,iBAAkB,oBAAqB,KAAK,kBAAmB,qBAAsB,KAAK,eAAgB,gBAAiB,KAAK,oBAAqB,qBAAsB,KAAK,mBAAoB,oBAAqB,KAAK,kBAAmB,mBAAoB,KAAK,kBAAmB,mBAAoB,KAAK,kBAAmB,mBAAoB,KAAK,kBAAmB,mBAAoB,KAAK,mBAAoB,oBAAqB,KAAK,SAAU,KAAK,cAAe,KAAK,aAAc,KAAK,YAAa,KAAK,YAAa,KAAK,YAAa,KAAK,YAAa,KAAK,aAAc,KAAK,cAAe,KAAK,mBAAoB,KAAK,kBAAmB,KAAK,iBAAkB,KAAK,iBAAkB,KAAK,iBAAkB,KAAK,iBAAkB,KAAK,kBAAmB,KAAK,eAAgB,KAAK,oBAAqB,KAAK,mBAAoB,KAAK,kBAAmB,KAAK,kBAAmB,KAAK,kBAAmB,KAAK,kBAAmB,KAAK,mBAAoB,KAAK,gBAAiB,KAAK,qBAAsB,KAAK,oBAAqB,KAAK,mBAAoB,KAAK,mBAAoB,KAAK,mBAAoB,KAAK,mBAAoB,KAAK,oBAAqB,KAAK,aAAc,KAAK,kBAAmB,KAAK,iBAAkB,KAAK,gBAAiB,KAAK,gBAAiB,KAAK,gBAAiB,KAAK,gBAAiB,KAAK,iBAAkB,KAAK,aAAc,gBAAiB,KAAK,kBAAmB,qBAAsB,KAAK,iBAAkB,oBAAqB,KAAK,gBAAiB,mBAAoB,KAAK,gBAAiB,mBAAoB,KAAK,gBAAiB,mBAAoB,KAAK,gBAAiB,mBAAoB,KAAK,iBAAkB,oBAAqB,KAAK,cAAe,eAAgB,KAAK,mBAAoB,oBAAqB,KAAK,kBAAmB,mBAAoB,KAAK,iBAAkB,kBAAmB,KAAK,iBAAkB,kBAAmB,KAAK,iBAAkB,kBAAmB,KAAK,iBAAkB,kBAAmB,KAAK,kBAAmB,mBAAoB,KAAK,eAAgB,KAAK,cAAe,KAAK,aAAc,KAAK,aAAc,KAAK,aAAc,KAAK,aAAc,KAAK,cAAe,KAAK,oBAAqB,KAAK,mBAAoB,KAAK,kBAAmB,KAAK,kBAAmB,KAAK,kBAAmB,KAAK,kBAAmB,KAAK,mBAAoB,KAAK,qBAAsB,KAAK,oBAAqB,KAAK,mBAAoB,KAAK,mBAAoB,KAAK,mBAAoB,KAAK,mBAAoB,KAAK,oBAAqB,KAAK,sBAAuB,KAAK,qBAAsB,KAAK,oBAAqB,KAAK,oBAAqB,KAAK,oBAAqB,KAAK,oBAAqB,KAAK,qBAAsB,KAAK,mBAAoB,KAAK,kBAAmB,KAAK,iBAAkB,KAAK,iBAAkB,KAAK,iBAAkB,KAAK,iBAAkB,KAAK,kBAAmB,UAAU,yBAA0B,iBAAkB,sCAAsC,sBAAuB,mCAAmC,sBAAuB,oCAAoC,sBAAuB,oCAAoC,yBAA0B,6BAA6B,oCAAoC,4BAA4B,gCAAgC,QAAQ,6BAA8B,WAAW,0BAA2B,cAAc,qBAAsB,IAAI,gBAAiB,IAAI,iBAAkB,IAAI,kBAAmB,IAAI,mBAAoB,KAAK,0BAA2B,KAAK,yBAA0B,KAAK,yBAA0B,KAAK,oBAAqB,iBAAiB,eAAgB,oBAAoB,eAAgB,IAAI,eAAgB,IAAI,kBAAmB,IAAI,iBAAkB,IAAI,kBAAmB,IAAI,eAAgB,IAAI,kBAAmB,IAAI,iBAAkB,SAAS,eAAgB,cAAc,eAAgB,gBAAgB,eAAgB,QAAQ,gBAAiB,aAAc,gBAAiB,YAAY,wBAAyB,UAAU,mBAAoB,gBAAiB,uBAAwB,oBAAoB,kBAAmB,QAAQ,iBAAkB,iBAAiB,kBAAmB,SAAS,iBAAkB,MAAM,0B7Bw+O7sgC,4B6Bx+OmwgC,2BAA2B,2BAA2B,WAAW,mBAAoB,QAAQ,mBAAoB,KAAK,gBAAiB,QAAQ,wBAAyB,OAAO,sBAAuB,OAAO,mBAAoB,OAAO,sBAAuB,KAAK,UAAW,2BAA2B,wEAAiC,sBAAsB,WAAY,YAAY,WAAY,0EAAkC,8BAA8B,wEAAiC,wBAAwB,UAAW,mBAAmB,UAAW,wEAAiC,4EAA4E,UAAW,wEAAiC,8CAA8C,0BAA2B,MAAM,kCAAmC,mCAAoC,2BAA4B,gCAAgC,wBAAwB,2CAA4C,sFAAoC,mEAAoE,wBAAwB,8BAA8B,sBAAsB,aAAa,4BAA4B,oBAAoB,YAAY,kCAAmC,mCAAoC,2BAA4B,gCAAgC,wBAAwB,8CAA+C,4FAAuC,yEAA0E,oCAAoC,6BAA6B,qBAAqB,mBAAmB,6BAA6B,qBAAqB,6BAA6B,eAAgB,cAAc,kBAAmB,wGAAgD,oBAAoB,WAAY,sFAAuC,sBAAuB,UAAW,kBAAmB,MAAO,OAAQ,WAAY,YAAa,WAAY,gHAAoD,oDAAoD,UAAW,gDAAgD,kGAA8C,KAAK,UAAW,KAAK,UAAW,KAAK,UAAW,KAAK,UAAW,KAAK,UAAW,KAAK,UAAW,OAAO,YAAa,QAAQ,aAAc,OAAO,mBAAoB,WAAW,gBAAiB,WAAW,aAAc,SAAS,cAAe,mFAAmF,gBAAiB,gMAAgM,iBAAkB,4CAA4C,eAAgB,cAAe,qBAAsB,wBAAwB,gBAAiB,aAAc,gBAAiB,2BAA2B,iBAAkB,gBAAgB,WAAY,eAAgB,cAA6B,gBAAE,cAA8C,4DAA/B,oEAA+B,4CAA4C,cAA8C,SAAS,uBAAwB,eAAe,uBAAqC,eAAE,uBAAwB,YAAY,sKAAsK,eAAe,8MAA8M,oBAAoB,+HAA+H,qBAAqB,uJAAuJ,mCAAmC,iBAAiB,SAAU,kBAAmB,uBAAuB,sBAAuB,uBAAuB,uBAAwB,sBAAsB,mBAAoB,sBAAsB,uBAAwB,sBAAsB,qBAAsB,sBAAsB,oBAAqB,sBAAsB,qBAAsB,sBAAsB,oBAAqB,sBAAsB,sBAAuB,sBAAsB,oBAAqB,sBAAsB,oBAAqB,yBAAyB,kBAAmB,MAAO,QAAS,SAAU,OAAQ,WAAY,YAAa,YAAa,UAAU,gCAAgC,YAAY,kCAAkC,cAAc,wBAAyB,yBAAyB,4BAA6B,WAAW,wBAAyB,aAAa,yBAA0B,2BAA2B,4BAA6B,cAAc,2BAA4B,YAAY,4BAA6B,sBAAuB,YAAY,kBAAmB,wBAAwB,8BAA+B,cAAc,UAAW,OAAO,mBAAoB,iBAAkB,OAAO,uBAAwB,qBAAsB,OAAO,yBAA0B,uBAAwB,OAAO,0BAA2B,wBAAyB,OAAO,wBAAyB,sBAAuB,OAAO,kBAAmB,eAAgB,QAAQ,gBAAiB,QAAQ,sBAAuB,QAAQ,qBAAsB,QAAQ,oBAAqB,QAAQ,mBAAoB,WAAW,mBAAoB,YAAY,qBAAsB,eAAe,yBAA0B,0BAA2B,YAAY,6BAA8B,0BAA0B,4BAA6B,cAAc,yBAA0B,aAAa,0BAA2B,6BAA8B,cAAc,oBAAqB,cAAc,oBAAqB,aAAa,mBAAoB,YAAY,kBAAmB,QAAQ,eAAgB,QAAQ,qBAAsB,QAAQ,oBAAqB,QAAQ,mBAAoB,QAAQ,kBAAmB,QAAQ,kBAAmB,SAAS,mBAAoB,SAAS,qBAAsB,SAAS,sBAAuB,SAAS,oBAAqB,aAAa,oFAAsC,aAAa,oFAAsC,aAAa,4FAA0C,aAAa,wFAAwC,aAAa,wFAAwC,UAAU,MAAO,WAAW,OAAQ,YAAY,QAAS,aAAa,SAAU,UAAU,SAAU,WAAW,UAAW,YAAY,WAAY,aAAa,YAAa,UAAU,SAAU,WAAW,UAAW,YAAY,WAAY,aAAa,YAAa,WAAW,UAAW,aAAa,YAAa,cAAc,aAAc,YAAY,WAAY,WAAW,UAAW,aAAa,YAAa,cAAc,aAAc,YAAY,WAAY,mBAAmB,MAAO,QAAS,SAAU,OAAQ,OAAO,WAAY,OAAO,YAAa,OAAO,WAAY,OAAO,WAAY,OAAO,aAAc,OAAO,eAAgB,OAAO,cAAe,QAAQ,qBAAsB,QAAQ,qBAAsB,OAAO,cAAe,QAAQ,mBAAoB,WAAW,kBAAmB,iBAAiB,wBAAyB,cAAc,qBAAsB,oBAAoB,2BAA4B,cAAc,mBAAoB,WAAY,SAAS,oBAAqB,oBAAqB,aAAc,gBAAgB,2BAA4B,2BAA4B,oBAAqB,cAAc,mBAAoB,kBAAmB,cAAe,YAAa,aAAc,cAAc,mBAAoB,cAAe,UAAW,gBAAgB,4BAA6B,6BAA8B,0BAA2B,sBAAuB,aAAa,8BAA+B,6BAA8B,uBAAwB,mBAAoB,cAAc,mBAAoB,eAAgB,gBAAgB,qBAAsB,iBAAkB,sBAAsB,2BAA4B,uBAAwB,wBAAwB,4BAA6B,8BAA+B,kCAAmC,8BAA+B,qBAAqB,8BAA+B,8BAA+B,+BAAgC,2BAA4B,gBAAgB,wBAAyB,qBAAsB,uBAAwB,cAAc,sBAAuB,mBAAoB,qBAAsB,iBAAiB,yBAA0B,sBAAuB,mBAAoB,mBAAmB,2BAA4B,wBAAyB,qBAAsB,kBAAkB,0BAA2B,uBAAwB,oBAAqB,eAAe,0BAA2B,sBAAuB,aAAa,wBAAyB,oBAAqB,gBAAgB,2BAA4B,0BAA2B,kBAAmB,kBAAkB,6BAA8B,oBAAqB,iBAAiB,4BAA6B,2BAA4B,mBAAoB,kBAAkB,uBAAwB,oBAAqB,2BAA4B,gBAAgB,qBAAsB,kBAAmB,yBAA0B,mBAAmB,wBAAyB,qBAAsB,uBAAwB,oBAAoB,yBAA0B,sBAAuB,8BAA+B,mBAAmB,yBAA0B,6BAA8B,kBAAkB,yBAA0B,yBAA0B,gBAAgB,uBAAwB,uBAAwB,mBAAmB,0BAA2B,qBAAsB,oBAAoB,2BAA4B,4BAA6B,mBAAmB,8BAA+B,2BAA4B,oBAAoB,2BAA4B,sBAAuB,YAAY,4BAA6B,iBAAkB,QAAS,YAAY,4BAA6B,iBAAkB,QAAS,YAAY,4BAA6B,iBAAkB,QAAS,YAAY,4BAA6B,iBAAkB,QAAS,YAAY,4BAA6B,iBAAkB,QAAS,YAAY,4BAA6B,iBAAkB,QAAS,YAAY,4BAA6B,iBAAkB,QAAS,YAAY,4BAA6B,iBAAkB,QAAS,YAAY,4BAA6B,iBAAkB,QAAS,eAAe,iCAAkC,qBAAsB,YAAa,gBAAgB,mBAAoB,oBAAqB,YAAa,gBAAgB,mBAAoB,oBAAqB,YAAa,kBAAkB,oBAAqB,cAAe,kBAAkB,oBAAqB,cAAe,OAAO,WAAY,cAAc,eAAgB,OAAO,YAAa,OAAO,WAAY,MAAM,kBAAmB,cAAc,kBAAmB,WAAW,gBAAiB,MAAM,gBAAiB,QAAQ,gBAAiB,QAAQ,gBAAiB,QAAQ,gBAAiB,QAAQ,gBAAiB,QAAQ,gBAAiB,QAAQ,gBAAiB,QAAQ,gBAAiB,QAAQ,gBAAiB,QAAQ,gBAAiB,OAAO,YAAa,OAAO,YAAa,OAAO,YAAa,OAAO,YAAa,OAAO,aAAc,SAAS,WAAY,SAAS,WAAY,SAAS,WAAY,UAAU,YAAa,cAAc,gBAAiB,UAAU,YAAa,UAAU,YAAa,UAAU,YAAa,WAAW,aAAc,eAAe,iBAAkB,WAAW,YAAa,cAAc,eAAgB,YAAY,oBAAqB,kBAAkB,sBAAuB,iBAAiB,qBAAsB,aAAa,cAAe,aAAa,iBAAkB,YAAY,gBAAiB,WAAW,eAAgB,QAAQ,eAAgB,QAAQ,eAAgB,QAAQ,eAAgB,QAAQ,eAAgB,QAAQ,gBAAiB,QAAQ,gBAAiB,QAAQ,gBAAiB,QAAQ,gBAAiB,QAAQ,gBAAiB,YAAY,eAAgB,OAAO,WAAY,OAAO,WAAY,OAAO,WAAY,OAAO,WAAY,OAAO,YAAa,SAAS,UAAW,SAAS,UAAW,SAAS,UAAW,SAAS,UAAW,SAAS,UAAW,SAAS,UAAW,SAAS,UAAW,SAAS,UAAW,SAAS,UAAW,SAAS,UAAW,SAAS,UAAW,SAAS,UAAW,SAAS,UAAW,UAAU,WAAY,YAAY,gBAAiB,iBAAiB,gBAAiB,WAAW,WAAY,qBAAqB,iBAAkB,oBAAoB,gBAAiB,oBAAoB,gBAAiB,kBAAkB,cAAe,uBAAuB,mBAAoB,sBAAsB,kBAAmB,sBAAsB,kBAAmB,oBAAoB,gBAAiB,uBAAuB,mBAAoB,sBAAsB,kBAAmB,sBAAsB,kBAAmB,oBAAoB,gBAAiB,WAAW,gBAAiB,aAAa,kBAAmB,aAAa,kBAAmB,UAAU,eAAgB,cAAc,gCAAgC,wBAAwB,cAAc,gCAAgC,wBAAwB,eAAe,iCAAiC,yBAAyB,eAAe,iCAAiC,yBAAyB,eAAe,iCAAiC,yBAAyB,eAAe,iCAAiC,yBAAyB,eAAe,iCAAiC,yBAAyB,QAAQ,UAAW,QAAQ,eAAgB,QAAQ,cAAe,QAAQ,aAAc,QAAQ,aAAc,QAAQ,aAAc,QAAQ,aAAc,QAAQ,cAAe,QAAQ,eAAgB,QAAQ,oBAAqB,QAAQ,mBAAoB,QAAQ,kBAAmB,QAAQ,kBAAmB,QAAQ,kBAAmB,QAAQ,kBAAmB,QAAQ,mBAAoB,QAAQ,gBAAiB,QAAQ,qBAAsB,QAAQ,oBAAqB,QAAQ,mBAAoB,QAAQ,mBAAoB,QAAQ,mBAAoB,QAAQ,mBAAoB,QAAQ,oBAAqB,QAAQ,iBAAkB,QAAQ,sBAAuB,QAAQ,qBAAsB,QAAQ,oBAAqB,QAAQ,oBAAqB,QAAQ,oBAAqB,QAAQ,oBAAqB,QAAQ,qBAAsB,QAAQ,cAAe,QAAQ,mBAAoB,QAAQ,kBAAmB,QAAQ,iBAAkB,QAAQ,iBAAkB,QAAQ,iBAAkB,QAAQ,iBAAkB,QAAQ,kBAAmB,QAAQ,cAAe,iBAAkB,QAAQ,mBAAoB,sBAAuB,QAAQ,kBAAmB,qBAAsB,QAAQ,iBAAkB,oBAAqB,QAAQ,iBAAkB,oBAAqB,QAAQ,iBAAkB,oBAAqB,QAAQ,iBAAkB,oBAAqB,QAAQ,kBAAmB,qBAAsB,QAAQ,eAAgB,gBAAiB,QAAQ,oBAAqB,qBAAsB,QAAQ,mBAAoB,oBAAqB,QAAQ,kBAAmB,mBAAoB,QAAQ,kBAAmB,mBAAoB,QAAQ,kBAAmB,mBAAoB,QAAQ,kBAAmB,mBAAoB,QAAQ,mBAAoB,oBAAqB,QAAQ,SAAU,QAAQ,cAAe,QAAQ,aAAc,QAAQ,YAAa,QAAQ,YAAa,QAAQ,YAAa,QAAQ,YAAa,QAAQ,aAAc,QAAQ,cAAe,QAAQ,mBAAoB,QAAQ,kBAAmB,QAAQ,iBAAkB,QAAQ,iBAAkB,QAAQ,iBAAkB,QAAQ,iBAAkB,QAAQ,kBAAmB,QAAQ,eAAgB,QAAQ,oBAAqB,QAAQ,mBAAoB,QAAQ,kBAAmB,QAAQ,kBAAmB,QAAQ,kBAAmB,QAAQ,kBAAmB,QAAQ,mBAAoB,QAAQ,gBAAiB,QAAQ,qBAAsB,QAAQ,oBAAqB,QAAQ,mBAAoB,QAAQ,mBAAoB,QAAQ,mBAAoB,QAAQ,mBAAoB,QAAQ,oBAAqB,QAAQ,aAAc,QAAQ,kBAAmB,QAAQ,iBAAkB,QAAQ,gBAAiB,QAAQ,gBAAiB,QAAQ,gBAAiB,QAAQ,gBAAiB,QAAQ,iBAAkB,QAAQ,aAAc,gBAAiB,QAAQ,kBAAmB,qBAAsB,QAAQ,iBAAkB,oBAAqB,QAAQ,gBAAiB,mBAAoB,QAAQ,gBAAiB,mBAAoB,QAAQ,gBAAiB,mBAAoB,QAAQ,gBAAiB,mBAAoB,QAAQ,iBAAkB,oBAAqB,QAAQ,cAAe,eAAgB,QAAQ,mBAAoB,oBAAqB,QAAQ,kBAAmB,mBAAoB,QAAQ,iBAAkB,kBAAmB,QAAQ,iBAAkB,kBAAmB,QAAQ,iBAAkB,kBAAmB,QAAQ,iBAAkB,kBAAmB,QAAQ,kBAAmB,mBAAoB,QAAQ,eAAgB,QAAQ,cAAe,QAAQ,aAAc,QAAQ,aAAc,QAAQ,aAAc,QAAQ,aAAc,QAAQ,cAAe,QAAQ,oBAAqB,QAAQ,mBAAoB,QAAQ,kBAAmB,QAAQ,kBAAmB,QAAQ,kBAAmB,QAAQ,kBAAmB,QAAQ,mBAAoB,QAAQ,qBAAsB,QAAQ,oBAAqB,QAAQ,mBAAoB,QAAQ,mBAAoB,QAAQ,mBAAoB,QAAQ,mBAAoB,QAAQ,oBAAqB,QAAQ,sBAAuB,QAAQ,qBAAsB,QAAQ,oBAAqB,QAAQ,oBAAqB,QAAQ,oBAAqB,QAAQ,oBAAqB,QAAQ,qBAAsB,QAAQ,mBAAoB,QAAQ,kBAAmB,QAAQ,iBAAkB,QAAQ,iBAAkB,QAAQ,iBAAkB,QAAQ,iBAAkB,QAAQ,kBAAmB,WAAW,6BAA8B,cAAc,0BAA2B,iBAAiB,qBAAsB,OAAO,gBAAiB,OAAO,iBAAkB,OAAO,kBAAmB,OAAO,mBAAoB,QAAQ,0BAA2B,QAAQ,yBAA0B,QAAQ,yBAA0B,QAAQ,oBAAqB,uBAAuB,eAAgB,0BAA0B,eAAgB,OAAO,eAAgB,OAAO,kBAAmB,OAAO,iBAAkB,OAAO,kBAAmB,OAAO,eAAgB,OAAO,kBAAmB,OAAO,iBAAkB,YAAY,eAAgB,iBAAiB,eAAgB,mBAAmB,eAAgB,WAAW,gBAAiB,aAAc,gBAAiB,eAAe,wBAAyB,aAAa,mBAAoB,gBAAiB,uBAAwB,WAAW,iBAAkB,uBAAuB,kBAAmB,YAAY,iBAAkB,SAAS,yBAAyB,4BAA4B,2BAA2B,2BAA2B,cAAc,mBAAoB,WAAW,mBAAoB,QAAQ,gBAAiB,WAAW,wBAAyB,UAAU,sBAAuB,UAAU,mBAAoB,UAAU,sB7Bm3S3xnD,C6Bn3SmznD,wDAAwD,gBAAgB,SAAU,kBAAmB,sBAAsB,sBAAuB,sBAAsB,uBAAwB,qBAAqB,mBAAoB,qBAAqB,uBAAwB,qBAAqB,qBAAsB,qBAAqB,oBAAqB,qBAAqB,qBAAsB,qBAAqB,oBAAqB,qBAAqB,sBAAuB,qBAAqB,oBAAqB,qBAAqB,oBAAqB,wBAAwB,kBAAmB,MAAO,QAAS,SAAU,OAAQ,WAAY,YAAa,YAAa,SAAS,gCAAgC,WAAW,kCAAkC,aAAa,wBAAyB,uBAAuB,4BAA6B,UAAU,wBAAyB,YAAY,yBAA0B,yBAAyB,4BAA6B,aAAa,2BAA4B,WAAW,4BAA6B,sBAAuB,WAAW,kBAAmB,uBAAuB,8BAA+B,aAAa,UAAW,MAAM,mBAAoB,iBAAkB,MAAM,uBAAwB,qBAAsB,MAAM,yBAA0B,uBAAwB,MAAM,0BAA2B,wBAAyB,MAAM,wBAAyB,sBAAuB,MAAM,kBAAmB,eAAgB,OAAO,gBAAiB,OAAO,sBAAuB,OAAO,qBAAsB,OAAO,oBAAqB,OAAO,mBAAoB,UAAU,mBAAoB,WAAW,qBAAsB,cAAc,yBAA0B,0BAA2B,WAAW,6BAA8B,wBAAwB,4BAA6B,aAAa,yBAA0B,YAAY,0BAA2B,6BAA8B,aAAa,oBAAqB,aAAa,oBAAqB,YAAY,mBAAoB,WAAW,kBAAmB,OAAO,eAAgB,OAAO,qBAAsB,OAAO,oBAAqB,OAAO,mBAAoB,OAAO,kBAAmB,OAAO,kBAAmB,QAAQ,mBAAoB,QAAQ,qBAAsB,QAAQ,sBAAuB,QAAQ,oBAAqB,YAAY,oFAAsC,YAAY,oFAAsC,YAAY,4FAA0C,YAAY,wFAAwC,YAAY,wFAAwC,SAAS,MAAO,UAAU,OAAQ,WAAW,QAAS,YAAY,SAAU,SAAS,SAAU,UAAU,UAAW,WAAW,WAAY,YAAY,YAAa,SAAS,SAAU,UAAU,UAAW,WAAW,WAAY,YAAY,YAAa,UAAU,UAAW,YAAY,YAAa,aAAa,aAAc,WAAW,WAAY,UAAU,UAAW,YAAY,YAAa,aAAa,aAAc,WAAW,WAAY,kBAAkB,MAAO,QAAS,SAAU,OAAQ,MAAM,WAAY,MAAM,YAAa,MAAM,WAAY,MAAM,WAAY,MAAM,aAAc,MAAM,eAAgB,MAAM,cAAe,OAAO,qBAAsB,OAAO,qBAAsB,MAAM,cAAe,OAAO,mBAAoB,UAAU,kBAAmB,gBAAgB,wBAAyB,aAAa,qBAAsB,mBAAmB,2BAA4B,aAAa,mBAAoB,WAAY,QAAQ,oBAAqB,oBAAqB,aAAc,eAAe,2BAA4B,2BAA4B,oBAAqB,aAAa,mBAAoB,kBAAmB,cAAe,YAAa,aAAc,aAAa,mBAAoB,cAAe,UAAW,eAAe,4BAA6B,0BAA2B,sBAAuB,2BAA2B,6BAA8B,YAAY,8BAA+B,uBAAwB,mBAAoB,aAAa,mBAAoB,eAAgB,eAAe,qBAAsB,iBAAkB,qBAAqB,2BAA4B,uBAAwB,uBAAuB,4BAA6B,8BAA+B,kCAAmC,8BAA+B,oBAAoB,8BAA+B,8BAA+B,+BAAgC,2BAA4B,eAAe,wBAAyB,qBAAsB,uBAAwB,aAAa,sBAAuB,mBAAoB,qBAAsB,gBAAgB,yBAA0B,sBAAuB,mBAAoB,kBAAkB,2BAA4B,wBAAyB,qBAAsB,iBAAiB,0BAA2B,uBAAwB,oBAAqB,cAAc,0BAA2B,sBAAuB,YAAY,wBAAyB,oBAAqB,eAAe,2BAA4B,0BAA2B,kBAAmB,iBAAiB,6BAA8B,oBAAqB,gBAAgB,4BAA6B,2BAA4B,mBAAoB,iBAAiB,uBAAwB,oBAAqB,2BAA4B,eAAe,qBAAsB,kBAAmB,yBAA0B,kBAAkB,wBAAyB,qBAAsB,uBAAwB,mBAAmB,yBAA0B,sBAAuB,8BAA+B,kBAAkB,yBAA0B,6BAA8B,iBAAiB,yBAA0B,yBAA0B,eAAe,uBAAwB,uBAAwB,kBAAkB,0BAA2B,qBAAsB,mBAAmB,2BAA4B,4BAA6B,kBAAkB,8BAA+B,2BAA4B,mBAAmB,2BAA4B,sBAAuB,WAAW,4BAA6B,iBAAkB,QAAS,WAAW,4BAA6B,iBAAkB,QAAS,WAAW,4BAA6B,iBAAkB,QAAS,WAAW,4BAA6B,iBAAkB,QAAS,WAAW,4BAA6B,iBAAkB,QAAS,WAAW,4BAA6B,iBAAkB,QAAS,WAAW,4BAA6B,iBAAkB,QAAS,WAAW,4BAA6B,iBAAkB,QAAS,WAAW,4BAA6B,iBAAkB,QAAS,cAAc,iCAAkC,qBAAsB,YAAa,eAAe,mBAAoB,oBAAqB,YAAa,eAAe,mBAAoB,oBAAqB,YAAa,iBAAiB,oBAAqB,cAAe,iBAAiB,oBAAqB,cAAe,MAAM,WAAY,YAAY,eAAgB,MAAM,YAAa,MAAM,WAAY,KAAK,kBAAmB,aAAa,kBAAmB,UAAU,gBAAiB,KAAK,gBAAiB,OAAO,gBAAiB,OAAO,gBAAiB,OAAO,gBAAiB,OAAO,gBAAiB,OAAO,gBAAiB,OAAO,gBAAiB,OAAO,gBAAiB,OAAO,gBAAiB,OAAO,gBAAiB,MAAM,YAAa,MAAM,YAAa,MAAM,YAAa,MAAM,YAAa,MAAM,aAAc,QAAQ,WAAY,QAAQ,WAAY,QAAQ,WAAY,SAAS,YAAa,aAAa,gBAAiB,SAAS,YAAa,SAAS,YAAa,SAAS,YAAa,UAAU,aAAc,cAAc,iBAAkB,UAAU,YAAa,aAAa,eAAgB,WAAW,oBAAqB,iBAAiB,sBAAuB,gBAAgB,qBAAsB,YAAY,cAAe,YAAY,iBAAkB,WAAW,gBAAiB,UAAU,eAAgB,OAAO,eAAgB,OAAO,eAAgB,OAAO,eAAgB,OAAO,eAAgB,OAAO,gBAAiB,OAAO,gBAAiB,OAAO,gBAAiB,OAAO,gBAAiB,OAAO,gBAAiB,WAAW,eAAgB,MAAM,WAAY,MAAM,WAAY,MAAM,WAAY,MAAM,WAAY,MAAM,YAAa,QAAQ,UAAW,QAAQ,UAAW,QAAQ,UAAW,QAAQ,UAAW,QAAQ,UAAW,QAAQ,UAAW,QAAQ,UAAW,QAAQ,UAAW,QAAQ,UAAW,QAAQ,UAAW,QAAQ,UAAW,QAAQ,UAAW,QAAQ,UAAW,SAAS,WAAY,WAAW,gBAAiB,gBAAgB,gBAAiB,UAAU,WAAY,oBAAoB,iBAAkB,mBAAmB,gBAAiB,mBAAmB,gBAAiB,iBAAiB,cAAe,sBAAsB,mBAAoB,qBAAqB,kBAAmB,qBAAqB,kBAAmB,mBAAmB,gBAAiB,sBAAsB,mBAAoB,qBAAqB,kBAAmB,qBAAqB,kBAAmB,mBAAmB,gBAAiB,UAAU,gBAAiB,YAAY,kBAAmB,YAAY,kBAAmB,SAAS,eAAgB,aAAa,gCAAgC,wBAAwB,aAAa,gCAAgC,wBAAwB,cAAc,iCAAiC,yBAAyB,cAAc,iCAAiC,yBAAyB,cAAc,iCAAiC,yBAAyB,cAAc,iCAAiC,yBAAyB,cAAc,iCAAiC,yBAAyB,OAAO,UAAW,OAAO,eAAgB,OAAO,cAAe,OAAO,aAAc,OAAO,aAAc,OAAO,aAAc,OAAO,aAAc,OAAO,cAAe,OAAO,eAAgB,OAAO,oBAAqB,OAAO,mBAAoB,OAAO,kBAAmB,OAAO,kBAAmB,OAAO,kBAAmB,OAAO,kBAAmB,OAAO,mBAAoB,OAAO,gBAAiB,OAAO,qBAAsB,OAAO,oBAAqB,OAAO,mBAAoB,OAAO,mBAAoB,OAAO,mBAAoB,OAAO,mBAAoB,OAAO,oBAAqB,OAAO,iBAAkB,OAAO,sBAAuB,OAAO,qBAAsB,OAAO,oBAAqB,OAAO,oBAAqB,OAAO,oBAAqB,OAAO,oBAAqB,OAAO,qBAAsB,OAAO,cAAe,OAAO,mBAAoB,OAAO,kBAAmB,OAAO,iBAAkB,OAAO,iBAAkB,OAAO,iBAAkB,OAAO,iBAAkB,OAAO,kBAAmB,OAAO,cAAe,iBAAkB,OAAO,mBAAoB,sBAAuB,OAAO,kBAAmB,qBAAsB,OAAO,iBAAkB,oBAAqB,OAAO,iBAAkB,oBAAqB,OAAO,iBAAkB,oBAAqB,OAAO,iBAAkB,oBAAqB,OAAO,kBAAmB,qBAAsB,OAAO,eAAgB,gBAAiB,OAAO,oBAAqB,qBAAsB,OAAO,mBAAoB,oBAAqB,OAAO,kBAAmB,mBAAoB,OAAO,kBAAmB,mBAAoB,OAAO,kBAAmB,mBAAoB,OAAO,kBAAmB,mBAAoB,OAAO,mBAAoB,oBAAqB,OAAO,SAAU,OAAO,cAAe,OAAO,aAAc,OAAO,YAAa,OAAO,YAAa,OAAO,YAAa,OAAO,YAAa,OAAO,aAAc,OAAO,cAAe,OAAO,mBAAoB,OAAO,kBAAmB,OAAO,iBAAkB,OAAO,iBAAkB,OAAO,iBAAkB,OAAO,iBAAkB,OAAO,kBAAmB,OAAO,eAAgB,OAAO,oBAAqB,OAAO,mBAAoB,OAAO,kBAAmB,OAAO,kBAAmB,OAAO,kBAAmB,OAAO,kBAAmB,OAAO,mBAAoB,OAAO,gBAAiB,OAAO,qBAAsB,OAAO,oBAAqB,OAAO,mBAAoB,OAAO,mBAAoB,OAAO,mBAAoB,OAAO,mBAAoB,OAAO,oBAAqB,OAAO,aAAc,OAAO,kBAAmB,OAAO,iBAAkB,OAAO,gBAAiB,OAAO,gBAAiB,OAAO,gBAAiB,OAAO,gBAAiB,OAAO,iBAAkB,OAAO,aAAc,gBAAiB,OAAO,kBAAmB,qBAAsB,OAAO,iBAAkB,oBAAqB,OAAO,gBAAiB,mBAAoB,OAAO,gBAAiB,mBAAoB,OAAO,gBAAiB,mBAAoB,OAAO,gBAAiB,mBAAoB,OAAO,iBAAkB,oBAAqB,OAAO,cAAe,eAAgB,OAAO,mBAAoB,oBAAqB,OAAO,kBAAmB,mBAAoB,OAAO,iBAAkB,kBAAmB,OAAO,iBAAkB,kBAAmB,OAAO,iBAAkB,kBAAmB,OAAO,iBAAkB,kBAAmB,OAAO,kBAAmB,mBAAoB,OAAO,eAAgB,OAAO,cAAe,OAAO,aAAc,OAAO,aAAc,OAAO,aAAc,OAAO,aAAc,OAAO,cAAe,OAAO,oBAAqB,OAAO,mBAAoB,OAAO,kBAAmB,OAAO,kBAAmB,OAAO,kBAAmB,OAAO,kBAAmB,OAAO,mBAAoB,OAAO,qBAAsB,OAAO,oBAAqB,OAAO,mBAAoB,OAAO,mBAAoB,OAAO,mBAAoB,OAAO,mBAAoB,OAAO,oBAAqB,OAAO,sBAAuB,OAAO,qBAAsB,OAAO,oBAAqB,OAAO,oBAAqB,OAAO,oBAAqB,OAAO,oBAAqB,OAAO,qBAAsB,OAAO,mBAAoB,OAAO,kBAAmB,OAAO,iBAAkB,OAAO,iBAAkB,OAAO,iBAAkB,OAAO,iBAAkB,OAAO,kBAAmB,UAAU,6BAA8B,aAAa,0BAA2B,gBAAgB,qBAAsB,MAAM,gBAAiB,MAAM,iBAAkB,MAAM,kBAAmB,MAAM,mBAAoB,OAAO,0BAA2B,OAAO,yBAA0B,OAAO,yBAA0B,OAAO,oBAAqB,qBAAqB,eAAgB,wBAAwB,eAAgB,MAAM,eAAgB,MAAM,kBAAmB,MAAM,iBAAkB,MAAM,kBAAmB,MAAM,eAAgB,MAAM,kBAAmB,MAAM,iBAAkB,WAAW,eAAgB,gBAAgB,eAAgB,kBAAkB,eAAgB,UAAU,gBAAiB,aAAc,gBAAiB,cAAc,wBAAyB,YAAY,mBAAoB,gBAAiB,uBAAwB,UAAU,iBAAkB,qBAAqB,kBAAmB,WAAW,iBAAkB,QAAQ,yBAAyB,4BAA4B,2BAA2B,2BAA2B,aAAa,mBAAoB,UAAU,mBAAoB,OAAO,gBAAiB,UAAU,wBAAyB,SAAS,sBAAuB,SAAS,mBAAoB,SAAS,sB7ByrWx/lE,C6BzrWghmE,mCAAmC,gBAAgB,SAAU,kBAAmB,sBAAsB,sBAAuB,sBAAsB,uBAAwB,qBAAqB,mBAAoB,qBAAqB,uBAAwB,qBAAqB,qBAAsB,qBAAqB,oBAAqB,qBAAqB,qBAAsB,qBAAqB,oBAAqB,qBAAqB,sBAAuB,qBAAqB,oBAAqB,qBAAqB,oBAAqB,wBAAwB,kBAAmB,MAAO,QAAS,SAAU,OAAQ,WAAY,YAAa,YAAa,SAAS,gCAAgC,WAAW,kCAAkC,aAAa,wBAAyB,uBAAuB,4BAA6B,UAAU,wBAAyB,YAAY,yBAA0B,yBAAyB,4BAA6B,aAAa,2BAA4B,WAAW,4BAA6B,sBAAuB,WAAW,kBAAmB,uBAAuB,8BAA+B,aAAa,UAAW,MAAM,mBAAoB,iBAAkB,MAAM,uBAAwB,qBAAsB,MAAM,yBAA0B,uBAAwB,MAAM,0BAA2B,wBAAyB,MAAM,wBAAyB,sBAAuB,MAAM,kBAAmB,eAAgB,OAAO,gBAAiB,OAAO,sBAAuB,OAAO,qBAAsB,OAAO,oBAAqB,OAAO,mBAAoB,UAAU,mBAAoB,WAAW,qBAAsB,cAAc,yBAA0B,0BAA2B,WAAW,6BAA8B,wBAAwB,4BAA6B,aAAa,yBAA0B,YAAY,0BAA2B,6BAA8B,aAAa,oBAAqB,aAAa,oBAAqB,YAAY,mBAAoB,WAAW,kBAAmB,OAAO,eAAgB,OAAO,qBAAsB,OAAO,oBAAqB,OAAO,mBAAoB,OAAO,kBAAmB,OAAO,kBAAmB,QAAQ,mBAAoB,QAAQ,qBAAsB,QAAQ,sBAAuB,QAAQ,oBAAqB,YAAY,oFAAsC,YAAY,oFAAsC,YAAY,4FAA0C,YAAY,wFAAwC,YAAY,wFAAwC,SAAS,MAAO,UAAU,OAAQ,WAAW,QAAS,YAAY,SAAU,SAAS,SAAU,UAAU,UAAW,WAAW,WAAY,YAAY,YAAa,SAAS,SAAU,UAAU,UAAW,WAAW,WAAY,YAAY,YAAa,UAAU,UAAW,YAAY,YAAa,aAAa,aAAc,WAAW,WAAY,UAAU,UAAW,YAAY,YAAa,aAAa,aAAc,WAAW,WAAY,kBAAkB,MAAO,QAAS,SAAU,OAAQ,MAAM,WAAY,MAAM,YAAa,MAAM,WAAY,MAAM,WAAY,MAAM,aAAc,MAAM,eAAgB,MAAM,cAAe,OAAO,qBAAsB,OAAO,qBAAsB,MAAM,cAAe,OAAO,mBAAoB,UAAU,kBAAmB,gBAAgB,wBAAyB,aAAa,qBAAsB,mBAAmB,2BAA4B,aAAa,mBAAoB,WAAY,QAAQ,oBAAqB,oBAAqB,aAAc,eAAe,2BAA4B,2BAA4B,oBAAqB,aAAa,mBAAoB,kBAAmB,cAAe,YAAa,aAAc,aAAa,mBAAoB,cAAe,UAAW,eAAe,4BAA6B,0BAA2B,sBAAuB,2BAA2B,6BAA8B,YAAY,8BAA+B,uBAAwB,mBAAoB,aAAa,mBAAoB,eAAgB,eAAe,qBAAsB,iBAAkB,qBAAqB,2BAA4B,uBAAwB,uBAAuB,4BAA6B,8BAA+B,kCAAmC,8BAA+B,oBAAoB,8BAA+B,8BAA+B,+BAAgC,2BAA4B,eAAe,wBAAyB,qBAAsB,uBAAwB,aAAa,sBAAuB,mBAAoB,qBAAsB,gBAAgB,yBAA0B,sBAAuB,mBAAoB,kBAAkB,2BAA4B,wBAAyB,qBAAsB,iBAAiB,0BAA2B,uBAAwB,oBAAqB,cAAc,0BAA2B,sBAAuB,YAAY,wBAAyB,oBAAqB,eAAe,2BAA4B,0BAA2B,kBAAmB,iBAAiB,6BAA8B,oBAAqB,gBAAgB,4BAA6B,2BAA4B,mBAAoB,iBAAiB,uBAAwB,oBAAqB,2BAA4B,eAAe,qBAAsB,kBAAmB,yBAA0B,kBAAkB,wBAAyB,qBAAsB,uBAAwB,mBAAmB,yBAA0B,sBAAuB,8BAA+B,kBAAkB,yBAA0B,6BAA8B,iBAAiB,yBAA0B,yBAA0B,eAAe,uBAAwB,uBAAwB,kBAAkB,0BAA2B,qBAAsB,mBAAmB,2BAA4B,4BAA6B,kBAAkB,8BAA+B,2BAA4B,mBAAmB,2BAA4B,sBAAuB,WAAW,4BAA6B,iBAAkB,QAAS,WAAW,4BAA6B,iBAAkB,QAAS,WAAW,4BAA6B,iBAAkB,QAAS,WAAW,4BAA6B,iBAAkB,QAAS,WAAW,4BAA6B,iBAAkB,QAAS,WAAW,4BAA6B,iBAAkB,QAAS,WAAW,4BAA6B,iBAAkB,QAAS,WAAW,4BAA6B,iBAAkB,QAAS,WAAW,4BAA6B,iBAAkB,QAAS,cAAc,iCAAkC,qBAAsB,YAAa,eAAe,mBAAoB,oBAAqB,YAAa,eAAe,mBAAoB,oBAAqB,YAAa,iBAAiB,oBAAqB,cAAe,iBAAiB,oBAAqB,cAAe,MAAM,WAAY,YAAY,eAAgB,MAAM,YAAa,MAAM,WAAY,KAAK,kBAAmB,aAAa,kBAAmB,UAAU,gBAAiB,KAAK,gBAAiB,OAAO,gBAAiB,OAAO,gBAAiB,OAAO,gBAAiB,OAAO,gBAAiB,OAAO,gBAAiB,OAAO,gBAAiB,OAAO,gBAAiB,OAAO,gBAAiB,OAAO,gBAAiB,MAAM,YAAa,MAAM,YAAa,MAAM,YAAa,MAAM,YAAa,MAAM,aAAc,QAAQ,WAAY,QAAQ,WAAY,QAAQ,WAAY,SAAS,YAAa,aAAa,gBAAiB,SAAS,YAAa,SAAS,YAAa,SAAS,YAAa,UAAU,aAAc,cAAc,iBAAkB,UAAU,YAAa,aAAa,eAAgB,WAAW,oBAAqB,iBAAiB,sBAAuB,gBAAgB,qBAAsB,YAAY,cAAe,YAAY,iBAAkB,WAAW,gBAAiB,UAAU,eAAgB,OAAO,eAAgB,OAAO,eAAgB,OAAO,eAAgB,OAAO,eAAgB,OAAO,gBAAiB,OAAO,gBAAiB,OAAO,gBAAiB,OAAO,gBAAiB,OAAO,gBAAiB,WAAW,eAAgB,MAAM,WAAY,MAAM,WAAY,MAAM,WAAY,MAAM,WAAY,MAAM,YAAa,QAAQ,UAAW,QAAQ,UAAW,QAAQ,UAAW,QAAQ,UAAW,QAAQ,UAAW,QAAQ,UAAW,QAAQ,UAAW,QAAQ,UAAW,QAAQ,UAAW,QAAQ,UAAW,QAAQ,UAAW,QAAQ,UAAW,QAAQ,UAAW,SAAS,WAAY,WAAW,gBAAiB,gBAAgB,gBAAiB,UAAU,WAAY,oBAAoB,iBAAkB,mBAAmB,gBAAiB,mBAAmB,gBAAiB,iBAAiB,cAAe,sBAAsB,mBAAoB,qBAAqB,kBAAmB,qBAAqB,kBAAmB,mBAAmB,gBAAiB,sBAAsB,mBAAoB,qBAAqB,kBAAmB,qBAAqB,kBAAmB,mBAAmB,gBAAiB,UAAU,gBAAiB,YAAY,kBAAmB,YAAY,kBAAmB,SAAS,eAAgB,aAAa,gCAAgC,wBAAwB,aAAa,gCAAgC,wBAAwB,cAAc,iCAAiC,yBAAyB,cAAc,iCAAiC,yBAAyB,cAAc,iCAAiC,yBAAyB,cAAc,iCAAiC,yBAAyB,cAAc,iCAAiC,yBAAyB,OAAO,UAAW,OAAO,eAAgB,OAAO,cAAe,OAAO,aAAc,OAAO,aAAc,OAAO,aAAc,OAAO,aAAc,OAAO,cAAe,OAAO,eAAgB,OAAO,oBAAqB,OAAO,mBAAoB,OAAO,kBAAmB,OAAO,kBAAmB,OAAO,kBAAmB,OAAO,kBAAmB,OAAO,mBAAoB,OAAO,gBAAiB,OAAO,qBAAsB,OAAO,oBAAqB,OAAO,mBAAoB,OAAO,mBAAoB,OAAO,mBAAoB,OAAO,mBAAoB,OAAO,oBAAqB,OAAO,iBAAkB,OAAO,sBAAuB,OAAO,qBAAsB,OAAO,oBAAqB,OAAO,oBAAqB,OAAO,oBAAqB,OAAO,oBAAqB,OAAO,qBAAsB,OAAO,cAAe,OAAO,mBAAoB,OAAO,kBAAmB,OAAO,iBAAkB,OAAO,iBAAkB,OAAO,iBAAkB,OAAO,iBAAkB,OAAO,kBAAmB,OAAO,cAAe,iBAAkB,OAAO,mBAAoB,sBAAuB,OAAO,kBAAmB,qBAAsB,OAAO,iBAAkB,oBAAqB,OAAO,iBAAkB,oBAAqB,OAAO,iBAAkB,oBAAqB,OAAO,iBAAkB,oBAAqB,OAAO,kBAAmB,qBAAsB,OAAO,eAAgB,gBAAiB,OAAO,oBAAqB,qBAAsB,OAAO,mBAAoB,oBAAqB,OAAO,kBAAmB,mBAAoB,OAAO,kBAAmB,mBAAoB,OAAO,kBAAmB,mBAAoB,OAAO,kBAAmB,mBAAoB,OAAO,mBAAoB,oBAAqB,OAAO,SAAU,OAAO,cAAe,OAAO,aAAc,OAAO,YAAa,OAAO,YAAa,OAAO,YAAa,OAAO,YAAa,OAAO,aAAc,OAAO,cAAe,OAAO,mBAAoB,OAAO,kBAAmB,OAAO,iBAAkB,OAAO,iBAAkB,OAAO,iBAAkB,OAAO,iBAAkB,OAAO,kBAAmB,OAAO,eAAgB,OAAO,oBAAqB,OAAO,mBAAoB,OAAO,kBAAmB,OAAO,kBAAmB,OAAO,kBAAmB,OAAO,kBAAmB,OAAO,mBAAoB,OAAO,gBAAiB,OAAO,qBAAsB,OAAO,oBAAqB,OAAO,mBAAoB,OAAO,mBAAoB,OAAO,mBAAoB,OAAO,mBAAoB,OAAO,oBAAqB,OAAO,aAAc,OAAO,kBAAmB,OAAO,iBAAkB,OAAO,gBAAiB,OAAO,gBAAiB,OAAO,gBAAiB,OAAO,gBAAiB,OAAO,iBAAkB,OAAO,aAAc,gBAAiB,OAAO,kBAAmB,qBAAsB,OAAO,iBAAkB,oBAAqB,OAAO,gBAAiB,mBAAoB,OAAO,gBAAiB,mBAAoB,OAAO,gBAAiB,mBAAoB,OAAO,gBAAiB,mBAAoB,OAAO,iBAAkB,oBAAqB,OAAO,cAAe,eAAgB,OAAO,mBAAoB,oBAAqB,OAAO,kBAAmB,mBAAoB,OAAO,iBAAkB,kBAAmB,OAAO,iBAAkB,kBAAmB,OAAO,iBAAkB,kBAAmB,OAAO,iBAAkB,kBAAmB,OAAO,kBAAmB,mBAAoB,OAAO,eAAgB,OAAO,cAAe,OAAO,aAAc,OAAO,aAAc,OAAO,aAAc,OAAO,aAAc,OAAO,cAAe,OAAO,oBAAqB,OAAO,mBAAoB,OAAO,kBAAmB,OAAO,kBAAmB,OAAO,kBAAmB,OAAO,kBAAmB,OAAO,mBAAoB,OAAO,qBAAsB,OAAO,oBAAqB,OAAO,mBAAoB,OAAO,mBAAoB,OAAO,mBAAoB,OAAO,mBAAoB,OAAO,oBAAqB,OAAO,sBAAuB,OAAO,qBAAsB,OAAO,oBAAqB,OAAO,oBAAqB,OAAO,oBAAqB,OAAO,oBAAqB,OAAO,qBAAsB,OAAO,mBAAoB,OAAO,kBAAmB,OAAO,iBAAkB,OAAO,iBAAkB,OAAO,iBAAkB,OAAO,iBAAkB,OAAO,kBAAmB,UAAU,6BAA8B,aAAa,0BAA2B,gBAAgB,qBAAsB,MAAM,gBAAiB,MAAM,iBAAkB,MAAM,kBAAmB,MAAM,mBAAoB,OAAO,0BAA2B,OAAO,yBAA0B,OAAO,yBAA0B,OAAO,oBAAqB,qBAAqB,eAAgB,wBAAwB,eAAgB,MAAM,eAAgB,MAAM,kBAAmB,MAAM,iBAAkB,MAAM,kBAAmB,MAAM,eAAgB,MAAM,kBAAmB,MAAM,iBAAkB,WAAW,eAAgB,gBAAgB,eAAgB,kBAAkB,eAAgB,UAAU,gBAAiB,aAAc,gBAAiB,cAAc,wBAAyB,YAAY,mBAAoB,gBAAiB,uBAAwB,UAAU,iBAAkB,qBAAqB,kBAAmB,WAAW,iBAAkB,QAAQ,yBAAyB,4BAA4B,2BAA2B,2BAA2B,aAAa,mBAAoB,UAAU,mBAAoB,OAAO,gBAAiB,UAAU,wBAAyB,SAAS,sBAAuB,SAAS,mBAAoB,SAAS,sB7B+/ZhskF,C8BhgaH,cAAc,sBAAuB,gBAAiB,YAAa,YAAa,aAAc,gBAAiB,uBAAuB,yBAA0B,uBAAwB,0BAA2B,cAAe,WAAY,YAAa,qBAAsB,mBAAoB,cAAe,iBAAkB,kBAAmB,sBAAuB,eAAgB,yBAAyB,gBAAiB,cAAe,qBAAsB,eAAgB,oBAAoB,WAAY,mBAAoB,sBAAuB,eAAgB,6BAA8B,YAAa,eAAgB,WAAY,UAAW,kBAAkB,cAAe,WAAY,YAAY,WAAY,WAAY,SAAU,WAAW,6BAA6B,wBCA/wB,gBACI,WACA,yBACA,4BACA,yBACA,mCAGJ,sCAEI,+BACA,uBAGJ,wEAEI,kBAGJ,oDAEI,mBAGyC,mDACzC,gBACA,gBACA,mBAGJ,oDACI,WACA,qBAGmB,6CACnB,iBAGJ,mDACI,gBACA,mBACA,gBAGyC,mDACzC,iBACA,qBACA,WAGJ,2CACI,kBACA,mBAGJ,+CACI,SACA,mBACA,iBAGJ,6DACI,aACA,mBAGJ,iDACI,kBACA,QACA,SACA,YACA,mBACA,iBACA,kBACA,cAGqB,0OAMrB,mBAGJ,sEAEI,aAGJ,+LAKI,eACA,kBAGJ,+bAUI,kBACA,YACA,cACA,WAGJ,kOAKI,WACA,gBACA,QAGJ,6NAKI,WACA,gBACA,QAGJ,oFAEI,UAGkB,sGAElB,UAGsB,0CACtB,0BAGsB,gCACtB,gBACA,uBACA,0BAGJ,wKAGI,aAGJ,gHAEI,gBAGsB,gCACtB,uBACA,gBAGJ,oCACI,oLAII,kB/BgkaL,C+B5jaH,4CACI,mBAGJ,sJAGI,QACA,UAG2B,oEAE3B,oBAGJ,0FAII,qBAQJ,+HACI,sBAGwC,oDACxC,SAGJ,iFACI,eAGJ,gFACI,gB/BgkaH;;AgC/xaD;;;GCGA,WACE,wBACA,kCACA,sPAMA,gBACA,kBCVF,IACE,qBACA,6CACA,kBACA,oBACA,mCACA,kCCLF,OACE,uBACA,kBACA,oBAEF,OAAwB,cACxB,OAAwB,cACxB,OAAwB,cACxB,OAAwB,cCVxB,OACE,mBACA,kBCDF,OACE,eACA,yBACA,qBACE,UAAK,kBAET,OACE,kBACA,mBACA,mBACA,gBACA,kBACA,aACE,mBCbJ,WACE,yBACA,wBACA,mBAGF,cAA+B,WAC/B,eAAgC,YAG9B,iBAAgC,kBADlC,kBAEmC,iBAInC,YAAc,YACd,WAAa,WAGX,cAAc,kBACd,eAAe,iBCpBjB,SACE,6CACQ,qCAGV,UACE,+CACQ,uCAGV,2BACE,GACE,+BACQ,uBAEV,GACE,iCACQ,yBvCo5aT,CuCh5aH,mBACE,GACE,+BACQ,uBAEV,GACE,iCACQ,yBvCq5aT,CwCj7aH,cCWE,sEACA,gCAEQ,wBDbV,eCUE,sEACA,iCAEQ,yBDZV,eCSE,sEACA,iCAEQ,yBDVV,oBCcE,gFACA,6BAEQ,qBDhBV,kBCaE,gFACA,6BAEQ,qBDXV,gHAKE,gCEfF,UACE,kBACA,qBACA,UACA,WACA,gBACA,sBAEF,0BACE,kBACA,OACA,WACA,kBAEF,aAA8B,oBAC9B,aAA8B,cAC9B,YAA6B,WChB7B,iBAAkC,gBAClC,iBAAkC,gBAClC,kBAAmC,gBACnC,sBAAuC,gBACvC,iBAAkC,gBAClC,gBAAiC,gBACjC,kBAAmC,gBACnC,gBAAiC,gBACjC,gBAAiC,gBACjC,oBAAqC,gBACrC,cAA+B,gBAC/B,mBAAoC,gBACpC,iBAAkC,gBAClC,oDAEkC,gBAClC,uBAAwC,gBACxC,wBAAyC,gBACzC,qBAAsC,gBACtC,kBAAmC,gBACnC,+BACgC,gBAChC,mBAAoC,gBACpC,gBAAiC,gBACjC,kBAAmC,gBACnC,mBAAoC,gBACpC,gBAAiC,gBACjC,oBAAqC,gBACrC,+BAAgD,gBAChD,6BAA8C,gBAC9C,iBAAkC,gBAClC,yBAA0C,gBAC1C,0CACmC,gBACnC,mBAAoC,gBACpC,oBAAqC,gBACrC,gBAAiC,gBACjC,gBAAiC,gBACjC,sBAAuC,gBACvC,sBAAuC,gBACvC,uBAAwC,gBACxC,qBAAsC,gBACtC,kBAAmC,gBACnC,mBAAoC,gBACpC,eAAgC,gBAChC,gBAAiC,gBACjC,gBAAiC,gBACjC,oBAAqC,gBACrC,iBAAkC,gBAClC,kBAAmC,gBACnC,gBAAiC,gBACjC,gBAAiC,gBACjC,kBAAmC,gBACnC,uBAAwC,gBACxC,sBAAuC,gBACvC,sBAAuC,gBACvC,wBAAyC,gBACzC,uBAAwC,gBACxC,yBAA0C,gBAC1C,gBAAiC,gBACjC,qCACoC,gBACpC,kBAAmC,gBACnC,wBAAyC,gBACzC,uDAEsC,gBACtC,kBAAmC,gBACnC,sBAAuC,gBACvC,kBAAmC,gBACnC,gBAAiC,gBACjC,2CAC4C,gBAC5C,0BAA2C,gBAC3C,0BAA2C,gBAC3C,kBAAmC,gBACnC,yBAA0C,gBAC1C,yBAA0C,gBAC1C,oBAAqC,gBACrC,gBAAiC,gBACjC,iBAAkC,gBAClC,gBAAiC,gBACjC,mBAAoC,gBACpC,wBAAyC,gBACzC,wBAAyC,gBACzC,iBAAkC,gBAClC,wBAAyC,gBACzC,yBAA0C,gBAC1C,uBAAwC,gBACxC,wBAAyC,gBACzC,wBAAyC,gBACzC,wBAAyC,gBACzC,2BAA4C,gBAC5C,uBAAwC,gBACxC,sBAAuC,gBACvC,0BAA2C,gBAC3C,0BAA2C,gBAC3C,eAAgC,gBAChC,sBAAuC,gBACvC,uBAAwC,gBACxC,oBAAqC,gBACrC,sBAAuC,gBACvC,yCACkC,gBAClC,kBAAmC,gBACnC,oBAAqC,gBACrC,gBAAiC,gBACjC,iBAAkC,gBAClC,oBAAqC,gBACrC,8BAA+C,gBAC/C,gBAAiC,gBACjC,gBAAiC,gBACjC,gBAAiC,gBACjC,eAAgC,gBAChC,qBAAsC,gBACtC,mDACiD,gBACjD,iBAAkC,gBAClC,oBAAqC,gBACrC,kBAAmC,gBACnC,mBAAoC,gBACpC,kBAAmC,gBACnC,sBAAuC,gBACvC,wBAAyC,gBACzC,mBAAoC,gBACpC,yBAA0C,gBAC1C,kBAAmC,gBACnC,uBAAwC,gBACxC,oBAAqC,gBACrC,oBAAqC,gBACrC,4CACsC,gBACtC,0BAA2C,gBAC3C,2BAA4C,gBAC5C,wBAAyC,gBACzC,eAAgC,gBAChC,iCACiC,gBACjC,oBAAqC,gBACrC,uBAAwC,gBACxC,yBAA0C,gBAC1C,qBAAsC,gBACtC,mBAAoC,gBACpC,oBAAqC,gBACrC,2BAA4C,gBAC5C,sBAAuC,gBACvC,yBAA0C,gBAC1C,mBAAoC,gBACpC,kBAAmC,gBACnC,yBAA0C,gBAC1C,kBAAmC,gBACnC,mBAAoC,gBACpC,iBAAkC,gBAClC,oBAAqC,gBACrC,sBAAuC,gBACvC,wBAAyC,gBACzC,mBAAoC,gBACpC,0CACqC,gBACrC,kBAAmC,gBACnC,kBAAmC,gBACnC,uBAAwC,gBACxC,+BACgC,gBAChC,iBAAkC,gBAClC,oBAAqC,gBACrC,gBAAiC,gBACjC,uBAAwC,gBACxC,wBAAyC,gBACzC,uBAAwC,gBACxC,qBAAsC,gBACtC,uBAAwC,gBACxC,6BAA8C,gBAC9C,8BAA+C,gBAC/C,2BAA4C,gBAC5C,6BAA8C,gBAC9C,iBAAkC,gBAClC,kBAAmC,gBACnC,iBAAkC,gBAClC,kBAAmC,gBACnC,qBAAsC,gBACtC,sBAAuC,gBACvC,kCACkC,gBAClC,iCACiC,gBACjC,iBAAkC,gBAClC,iBAAkC,gBAClC,mCACqC,gBACrC,mCACoC,gBACpC,qBAAsC,gBACtC,oCACqC,gBACrC,kBAAmC,gBACnC,sDAEiC,gBACjC,mBAAoC,gBACpC,mBAAoC,gBACpC,yBAA0C,gBAC1C,qBAAsC,gBACtC,iBAAkC,gBAClC,iBAAkC,gBAClC,iBAAkC,gBAClC,qBAAsC,gBACtC,4BAA6C,gBAC7C,8BAA+C,gBAC/C,uBAAwC,gBACxC,iBAAkC,gBAClC,sBAAuC,gBACvC,oBAAqC,gBACrC,sBAAuC,gBACvC,uBAAwC,gBACxC,mBAAoC,gBACpC,oCACiC,gBACjC,0CACsC,gBACtC,uCACqC,gBACrC,oBAAqC,gBACrC,oBAAqC,gBACrC,uCACiC,gBACjC,kCACkC,gBAClC,2CACuC,gBACvC,qBAAsC,gBACtC,sBAAuC,gBACvC,iCACiC,gBACjC,mBAAoC,gBACpC,oBAAqC,gBACrC,sCACsC,gBACtC,uBAAwC,gBACxC,oBAAqC,gBACrC,0BAA2C,gBAC3C,wBAAyC,gBACzC,mBAAoC,gBACpC,uBAAwC,gBACxC,oBAAqC,gBACrC,kBAAmC,gBACnC,kBAAmC,gBACnC,mBAAoC,gBACpC,uBAAwC,gBACxC,sBAAuC,gBACvC,sBAAuC,gBACvC,qBAAsC,gBACtC,kBAAmC,gBACnC,uBAAwC,gBACxC,gBAAiC,gBACjC,oBAAqC,gBACrC,uBAAwC,gBACxC,6BAA8C,gBAC9C,8BAA+C,gBAC/C,2BAA4C,gBAC5C,6BAA8C,gBAC9C,sBAAuC,gBACvC,uBAAwC,gBACxC,oBAAqC,gBACrC,sBAAuC,gBACvC,mBAAoC,gBACpC,kBAAmC,gBACnC,kBAAmC,gBACnC,0CACmC,gBACnC,oBAAqC,gBACrC,sBAAuC,gBACvC,uBAAwC,gBACxC,mBAAoC,gBACpC,kBAAmC,gBACnC,uCACkC,gBAClC,sBAAuC,gBACvC,oBAAqC,gBACrC,yBAA0C,gBAC1C,mBAAoC,gBACpC,mBAAoC,gBACpC,iBAAkC,gBAClC,mBAAoC,gBACpC,sBAAuC,gBACvC,kBAAmC,gBACnC,0BAA2C,gBAC3C,oBAAqC,gBACrC,gBAAiC,gBACjC,+CACsC,gBACtC,4EAEwC,gBACxC,0BAA2C,gBAC3C,gBAAiC,gBACjC,qBAAsC,gBACtC,0CACyC,gBACzC,oBAAqC,gBACrC,gBAAiC,gBACjC,uBAAwC,gBACxC,uBAAwC,gBACxC,qBAAsC,gBACtC,kBAAmC,gBACnC,wBAAyC,gBACzC,sBAAuC,gBACvC,4BAA6C,gBAC7C,kBAAmC,gBACnC,sBAAuC,gBACvC,6BAA8C,gBAC9C,kBAAmC,gBACnC,kBAAmC,gBACnC,+BAAgD,gBAChD,gCAAiD,gBACjD,6BAA8C,gBAC9C,+BAAgD,gBAChD,iBAAkC,gBAClC,gBAAiC,gBACjC,kBAAmC,gBACnC,sBAAuC,gBACvC,oBAAqC,gBACrC,sBAAuC,gBACvC,sBAAuC,gBACvC,sBAAuC,gBACvC,uBAAwC,gBACxC,kBAAmC,gBACnC,wBAAyC,gBACzC,0BAA2C,gBAC3C,oBAAqC,gBACrC,sBAAuC,gBACvC,wBAAyC,gBACzC,yBAA0C,gBAC1C,gCAAiD,gBACjD,wBAAyC,gBACzC,mBAAoC,gBACpC,sDACgD,gBAChD,kDAC8C,gBAC9C,wDACiD,gBACjD,+BACgC,gBAChC,eAAgC,gBAChC,iCACgC,gBAChC,gCACgC,gBAChC,4DAGgC,gBAChC,kDAEgC,gBAChC,8BACgC,gBAChC,kCACgC,gBAChC,gBAAiC,gBACjC,qBAAsC,gBACtC,0BAA2C,gBAC3C,2BAA4C,gBAC5C,2BAA4C,gBAC5C,4BAA6C,gBAC7C,4BAA6C,gBAC7C,6BAA8C,gBAC9C,qBAAsC,gBACtC,uBAAwC,gBACxC,0BAA2C,gBAC3C,mBAAoC,gBACpC,gBAAiC,gBACjC,uBAAwC,gBACxC,wBAAyC,gBACzC,mBAAoC,gBACpC,0BAA2C,gBAC3C,qBAAsC,gBACtC,kBAAmC,gBACnC,eAAgC,gBAChC,qBAAsC,gBACtC,4BAA6C,gBAC7C,kBAAmC,gBACnC,yBAA0C,gBAC1C,2BAA4C,gBAC5C,yBAA0C,gBAC1C,2BAA4C,gBAC5C,4BAA6C,gBAC7C,iBAAkC,gBAClC,mBAAoC,gBACpC,mBAAoC,gBACpC,iBAAkC,gBAClC,oBAAqC,gBACrC,iBAAkC,gBAClC,sBAAuC,gBACvC,kBAAmC,gBACnC,kBAAmC,gBACnC,gBAAiC,gBACjC,sCACqC,gBACrC,iBAAkC,gBAClC,kBAAmC,gBACnC,mBAAoC,gBACpC,eAAgC,gBAChC,cAA+B,gBAC/B,iBAAkC,gBAClC,kBAAmC,gBACnC,qBAAsC,gBACtC,0BAA2C,gBAC3C,gCAAiD,gBACjD,+BAAgD,gBAChD,sDACgD,gBAChD,wBAAyC,gBACzC,sBAAuC,gBACvC,wBAAyC,gBACzC,uCACgC,gBAChC,yBAA0C,gBAC1C,yBAA0C,gBAC1C,iBAAkC,gBAClC,2BAA4C,gBAC5C,qBAAsC,gBACtC,kBAAmC,gBACnC,6DAEuC,gBACvC,kDAC2C,gBAC3C,iBAAkC,gBAClC,kBAAmC,gBACnC,kBAAmC,gBACnC,yBAA0C,gBAC1C,8BAA+C,gBAC/C,uBAAwC,gBACxC,qBAAsC,gBACtC,gBAAiC,gBACjC,yBAA0C,gBAC1C,0BAA2C,gBAC3C,kBAAmC,gBACnC,kBAAmC,gBACnC,oBAAqC,gBACrC,eAAgC,gBAChC,oBAAqC,gBACrC,iBAAkC,gBAClC,eAAgC,gBAChC,iBAAkC,gBAClC,gBAAiC,gBACjC,iBAAkC,gBAClC,mBAAoC,gBACpC,0BAA2C,gBAC3C,iBAAkC,gBAClC,wBAAyC,gBACzC,mBAAoC,gBACpC,qCACgC,gBAChC,+BACiC,gBACjC,gBAAiC,gBACjC,mBAAoC,gBACpC,sBAAuC,gBACvC,sBAAuC,gBACvC,oBAAqC,gBACrC,sBAAuC,gBACvC,uBAAwC,gBACxC,wBAAyC,gBACzC,6BAA8C,gBAC9C,0EAEyC,gBACzC,gDAC2C,gBAC3C,gDACyC,gBACzC,gDACyC,gBACzC,uBAAwC,gBACxC,gBAAiC,gBACjC,mBAAoC,gBACpC,oBAAqC,gBACrC,wGAIsC,gBACtC,0BAA2C,gBAC3C,qDAEkC,gBAClC,gCACmC,gBACnC,sBAAuC,gBACvC,eAAgC,gBAChC,2EAEwC,gBACxC,yBAA0C,gBAC1C,cAA+B,gBAC/B,oCACmC,gBACnC,uCACwC,gBACxC,2CAC0C,gBAC1C,mBAAoC,gBACpC,uBAAwC,gBACxC,kBAAmC,gBACnC,qBAAsC,gBACtC,mBAAoC,gBACpC,qBAAsC,gBACtC,4BAA6C,gBAC7C,gBAAiC,gBACjC,6CACqC,gBACrC,eAAgC,gBAChC,sBAAuC,gBACvC,gBAAiC,gBACjC,sBAAuC,gBACvC,kBAAmC,gBACnC,gBAAiC,gBACjC,uBAAwC,gBACxC,gBAAiC,gBACjC,sBAAuC,gBACvC,kBAAmC,gBACnC,yBAA0C,gBAC1C,mBAAoC,gBACpC,yBAA0C,gBAC1C,uBAAwC,gBACxC,mBAAoC,gBACpC,qBAAsC,gBACtC,qBAAsC,gBACtC,sBAAuC,gBACvC,wBAAyC,gBACzC,iBAAkC,gBAClC,qBAAsC,gBACtC,cAA+B,gBAC/B,sBAAuC,gBACvC,uBAAwC,gBACxC,yBAA0C,gBAC1C,sBAAuC,gBACvC,qBAAsC,gBACtC,sBAAuC,gBACvC,kBAAmC,gBACnC,yBAA0C,gBAC1C,sBAAuC,gBACvC,qBAAsC,gBACtC,mBAAoC,gBACpC,eAAgC,gBAChC,mBAAoC,gBACpC,qBAAsC,gBACtC,cAA+B,gBAC/B,mDAEgC,gBAChC,oBAAqC,gBACrC,sBAAuC,gBACvC,0BAA2C,gBAC3C,oBAAqC,gBACrC,oBAAqC,gBACrC,mBAAoC,gBACpC,kBAAmC,gBACnC,wBAAyC,gBACzC,uBAAwC,gBACxC,oBAAqC,gBACrC,qBAAsC,gBACtC,2BAA4C,gBAC5C,mBAAoC,gBACpC,gBAAiC,gBACjC,uBAAwC,gBACxC,sBAAuC,gBACvC,uBAAwC,gBACxC,qBAAsC,gBACtC,iBAAkC,gBAClC,gBAAiC,gBACjC,mBAAoC,gBACpC,2CACwC,gBACxC,2BAA4C,gBAC5C,wBAAyC,gBACzC,uBAAwC,gBACxC,sBAAuC,gBACvC,uBAAwC,gBACxC,yBAA0C,gBAC1C,yBAA0C,gBAC1C,kBAAmC,gBACnC,sBAAuC,gBACvC,6BAA8C,gBAC9C,uBAAwC,gBACxC,oBAAqC,gBACrC,kBAAmC,gBACnC,qBAAsC,gBACtC,sBAAuC,gBACvC,gCACgC,gBAChC,mBAAoC,gBACpC,iBAAkC,gBAClC,kBAAmC,gBACnC,kBAAmC,gBACnC,sCACyC,gBACzC,yBAA0C,gBAC1C,oBAAqC,gBACrC,wBAAyC,gBACzC,gEAEyC,gBACzC,uDACmD,gBACnD,6CACyC,gBACzC,gDAC4C,gBAC5C,8CAC0C,gBAC1C,yBAA0C,gBAC1C,oBAAqC,gBACrC,wBAAyC,gBACzC,0BAA2C,gBAC3C,uBAAwC,gBACxC,yBAA0C,gBAC1C,kBAAmC,gBACnC,0BAA2C,gBAC3C,iBAAkC,gBAClC,yBAA0C,gBAC1C,uBAAwC,gBACxC,kDAC4C,gBAC5C,iDAC2C,gBAC3C,gDAC0C,gBAC1C,qBAAsC,gBACtC,8CACwC,gBACxC,+CACyC,gBACzC,2BAA4C,gBAC5C,yBAA0C,gBAC1C,wBAAyC,gBACzC,0BAA2C,gBAC3C,wBAAyC,gBACzC,qBAAsC,gBACtC,sBAAuC,gBACvC,4BAA6C,gBAC7C,cAA+B,gBAC/B,qBAAsC,gBACtC,uBAAwC,gBACxC,yBAA0C,gBAC1C,gCAAiD,gBACjD,sBAAuC,gBACvC,uBAAwC,gBACxC,kBAAmC,gBACnC,kBAAmC,gBACnC,mBAAoC,gBACpC,iBAAkC,gBAClC,6BAA8C,gBAC9C,oCACuC,gBACvC,kBAAmC,gBACnC,iBAAkC,gBAClC,kBAAmC,gBACnC,2BAA4C,gBAC5C,4BAA6C,gBAC7C,4BAA6C,gBAC7C,4BAA6C,gBAC7C,oBAAqC,gBACrC,mBAAoC,gBACpC,qBAAsC,gBACtC,iBAAkC,gBAClC,eAAgC,gBAChC,sBAAuC,gBACvC,wBAAyC,gBACzC,iBAAkC,gBAClC,iBAAkC,gBAClC,qBAAsC,gBACtC,qBAAsC,gBACtC,wBAAyC,gBACzC,gBAAiC,gBACjC,2BAA4C,gBAC5C,oBAAqC,gBACrC,gBAAiC,gBACjC,wBAAyC,gBACzC,eAAgC,gBAChC,wBAAyC,gBACzC,oBAAqC,gBACrC,kBAAmC,gBACnC,wBAAyC,gBACzC,0BAA2C,gBAC3C,uBAAwC,gBACxC,yBAA0C,gBAC1C,wBAAyC,gBACzC,2BAA4C,gBAC5C,mBAAoC,gBACpC,qBAAsC,gBACtC,uBAAwC,gBACxC,mBAAoC,gBACpC,kBAAmC,gBACnC,sBAAuC,gBACvC,mBAAoC,gBACpC,kBAAmC,gBACnC,4BAA6C,gBAC7C,0BAA2C,gBAC3C,6BAA8C,gBAC9C,iBAAkC,gBAClC,6BAA8C,gBAC9C,gCAAiD,gBACjD,mBAAoC,gBACpC,uCAAwD,gBACxD,2EACgE,gBAChE,+DAEiC,gBACjC,iBAAkC,gBAClC,mBAAoC,gBACpC,4CAC0C,gBAC1C,sBAAuC,gBACvC,kBAAmC,gBACnC,yBAA0C,gBAC1C,oBAAqC,gBACrC,0BAA2C,gBAC3C,2BAA4C,gBAC5C,sBAAuC,gBACvC,uBAAwC,gBACxC,iBAAkC,gBAClC,qBAAsC,gBACtC,8DACiD,gBACjD,sCACyC,gBACzC,uBAAwC,gBACxC,yBAA0C,gBAC1C,2BAA4C,gBAC5C,kBAAmC,gBACnC,wBAAyC,gBACzC,0BAA2C,gBAC3C,yCACyC,gBACzC,6CAC2C,gBAC3C,uBAAwC,gBACxC,yBAA0C,gBAC1C,kBAAmC,gBACnC,oBAAqC,gBACrC,8CACoC,gBACpC,kDACsC,gBACtC,iBAAkC,gBAClC,0BAA2C,gBAC3C,oBAAqC,gBACrC,4EAE6C,gBAC7C,+DACuD,gBACvD,qDAC6C,gBAC7C,wDACgD,gBAChD,sDAC8C,gBAC9C,kBAAmC,gBACnC,kDAEiC,gBACjC,mBAAoC,gBACpC,2BAA4C,gBAC5C,2BAA4C,gBAC5C,0BAA2C,gBAC3C,mDACyC,gBACzC,uDAC2C,gBAC3C,oBAAqC,gBACrC,gBAAiC,gBACjC,gBAAiC,gBACjC,gBAAiC,gBACjC,mBAAoC,gBACpC,mBAAoC,gBACpC,qBAAsC,gBACtC,uBAAwC,gBACxC,uBAAwC,gBACxC,sBAAuC,gBACvC,kBAAmC,gBCjxBnC,SH8BE,kBACA,UACA,WACA,UACA,YACA,gBACA,mBACA,SGpCF,mDHgDI,gBACA,WACA,YACA,SACA,iBACA,UIzDJ,KAOE,WAKA,sBACA,qIACA,yBACA,kBAEA,kBAGA,WACE,sBACA,+HACA,kBACA,WACA,qBAIJ,aACE,yBACA,2IACA,qBAEA,qCALF,mBAQI,yBACA,2IACA,qBACA,WAIJ,YACE,WADF,kBAII,yBACA,2IACA,qBACA,WAIJ,SACE,kBACA,QACA,yBACA,kBACA,WACA,iBC7DF,OACE,yBAEA,iBACE,kBACA,SAIJ,MACE,iBADF,cAKM,6BACA,WAKN,eACE,UACA,cAGF,oBACE,kBAEA,yBACE,cACA,eACA,UACA,kBACA,SARJ,0BAYI,SACA,WACA,kBAIJ,YACE,gBACA,iBAGF,iBACE,eACA,kBAFF,4BAKI,eAIJ,sBACE,WACA,gBACA,iBACA,qBAEA,4BACE,yBACA,kBACA,WACA,iBACA,qBAIJ,qBACE,mBACA,qBACA,WAHF,gDAMI,yBANJ,4CAMI,yBANJ,kCAMI,yBAEF,2CACE,yBATJ,2BAaI,gBACA,cAIJ,uBACE,kBACA,WACA,WAGF,sBACE,kBACA,gBACA,oFACA,6BAJF,wBAOI,cACA,qBACA,sBACA,uBAEA,6BACE,kBACA,WACA,YACA,MACA,OAEA,UAIJ,8BACE,mBACA,cAzBJ,8BA6BI,kBACA,qBACA,YACA,YACA,WAjCJ,uCAqCI,kBACA,gBACA,eACA,WAxCJ,iCA4CI,sBAIJ,4BACE,mBAGF,yBACE,oBAEI,yBACA,yBACA,mBAJJ,uBAOM,gCACA,gBACA,cATN,yBAYQ,qBANJ,kCAUI,gBAVJ,2BAcI,SAEA,6BACE,WAOV,eACE,UACA,cAFF,kBAKI,mB9Cg1gBH,C+CxghBH,yBAEI,6BAFJ,2BAMI,gBANJ,mCAWM,mBACA,aACA,kBACA,WAGF,yBACE,kBACA,kBACA,kBApBN,yCAuBQ,WACA,YACA,OACA,kBAGF,kDACE,YA9BR,8CAoCI,sBACA,kBArCJ,2BA0CI,kBACA,YA3CJ,6BA+CM,kBACA,WAIJ,+BACE,6BACA,aAFF,qCAKI,yBALJ,uCASI,yBACA,kBACA,aA/DN,gDAkEQ,eACA,kBACA,WApER,oEAwEY,gBACA,wBACA,gBAIJ,+DACE,0BA/EV,sEAkFY,gBACA,wBACA,iBACA,WArFZ,qEAyFY,yBACA,WAZJ,+EAiBM,WAOV,uCACE,yBACA,kBACA,WACA,qBACA,eACA,YACA,iBACA,iBACA,iBACA,sBACA,WAjHN,kDAoHQ,eACA,kBAIJ,mCACE,kBACA,iBA3HN,iCA+HM,WACA,qBAhIN,uCAmIQ,6BACA,WApIR,6DAyIM,WACA,YACA,eACA,kBACA,kBACA,iBACA,SAKN,oBACE,gBACA,kBAEA,uBACE,gBACA,mBAGF,+BACE,mBAIA,0CACE,gBAGF,4CACE,cACA,mBAKN,uBAEI,yBACA,6BACA,kBACA,oBALJ,mDAQM,mBACA,kBAEA,2DACE,yBACA,kBACA,WACA,qBACA,eACA,YACA,iBACA,iBACA,iBACA,kBACA,WAXF,sEAcI,eACA,kBA1BV,uDA+BQ,kBACA,kBAGF,sDACE,cACA,eACA,gBACA,gBACA,mBACA,mBACA,uBACA,gBACA,yBACA,qBAGF,yBACE,sDACE,W/CmghBP,C+C//gBG,2EACE,mBACA,eAEA,+FAEI,kBA5DZ,6DAkEQ,mBACA,kBAnER,6EAsEU,sBACA,0BACA,sBACA,qBACA,gBA1EV,8EA8EU,eACA,kBACA,UAIJ,yDACE,UACA,mBACA,gBACA,iBACA,SACA,gBACA,eA3FR,4DA8FU,WAKN,sCACE,kBACA,QACA,SAtGN,2BA2GI,sBACA,oBACA,iBA7GJ,0CAgHM,kBAhHN,6CAmHQ,gCACA,eACA,gBACA,mBACA,oBACA,kBACA,iBACA,kBA1HR,wDA8HQ,kBACA,SACA,WAMA,mDACE,mBACA,WAON,mCACE,yBACA,sBACA,kBACA,WACA,mBACA,aACA,kBAGF,yCACE,kBACA,kBA3JN,gDA8JQ,eACA,gBACA,yBAhKR,2CAoKQ,kBACA,UArKR,6CAyKQ,UACA,kBACA,WA3KR,gEA8KU,SAKN,6CACE,gBAIA,sCACE,kBAOF,oHACE,WACA,eACA,mBAnMR,qJAsMU,gBAtMV,0HA0MU,kBACA,WA3MV,+BAiNM,mBAjNN,+HAsNU,kBACA,SAvNV,8CA4NQ,eACA,iBA7NR,gDAgOU,iBAhOV,gDAqOQ,6BACA,mBACA,mBAEA,oDACE,WAIJ,+CACE,eACA,YAGF,8CACE,yBACA,sBACA,kBACA,aACA,kBAxPR,iDA2PU,gBACA,eA5PV,oCAoQM,eApQN,sDAuQQ,gBAvQR,6BA4QM,yBACA,oBACA,qBACA,cACA,gBACA,cACA,WACA,kBACA,mBACA,wBACA,cACA,mBACA,kBAxRN,oCA4RM,0BACA,cAFF,+CAKI,gBAIJ,wCACE,eACA,eACA,iBACA,gBAxSN,gDA4SM,eACA,iBA7SN,qFAkTM,WACA,eACA,eApTN,yFAuTQ,WACA,eACA,iBACA,0BA1TR,2FA8TQ,eA9TR,4CAmUM,gBAnUN,yBAuUM,kBACA,iBAxUN,qKAmVM,WACA,eACA,kBACA,YAEG,iLACH,uBAGF,4YAEE,yBACA,sBACA,kBACA,eACA,eACA,cAGF,qNACE,kBACA,kBACA,WAEA,ySACE,iBAGF,+PACE,kBACA,QAjXR,2KAsXM,kBAKF,wCACE,mBAGF,yCACE,mBACA,YAIA,uDACE,eACA,WAvYR,6CA+YQ,YA/YR,6GAuZM,kBAvZN,qHA0ZQ,mBACA,gBAKF,yGACE,gBAjaR,sOAyaQ,gBAEA,qIACE,iBA5aV,qIAgbU,WAQR,uBACE,mBACA,kBAIJ,yBACE,aACE,gBADF,iCAII,gCAJJ,oCAOM,cAPN,6DAaM,aAKN,mDAGM,mBACA,gBAEA,sDACE,kBAPR,2DAUU,aAIJ,6DACE,cACA,gBACA,eAEA,6EACE,qBApBV,8EAwBU,cACA,gBAzBV,2EA8BQ,eACA,gBA/BR,8EAkCU,cACA,eAnCV,qGAuCc,WACA,cAxCd,2DA+CQ,YACA,WACA,iBAjDR,yDAqDQ,kBAIJ,yCACE,kBACA,WACA,mBA5DN,iCAkEM,aAlEN,kDAuEQ,mBAGF,kDACE,gBA3ER,mHAqFQ,mBAEA,oDACE,WAKF,2EACE,SAOV,mCAII,WAIJ,eACE,cAGF,mDAMI,WAIJ,WACE,mBACA,kBACA,QACA,MAJF,cAOI,c/C+/gBH,CgD/viBH,uBACE,SACA,iBACA,WAGF,sBACE,WACA,kBAGF,0BACE,wBAGF,cACE,8CADF,oBAII,qBCnBJ,8BAKM,yBACA,gCACA,WACA,iBACA,kBATN,0CAYQ,kBACA,WACA,SAdR,4CAiBU,sBACA,kBACA,WACA,aACA,qBArBV,iCA0BQ,eACA,gBACA,mBA5BR,gCAgCQ,eACA,gBACA,cACA,gBAJF,oCAOI,mBACA,gBAvCV,sCA0CY,eACA,gBACA,kBA5CZ,oCAkDQ,mBAIJ,qCACE,kBAEA,wCACE,eACA,gBACA,mBACA,gBA7DR,sCAkEM,gCACA,eAnEN,8CAsEQ,kBAGF,yCACE,eACA,gBACA,mBAIA,+CACE,gBAjFV,oDAuFU,iBAvFV,kDA6FU,eACA,gBACA,mBACA,kBAhGV,qDAqGY,eACA,iBACA,cAvGZ,uDA0Gc,cAzCV,0CAgDI,kBAjHR,4CAoHU,mBACA,gBArHV,8CAwHY,eACA,gBACA,kBAMR,yBACE,yBACA,WACA,oBAnIN,4BAsIQ,eACA,gBACA,mBACA,iBACA,kBA1IR,2BA8IQ,eACA,gBACA,sBACA,gBAKN,6BACE,mBACA,iBACA,kBAzJJ,+BA4JM,kBA5JN,oBAiKI,yBACA,iBACA,oBAnKJ,gCAsKM,sBACA,yBACA,kBACA,uBAEA,sCACE,SACA,kBACA,UAGF,mCACE,gBACA,kBAnLR,sEAuLQ,gBACA,kBAGF,mCACE,gBACA,mBAGF,mCACE,eACA,mBAlMR,mDAuMU,cASJ,gFACE,gBACA,WAlNR,sCAsNQ,eACA,kBAvNR,0CA2NQ,aA3NR,uCA+NQ,gBA/NR,0CAkOU,eACA,kBAON,6BACE,yBACA,kBAMN,+BACE,gBACA,iBACA,kBACA,wBACA,gBACA,sBACA,oEAPF,wCAUI,kBAVJ,wCAcI,eACA,gBAKF,aACE,qBACA,iBAIJ,yBACE,wBAGM,eAHN,wCAOM,gBAPN,qDAaU,gBAKF,oDACE,aAnBV,yDAuBU,gBAvBV,qDA6BU,eA7BV,0CAkCQ,eAOF,sCACE,SACA,UjD+viBP,CkDvjjBH,sBAEI,mBAFJ,2BAOM,yBACA,kBARN,2BAYM,aAZN,4CAeQ,gCAJJ,oCAQI,yBAnBR,sCAsBU,YAIJ,6BACE,WAGF,6BACE,iBACA,WAhCR,qDAuCI,iBACA,aACA,gBAzCJ,2DA4CM,gBACA,eAIJ,2BACE,qBACA,kBAnDJ,0BAuDI,qBACA,kBAGF,wBACE,mBACA,gBACA,2BACA,yBACA,kBACA,yBAjEJ,sCAsEM,oBAtEN,wCAyEQ,YAzER,0CA8EM,iBAIJ,wBACE,kBAnFJ,4BAsFM,mBACA,gBAvFN,2BA2FM,gBACA,mBAGF,2BACE,aACA,gBAGF,0BACE,cACA,YAtGN,8BAyGQ,gBACA,mBA1GR,+CA+GM,gBACA,eACA,WAKF,2CACE,mBAvHN,8CA0HQ,iBACA,qBA3HR,6CAgIM,mBAhIN,uCAqIQ,yBACA,yBACA,kBACA,mBACA,aAGF,uCACE,oBA7IR,wDAgJU,gCAJJ,yDAQI,gBAIA,2DACE,6BAGF,2DACE,wBACA,eACA,cACA,gBACA,SACA,kBAlKZ,wDAwKY,wBACA,eACA,cACA,gBACA,SACA,kBAIJ,mDACE,eACA,iBAnLV,wDAuLU,eACA,cACA,kBAON,kCACE,yBACA,yBACA,kBACA,mBApMN,qCAuMQ,iBAvMR,sDA0MU,gCA1MV,0CA8MU,gBAKN,0BACE,kBACA,WAGF,0BACE,kBAKF,0BACE,cAGF,0BACE,cAnON,0BAuOM,cAvON,uBA2OM,eACA,iBAGF,iCACE,oBAhPN,mCAmPQ,YAMJ,+BACE,kBAEA,kCACE,iBACA,qBA9PR,+CAqQM,iBACA,WAGF,8BACE,iBCzQJ,UACE,eACA,gBAHJ,aAOI,eAGF,cACE,kBACA,WACA,SACA,eAIA,kCACE,gBAGF,4BACE,aACA,gBAEA,kCACE,eACA,YCFR,gBACE,yBAGF,gBACE,qBAEF,KAAO,SACP,MAAQ,UAER,oBACE,6BACA,yBACA,0PAGF,0BACE,6BACA,yBACA,0PAHF,8BAMI,WACA,aACA,WAKJ,eACE,gCAGF,YACE,6BAGF,cACE,+BAGF,aACE,8BAGF,mBACE,eAGF,OACE,gBACA,yBACA,kBACA,sFAGF,aACE,aAGF,OACE,qBACA,gBACA,cACA,gBACA,cACA,WACA,kBACA,mBACA,wBACA,qBAGF,eACE,yBAGF,cACE,yBAGF,YACE,gBACA,kBACA,WACA,qBACA,eACA,YACA,iBACA,sBACA,kBACA,kBACA,qBACA,6BAEA,mBACE,gBACA,mBACA,sFACA,WACA,WACA,SACA,kBACA,UACA,QAGF,kBACE,yBA3BJ,oBA8BM,WA9BN,cAmCI,qBACA,WAFF,oBAKI,6BACA,WAMN,KACE,cAGF,EACE,cACA,YACA,0BAHF,QAMI,yBACA,WACA,qBARJ,cAYI,WACA,eACA,iBACA,0BAIJ,kBACE,gCAGF,GACE,qBACA,SACA,UAHF,iBAOM,eAKN,QACE,aAGF,eACE,sBAGF,gBACE,gBACA,kBAGF,eACE,cAGF,cACE,gBADF,iBAII,gBACA,mBACA,kBAGF,iCACE,kBAVJ,kDAcI,gBAGF,gCACE,iBAlBJ,kCAuBM,eAvBN,qDA0BQ,cACA,WAGF,mDACE,iBACA,gBAhCR,2CAsCI,6BACA,oBAvCJ,mBA2CI,gBA3CJ,6BA8CM,qBA9CN,2BAmDI,4BACA,2BACA,6BACA,aAKF,kBACE,kBAIJ,YACE,yBAEA,eACE,eACA,oBALJ,yCAQM,YACA,gBACA,iBAKN,KACE,cACA,yBAEA,mKACA,kBACA,qBACA,iBACA,eACA,gBACA,iBACA,mBACA,sBACA,eACA,yBACA,sBACA,qBACA,iBAEA,8BACA,0BACA,mCACA,oBACA,wBACA,qBACA,gBAzBF,6BAkBE,2BAQA,qBA1BF,wBA8BI,yBAEA,mKACA,4BAEA,gCAGF,YACE,yBACA,sBACA,gCACA,0GA1CJ,cA8CI,mKAGF,WACE,aACA,qBAIJ,aACE,WACA,yBAEA,mKAEA,mBACE,yBAEA,mKACA,4BACA,+BAIJ,OACE,yBACA,cACA,WAHF,kBAMI,2BACA,4BACA,0BACA,kBATJ,sDAaQ,2BAbR,qDAiBQ,4BAjBR,6BAsBM,6BAtBN,wBA0BM,yBA1BN,mBA+BI,mBACA,iBAIJ,sBAEI,eACA,gBAGF,qBACE,gBAPJ,wBAUM,eAVN,2BAcM,mBAEA,8BACE,qBAjBR,8BAqBQ,cACA,eACA,gBAMR,yBACE,aACE,yBACA,kBAEA,8BACE,yBACA,aACA,YAPJ,4BAWI,sBACA,SAZJ,gBAgBI,YpDqzjBH,CACF","file":"/css/app.css","sourcesContent":["/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\n\n//\n// 1. Set default font family to sans-serif.\n// 2. Prevent iOS and IE text size adjust after device orientation change,\n// without disabling user zoom.\n//\n\nhtml {\n font-family: sans-serif; // 1\n -ms-text-size-adjust: 100%; // 2\n -webkit-text-size-adjust: 100%; // 2\n}\n\n//\n// Remove default margin.\n//\n\nbody {\n margin: 0;\n}\n\n// HTML5 display definitions\n// ==========================================================================\n\n//\n// Correct `block` display not defined for any HTML5 element in IE 8/9.\n// Correct `block` display not defined for `details` or `summary` in IE 10/11\n// and Firefox.\n// Correct `block` display not defined for `main` in IE 11.\n//\n\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\n\n//\n// 1. Correct `inline-block` display not defined in IE 8/9.\n// 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\n//\n\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block; // 1\n vertical-align: baseline; // 2\n}\n\n//\n// Prevent modern browsers from displaying `audio` without controls.\n// Remove excess height in iOS 5 devices.\n//\n\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n\n//\n// Address `[hidden]` styling not present in IE 8/9/10.\n// Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.\n//\n\n[hidden],\ntemplate {\n display: none;\n}\n\n// Links\n// ==========================================================================\n\n//\n// Remove the gray background color from active links in IE 10.\n//\n\na {\n background-color: transparent;\n}\n\n//\n// Improve readability of focused elements when they are also in an\n// active/hover state.\n//\n\na {\n &:active {\n outline: 0;\n }\n &:hover {\n outline: 0;\n }\n}\n\n// Text-level semantics\n// ==========================================================================\n\n//\n// Address styling not present in IE 8/9/10/11, Safari, and Chrome.\n//\n\nabbr[title] {\n border-bottom: 1px dotted;\n}\n\n//\n// Address style set to `bolder` in Firefox 4+, Safari, and Chrome.\n//\n\nb,\nstrong {\n font-weight: bold;\n}\n\n//\n// Address styling not present in Safari and Chrome.\n//\n\ndfn {\n font-style: italic;\n}\n\n//\n// Address variable `h1` font-size and margin within `section` and `article`\n// contexts in Firefox 4+, Safari, and Chrome.\n//\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n//\n// Address styling not present in IE 8/9.\n//\n\nmark {\n background: #ff0;\n color: #000;\n}\n\n//\n// Address inconsistent and variable font size in all browsers.\n//\n\nsmall {\n font-size: 80%;\n}\n\n//\n// Prevent `sub` and `sup` affecting `line-height` in all browsers.\n//\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsup {\n top: -0.5em;\n}\n\nsub {\n bottom: -0.25em;\n}\n\n// Embedded content\n// ==========================================================================\n\n//\n// Remove border when inside `a` element in IE 8/9/10.\n//\n\nimg {\n border: 0;\n}\n\n//\n// Correct overflow not hidden in IE 9/10/11.\n//\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\n// Grouping content\n// ==========================================================================\n\n//\n// Address margin not present in IE 8/9 and Safari.\n//\n\nfigure {\n margin: 1em 40px;\n}\n\n//\n// Address differences between Firefox and other browsers.\n//\n\nhr {\n box-sizing: content-box;\n height: 0;\n}\n\n//\n// Contain overflow in all browsers.\n//\n\npre {\n overflow: auto;\n}\n\n//\n// Address odd `em`-unit font size rendering in all browsers.\n//\n\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\n// Forms\n// ==========================================================================\n\n//\n// Known limitation: by default, Chrome and Safari on OS X allow very limited\n// styling of `select`, unless a `border` property is set.\n//\n\n//\n// 1. Correct color not being inherited.\n// Known issue: affects color of disabled elements.\n// 2. Correct font properties not being inherited.\n// 3. Address margins set differently in Firefox 4+, Safari, and Chrome.\n//\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit; // 1\n font: inherit; // 2\n margin: 0; // 3\n}\n\n//\n// Address `overflow` set to `hidden` in IE 8/9/10/11.\n//\n\nbutton {\n overflow: visible;\n}\n\n//\n// Address inconsistent `text-transform` inheritance for `button` and `select`.\n// All other form control elements do not inherit `text-transform` values.\n// Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.\n// Correct `select` style inheritance in Firefox.\n//\n\nbutton,\nselect {\n text-transform: none;\n}\n\n//\n// 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n// and `video` controls.\n// 2. Correct inability to style clickable `input` types in iOS.\n// 3. Improve usability and consistency of cursor style between image-type\n// `input` and others.\n//\n\nbutton,\nhtml input[type=\"button\"], // 1\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button; // 2\n cursor: pointer; // 3\n}\n\n//\n// Re-set default cursor for disabled elements.\n//\n\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\n\n//\n// Remove inner padding and border in Firefox 4+.\n//\n\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\n\n//\n// Address Firefox 4+ setting `line-height` on `input` using `!important` in\n// the UA stylesheet.\n//\n\ninput {\n line-height: normal;\n}\n\n//\n// It's recommended that you don't attempt to style these elements.\n// Firefox's implementation doesn't respect box-sizing, padding, or width.\n//\n// 1. Address box sizing set to `content-box` in IE 8/9/10.\n// 2. Remove excess padding in IE 8/9/10.\n//\n\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box; // 1\n padding: 0; // 2\n}\n\n//\n// Fix the cursor style for Chrome's increment/decrement buttons. For certain\n// `font-size` values of the `input`, it causes the cursor style of the\n// decrement button to change from `default` to `text`.\n//\n\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n//\n// 1. Address `appearance` set to `searchfield` in Safari and Chrome.\n// 2. Address `box-sizing` set to `border-box` in Safari and Chrome.\n//\n\ninput[type=\"search\"] {\n -webkit-appearance: textfield; // 1\n box-sizing: content-box; //2\n}\n\n//\n// Remove inner padding and search cancel button in Safari and Chrome on OS X.\n// Safari (but not Chrome) clips the cancel button when the search input has\n// padding (and `textfield` appearance).\n//\n\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n//\n// Define consistent border, margin, and padding.\n//\n\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\n\n//\n// 1. Correct `color` not being inherited in IE 8/9/10/11.\n// 2. Remove padding so people aren't caught out if they zero out fieldsets.\n//\n\nlegend {\n border: 0; // 1\n padding: 0; // 2\n}\n\n//\n// Remove default vertical scrollbar in IE 8/9/10/11.\n//\n\ntextarea {\n overflow: auto;\n}\n\n//\n// Don't inherit the `font-weight` (applied by a rule above).\n// NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n//\n\noptgroup {\n font-weight: bold;\n}\n\n// Tables\n// ==========================================================================\n\n//\n// Remove most spacing between table cells.\n//\n\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\n\ntd,\nth {\n padding: 0;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./resources/assets/sass/node_modules/bootstrap/scss/_normalize.scss","@charset \"UTF-8\";\n/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\nhtml {\n font-family: sans-serif;\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;\n}\n\nbody {\n margin: 0;\n}\n\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\n\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block;\n vertical-align: baseline;\n}\n\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n\n[hidden],\ntemplate {\n display: none;\n}\n\na {\n background-color: transparent;\n}\n\na:active {\n outline: 0;\n}\n\na:hover {\n outline: 0;\n}\n\nabbr[title] {\n border-bottom: 1px dotted;\n}\n\nb,\nstrong {\n font-weight: bold;\n}\n\ndfn {\n font-style: italic;\n}\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\nmark {\n background: #ff0;\n color: #000;\n}\n\nsmall {\n font-size: 80%;\n}\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsup {\n top: -0.5em;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nimg {\n border: 0;\n}\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\nfigure {\n margin: 1em 40px;\n}\n\nhr {\n box-sizing: content-box;\n height: 0;\n}\n\npre {\n overflow: auto;\n}\n\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit;\n font: inherit;\n margin: 0;\n}\n\nbutton {\n overflow: visible;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button;\n cursor: pointer;\n}\n\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\n\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\n\ninput {\n line-height: normal;\n}\n\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box;\n padding: 0;\n}\n\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\ninput[type=\"search\"] {\n -webkit-appearance: textfield;\n box-sizing: content-box;\n}\n\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\n\nlegend {\n border: 0;\n padding: 0;\n}\n\ntextarea {\n overflow: auto;\n}\n\noptgroup {\n font-weight: bold;\n}\n\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\n\ntd,\nth {\n padding: 0;\n}\n\n@media print {\n *,\n *::before,\n *::after {\n text-shadow: none !important;\n box-shadow: none !important;\n }\n a,\n a:visited {\n text-decoration: underline;\n }\n abbr[title]::after {\n content: \" (\" attr(title) \")\";\n }\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n thead {\n display: table-header-group;\n }\n tr,\n img {\n page-break-inside: avoid;\n }\n img {\n max-width: 100% !important;\n }\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n h2,\n h3 {\n page-break-after: avoid;\n }\n .navbar {\n display: none;\n }\n .btn > .caret,\n .dropup > .btn > .caret {\n border-top-color: #000 !important;\n }\n .label {\n border: 1px solid #000;\n }\n .table {\n border-collapse: collapse !important;\n }\n .table td,\n .table th {\n background-color: #fff !important;\n }\n .table-bordered th,\n .table-bordered td {\n border: 1px solid #ddd !important;\n }\n}\n\nhtml {\n box-sizing: border-box;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: inherit;\n}\n\n@-moz-viewport {\n width: device-width;\n}\n\n@-ms-viewport {\n width: device-width;\n}\n\n@-o-viewport {\n width: device-width;\n}\n\n@-webkit-viewport {\n width: device-width;\n}\n\n@viewport {\n width: device-width;\n}\n\nhtml {\n font-size: 14px;\n -webkit-tap-highlight-color: transparent;\n}\n\nbody {\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen-Sans, Ubuntu, Cantarell, \"Helvetica Neue\", sans-serif;\n font-size: 1rem;\n line-height: 1.5;\n color: #373a3c;\n background-color: #fff;\n}\n\n[tabindex=\"-1\"]:focus {\n outline: none !important;\n}\n\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: .5rem;\n}\n\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nabbr[title],\nabbr[data-original-title] {\n cursor: help;\n border-bottom: 1px dotted #818a91;\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: bold;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0;\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\na {\n color: #0275d8;\n text-decoration: none;\n}\n\na:focus, a:hover {\n color: #014c8c;\n text-decoration: underline;\n}\n\na:focus {\n outline: thin dotted;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n\npre {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nfigure {\n margin: 0 0 1rem;\n}\n\nimg {\n vertical-align: middle;\n}\n\n[role=\"button\"] {\n cursor: pointer;\n}\n\na,\narea,\nbutton,\n[role=\"button\"],\ninput,\nlabel,\nselect,\nsummary,\ntextarea {\n touch-action: manipulation;\n}\n\ntable {\n background-color: transparent;\n}\n\ncaption {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n color: #818a91;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n text-align: left;\n}\n\nlabel {\n display: inline-block;\n margin-bottom: .5rem;\n}\n\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\ntextarea {\n margin: 0;\n line-height: inherit;\n border-radius: 0;\n}\n\ntextarea {\n resize: vertical;\n}\n\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: .5rem;\n font-size: 1.5rem;\n line-height: inherit;\n}\n\ninput[type=\"search\"] {\n box-sizing: inherit;\n -webkit-appearance: none;\n}\n\noutput {\n display: inline-block;\n}\n\n[hidden] {\n display: none !important;\n}\n\n.container {\n margin-left: auto;\n margin-right: auto;\n padding-left: 0.9375rem;\n padding-right: 0.9375rem;\n}\n\n@media (min-width: 544px) {\n .container {\n max-width: 576px;\n }\n}\n\n@media (min-width: 768px) {\n .container {\n max-width: 720px;\n }\n}\n\n@media (min-width: 992px) {\n .container {\n max-width: 940px;\n }\n}\n\n@media (min-width: 1200px) {\n .container {\n max-width: 1140px;\n }\n}\n\n.container-fluid {\n margin-left: auto;\n margin-right: auto;\n padding-left: 0.9375rem;\n padding-right: 0.9375rem;\n}\n\n.row {\n display: flex;\n flex-wrap: wrap;\n margin-left: -0.9375rem;\n margin-right: -0.9375rem;\n}\n\n.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12 {\n position: relative;\n min-height: 1px;\n padding-left: 0.9375rem;\n padding-right: 0.9375rem;\n}\n\n.col-xs-1 {\n flex: 0 0 8.33333333%;\n}\n\n.col-xs-2 {\n flex: 0 0 16.66666667%;\n}\n\n.col-xs-3 {\n flex: 0 0 25%;\n}\n\n.col-xs-4 {\n flex: 0 0 33.33333333%;\n}\n\n.col-xs-5 {\n flex: 0 0 41.66666667%;\n}\n\n.col-xs-6 {\n flex: 0 0 50%;\n}\n\n.col-xs-7 {\n flex: 0 0 58.33333333%;\n}\n\n.col-xs-8 {\n flex: 0 0 66.66666667%;\n}\n\n.col-xs-9 {\n flex: 0 0 75%;\n}\n\n.col-xs-10 {\n flex: 0 0 83.33333333%;\n}\n\n.col-xs-11 {\n flex: 0 0 91.66666667%;\n}\n\n.col-xs-12 {\n flex: 0 0 100%;\n}\n\n.col-xs-pull-0 {\n right: auto;\n}\n\n.col-xs-pull-1 {\n right: 8.33333333%;\n}\n\n.col-xs-pull-2 {\n right: 16.66666667%;\n}\n\n.col-xs-pull-3 {\n right: 25%;\n}\n\n.col-xs-pull-4 {\n right: 33.33333333%;\n}\n\n.col-xs-pull-5 {\n right: 41.66666667%;\n}\n\n.col-xs-pull-6 {\n right: 50%;\n}\n\n.col-xs-pull-7 {\n right: 58.33333333%;\n}\n\n.col-xs-pull-8 {\n right: 66.66666667%;\n}\n\n.col-xs-pull-9 {\n right: 75%;\n}\n\n.col-xs-pull-10 {\n right: 83.33333333%;\n}\n\n.col-xs-pull-11 {\n right: 91.66666667%;\n}\n\n.col-xs-pull-12 {\n right: 100%;\n}\n\n.col-xs-push-0 {\n left: auto;\n}\n\n.col-xs-push-1 {\n left: 8.33333333%;\n}\n\n.col-xs-push-2 {\n left: 16.66666667%;\n}\n\n.col-xs-push-3 {\n left: 25%;\n}\n\n.col-xs-push-4 {\n left: 33.33333333%;\n}\n\n.col-xs-push-5 {\n left: 41.66666667%;\n}\n\n.col-xs-push-6 {\n left: 50%;\n}\n\n.col-xs-push-7 {\n left: 58.33333333%;\n}\n\n.col-xs-push-8 {\n left: 66.66666667%;\n}\n\n.col-xs-push-9 {\n left: 75%;\n}\n\n.col-xs-push-10 {\n left: 83.33333333%;\n}\n\n.col-xs-push-11 {\n left: 91.66666667%;\n}\n\n.col-xs-push-12 {\n left: 100%;\n}\n\n.col-xs-offset-0 {\n margin-left: 0%;\n}\n\n.col-xs-offset-1 {\n margin-left: 8.33333333%;\n}\n\n.col-xs-offset-2 {\n margin-left: 16.66666667%;\n}\n\n.col-xs-offset-3 {\n margin-left: 25%;\n}\n\n.col-xs-offset-4 {\n margin-left: 33.33333333%;\n}\n\n.col-xs-offset-5 {\n margin-left: 41.66666667%;\n}\n\n.col-xs-offset-6 {\n margin-left: 50%;\n}\n\n.col-xs-offset-7 {\n margin-left: 58.33333333%;\n}\n\n.col-xs-offset-8 {\n margin-left: 66.66666667%;\n}\n\n.col-xs-offset-9 {\n margin-left: 75%;\n}\n\n.col-xs-offset-10 {\n margin-left: 83.33333333%;\n}\n\n.col-xs-offset-11 {\n margin-left: 91.66666667%;\n}\n\n.col-xs-offset-12 {\n margin-left: 100%;\n}\n\n@media (min-width: 544px) {\n .col-sm-1 {\n flex: 0 0 8.33333333%;\n }\n .col-sm-2 {\n flex: 0 0 16.66666667%;\n }\n .col-sm-3 {\n flex: 0 0 25%;\n }\n .col-sm-4 {\n flex: 0 0 33.33333333%;\n }\n .col-sm-5 {\n flex: 0 0 41.66666667%;\n }\n .col-sm-6 {\n flex: 0 0 50%;\n }\n .col-sm-7 {\n flex: 0 0 58.33333333%;\n }\n .col-sm-8 {\n flex: 0 0 66.66666667%;\n }\n .col-sm-9 {\n flex: 0 0 75%;\n }\n .col-sm-10 {\n flex: 0 0 83.33333333%;\n }\n .col-sm-11 {\n flex: 0 0 91.66666667%;\n }\n .col-sm-12 {\n flex: 0 0 100%;\n }\n .col-sm-pull-0 {\n right: auto;\n }\n .col-sm-pull-1 {\n right: 8.33333333%;\n }\n .col-sm-pull-2 {\n right: 16.66666667%;\n }\n .col-sm-pull-3 {\n right: 25%;\n }\n .col-sm-pull-4 {\n right: 33.33333333%;\n }\n .col-sm-pull-5 {\n right: 41.66666667%;\n }\n .col-sm-pull-6 {\n right: 50%;\n }\n .col-sm-pull-7 {\n right: 58.33333333%;\n }\n .col-sm-pull-8 {\n right: 66.66666667%;\n }\n .col-sm-pull-9 {\n right: 75%;\n }\n .col-sm-pull-10 {\n right: 83.33333333%;\n }\n .col-sm-pull-11 {\n right: 91.66666667%;\n }\n .col-sm-pull-12 {\n right: 100%;\n }\n .col-sm-push-0 {\n left: auto;\n }\n .col-sm-push-1 {\n left: 8.33333333%;\n }\n .col-sm-push-2 {\n left: 16.66666667%;\n }\n .col-sm-push-3 {\n left: 25%;\n }\n .col-sm-push-4 {\n left: 33.33333333%;\n }\n .col-sm-push-5 {\n left: 41.66666667%;\n }\n .col-sm-push-6 {\n left: 50%;\n }\n .col-sm-push-7 {\n left: 58.33333333%;\n }\n .col-sm-push-8 {\n left: 66.66666667%;\n }\n .col-sm-push-9 {\n left: 75%;\n }\n .col-sm-push-10 {\n left: 83.33333333%;\n }\n .col-sm-push-11 {\n left: 91.66666667%;\n }\n .col-sm-push-12 {\n left: 100%;\n }\n .col-sm-offset-0 {\n margin-left: 0%;\n }\n .col-sm-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-sm-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-sm-offset-3 {\n margin-left: 25%;\n }\n .col-sm-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-sm-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-sm-offset-6 {\n margin-left: 50%;\n }\n .col-sm-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-sm-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-sm-offset-9 {\n margin-left: 75%;\n }\n .col-sm-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-sm-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-sm-offset-12 {\n margin-left: 100%;\n }\n}\n\n@media (min-width: 768px) {\n .col-md-1 {\n flex: 0 0 8.33333333%;\n }\n .col-md-2 {\n flex: 0 0 16.66666667%;\n }\n .col-md-3 {\n flex: 0 0 25%;\n }\n .col-md-4 {\n flex: 0 0 33.33333333%;\n }\n .col-md-5 {\n flex: 0 0 41.66666667%;\n }\n .col-md-6 {\n flex: 0 0 50%;\n }\n .col-md-7 {\n flex: 0 0 58.33333333%;\n }\n .col-md-8 {\n flex: 0 0 66.66666667%;\n }\n .col-md-9 {\n flex: 0 0 75%;\n }\n .col-md-10 {\n flex: 0 0 83.33333333%;\n }\n .col-md-11 {\n flex: 0 0 91.66666667%;\n }\n .col-md-12 {\n flex: 0 0 100%;\n }\n .col-md-pull-0 {\n right: auto;\n }\n .col-md-pull-1 {\n right: 8.33333333%;\n }\n .col-md-pull-2 {\n right: 16.66666667%;\n }\n .col-md-pull-3 {\n right: 25%;\n }\n .col-md-pull-4 {\n right: 33.33333333%;\n }\n .col-md-pull-5 {\n right: 41.66666667%;\n }\n .col-md-pull-6 {\n right: 50%;\n }\n .col-md-pull-7 {\n right: 58.33333333%;\n }\n .col-md-pull-8 {\n right: 66.66666667%;\n }\n .col-md-pull-9 {\n right: 75%;\n }\n .col-md-pull-10 {\n right: 83.33333333%;\n }\n .col-md-pull-11 {\n right: 91.66666667%;\n }\n .col-md-pull-12 {\n right: 100%;\n }\n .col-md-push-0 {\n left: auto;\n }\n .col-md-push-1 {\n left: 8.33333333%;\n }\n .col-md-push-2 {\n left: 16.66666667%;\n }\n .col-md-push-3 {\n left: 25%;\n }\n .col-md-push-4 {\n left: 33.33333333%;\n }\n .col-md-push-5 {\n left: 41.66666667%;\n }\n .col-md-push-6 {\n left: 50%;\n }\n .col-md-push-7 {\n left: 58.33333333%;\n }\n .col-md-push-8 {\n left: 66.66666667%;\n }\n .col-md-push-9 {\n left: 75%;\n }\n .col-md-push-10 {\n left: 83.33333333%;\n }\n .col-md-push-11 {\n left: 91.66666667%;\n }\n .col-md-push-12 {\n left: 100%;\n }\n .col-md-offset-0 {\n margin-left: 0%;\n }\n .col-md-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-md-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-md-offset-3 {\n margin-left: 25%;\n }\n .col-md-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-md-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-md-offset-6 {\n margin-left: 50%;\n }\n .col-md-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-md-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-md-offset-9 {\n margin-left: 75%;\n }\n .col-md-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-md-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-md-offset-12 {\n margin-left: 100%;\n }\n}\n\n@media (min-width: 992px) {\n .col-lg-1 {\n flex: 0 0 8.33333333%;\n }\n .col-lg-2 {\n flex: 0 0 16.66666667%;\n }\n .col-lg-3 {\n flex: 0 0 25%;\n }\n .col-lg-4 {\n flex: 0 0 33.33333333%;\n }\n .col-lg-5 {\n flex: 0 0 41.66666667%;\n }\n .col-lg-6 {\n flex: 0 0 50%;\n }\n .col-lg-7 {\n flex: 0 0 58.33333333%;\n }\n .col-lg-8 {\n flex: 0 0 66.66666667%;\n }\n .col-lg-9 {\n flex: 0 0 75%;\n }\n .col-lg-10 {\n flex: 0 0 83.33333333%;\n }\n .col-lg-11 {\n flex: 0 0 91.66666667%;\n }\n .col-lg-12 {\n flex: 0 0 100%;\n }\n .col-lg-pull-0 {\n right: auto;\n }\n .col-lg-pull-1 {\n right: 8.33333333%;\n }\n .col-lg-pull-2 {\n right: 16.66666667%;\n }\n .col-lg-pull-3 {\n right: 25%;\n }\n .col-lg-pull-4 {\n right: 33.33333333%;\n }\n .col-lg-pull-5 {\n right: 41.66666667%;\n }\n .col-lg-pull-6 {\n right: 50%;\n }\n .col-lg-pull-7 {\n right: 58.33333333%;\n }\n .col-lg-pull-8 {\n right: 66.66666667%;\n }\n .col-lg-pull-9 {\n right: 75%;\n }\n .col-lg-pull-10 {\n right: 83.33333333%;\n }\n .col-lg-pull-11 {\n right: 91.66666667%;\n }\n .col-lg-pull-12 {\n right: 100%;\n }\n .col-lg-push-0 {\n left: auto;\n }\n .col-lg-push-1 {\n left: 8.33333333%;\n }\n .col-lg-push-2 {\n left: 16.66666667%;\n }\n .col-lg-push-3 {\n left: 25%;\n }\n .col-lg-push-4 {\n left: 33.33333333%;\n }\n .col-lg-push-5 {\n left: 41.66666667%;\n }\n .col-lg-push-6 {\n left: 50%;\n }\n .col-lg-push-7 {\n left: 58.33333333%;\n }\n .col-lg-push-8 {\n left: 66.66666667%;\n }\n .col-lg-push-9 {\n left: 75%;\n }\n .col-lg-push-10 {\n left: 83.33333333%;\n }\n .col-lg-push-11 {\n left: 91.66666667%;\n }\n .col-lg-push-12 {\n left: 100%;\n }\n .col-lg-offset-0 {\n margin-left: 0%;\n }\n .col-lg-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-lg-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-lg-offset-3 {\n margin-left: 25%;\n }\n .col-lg-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-lg-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-lg-offset-6 {\n margin-left: 50%;\n }\n .col-lg-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-lg-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-lg-offset-9 {\n margin-left: 75%;\n }\n .col-lg-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-lg-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-lg-offset-12 {\n margin-left: 100%;\n }\n}\n\n@media (min-width: 1200px) {\n .col-xl-1 {\n flex: 0 0 8.33333333%;\n }\n .col-xl-2 {\n flex: 0 0 16.66666667%;\n }\n .col-xl-3 {\n flex: 0 0 25%;\n }\n .col-xl-4 {\n flex: 0 0 33.33333333%;\n }\n .col-xl-5 {\n flex: 0 0 41.66666667%;\n }\n .col-xl-6 {\n flex: 0 0 50%;\n }\n .col-xl-7 {\n flex: 0 0 58.33333333%;\n }\n .col-xl-8 {\n flex: 0 0 66.66666667%;\n }\n .col-xl-9 {\n flex: 0 0 75%;\n }\n .col-xl-10 {\n flex: 0 0 83.33333333%;\n }\n .col-xl-11 {\n flex: 0 0 91.66666667%;\n }\n .col-xl-12 {\n flex: 0 0 100%;\n }\n .col-xl-pull-0 {\n right: auto;\n }\n .col-xl-pull-1 {\n right: 8.33333333%;\n }\n .col-xl-pull-2 {\n right: 16.66666667%;\n }\n .col-xl-pull-3 {\n right: 25%;\n }\n .col-xl-pull-4 {\n right: 33.33333333%;\n }\n .col-xl-pull-5 {\n right: 41.66666667%;\n }\n .col-xl-pull-6 {\n right: 50%;\n }\n .col-xl-pull-7 {\n right: 58.33333333%;\n }\n .col-xl-pull-8 {\n right: 66.66666667%;\n }\n .col-xl-pull-9 {\n right: 75%;\n }\n .col-xl-pull-10 {\n right: 83.33333333%;\n }\n .col-xl-pull-11 {\n right: 91.66666667%;\n }\n .col-xl-pull-12 {\n right: 100%;\n }\n .col-xl-push-0 {\n left: auto;\n }\n .col-xl-push-1 {\n left: 8.33333333%;\n }\n .col-xl-push-2 {\n left: 16.66666667%;\n }\n .col-xl-push-3 {\n left: 25%;\n }\n .col-xl-push-4 {\n left: 33.33333333%;\n }\n .col-xl-push-5 {\n left: 41.66666667%;\n }\n .col-xl-push-6 {\n left: 50%;\n }\n .col-xl-push-7 {\n left: 58.33333333%;\n }\n .col-xl-push-8 {\n left: 66.66666667%;\n }\n .col-xl-push-9 {\n left: 75%;\n }\n .col-xl-push-10 {\n left: 83.33333333%;\n }\n .col-xl-push-11 {\n left: 91.66666667%;\n }\n .col-xl-push-12 {\n left: 100%;\n }\n .col-xl-offset-0 {\n margin-left: 0%;\n }\n .col-xl-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-xl-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-xl-offset-3 {\n margin-left: 25%;\n }\n .col-xl-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-xl-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-xl-offset-6 {\n margin-left: 50%;\n }\n .col-xl-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-xl-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-xl-offset-9 {\n margin-left: 75%;\n }\n .col-xl-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-xl-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-xl-offset-12 {\n margin-left: 100%;\n }\n}\n\n.col-xs-first {\n order: -1;\n}\n\n.col-xs-last {\n order: 1;\n}\n\n@media (min-width: 544px) {\n .col-sm-first {\n order: -1;\n }\n .col-sm-last {\n order: 1;\n }\n}\n\n@media (min-width: 768px) {\n .col-md-first {\n order: -1;\n }\n .col-md-last {\n order: 1;\n }\n}\n\n@media (min-width: 992px) {\n .col-lg-first {\n order: -1;\n }\n .col-lg-last {\n order: 1;\n }\n}\n\n@media (min-width: 1200px) {\n .col-xl-first {\n order: -1;\n }\n .col-xl-last {\n order: 1;\n }\n}\n\n.row-xs-top {\n align-items: flex-start;\n}\n\n.row-xs-center {\n align-items: center;\n}\n\n.row-xs-bottom {\n align-items: flex-end;\n}\n\n@media (min-width: 544px) {\n .row-sm-top {\n align-items: flex-start;\n }\n .row-sm-center {\n align-items: center;\n }\n .row-sm-bottom {\n align-items: flex-end;\n }\n}\n\n@media (min-width: 768px) {\n .row-md-top {\n align-items: flex-start;\n }\n .row-md-center {\n align-items: center;\n }\n .row-md-bottom {\n align-items: flex-end;\n }\n}\n\n@media (min-width: 992px) {\n .row-lg-top {\n align-items: flex-start;\n }\n .row-lg-center {\n align-items: center;\n }\n .row-lg-bottom {\n align-items: flex-end;\n }\n}\n\n@media (min-width: 1200px) {\n .row-xl-top {\n align-items: flex-start;\n }\n .row-xl-center {\n align-items: center;\n }\n .row-xl-bottom {\n align-items: flex-end;\n }\n}\n\n.col-xs-top {\n align-self: flex-start;\n}\n\n.col-xs-center {\n align-self: center;\n}\n\n.col-xs-bottom {\n align-self: flex-end;\n}\n\n@media (min-width: 544px) {\n .col-sm-top {\n align-self: flex-start;\n }\n .col-sm-center {\n align-self: center;\n }\n .col-sm-bottom {\n align-self: flex-end;\n }\n}\n\n@media (min-width: 768px) {\n .col-md-top {\n align-self: flex-start;\n }\n .col-md-center {\n align-self: center;\n }\n .col-md-bottom {\n align-self: flex-end;\n }\n}\n\n@media (min-width: 992px) {\n .col-lg-top {\n align-self: flex-start;\n }\n .col-lg-center {\n align-self: center;\n }\n .col-lg-bottom {\n align-self: flex-end;\n }\n}\n\n@media (min-width: 1200px) {\n .col-xl-top {\n align-self: flex-start;\n }\n .col-xl-center {\n align-self: center;\n }\n .col-xl-bottom {\n align-self: flex-end;\n }\n}\n\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: 1rem;\n}\n\n.table th,\n.table td {\n padding: 0.75rem;\n line-height: 1.5;\n vertical-align: top;\n border-top: 1px solid #eceeef;\n}\n\n.table thead th {\n vertical-align: bottom;\n border-bottom: 2px solid #eceeef;\n}\n\n.table tbody + tbody {\n border-top: 2px solid #eceeef;\n}\n\n.table .table {\n background-color: #fff;\n}\n\n.table-sm th,\n.table-sm td {\n padding: 0.3rem;\n}\n\n.table-bordered {\n border: 1px solid #eceeef;\n}\n\n.table-bordered th,\n.table-bordered td {\n border: 1px solid #eceeef;\n}\n\n.table-bordered thead th,\n.table-bordered thead td {\n border-bottom-width: 2px;\n}\n\n.table-striped tbody tr:nth-of-type(odd) {\n background-color: #f9f9f9;\n}\n\n.table-hover tbody tr:hover {\n background-color: #f5f5f5;\n}\n\n.table-active,\n.table-active > th,\n.table-active > td {\n background-color: #f5f5f5;\n}\n\n.table-hover .table-active:hover {\n background-color: #e8e8e8;\n}\n\n.table-hover .table-active:hover > td,\n.table-hover .table-active:hover > th {\n background-color: #e8e8e8;\n}\n\n.table-success,\n.table-success > th,\n.table-success > td {\n background-color: #dff0d8;\n}\n\n.table-hover .table-success:hover {\n background-color: #d0e9c6;\n}\n\n.table-hover .table-success:hover > td,\n.table-hover .table-success:hover > th {\n background-color: #d0e9c6;\n}\n\n.table-info,\n.table-info > th,\n.table-info > td {\n background-color: #d9edf7;\n}\n\n.table-hover .table-info:hover {\n background-color: #c4e3f3;\n}\n\n.table-hover .table-info:hover > td,\n.table-hover .table-info:hover > th {\n background-color: #c4e3f3;\n}\n\n.table-warning,\n.table-warning > th,\n.table-warning > td {\n background-color: #fcf8e3;\n}\n\n.table-hover .table-warning:hover {\n background-color: #faf2cc;\n}\n\n.table-hover .table-warning:hover > td,\n.table-hover .table-warning:hover > th {\n background-color: #faf2cc;\n}\n\n.table-danger,\n.table-danger > th,\n.table-danger > td {\n background-color: #f2dede;\n}\n\n.table-hover .table-danger:hover {\n background-color: #ebcccc;\n}\n\n.table-hover .table-danger:hover > td,\n.table-hover .table-danger:hover > th {\n background-color: #ebcccc;\n}\n\n.table-responsive {\n display: block;\n width: 100%;\n min-height: 0.01%;\n overflow-x: auto;\n}\n\n.thead-inverse th {\n color: #fff;\n background-color: #373a3c;\n}\n\n.thead-default th {\n color: #55595c;\n background-color: #eceeef;\n}\n\n.table-inverse {\n color: #eceeef;\n background-color: #373a3c;\n}\n\n.table-inverse.table-bordered {\n border: 0;\n}\n\n.table-inverse th,\n.table-inverse td,\n.table-inverse thead th {\n border-color: #55595c;\n}\n\n.table-reflow thead {\n float: left;\n}\n\n.table-reflow tbody {\n display: block;\n white-space: nowrap;\n}\n\n.table-reflow th,\n.table-reflow td {\n border-top: 1px solid #eceeef;\n border-left: 1px solid #eceeef;\n}\n\n.table-reflow th:last-child,\n.table-reflow td:last-child {\n border-right: 1px solid #eceeef;\n}\n\n.table-reflow thead:last-child tr:last-child th,\n.table-reflow thead:last-child tr:last-child td,\n.table-reflow tbody:last-child tr:last-child th,\n.table-reflow tbody:last-child tr:last-child td,\n.table-reflow tfoot:last-child tr:last-child th,\n.table-reflow tfoot:last-child tr:last-child td {\n border-bottom: 1px solid #eceeef;\n}\n\n.table-reflow tr {\n float: left;\n}\n\n.table-reflow tr th,\n.table-reflow tr td {\n display: block !important;\n border: 1px solid #eceeef;\n}\n\n.form-control {\n display: block;\n width: 100%;\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n line-height: 1.5;\n color: #55595c;\n background-color: #fff;\n background-image: none;\n border: 1px solid #ccc;\n border-radius: 0.25rem;\n}\n\n.form-control::-ms-expand {\n background-color: transparent;\n border: 0;\n}\n\n.form-control:focus {\n border-color: #66afe9;\n outline: none;\n}\n\n.form-control::placeholder {\n color: #999;\n opacity: 1;\n}\n\n.form-control:disabled, .form-control[readonly] {\n background-color: #eceeef;\n opacity: 1;\n}\n\n.form-control:disabled {\n cursor: not-allowed;\n}\n\n.form-control-file,\n.form-control-range {\n display: block;\n}\n\n.form-control-label {\n padding: 0.375rem 0.75rem;\n margin-bottom: 0;\n}\n\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n input[type=\"date\"].form-control,\n input[type=\"time\"].form-control,\n input[type=\"datetime-local\"].form-control,\n input[type=\"month\"].form-control {\n line-height: 2.25rem;\n }\n input[type=\"date\"].input-sm,\n .input-group-sm input[type=\"date\"].form-control,\n input[type=\"time\"].input-sm,\n .input-group-sm\n input[type=\"time\"].form-control,\n input[type=\"datetime-local\"].input-sm,\n .input-group-sm\n input[type=\"datetime-local\"].form-control,\n input[type=\"month\"].input-sm,\n .input-group-sm\n input[type=\"month\"].form-control {\n line-height: 1.8625rem;\n }\n input[type=\"date\"].input-lg,\n .input-group-lg input[type=\"date\"].form-control,\n input[type=\"time\"].input-lg,\n .input-group-lg\n input[type=\"time\"].form-control,\n input[type=\"datetime-local\"].input-lg,\n .input-group-lg\n input[type=\"datetime-local\"].form-control,\n input[type=\"month\"].input-lg,\n .input-group-lg\n input[type=\"month\"].form-control {\n line-height: 3.16666667rem;\n }\n}\n\n.form-control-static {\n min-height: 2.25rem;\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n margin-bottom: 0;\n}\n\n.form-control-static.form-control-sm, .form-control-static.form-control-lg {\n padding-right: 0;\n padding-left: 0;\n}\n\n.form-control-sm {\n padding: 0.275rem 0.75rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem;\n}\n\n.form-control-lg {\n padding: 0.75rem 1.25rem;\n font-size: 1.25rem;\n line-height: 1.33333333;\n border-radius: 0.3rem;\n}\n\n.form-group {\n margin-bottom: 1rem;\n}\n\n.radio,\n.checkbox {\n position: relative;\n display: block;\n margin-bottom: 0.75rem;\n}\n\n.radio label,\n.checkbox label {\n padding-left: 1.25rem;\n margin-bottom: 0;\n font-weight: normal;\n cursor: pointer;\n}\n\n.radio label input:only-child,\n.checkbox label input:only-child {\n position: static;\n}\n\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n position: absolute;\n margin-top: .25rem;\n margin-left: -1.25rem;\n}\n\n.radio + .radio,\n.checkbox + .checkbox {\n margin-top: -.25rem;\n}\n\n.radio-inline,\n.checkbox-inline {\n position: relative;\n display: inline-block;\n padding-left: 1.25rem;\n margin-bottom: 0;\n font-weight: normal;\n vertical-align: middle;\n cursor: pointer;\n}\n\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n margin-top: 0;\n margin-left: .75rem;\n}\n\ninput[type=\"radio\"]:disabled, input[type=\"radio\"].disabled,\ninput[type=\"checkbox\"]:disabled,\ninput[type=\"checkbox\"].disabled {\n cursor: not-allowed;\n}\n\n.radio-inline.disabled,\n.checkbox-inline.disabled {\n cursor: not-allowed;\n}\n\n.radio.disabled label,\n.checkbox.disabled label {\n cursor: not-allowed;\n}\n\n.form-control-success,\n.form-control-warning,\n.form-control-danger {\n padding-right: 2.25rem;\n background-repeat: no-repeat;\n background-position: center right 0.5625rem;\n background-size: 1.4625rem 1.4625rem;\n}\n\n.has-success .text-help,\n.has-success .form-control-label,\n.has-success .radio,\n.has-success .checkbox,\n.has-success .radio-inline,\n.has-success .checkbox-inline,\n.has-success.radio label,\n.has-success.checkbox label,\n.has-success.radio-inline label,\n.has-success.checkbox-inline label {\n color: #5cb85c;\n}\n\n.has-success .form-control {\n border-color: #5cb85c;\n}\n\n.has-success .input-group-addon {\n color: #5cb85c;\n border-color: #5cb85c;\n background-color: #eaf6ea;\n}\n\n.has-success .form-control-feedback {\n color: #5cb85c;\n}\n\n.has-success .form-control-success {\n background-image: url(\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2MTIgNzkyIj48cGF0aCBmaWxsPSIjNWNiODVjIiBkPSJNMjMzLjggNjEwYy0xMy4zIDAtMjYtNi0zNC0xNi44TDkwLjUgNDQ4LjhDNzYuMyA0MzAgODAgNDAzLjMgOTguOCAzODljMTguOC0xNC4yIDQ1LjUtMTAuNCA1OS44IDguNGw3MiA5NUw0NTEuMyAyNDJjMTIuNS0yMCAzOC44LTI2LjIgNTguOC0xMy43IDIwIDEyLjQgMjYgMzguNyAxMy43IDU4LjhMMjcwIDU5MGMtNy40IDEyLTIwLjIgMTkuNC0zNC4zIDIwaC0yeiIvPjwvc3ZnPg==\");\n}\n\n.has-warning .text-help,\n.has-warning .form-control-label,\n.has-warning .radio,\n.has-warning .checkbox,\n.has-warning .radio-inline,\n.has-warning .checkbox-inline,\n.has-warning.radio label,\n.has-warning.checkbox label,\n.has-warning.radio-inline label,\n.has-warning.checkbox-inline label {\n color: #f0ad4e;\n}\n\n.has-warning .form-control {\n border-color: #f0ad4e;\n}\n\n.has-warning .input-group-addon {\n color: #f0ad4e;\n border-color: #f0ad4e;\n background-color: white;\n}\n\n.has-warning .form-control-feedback {\n color: #f0ad4e;\n}\n\n.has-warning .form-control-warning {\n background-image: url(\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2MTIgNzkyIj48cGF0aCBmaWxsPSIjZjBhZDRlIiBkPSJNNjAzIDY0MC4ybC0yNzguNS01MDljLTMuOC02LjYtMTAuOC0xMC42LTE4LjUtMTAuNnMtMTQuNyA0LTE4LjUgMTAuNkw5IDY0MC4yYy0zLjcgNi41LTMuNiAxNC40LjIgMjAuOCAzLjggNi41IDEwLjggMTAuNCAxOC4zIDEwLjRoNTU3YzcuNiAwIDE0LjYtNCAxOC40LTEwLjQgMy41LTYuNCAzLjYtMTQuNCAwLTIwLjh6bS0yNjYuNC0zMGgtNjEuMlY1NDloNjEuMnY2MS4yem0wLTEwN2gtNjEuMlYzMDRoNjEuMnYxOTl6Ii8+PC9zdmc+\");\n}\n\n.has-danger .text-help,\n.has-danger .form-control-label,\n.has-danger .radio,\n.has-danger .checkbox,\n.has-danger .radio-inline,\n.has-danger .checkbox-inline,\n.has-danger.radio label,\n.has-danger.checkbox label,\n.has-danger.radio-inline label,\n.has-danger.checkbox-inline label {\n color: #d9534f;\n}\n\n.has-danger .form-control {\n border-color: #d9534f;\n}\n\n.has-danger .input-group-addon {\n color: #d9534f;\n border-color: #d9534f;\n background-color: #fdf7f7;\n}\n\n.has-danger .form-control-feedback {\n color: #d9534f;\n}\n\n.has-danger .form-control-danger {\n background-image: url(\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2MTIgNzkyIj48cGF0aCBmaWxsPSIjZDk1MzRmIiBkPSJNNDQ3IDU0NC40Yy0xNC40IDE0LjQtMzcuNiAxNC40LTUyIDBsLTg5LTkyLjctODkgOTIuN2MtMTQuNSAxNC40LTM3LjcgMTQuNC01MiAwLTE0LjQtMTQuNC0xNC40LTM3LjYgMC01Mmw5Mi40LTk2LjMtOTIuNC05Ni4zYy0xNC40LTE0LjQtMTQuNC0zNy42IDAtNTJzMzcuNi0xNC4zIDUyIDBsODkgOTIuOCA4OS4yLTkyLjdjMTQuNC0xNC40IDM3LjYtMTQuNCA1MiAwIDE0LjMgMTQuNCAxNC4zIDM3LjYgMCA1MkwzNTQuNiAzOTZsOTIuNCA5Ni40YzE0LjQgMTQuNCAxNC40IDM3LjYgMCA1MnoiLz48L3N2Zz4=\");\n}\n\n@media (min-width: 544px) {\n .form-inline .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .form-inline .form-control-static {\n display: inline-block;\n }\n .form-inline .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .form-inline .input-group .input-group-addon,\n .form-inline .input-group .input-group-btn,\n .form-inline .input-group .form-control {\n width: auto;\n }\n .form-inline .input-group > .form-control {\n width: 100%;\n }\n .form-inline .form-control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio,\n .form-inline .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio label,\n .form-inline .checkbox label {\n padding-left: 0;\n }\n .form-inline .radio input[type=\"radio\"],\n .form-inline .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .form-inline .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n\n.dropup,\n.dropdown {\n position: relative;\n}\n\n.dropdown-toggle::after {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: .25rem;\n margin-left: .25rem;\n vertical-align: middle;\n content: \"\";\n border-top: 0.3em solid;\n border-right: 0.3em solid transparent;\n border-left: 0.3em solid transparent;\n}\n\n.dropdown-toggle:focus {\n outline: 0;\n}\n\n.dropup .dropdown-toggle::after {\n border-top: 0;\n border-bottom: 0.3em solid;\n}\n\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0;\n font-size: 1rem;\n color: #373a3c;\n text-align: left;\n list-style: none;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0.25rem;\n}\n\n.dropdown-divider {\n height: 1px;\n margin: 0.5rem 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n\n.dropdown-item {\n display: block;\n width: 100%;\n padding: 3px 20px;\n clear: both;\n font-weight: normal;\n line-height: 1.5;\n color: #373a3c;\n text-align: inherit;\n white-space: nowrap;\n background: none;\n border: 0;\n}\n\n.dropdown-item:focus, .dropdown-item:hover {\n color: #2b2d2f;\n text-decoration: none;\n background-color: #f5f5f5;\n}\n\n.dropdown-item.active, .dropdown-item.active:focus, .dropdown-item.active:hover {\n color: #fff;\n text-decoration: none;\n background-color: #0275d8;\n outline: 0;\n}\n\n.dropdown-item.disabled, .dropdown-item.disabled:focus, .dropdown-item.disabled:hover {\n color: #818a91;\n}\n\n.dropdown-item.disabled:focus, .dropdown-item.disabled:hover {\n text-decoration: none;\n cursor: not-allowed;\n background-color: transparent;\n background-image: none;\n filter: \"progid:DXImageTransform.Microsoft.gradient(enabled = false)\";\n}\n\n.open > .dropdown-menu {\n display: block;\n}\n\n.open > a {\n outline: 0;\n}\n\n.dropdown-menu-right {\n right: 0;\n left: auto;\n}\n\n.dropdown-menu-left {\n right: auto;\n left: 0;\n}\n\n.dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: 0.875rem;\n line-height: 1.5;\n color: #818a91;\n white-space: nowrap;\n}\n\n.dropdown-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 990;\n}\n\n.pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n}\n\n.dropup .caret,\n.navbar-fixed-bottom .dropdown .caret {\n content: \"\";\n border-top: 0;\n border-bottom: 0.3em solid;\n}\n\n.dropup .dropdown-menu,\n.navbar-fixed-bottom .dropdown .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 2px;\n}\n\n.nav {\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n\n.nav-link {\n display: inline-block;\n}\n\n.nav-link:focus, .nav-link:hover {\n text-decoration: none;\n}\n\n.nav-link.disabled {\n color: #818a91;\n}\n\n.nav-link.disabled, .nav-link.disabled:focus, .nav-link.disabled:hover {\n color: #818a91;\n cursor: not-allowed;\n background-color: transparent;\n}\n\n.nav-inline .nav-item {\n display: inline-block;\n}\n\n.nav-inline .nav-item + .nav-item,\n.nav-inline .nav-link + .nav-link {\n margin-left: 1rem;\n}\n\n.nav-tabs {\n border-bottom: 1px solid #ddd;\n}\n\n.nav-tabs::after {\n content: \"\";\n display: table;\n clear: both;\n}\n\n.nav-tabs .nav-item {\n float: left;\n margin-bottom: -1px;\n}\n\n.nav-tabs .nav-item + .nav-item {\n margin-left: .2rem;\n}\n\n.nav-tabs .nav-link {\n display: block;\n padding: 0.5em 1em;\n border: 1px solid transparent;\n border-radius: 0.25rem 0.25rem 0 0;\n}\n\n.nav-tabs .nav-link:focus, .nav-tabs .nav-link:hover {\n border-color: #eceeef #eceeef #ddd;\n}\n\n.nav-tabs .nav-link.disabled, .nav-tabs .nav-link.disabled:focus, .nav-tabs .nav-link.disabled:hover {\n color: #818a91;\n background-color: transparent;\n border-color: transparent;\n}\n\n.nav-tabs .nav-link.active, .nav-tabs .nav-link.active:focus, .nav-tabs .nav-link.active:hover,\n.nav-tabs .nav-item.open .nav-link,\n.nav-tabs .nav-item.open .nav-link:focus,\n.nav-tabs .nav-item.open .nav-link:hover {\n color: #55595c;\n background-color: #fff;\n border-color: #ddd #ddd transparent;\n}\n\n.nav-pills::after {\n content: \"\";\n display: table;\n clear: both;\n}\n\n.nav-pills .nav-item {\n float: left;\n}\n\n.nav-pills .nav-item + .nav-item {\n margin-left: .2rem;\n}\n\n.nav-pills .nav-link {\n display: block;\n padding: 0.5em 1em;\n border-radius: 0.25rem;\n}\n\n.nav-pills .nav-link.active, .nav-pills .nav-link.active:focus, .nav-pills .nav-link.active:hover,\n.nav-pills .nav-item.open .nav-link,\n.nav-pills .nav-item.open .nav-link:focus,\n.nav-pills .nav-item.open .nav-link:hover {\n color: #fff;\n cursor: default;\n background-color: #0275d8;\n}\n\n.nav-stacked .nav-item {\n display: block;\n float: none;\n}\n\n.nav-stacked .nav-item + .nav-item {\n margin-top: .2rem;\n margin-left: 0;\n}\n\n.tab-content > .tab-pane {\n display: none;\n}\n\n.tab-content > .active {\n display: block;\n}\n\n.nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n\n.card {\n position: relative;\n display: block;\n margin-bottom: 0.75rem;\n background-color: #fff;\n border: 1px solid #e5e5e5;\n border-radius: 0.25rem;\n}\n\n.card-block {\n padding: 1.25rem;\n}\n\n.card-title {\n margin-bottom: 0.75rem;\n}\n\n.card-subtitle {\n margin-top: -0.375rem;\n margin-bottom: 0;\n}\n\n.card-text:last-child {\n margin-bottom: 0;\n}\n\n.card-link:hover {\n text-decoration: none;\n}\n\n.card-link + .card-link {\n margin-left: 1.25rem;\n}\n\n.card > .list-group:first-child .list-group-item:first-child {\n border-radius: 0.25rem 0.25rem 0 0;\n}\n\n.card > .list-group:last-child .list-group-item:last-child {\n border-radius: 0 0 0.25rem 0.25rem;\n}\n\n.card-header {\n padding: 0.75rem 1.25rem;\n background-color: #f5f5f5;\n border-bottom: 1px solid #e5e5e5;\n}\n\n.card-header:first-child {\n border-radius: 0.25rem 0.25rem 0 0;\n}\n\n.card-footer {\n padding: 0.75rem 1.25rem;\n background-color: #f5f5f5;\n border-top: 1px solid #e5e5e5;\n}\n\n.card-footer:last-child {\n border-radius: 0 0 0.25rem 0.25rem;\n}\n\n.card-primary {\n background-color: #0275d8;\n border-color: #0275d8;\n}\n\n.card-success {\n background-color: #5cb85c;\n border-color: #5cb85c;\n}\n\n.card-info {\n background-color: #5bc0de;\n border-color: #5bc0de;\n}\n\n.card-warning {\n background-color: #f0ad4e;\n border-color: #f0ad4e;\n}\n\n.card-danger {\n background-color: #d9534f;\n border-color: #d9534f;\n}\n\n.card-primary-outline {\n background-color: transparent;\n border-color: #0275d8;\n}\n\n.card-secondary-outline {\n background-color: transparent;\n border-color: #ccc;\n}\n\n.card-info-outline {\n background-color: transparent;\n border-color: #5bc0de;\n}\n\n.card-success-outline {\n background-color: transparent;\n border-color: #5cb85c;\n}\n\n.card-warning-outline {\n background-color: transparent;\n border-color: #f0ad4e;\n}\n\n.card-danger-outline {\n background-color: transparent;\n border-color: #d9534f;\n}\n\n.card-inverse .card-header,\n.card-inverse .card-footer {\n border-bottom: 1px solid rgba(255, 255, 255, 0.2);\n}\n\n.card-inverse .card-header,\n.card-inverse .card-footer,\n.card-inverse .card-title,\n.card-inverse .card-blockquote {\n color: #fff;\n}\n\n.card-inverse .card-link,\n.card-inverse .card-text,\n.card-inverse .card-blockquote > footer {\n color: rgba(255, 255, 255, 0.65);\n}\n\n.card-inverse .card-link:focus, .card-inverse .card-link:hover {\n color: #fff;\n}\n\n.card-blockquote {\n padding: 0;\n margin-bottom: 0;\n border-left: 0;\n}\n\n.card-img {\n border-radius: 0.25rem;\n}\n\n.card-img-overlay {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n padding: 1.25rem;\n}\n\n.card-img-top {\n border-radius: 0.25rem 0.25rem 0 0;\n}\n\n.card-img-bottom {\n border-radius: 0 0 0.25rem 0.25rem;\n}\n\n@media (min-width: 544px) {\n .card-deck {\n display: flex;\n flex-flow: row wrap;\n margin-right: -.625rem;\n margin-left: -.625rem;\n }\n .card-deck .card {\n flex: 1 0 0;\n margin-right: .625rem;\n margin-left: .625rem;\n }\n}\n\n@media (min-width: 544px) {\n .card-group {\n display: flex;\n flex-flow: row wrap;\n }\n .card-group .card {\n flex: 1 0 0;\n }\n .card-group .card + .card {\n margin-left: 0;\n border-left: 0;\n }\n .card-group .card:first-child {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n }\n .card-group .card:first-child .card-img-top {\n border-top-right-radius: 0;\n }\n .card-group .card:first-child .card-img-bottom {\n border-bottom-right-radius: 0;\n }\n .card-group .card:last-child {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n }\n .card-group .card:last-child .card-img-top {\n border-top-left-radius: 0;\n }\n .card-group .card:last-child .card-img-bottom {\n border-bottom-left-radius: 0;\n }\n .card-group .card:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n .card-group .card:not(:first-child):not(:last-child) .card-img-top,\n .card-group .card:not(:first-child):not(:last-child) .card-img-bottom {\n border-radius: 0;\n }\n}\n\n@media (min-width: 544px) {\n .card-columns {\n column-count: 3;\n column-gap: 1.25rem;\n }\n .card-columns .card {\n display: inline-block;\n width: 100%;\n }\n}\n\n.pagination {\n display: inline-block;\n padding-left: 0;\n margin-top: 1rem;\n margin-bottom: 1rem;\n border-radius: 0.25rem;\n}\n\n.page-item {\n display: inline;\n}\n\n.page-item:first-child .page-link {\n margin-left: 0;\n border-bottom-left-radius: 0.25rem;\n border-top-left-radius: 0.25rem;\n}\n\n.page-item:last-child .page-link {\n border-bottom-right-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n\n.page-item.active .page-link, .page-item.active .page-link:focus, .page-item.active .page-link:hover {\n z-index: 2;\n color: #fff;\n cursor: default;\n background-color: #0275d8;\n border-color: #0275d8;\n}\n\n.page-item.disabled .page-link, .page-item.disabled .page-link:focus, .page-item.disabled .page-link:hover {\n color: #818a91;\n cursor: not-allowed;\n background-color: #fff;\n border-color: #ddd;\n}\n\n.page-link {\n position: relative;\n float: left;\n padding: 0.5rem 0.75rem;\n margin-left: -1px;\n line-height: 1.5;\n color: #0275d8;\n text-decoration: none;\n background-color: #fff;\n border: 1px solid #ddd;\n}\n\n.page-link:focus, .page-link:hover {\n color: #014c8c;\n background-color: #eceeef;\n border-color: #ddd;\n}\n\n.pagination-lg .page-link {\n padding: 0.75rem 1.5rem;\n font-size: 1.25rem;\n line-height: 1.33333333;\n}\n\n.pagination-lg .page-item:first-child .page-link {\n border-bottom-left-radius: 0.3rem;\n border-top-left-radius: 0.3rem;\n}\n\n.pagination-lg .page-item:last-child .page-link {\n border-bottom-right-radius: 0.3rem;\n border-top-right-radius: 0.3rem;\n}\n\n.pagination-sm .page-link {\n padding: 0.275rem 0.75rem;\n font-size: 0.875rem;\n line-height: 1.5;\n}\n\n.pagination-sm .page-item:first-child .page-link {\n border-bottom-left-radius: 0.2rem;\n border-top-left-radius: 0.2rem;\n}\n\n.pagination-sm .page-item:last-child .page-link {\n border-bottom-right-radius: 0.2rem;\n border-top-right-radius: 0.2rem;\n}\n\n.alert {\n padding: 15px;\n margin-bottom: 1rem;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n}\n\n.alert > p,\n.alert > ul {\n margin-bottom: 0;\n}\n\n.alert > p + p {\n margin-top: 5px;\n}\n\n.alert-heading {\n color: inherit;\n}\n\n.alert-link {\n font-weight: bold;\n}\n\n.alert-dismissible {\n padding-right: 35px;\n}\n\n.alert-dismissible .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n}\n\n.alert-success {\n background-color: #dff0d8;\n border-color: #d0e9c6;\n color: #3c763d;\n}\n\n.alert-success hr {\n border-top-color: #c1e2b3;\n}\n\n.alert-success .alert-link {\n color: #2b542c;\n}\n\n.alert-info {\n background-color: #d9edf7;\n border-color: #bcdff1;\n color: #31708f;\n}\n\n.alert-info hr {\n border-top-color: #a6d5ec;\n}\n\n.alert-info .alert-link {\n color: #245269;\n}\n\n.alert-warning {\n background-color: #fcf8e3;\n border-color: #faf2cc;\n color: #8a6d3b;\n}\n\n.alert-warning hr {\n border-top-color: #f7ecb5;\n}\n\n.alert-warning .alert-link {\n color: #66512c;\n}\n\n.alert-danger {\n background-color: #f2dede;\n border-color: #ebcccc;\n color: #a94442;\n}\n\n.alert-danger hr {\n border-top-color: #e4b9b9;\n}\n\n.alert-danger .alert-link {\n color: #843534;\n}\n\n.close {\n float: right;\n font-size: 1.5rem;\n font-weight: bold;\n line-height: 1;\n color: #000;\n text-shadow: 0 1px 0 #fff;\n opacity: .2;\n}\n\n.close:focus, .close:hover {\n color: #000;\n text-decoration: none;\n cursor: pointer;\n opacity: .5;\n}\n\nbutton.close {\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n}\n\n.modal-open {\n overflow: hidden;\n}\n\n.modal {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1050;\n display: none;\n overflow: hidden;\n outline: 0;\n -webkit-overflow-scrolling: touch;\n}\n\n.modal.fade .modal-dialog {\n transition: transform .3s ease-out;\n transform: translate(0, -25%);\n}\n\n.modal.in .modal-dialog {\n transform: translate(0, 0);\n}\n\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n}\n\n.modal-content {\n position: relative;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 0.3rem;\n outline: 0;\n}\n\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1040;\n background-color: #000;\n}\n\n.modal-backdrop.fade {\n opacity: 0;\n}\n\n.modal-backdrop.in {\n opacity: 0.5;\n}\n\n.modal-header {\n padding: 15px;\n border-bottom: 1px solid #e5e5e5;\n}\n\n.modal-header::after {\n content: \"\";\n display: table;\n clear: both;\n}\n\n.modal-header .close {\n margin-top: -2px;\n}\n\n.modal-title {\n margin: 0;\n line-height: 1.5;\n}\n\n.modal-body {\n position: relative;\n padding: 15px;\n}\n\n.modal-footer {\n padding: 15px;\n text-align: right;\n border-top: 1px solid #e5e5e5;\n}\n\n.modal-footer::after {\n content: \"\";\n display: table;\n clear: both;\n}\n\n.modal-footer .btn + .btn {\n margin-bottom: 0;\n margin-left: 5px;\n}\n\n.modal-footer .btn-group .btn + .btn {\n margin-left: -1px;\n}\n\n.modal-footer .btn-block + .btn-block {\n margin-left: 0;\n}\n\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n\n@media (min-width: 544px) {\n .modal-dialog {\n width: 600px;\n margin: 30px auto;\n }\n .modal-sm {\n width: 300px;\n }\n}\n\n@media (min-width: 768px) {\n .modal-lg {\n width: 900px;\n }\n}\n\n.hidden-xs-up {\n display: none !important;\n}\n\n@media (max-width: 543px) {\n .hidden-xs-down {\n display: none !important;\n }\n}\n\n@media (min-width: 544px) {\n .hidden-sm-up {\n display: none !important;\n }\n}\n\n@media (max-width: 767px) {\n .hidden-sm-down {\n display: none !important;\n }\n}\n\n@media (min-width: 768px) {\n .hidden-md-up {\n display: none !important;\n }\n}\n\n@media (max-width: 991px) {\n .hidden-md-down {\n display: none !important;\n }\n}\n\n@media (min-width: 992px) {\n .hidden-lg-up {\n display: none !important;\n }\n}\n\n@media (max-width: 1199px) {\n .hidden-lg-down {\n display: none !important;\n }\n}\n\n@media (min-width: 1200px) {\n .hidden-xl-up {\n display: none !important;\n }\n}\n\n.hidden-xl-down {\n display: none !important;\n}\n\n.visible-print-block {\n display: none !important;\n}\n\n@media print {\n .visible-print-block {\n display: block !important;\n }\n}\n\n.visible-print-inline {\n display: none !important;\n}\n\n@media print {\n .visible-print-inline {\n display: inline !important;\n }\n}\n\n.visible-print-inline-block {\n display: none !important;\n}\n\n@media print {\n .visible-print-inline-block {\n display: inline-block !important;\n }\n}\n\n@media print {\n .hidden-print {\n display: none !important;\n }\n}\n\n/*! Hint.css - v2.5.0 - 2017-04-23\n* http://kushagragour.in/lab/hint/\n* Copyright (c) 2017 Kushagra Gour */\n[class*=hint--] {\n position: relative;\n display: inline-block;\n}\n\n[class*=hint--]:after, [class*=hint--]:before {\n position: absolute;\n -webkit-transform: translate3d(0, 0, 0);\n -moz-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n visibility: hidden;\n opacity: 0;\n z-index: 1000000;\n pointer-events: none;\n -webkit-transition: .3s ease;\n -moz-transition: .3s ease;\n transition: .3s ease;\n -webkit-transition-delay: 0s;\n -moz-transition-delay: 0s;\n transition-delay: 0s;\n}\n\n[class*=hint--]:hover:after, [class*=hint--]:hover:before {\n visibility: visible;\n opacity: 1;\n -webkit-transition-delay: .1s;\n -moz-transition-delay: .1s;\n transition-delay: .1s;\n}\n\n[class*=hint--]:before {\n content: '';\n position: absolute;\n background: 0 0;\n border: 6px solid transparent;\n z-index: 1000001;\n}\n\n[class*=hint--]:after {\n background: #383838;\n color: #fff;\n padding: 8px 10px;\n font-size: 12px;\n font-family: \"Helvetica Neue\",Helvetica,Arial,sans-serif;\n line-height: 12px;\n white-space: nowrap;\n text-shadow: 0 -1px 0 #000;\n box-shadow: 4px 4px 8px rgba(0, 0, 0, 0.3);\n}\n\n[class*=hint--][aria-label]:after {\n content: attr(aria-label);\n}\n\n[class*=hint--][data-hint]:after {\n content: attr(data-hint);\n}\n\n[aria-label='']:after, [aria-label='']:before, [data-hint='']:after, [data-hint='']:before {\n display: none !important;\n}\n\n.hint--top-left:before, .hint--top-right:before, .hint--top:before {\n border-top-color: #383838;\n}\n\n.hint--bottom-left:before, .hint--bottom-right:before, .hint--bottom:before {\n border-bottom-color: #383838;\n}\n\n.hint--top:after, .hint--top:before {\n bottom: 100%;\n left: 50%;\n}\n\n.hint--top:before {\n margin-bottom: -11px;\n left: calc(50% - 6px);\n}\n\n.hint--top:after {\n -webkit-transform: translateX(-50%);\n -moz-transform: translateX(-50%);\n transform: translateX(-50%);\n}\n\n.hint--top:hover:before {\n -webkit-transform: translateY(-8px);\n -moz-transform: translateY(-8px);\n transform: translateY(-8px);\n}\n\n.hint--top:hover:after {\n -webkit-transform: translateX(-50%) translateY(-8px);\n -moz-transform: translateX(-50%) translateY(-8px);\n transform: translateX(-50%) translateY(-8px);\n}\n\n.hint--bottom:after, .hint--bottom:before {\n top: 100%;\n left: 50%;\n}\n\n.hint--bottom:before {\n margin-top: -11px;\n left: calc(50% - 6px);\n}\n\n.hint--bottom:after {\n -webkit-transform: translateX(-50%);\n -moz-transform: translateX(-50%);\n transform: translateX(-50%);\n}\n\n.hint--bottom:hover:before {\n -webkit-transform: translateY(8px);\n -moz-transform: translateY(8px);\n transform: translateY(8px);\n}\n\n.hint--bottom:hover:after {\n -webkit-transform: translateX(-50%) translateY(8px);\n -moz-transform: translateX(-50%) translateY(8px);\n transform: translateX(-50%) translateY(8px);\n}\n\n.hint--right:before {\n border-right-color: #383838;\n margin-left: -11px;\n margin-bottom: -6px;\n}\n\n.hint--right:after {\n margin-bottom: -14px;\n}\n\n.hint--right:after, .hint--right:before {\n left: 100%;\n bottom: 50%;\n}\n\n.hint--right:hover:after, .hint--right:hover:before {\n -webkit-transform: translateX(8px);\n -moz-transform: translateX(8px);\n transform: translateX(8px);\n}\n\n.hint--left:before {\n border-left-color: #383838;\n margin-right: -11px;\n margin-bottom: -6px;\n}\n\n.hint--left:after {\n margin-bottom: -14px;\n}\n\n.hint--left:after, .hint--left:before {\n right: 100%;\n bottom: 50%;\n}\n\n.hint--left:hover:after, .hint--left:hover:before {\n -webkit-transform: translateX(-8px);\n -moz-transform: translateX(-8px);\n transform: translateX(-8px);\n}\n\n.hint--top-left:after, .hint--top-left:before {\n bottom: 100%;\n left: 50%;\n}\n\n.hint--top-left:before {\n margin-bottom: -11px;\n left: calc(50% - 6px);\n}\n\n.hint--top-left:after {\n -webkit-transform: translateX(-100%);\n -moz-transform: translateX(-100%);\n transform: translateX(-100%);\n margin-left: 12px;\n}\n\n.hint--top-left:hover:before {\n -webkit-transform: translateY(-8px);\n -moz-transform: translateY(-8px);\n transform: translateY(-8px);\n}\n\n.hint--top-left:hover:after {\n -webkit-transform: translateX(-100%) translateY(-8px);\n -moz-transform: translateX(-100%) translateY(-8px);\n transform: translateX(-100%) translateY(-8px);\n}\n\n.hint--top-right:after, .hint--top-right:before {\n bottom: 100%;\n left: 50%;\n}\n\n.hint--top-right:before {\n margin-bottom: -11px;\n left: calc(50% - 6px);\n}\n\n.hint--top-right:after {\n -webkit-transform: translateX(0);\n -moz-transform: translateX(0);\n transform: translateX(0);\n margin-left: -12px;\n}\n\n.hint--top-right:hover:after, .hint--top-right:hover:before {\n -webkit-transform: translateY(-8px);\n -moz-transform: translateY(-8px);\n transform: translateY(-8px);\n}\n\n.hint--bottom-left:after, .hint--bottom-left:before {\n top: 100%;\n left: 50%;\n}\n\n.hint--bottom-left:before {\n margin-top: -11px;\n left: calc(50% - 6px);\n}\n\n.hint--bottom-left:after {\n -webkit-transform: translateX(-100%);\n -moz-transform: translateX(-100%);\n transform: translateX(-100%);\n margin-left: 12px;\n}\n\n.hint--bottom-left:hover:before {\n -webkit-transform: translateY(8px);\n -moz-transform: translateY(8px);\n transform: translateY(8px);\n}\n\n.hint--bottom-left:hover:after {\n -webkit-transform: translateX(-100%) translateY(8px);\n -moz-transform: translateX(-100%) translateY(8px);\n transform: translateX(-100%) translateY(8px);\n}\n\n.hint--bottom-right:after, .hint--bottom-right:before {\n top: 100%;\n left: 50%;\n}\n\n.hint--bottom-right:before {\n margin-top: -11px;\n left: calc(50% - 6px);\n}\n\n.hint--bottom-right:after {\n -webkit-transform: translateX(0);\n -moz-transform: translateX(0);\n transform: translateX(0);\n margin-left: -12px;\n}\n\n.hint--bottom-right:hover:after, .hint--bottom-right:hover:before {\n -webkit-transform: translateY(8px);\n -moz-transform: translateY(8px);\n transform: translateY(8px);\n}\n\n.hint--large:after, .hint--medium:after, .hint--small:after {\n white-space: normal;\n line-height: 1.4em;\n word-wrap: break-word;\n}\n\n.hint--small:after {\n width: 80px;\n}\n\n.hint--medium:after {\n width: 150px;\n}\n\n.hint--large:after {\n width: 300px;\n}\n\n.hint--error:after {\n background-color: #b34e4d;\n text-shadow: 0 -1px 0 #592726;\n}\n\n.hint--error.hint--top-left:before, .hint--error.hint--top-right:before, .hint--error.hint--top:before {\n border-top-color: #b34e4d;\n}\n\n.hint--error.hint--bottom-left:before, .hint--error.hint--bottom-right:before, .hint--error.hint--bottom:before {\n border-bottom-color: #b34e4d;\n}\n\n.hint--error.hint--left:before {\n border-left-color: #b34e4d;\n}\n\n.hint--error.hint--right:before {\n border-right-color: #b34e4d;\n}\n\n.hint--warning:after {\n background-color: #c09854;\n text-shadow: 0 -1px 0 #6c5328;\n}\n\n.hint--warning.hint--top-left:before, .hint--warning.hint--top-right:before, .hint--warning.hint--top:before {\n border-top-color: #c09854;\n}\n\n.hint--warning.hint--bottom-left:before, .hint--warning.hint--bottom-right:before, .hint--warning.hint--bottom:before {\n border-bottom-color: #c09854;\n}\n\n.hint--warning.hint--left:before {\n border-left-color: #c09854;\n}\n\n.hint--warning.hint--right:before {\n border-right-color: #c09854;\n}\n\n.hint--info:after {\n background-color: #3986ac;\n text-shadow: 0 -1px 0 #1a3c4d;\n}\n\n.hint--info.hint--top-left:before, .hint--info.hint--top-right:before, .hint--info.hint--top:before {\n border-top-color: #3986ac;\n}\n\n.hint--info.hint--bottom-left:before, .hint--info.hint--bottom-right:before, .hint--info.hint--bottom:before {\n border-bottom-color: #3986ac;\n}\n\n.hint--info.hint--left:before {\n border-left-color: #3986ac;\n}\n\n.hint--info.hint--right:before {\n border-right-color: #3986ac;\n}\n\n.hint--success:after {\n background-color: #458746;\n text-shadow: 0 -1px 0 #1a321a;\n}\n\n.hint--success.hint--top-left:before, .hint--success.hint--top-right:before, .hint--success.hint--top:before {\n border-top-color: #458746;\n}\n\n.hint--success.hint--bottom-left:before, .hint--success.hint--bottom-right:before, .hint--success.hint--bottom:before {\n border-bottom-color: #458746;\n}\n\n.hint--success.hint--left:before {\n border-left-color: #458746;\n}\n\n.hint--success.hint--right:before {\n border-right-color: #458746;\n}\n\n.hint--always:after, .hint--always:before {\n opacity: 1;\n visibility: visible;\n}\n\n.hint--always.hint--top:before {\n -webkit-transform: translateY(-8px);\n -moz-transform: translateY(-8px);\n transform: translateY(-8px);\n}\n\n.hint--always.hint--top:after {\n -webkit-transform: translateX(-50%) translateY(-8px);\n -moz-transform: translateX(-50%) translateY(-8px);\n transform: translateX(-50%) translateY(-8px);\n}\n\n.hint--always.hint--top-left:before {\n -webkit-transform: translateY(-8px);\n -moz-transform: translateY(-8px);\n transform: translateY(-8px);\n}\n\n.hint--always.hint--top-left:after {\n -webkit-transform: translateX(-100%) translateY(-8px);\n -moz-transform: translateX(-100%) translateY(-8px);\n transform: translateX(-100%) translateY(-8px);\n}\n\n.hint--always.hint--top-right:after, .hint--always.hint--top-right:before {\n -webkit-transform: translateY(-8px);\n -moz-transform: translateY(-8px);\n transform: translateY(-8px);\n}\n\n.hint--always.hint--bottom:before {\n -webkit-transform: translateY(8px);\n -moz-transform: translateY(8px);\n transform: translateY(8px);\n}\n\n.hint--always.hint--bottom:after {\n -webkit-transform: translateX(-50%) translateY(8px);\n -moz-transform: translateX(-50%) translateY(8px);\n transform: translateX(-50%) translateY(8px);\n}\n\n.hint--always.hint--bottom-left:before {\n -webkit-transform: translateY(8px);\n -moz-transform: translateY(8px);\n transform: translateY(8px);\n}\n\n.hint--always.hint--bottom-left:after {\n -webkit-transform: translateX(-100%) translateY(8px);\n -moz-transform: translateX(-100%) translateY(8px);\n transform: translateX(-100%) translateY(8px);\n}\n\n.hint--always.hint--bottom-right:after, .hint--always.hint--bottom-right:before {\n -webkit-transform: translateY(8px);\n -moz-transform: translateY(8px);\n transform: translateY(8px);\n}\n\n.hint--always.hint--left:after, .hint--always.hint--left:before {\n -webkit-transform: translateX(-8px);\n -moz-transform: translateX(-8px);\n transform: translateX(-8px);\n}\n\n.hint--always.hint--right:after, .hint--always.hint--right:before {\n -webkit-transform: translateX(8px);\n -moz-transform: translateX(8px);\n transform: translateX(8px);\n}\n\n.hint--rounded:after {\n border-radius: 4px;\n}\n\n.hint--no-animate:after, .hint--no-animate:before {\n -webkit-transition-duration: 0s;\n -moz-transition-duration: 0s;\n transition-duration: 0s;\n}\n\n.hint--bounce:after, .hint--bounce:before {\n -webkit-transition: opacity 0.3s ease, visibility 0.3s ease, -webkit-transform 0.3s cubic-bezier(0.71, 1.7, 0.77, 1.24);\n -moz-transition: opacity 0.3s ease, visibility 0.3s ease, -moz-transform 0.3s cubic-bezier(0.71, 1.7, 0.77, 1.24);\n transition: opacity 0.3s ease, visibility 0.3s ease, transform 0.3s cubic-bezier(0.71, 1.7, 0.77, 1.24);\n}\n\n/*! TACHYONS v4.9.0 | http://tachyons.io */\n/*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */\nhtml {\n line-height: 1.15;\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;\n}\n\nbody {\n margin: 0;\n}\n\narticle, aside, footer, header, nav, section {\n display: block;\n}\n\nh1 {\n font-size: 2em;\n margin: .67em 0;\n}\n\nfigcaption, figure, main {\n display: block;\n}\n\nfigure {\n margin: 1em 40px;\n}\n\nhr {\n box-sizing: content-box;\n height: 0;\n overflow: visible;\n}\n\npre {\n font-family: monospace,monospace;\n font-size: 1em;\n}\n\na {\n background-color: transparent;\n -webkit-text-decoration-skip: objects;\n}\n\nabbr[title] {\n border-bottom: none;\n text-decoration: underline;\n text-decoration: underline dotted;\n}\n\nb, strong {\n font-weight: inherit;\n font-weight: bolder;\n}\n\ncode, kbd, samp {\n font-family: monospace,monospace;\n font-size: 1em;\n}\n\ndfn {\n font-style: italic;\n}\n\nmark {\n background-color: #ff0;\n color: #000;\n}\n\nsmall {\n font-size: 80%;\n}\n\nsub, sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -.25em;\n}\n\nsup {\n top: -.5em;\n}\n\naudio, video {\n display: inline-block;\n}\n\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n\nimg {\n border-style: none;\n}\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\nbutton, input, optgroup, select, textarea {\n font-family: sans-serif;\n font-size: 100%;\n line-height: 1.15;\n margin: 0;\n}\n\nbutton, input {\n overflow: visible;\n}\n\nbutton, select {\n text-transform: none;\n}\n\n/* 1 */\n[type=reset], [type=submit], button, html [type=button] {\n -webkit-appearance: button;\n}\n\n[type=button]::-moz-focus-inner, [type=reset]::-moz-focus-inner, [type=submit]::-moz-focus-inner, button::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n[type=button]:-moz-focusring, [type=reset]:-moz-focusring, [type=submit]:-moz-focusring, button:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\nfieldset {\n padding: .35em .75em .625em;\n}\n\nlegend {\n box-sizing: border-box;\n color: inherit;\n display: table;\n max-width: 100%;\n padding: 0;\n white-space: normal;\n}\n\nprogress {\n display: inline-block;\n vertical-align: baseline;\n}\n\ntextarea {\n overflow: auto;\n}\n\n[type=checkbox], [type=radio] {\n box-sizing: border-box;\n padding: 0;\n}\n\n[type=number]::-webkit-inner-spin-button, [type=number]::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type=search] {\n -webkit-appearance: textfield;\n outline-offset: -2px;\n}\n\n[type=search]::-webkit-search-cancel-button, [type=search]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n::-webkit-file-upload-button {\n -webkit-appearance: button;\n font: inherit;\n}\n\n/* 1 */\nmenu, details {\n display: block;\n}\n\nsummary {\n display: list-item;\n}\n\ncanvas {\n display: inline-block;\n}\n\n[hidden], template {\n display: none;\n}\n\n.border-box, a, article, aside, blockquote, body, code, dd, div, dl, dt, fieldset, figcaption, figure, footer, form, h1, h2, h3, h4, h5, h6, header, html, input[type=email], input[type=number], input[type=password], input[type=tel], input[type=text], input[type=url], legend, li, main, nav, ol, p, pre, section, table, td, textarea, th, tr, ul {\n box-sizing: border-box;\n}\n\n.aspect-ratio {\n height: 0;\n position: relative;\n}\n\n.aspect-ratio--16x9 {\n padding-bottom: 56.25%;\n}\n\n.aspect-ratio--9x16 {\n padding-bottom: 177.77%;\n}\n\n.aspect-ratio--4x3 {\n padding-bottom: 75%;\n}\n\n.aspect-ratio--3x4 {\n padding-bottom: 133.33%;\n}\n\n.aspect-ratio--6x4 {\n padding-bottom: 66.6%;\n}\n\n.aspect-ratio--4x6 {\n padding-bottom: 150%;\n}\n\n.aspect-ratio--8x5 {\n padding-bottom: 62.5%;\n}\n\n.aspect-ratio--5x8 {\n padding-bottom: 160%;\n}\n\n.aspect-ratio--7x5 {\n padding-bottom: 71.42%;\n}\n\n.aspect-ratio--5x7 {\n padding-bottom: 140%;\n}\n\n.aspect-ratio--1x1 {\n padding-bottom: 100%;\n}\n\n.aspect-ratio--object {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 100;\n}\n\nimg {\n max-width: 100%;\n}\n\n.cover {\n background-size: cover !important;\n}\n\n.contain {\n background-size: contain !important;\n}\n\n.bg-center {\n background-position: 50%;\n}\n\n.bg-center, .bg-top {\n background-repeat: no-repeat;\n}\n\n.bg-top {\n background-position: top;\n}\n\n.bg-right {\n background-position: 100%;\n}\n\n.bg-bottom, .bg-right {\n background-repeat: no-repeat;\n}\n\n.bg-bottom {\n background-position: bottom;\n}\n\n.bg-left {\n background-repeat: no-repeat;\n background-position: 0;\n}\n\n.outline {\n outline: 1px solid;\n}\n\n.outline-transparent {\n outline: 1px solid transparent;\n}\n\n.outline-0 {\n outline: 0;\n}\n\n.ba {\n border-style: solid;\n border-width: 1px;\n}\n\n.bt {\n border-top-style: solid;\n border-top-width: 1px;\n}\n\n.br {\n border-right-style: solid;\n border-right-width: 1px;\n}\n\n.bb {\n border-bottom-style: solid;\n border-bottom-width: 1px;\n}\n\n.bl {\n border-left-style: solid;\n border-left-width: 1px;\n}\n\n.bn {\n border-style: none;\n border-width: 0;\n}\n\n.b--black {\n border-color: #000;\n}\n\n.b--near-black {\n border-color: #111;\n}\n\n.b--dark-gray {\n border-color: #333;\n}\n\n.b--mid-gray {\n border-color: #555;\n}\n\n.b--gray {\n border-color: #777;\n}\n\n.b--silver {\n border-color: #999;\n}\n\n.b--light-silver {\n border-color: #aaa;\n}\n\n.b--moon-gray {\n border-color: #ccc;\n}\n\n.b--light-gray {\n border-color: #eee;\n}\n\n.b--near-white {\n border-color: #f4f4f4;\n}\n\n.b--white {\n border-color: #fff;\n}\n\n.b--white-90 {\n border-color: rgba(255, 255, 255, 0.9);\n}\n\n.b--white-80 {\n border-color: rgba(255, 255, 255, 0.8);\n}\n\n.b--white-70 {\n border-color: rgba(255, 255, 255, 0.7);\n}\n\n.b--white-60 {\n border-color: rgba(255, 255, 255, 0.6);\n}\n\n.b--white-50 {\n border-color: rgba(255, 255, 255, 0.5);\n}\n\n.b--white-40 {\n border-color: rgba(255, 255, 255, 0.4);\n}\n\n.b--white-30 {\n border-color: rgba(255, 255, 255, 0.3);\n}\n\n.b--white-20 {\n border-color: rgba(255, 255, 255, 0.2);\n}\n\n.b--white-10 {\n border-color: rgba(255, 255, 255, 0.1);\n}\n\n.b--white-05 {\n border-color: rgba(255, 255, 255, 0.05);\n}\n\n.b--white-025 {\n border-color: rgba(255, 255, 255, 0.025);\n}\n\n.b--white-0125 {\n border-color: rgba(255, 255, 255, 0.0125);\n}\n\n.b--black-90 {\n border-color: rgba(0, 0, 0, 0.9);\n}\n\n.b--black-80 {\n border-color: rgba(0, 0, 0, 0.8);\n}\n\n.b--black-70 {\n border-color: rgba(0, 0, 0, 0.7);\n}\n\n.b--black-60 {\n border-color: rgba(0, 0, 0, 0.6);\n}\n\n.b--black-50 {\n border-color: rgba(0, 0, 0, 0.5);\n}\n\n.b--black-40 {\n border-color: rgba(0, 0, 0, 0.4);\n}\n\n.b--black-30 {\n border-color: rgba(0, 0, 0, 0.3);\n}\n\n.b--black-20 {\n border-color: rgba(0, 0, 0, 0.2);\n}\n\n.b--black-10 {\n border-color: rgba(0, 0, 0, 0.1);\n}\n\n.b--black-05 {\n border-color: rgba(0, 0, 0, 0.05);\n}\n\n.b--black-025 {\n border-color: rgba(0, 0, 0, 0.025);\n}\n\n.b--black-0125 {\n border-color: rgba(0, 0, 0, 0.0125);\n}\n\n.b--dark-red {\n border-color: #e7040f;\n}\n\n.b--red {\n border-color: #ff4136;\n}\n\n.b--light-red {\n border-color: #ff725c;\n}\n\n.b--orange {\n border-color: #ff6300;\n}\n\n.b--gold {\n border-color: #ffb700;\n}\n\n.b--yellow {\n border-color: gold;\n}\n\n.b--light-yellow {\n border-color: #fbf1a9;\n}\n\n.b--purple {\n border-color: #5e2ca5;\n}\n\n.b--light-purple {\n border-color: #a463f2;\n}\n\n.b--dark-pink {\n border-color: #d5008f;\n}\n\n.b--hot-pink {\n border-color: #ff41b4;\n}\n\n.b--pink {\n border-color: #ff80cc;\n}\n\n.b--light-pink {\n border-color: #ffa3d7;\n}\n\n.b--dark-green {\n border-color: #137752;\n}\n\n.b--green {\n border-color: #19a974;\n}\n\n.b--light-green {\n border-color: #9eebcf;\n}\n\n.b--navy {\n border-color: #001b44;\n}\n\n.b--dark-blue {\n border-color: #00449e;\n}\n\n.b--blue {\n border-color: #357edd;\n}\n\n.b--light-blue {\n border-color: #96ccff;\n}\n\n.b--lightest-blue {\n border-color: #cdecff;\n}\n\n.b--washed-blue {\n border-color: #f6fffe;\n}\n\n.b--washed-green {\n border-color: #e8fdf5;\n}\n\n.b--washed-yellow {\n border-color: #fffceb;\n}\n\n.b--washed-red {\n border-color: #ffdfdf;\n}\n\n.b--transparent {\n border-color: transparent;\n}\n\n.b--inherit {\n border-color: inherit;\n}\n\n.br0 {\n border-radius: 0;\n}\n\n.br1 {\n border-radius: .125rem;\n}\n\n.br2 {\n border-radius: .25rem;\n}\n\n.br3 {\n border-radius: .5rem;\n}\n\n.br4 {\n border-radius: 1rem;\n}\n\n.br-100 {\n border-radius: 100%;\n}\n\n.br-pill {\n border-radius: 9999px;\n}\n\n.br--bottom {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.br--top {\n border-bottom-right-radius: 0;\n}\n\n.br--right, .br--top {\n border-bottom-left-radius: 0;\n}\n\n.br--right {\n border-top-left-radius: 0;\n}\n\n.br--left {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.b--dotted {\n border-style: dotted;\n}\n\n.b--dashed {\n border-style: dashed;\n}\n\n.b--solid {\n border-style: solid;\n}\n\n.b--none {\n border-style: none;\n}\n\n.bw0 {\n border-width: 0;\n}\n\n.bw1 {\n border-width: .125rem;\n}\n\n.bw2 {\n border-width: .25rem;\n}\n\n.bw3 {\n border-width: .5rem;\n}\n\n.bw4 {\n border-width: 1rem;\n}\n\n.bw5 {\n border-width: 2rem;\n}\n\n.bt-0 {\n border-top-width: 0;\n}\n\n.br-0 {\n border-right-width: 0;\n}\n\n.bb-0 {\n border-bottom-width: 0;\n}\n\n.bl-0 {\n border-left-width: 0;\n}\n\n.shadow-1 {\n box-shadow: 0 0 4px 2px rgba(0, 0, 0, 0.2);\n}\n\n.shadow-2 {\n box-shadow: 0 0 8px 2px rgba(0, 0, 0, 0.2);\n}\n\n.shadow-3 {\n box-shadow: 2px 2px 4px 2px rgba(0, 0, 0, 0.2);\n}\n\n.shadow-4 {\n box-shadow: 2px 2px 8px 0 rgba(0, 0, 0, 0.2);\n}\n\n.shadow-5 {\n box-shadow: 4px 4px 8px 0 rgba(0, 0, 0, 0.2);\n}\n\n.pre {\n overflow-x: auto;\n overflow-y: hidden;\n overflow: scroll;\n}\n\n.top-0 {\n top: 0;\n}\n\n.right-0 {\n right: 0;\n}\n\n.bottom-0 {\n bottom: 0;\n}\n\n.left-0 {\n left: 0;\n}\n\n.top-1 {\n top: 1rem;\n}\n\n.right-1 {\n right: 1rem;\n}\n\n.bottom-1 {\n bottom: 1rem;\n}\n\n.left-1 {\n left: 1rem;\n}\n\n.top-2 {\n top: 2rem;\n}\n\n.right-2 {\n right: 2rem;\n}\n\n.bottom-2 {\n bottom: 2rem;\n}\n\n.left-2 {\n left: 2rem;\n}\n\n.top--1 {\n top: -1rem;\n}\n\n.right--1 {\n right: -1rem;\n}\n\n.bottom--1 {\n bottom: -1rem;\n}\n\n.left--1 {\n left: -1rem;\n}\n\n.top--2 {\n top: -2rem;\n}\n\n.right--2 {\n right: -2rem;\n}\n\n.bottom--2 {\n bottom: -2rem;\n}\n\n.left--2 {\n left: -2rem;\n}\n\n.absolute--fill {\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n}\n\n.cf:after, .cf:before {\n content: \" \";\n display: table;\n}\n\n.cf:after {\n clear: both;\n}\n\n.cf {\n *zoom: 1;\n}\n\n.cl {\n clear: left;\n}\n\n.cr {\n clear: right;\n}\n\n.cb {\n clear: both;\n}\n\n.cn {\n clear: none;\n}\n\n.dn {\n display: none;\n}\n\n.di {\n display: inline;\n}\n\n.db {\n display: block;\n}\n\n.dib {\n display: inline-block;\n}\n\n.dit {\n display: inline-table;\n}\n\n.dt {\n display: table;\n}\n\n.dtc {\n display: table-cell;\n}\n\n.dt-row {\n display: table-row;\n}\n\n.dt-row-group {\n display: table-row-group;\n}\n\n.dt-column {\n display: table-column;\n}\n\n.dt-column-group {\n display: table-column-group;\n}\n\n.dt--fixed {\n table-layout: fixed;\n width: 100%;\n}\n\n.flex {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n}\n\n.inline-flex {\n display: -webkit-inline-box;\n display: -ms-inline-flexbox;\n display: inline-flex;\n}\n\n.flex-auto {\n -webkit-box-flex: 1;\n -ms-flex: 1 1 auto;\n flex: 1 1 auto;\n min-width: 0;\n min-height: 0;\n}\n\n.flex-none {\n -webkit-box-flex: 0;\n -ms-flex: none;\n flex: none;\n}\n\n.flex-column {\n -webkit-box-orient: vertical;\n -ms-flex-direction: column;\n flex-direction: column;\n}\n\n.flex-column, .flex-row {\n -webkit-box-direction: normal;\n}\n\n.flex-row {\n -webkit-box-orient: horizontal;\n -ms-flex-direction: row;\n flex-direction: row;\n}\n\n.flex-wrap {\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n}\n\n.flex-nowrap {\n -ms-flex-wrap: nowrap;\n flex-wrap: nowrap;\n}\n\n.flex-wrap-reverse {\n -ms-flex-wrap: wrap-reverse;\n flex-wrap: wrap-reverse;\n}\n\n.flex-column-reverse {\n -webkit-box-orient: vertical;\n -webkit-box-direction: reverse;\n -ms-flex-direction: column-reverse;\n flex-direction: column-reverse;\n}\n\n.flex-row-reverse {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: reverse;\n -ms-flex-direction: row-reverse;\n flex-direction: row-reverse;\n}\n\n.items-start {\n -webkit-box-align: start;\n -ms-flex-align: start;\n align-items: flex-start;\n}\n\n.items-end {\n -webkit-box-align: end;\n -ms-flex-align: end;\n align-items: flex-end;\n}\n\n.items-center {\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n}\n\n.items-baseline {\n -webkit-box-align: baseline;\n -ms-flex-align: baseline;\n align-items: baseline;\n}\n\n.items-stretch {\n -webkit-box-align: stretch;\n -ms-flex-align: stretch;\n align-items: stretch;\n}\n\n.self-start {\n -ms-flex-item-align: start;\n align-self: flex-start;\n}\n\n.self-end {\n -ms-flex-item-align: end;\n align-self: flex-end;\n}\n\n.self-center {\n -ms-flex-item-align: center;\n -ms-grid-row-align: center;\n align-self: center;\n}\n\n.self-baseline {\n -ms-flex-item-align: baseline;\n align-self: baseline;\n}\n\n.self-stretch {\n -ms-flex-item-align: stretch;\n -ms-grid-row-align: stretch;\n align-self: stretch;\n}\n\n.justify-start {\n -webkit-box-pack: start;\n -ms-flex-pack: start;\n justify-content: flex-start;\n}\n\n.justify-end {\n -webkit-box-pack: end;\n -ms-flex-pack: end;\n justify-content: flex-end;\n}\n\n.justify-center {\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n}\n\n.justify-between {\n -webkit-box-pack: justify;\n -ms-flex-pack: justify;\n justify-content: space-between;\n}\n\n.justify-around {\n -ms-flex-pack: distribute;\n justify-content: space-around;\n}\n\n.content-start {\n -ms-flex-line-pack: start;\n align-content: flex-start;\n}\n\n.content-end {\n -ms-flex-line-pack: end;\n align-content: flex-end;\n}\n\n.content-center {\n -ms-flex-line-pack: center;\n align-content: center;\n}\n\n.content-between {\n -ms-flex-line-pack: justify;\n align-content: space-between;\n}\n\n.content-around {\n -ms-flex-line-pack: distribute;\n align-content: space-around;\n}\n\n.content-stretch {\n -ms-flex-line-pack: stretch;\n align-content: stretch;\n}\n\n.order-0 {\n -webkit-box-ordinal-group: 1;\n -ms-flex-order: 0;\n order: 0;\n}\n\n.order-1 {\n -webkit-box-ordinal-group: 2;\n -ms-flex-order: 1;\n order: 1;\n}\n\n.order-2 {\n -webkit-box-ordinal-group: 3;\n -ms-flex-order: 2;\n order: 2;\n}\n\n.order-3 {\n -webkit-box-ordinal-group: 4;\n -ms-flex-order: 3;\n order: 3;\n}\n\n.order-4 {\n -webkit-box-ordinal-group: 5;\n -ms-flex-order: 4;\n order: 4;\n}\n\n.order-5 {\n -webkit-box-ordinal-group: 6;\n -ms-flex-order: 5;\n order: 5;\n}\n\n.order-6 {\n -webkit-box-ordinal-group: 7;\n -ms-flex-order: 6;\n order: 6;\n}\n\n.order-7 {\n -webkit-box-ordinal-group: 8;\n -ms-flex-order: 7;\n order: 7;\n}\n\n.order-8 {\n -webkit-box-ordinal-group: 9;\n -ms-flex-order: 8;\n order: 8;\n}\n\n.order-last {\n -webkit-box-ordinal-group: 100000;\n -ms-flex-order: 99999;\n order: 99999;\n}\n\n.flex-grow-0 {\n -webkit-box-flex: 0;\n -ms-flex-positive: 0;\n flex-grow: 0;\n}\n\n.flex-grow-1 {\n -webkit-box-flex: 1;\n -ms-flex-positive: 1;\n flex-grow: 1;\n}\n\n.flex-shrink-0 {\n -ms-flex-negative: 0;\n flex-shrink: 0;\n}\n\n.flex-shrink-1 {\n -ms-flex-negative: 1;\n flex-shrink: 1;\n}\n\n.fl {\n float: left;\n}\n\n.fl, .fr {\n _display: inline;\n}\n\n.fr {\n float: right;\n}\n\n.fn {\n float: none;\n}\n\n.sans-serif {\n font-family: -apple-system,BlinkMacSystemFont,avenir next,avenir,helvetica neue,helvetica,ubuntu,roboto,noto,segoe ui,arial,sans-serif;\n}\n\n.serif {\n font-family: georgia,times,serif;\n}\n\n.system-sans-serif {\n font-family: sans-serif;\n}\n\n.system-serif {\n font-family: serif;\n}\n\n.code, code {\n font-family: Consolas,monaco,monospace;\n}\n\n.courier {\n font-family: Courier Next,courier,monospace;\n}\n\n.helvetica {\n font-family: helvetica neue,helvetica,sans-serif;\n}\n\n.avenir {\n font-family: avenir next,avenir,sans-serif;\n}\n\n.athelas {\n font-family: athelas,georgia,serif;\n}\n\n.georgia {\n font-family: georgia,serif;\n}\n\n.times {\n font-family: times,serif;\n}\n\n.bodoni {\n font-family: Bodoni MT,serif;\n}\n\n.calisto {\n font-family: Calisto MT,serif;\n}\n\n.garamond {\n font-family: garamond,serif;\n}\n\n.baskerville {\n font-family: baskerville,serif;\n}\n\n.i {\n font-style: italic;\n}\n\n.fs-normal {\n font-style: normal;\n}\n\n.normal {\n font-weight: 400;\n}\n\n.b {\n font-weight: 700;\n}\n\n.fw1 {\n font-weight: 100;\n}\n\n.fw2 {\n font-weight: 200;\n}\n\n.fw3 {\n font-weight: 300;\n}\n\n.fw4 {\n font-weight: 400;\n}\n\n.fw5 {\n font-weight: 500;\n}\n\n.fw6 {\n font-weight: 600;\n}\n\n.fw7 {\n font-weight: 700;\n}\n\n.fw8 {\n font-weight: 800;\n}\n\n.fw9 {\n font-weight: 900;\n}\n\n.input-reset {\n -webkit-appearance: none;\n -moz-appearance: none;\n}\n\n.button-reset::-moz-focus-inner, .input-reset::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\n\n.h1 {\n height: 1rem;\n}\n\n.h2 {\n height: 2rem;\n}\n\n.h3 {\n height: 4rem;\n}\n\n.h4 {\n height: 8rem;\n}\n\n.h5 {\n height: 16rem;\n}\n\n.h-25 {\n height: 25%;\n}\n\n.h-50 {\n height: 50%;\n}\n\n.h-75 {\n height: 75%;\n}\n\n.h-100 {\n height: 100%;\n}\n\n.min-h-100 {\n min-height: 100%;\n}\n\n.vh-25 {\n height: 25vh;\n}\n\n.vh-50 {\n height: 50vh;\n}\n\n.vh-75 {\n height: 75vh;\n}\n\n.vh-100 {\n height: 100vh;\n}\n\n.min-vh-100 {\n min-height: 100vh;\n}\n\n.h-auto {\n height: auto;\n}\n\n.h-inherit {\n height: inherit;\n}\n\n.tracked {\n letter-spacing: .1em;\n}\n\n.tracked-tight {\n letter-spacing: -.05em;\n}\n\n.tracked-mega {\n letter-spacing: .25em;\n}\n\n.lh-solid {\n line-height: 1;\n}\n\n.lh-title {\n line-height: 1.25;\n}\n\n.lh-copy {\n line-height: 1.5;\n}\n\n.link {\n text-decoration: none;\n}\n\n.link, .link:active, .link:focus, .link:hover, .link:link, .link:visited {\n transition: color .15s ease-in;\n}\n\n.link:focus {\n outline: 1px dotted currentColor;\n}\n\n.list {\n list-style-type: none;\n}\n\n.mw-100 {\n max-width: 100%;\n}\n\n.mw1 {\n max-width: 1rem;\n}\n\n.mw2 {\n max-width: 2rem;\n}\n\n.mw3 {\n max-width: 4rem;\n}\n\n.mw4 {\n max-width: 8rem;\n}\n\n.mw5 {\n max-width: 16rem;\n}\n\n.mw6 {\n max-width: 32rem;\n}\n\n.mw7 {\n max-width: 48rem;\n}\n\n.mw8 {\n max-width: 64rem;\n}\n\n.mw9 {\n max-width: 96rem;\n}\n\n.mw-none {\n max-width: none;\n}\n\n.w1 {\n width: 1rem;\n}\n\n.w2 {\n width: 2rem;\n}\n\n.w3 {\n width: 4rem;\n}\n\n.w4 {\n width: 8rem;\n}\n\n.w5 {\n width: 16rem;\n}\n\n.w-10 {\n width: 10%;\n}\n\n.w-20 {\n width: 20%;\n}\n\n.w-25 {\n width: 25%;\n}\n\n.w-30 {\n width: 30%;\n}\n\n.w-33 {\n width: 33%;\n}\n\n.w-34 {\n width: 34%;\n}\n\n.w-40 {\n width: 40%;\n}\n\n.w-50 {\n width: 50%;\n}\n\n.w-60 {\n width: 60%;\n}\n\n.w-70 {\n width: 70%;\n}\n\n.w-75 {\n width: 75%;\n}\n\n.w-80 {\n width: 80%;\n}\n\n.w-90 {\n width: 90%;\n}\n\n.w-100 {\n width: 100%;\n}\n\n.w-third {\n width: 33.33333%;\n}\n\n.w-two-thirds {\n width: 66.66667%;\n}\n\n.w-auto {\n width: auto;\n}\n\n.overflow-visible {\n overflow: visible;\n}\n\n.overflow-hidden {\n overflow: hidden;\n}\n\n.overflow-scroll {\n overflow: scroll;\n}\n\n.overflow-auto {\n overflow: auto;\n}\n\n.overflow-x-visible {\n overflow-x: visible;\n}\n\n.overflow-x-hidden {\n overflow-x: hidden;\n}\n\n.overflow-x-scroll {\n overflow-x: scroll;\n}\n\n.overflow-x-auto {\n overflow-x: auto;\n}\n\n.overflow-y-visible {\n overflow-y: visible;\n}\n\n.overflow-y-hidden {\n overflow-y: hidden;\n}\n\n.overflow-y-scroll {\n overflow-y: scroll;\n}\n\n.overflow-y-auto {\n overflow-y: auto;\n}\n\n.static {\n position: static;\n}\n\n.relative {\n position: relative;\n}\n\n.absolute {\n position: absolute;\n}\n\n.fixed {\n position: fixed;\n}\n\n.o-100 {\n opacity: 1;\n}\n\n.o-90 {\n opacity: .9;\n}\n\n.o-80 {\n opacity: .8;\n}\n\n.o-70 {\n opacity: .7;\n}\n\n.o-60 {\n opacity: .6;\n}\n\n.o-50 {\n opacity: .5;\n}\n\n.o-40 {\n opacity: .4;\n}\n\n.o-30 {\n opacity: .3;\n}\n\n.o-20 {\n opacity: .2;\n}\n\n.o-10 {\n opacity: .1;\n}\n\n.o-05 {\n opacity: .05;\n}\n\n.o-025 {\n opacity: .025;\n}\n\n.o-0 {\n opacity: 0;\n}\n\n.rotate-45 {\n -webkit-transform: rotate(45deg);\n transform: rotate(45deg);\n}\n\n.rotate-90 {\n -webkit-transform: rotate(90deg);\n transform: rotate(90deg);\n}\n\n.rotate-135 {\n -webkit-transform: rotate(135deg);\n transform: rotate(135deg);\n}\n\n.rotate-180 {\n -webkit-transform: rotate(180deg);\n transform: rotate(180deg);\n}\n\n.rotate-225 {\n -webkit-transform: rotate(225deg);\n transform: rotate(225deg);\n}\n\n.rotate-270 {\n -webkit-transform: rotate(270deg);\n transform: rotate(270deg);\n}\n\n.rotate-315 {\n -webkit-transform: rotate(315deg);\n transform: rotate(315deg);\n}\n\n.black-90 {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.black-80 {\n color: rgba(0, 0, 0, 0.8);\n}\n\n.black-70 {\n color: rgba(0, 0, 0, 0.7);\n}\n\n.black-60 {\n color: rgba(0, 0, 0, 0.6);\n}\n\n.black-50 {\n color: rgba(0, 0, 0, 0.5);\n}\n\n.black-40 {\n color: rgba(0, 0, 0, 0.4);\n}\n\n.black-30 {\n color: rgba(0, 0, 0, 0.3);\n}\n\n.black-20 {\n color: rgba(0, 0, 0, 0.2);\n}\n\n.black-10 {\n color: rgba(0, 0, 0, 0.1);\n}\n\n.black-05 {\n color: rgba(0, 0, 0, 0.05);\n}\n\n.white-90 {\n color: rgba(255, 255, 255, 0.9);\n}\n\n.white-80 {\n color: rgba(255, 255, 255, 0.8);\n}\n\n.white-70 {\n color: rgba(255, 255, 255, 0.7);\n}\n\n.white-60 {\n color: rgba(255, 255, 255, 0.6);\n}\n\n.white-50 {\n color: rgba(255, 255, 255, 0.5);\n}\n\n.white-40 {\n color: rgba(255, 255, 255, 0.4);\n}\n\n.white-30 {\n color: rgba(255, 255, 255, 0.3);\n}\n\n.white-20 {\n color: rgba(255, 255, 255, 0.2);\n}\n\n.white-10 {\n color: rgba(255, 255, 255, 0.1);\n}\n\n.black {\n color: #000;\n}\n\n.near-black {\n color: #111;\n}\n\n.dark-gray {\n color: #333;\n}\n\n.mid-gray {\n color: #555;\n}\n\n.gray {\n color: #777;\n}\n\n.silver {\n color: #999;\n}\n\n.light-silver {\n color: #aaa;\n}\n\n.moon-gray {\n color: #ccc;\n}\n\n.light-gray {\n color: #eee;\n}\n\n.near-white {\n color: #f4f4f4;\n}\n\n.white {\n color: #fff;\n}\n\n.dark-red {\n color: #e7040f;\n}\n\n.red {\n color: #ff4136;\n}\n\n.light-red {\n color: #ff725c;\n}\n\n.orange {\n color: #ff6300;\n}\n\n.gold {\n color: #ffb700;\n}\n\n.yellow {\n color: gold;\n}\n\n.light-yellow {\n color: #fbf1a9;\n}\n\n.purple {\n color: #5e2ca5;\n}\n\n.light-purple {\n color: #a463f2;\n}\n\n.dark-pink {\n color: #d5008f;\n}\n\n.hot-pink {\n color: #ff41b4;\n}\n\n.pink {\n color: #ff80cc;\n}\n\n.light-pink {\n color: #ffa3d7;\n}\n\n.dark-green {\n color: #137752;\n}\n\n.green {\n color: #19a974;\n}\n\n.light-green {\n color: #9eebcf;\n}\n\n.navy {\n color: #001b44;\n}\n\n.dark-blue {\n color: #00449e;\n}\n\n.blue {\n color: #357edd;\n}\n\n.light-blue {\n color: #96ccff;\n}\n\n.lightest-blue {\n color: #cdecff;\n}\n\n.washed-blue {\n color: #f6fffe;\n}\n\n.washed-green {\n color: #e8fdf5;\n}\n\n.washed-yellow {\n color: #fffceb;\n}\n\n.washed-red {\n color: #ffdfdf;\n}\n\n.color-inherit {\n color: inherit;\n}\n\n.bg-black-90 {\n background-color: rgba(0, 0, 0, 0.9);\n}\n\n.bg-black-80 {\n background-color: rgba(0, 0, 0, 0.8);\n}\n\n.bg-black-70 {\n background-color: rgba(0, 0, 0, 0.7);\n}\n\n.bg-black-60 {\n background-color: rgba(0, 0, 0, 0.6);\n}\n\n.bg-black-50 {\n background-color: rgba(0, 0, 0, 0.5);\n}\n\n.bg-black-40 {\n background-color: rgba(0, 0, 0, 0.4);\n}\n\n.bg-black-30 {\n background-color: rgba(0, 0, 0, 0.3);\n}\n\n.bg-black-20 {\n background-color: rgba(0, 0, 0, 0.2);\n}\n\n.bg-black-10 {\n background-color: rgba(0, 0, 0, 0.1);\n}\n\n.bg-black-05 {\n background-color: rgba(0, 0, 0, 0.05);\n}\n\n.bg-white-90 {\n background-color: rgba(255, 255, 255, 0.9);\n}\n\n.bg-white-80 {\n background-color: rgba(255, 255, 255, 0.8);\n}\n\n.bg-white-70 {\n background-color: rgba(255, 255, 255, 0.7);\n}\n\n.bg-white-60 {\n background-color: rgba(255, 255, 255, 0.6);\n}\n\n.bg-white-50 {\n background-color: rgba(255, 255, 255, 0.5);\n}\n\n.bg-white-40 {\n background-color: rgba(255, 255, 255, 0.4);\n}\n\n.bg-white-30 {\n background-color: rgba(255, 255, 255, 0.3);\n}\n\n.bg-white-20 {\n background-color: rgba(255, 255, 255, 0.2);\n}\n\n.bg-white-10 {\n background-color: rgba(255, 255, 255, 0.1);\n}\n\n.bg-black {\n background-color: #000;\n}\n\n.bg-near-black {\n background-color: #111;\n}\n\n.bg-dark-gray {\n background-color: #333;\n}\n\n.bg-mid-gray {\n background-color: #555;\n}\n\n.bg-gray {\n background-color: #777;\n}\n\n.bg-silver {\n background-color: #999;\n}\n\n.bg-light-silver {\n background-color: #aaa;\n}\n\n.bg-moon-gray {\n background-color: #ccc;\n}\n\n.bg-light-gray {\n background-color: #eee;\n}\n\n.bg-near-white {\n background-color: #f4f4f4;\n}\n\n.bg-white {\n background-color: #fff;\n}\n\n.bg-transparent {\n background-color: transparent;\n}\n\n.bg-dark-red {\n background-color: #e7040f;\n}\n\n.bg-red {\n background-color: #ff4136;\n}\n\n.bg-light-red {\n background-color: #ff725c;\n}\n\n.bg-orange {\n background-color: #ff6300;\n}\n\n.bg-gold {\n background-color: #ffb700;\n}\n\n.bg-yellow {\n background-color: gold;\n}\n\n.bg-light-yellow {\n background-color: #fbf1a9;\n}\n\n.bg-purple {\n background-color: #5e2ca5;\n}\n\n.bg-light-purple {\n background-color: #a463f2;\n}\n\n.bg-dark-pink {\n background-color: #d5008f;\n}\n\n.bg-hot-pink {\n background-color: #ff41b4;\n}\n\n.bg-pink {\n background-color: #ff80cc;\n}\n\n.bg-light-pink {\n background-color: #ffa3d7;\n}\n\n.bg-dark-green {\n background-color: #137752;\n}\n\n.bg-green {\n background-color: #19a974;\n}\n\n.bg-light-green {\n background-color: #9eebcf;\n}\n\n.bg-navy {\n background-color: #001b44;\n}\n\n.bg-dark-blue {\n background-color: #00449e;\n}\n\n.bg-blue {\n background-color: #357edd;\n}\n\n.bg-light-blue {\n background-color: #96ccff;\n}\n\n.bg-lightest-blue {\n background-color: #cdecff;\n}\n\n.bg-washed-blue {\n background-color: #f6fffe;\n}\n\n.bg-washed-green {\n background-color: #e8fdf5;\n}\n\n.bg-washed-yellow {\n background-color: #fffceb;\n}\n\n.bg-washed-red {\n background-color: #ffdfdf;\n}\n\n.bg-inherit {\n background-color: inherit;\n}\n\n.hover-black:focus, .hover-black:hover {\n color: #000;\n}\n\n.hover-near-black:focus, .hover-near-black:hover {\n color: #111;\n}\n\n.hover-dark-gray:focus, .hover-dark-gray:hover {\n color: #333;\n}\n\n.hover-mid-gray:focus, .hover-mid-gray:hover {\n color: #555;\n}\n\n.hover-gray:focus, .hover-gray:hover {\n color: #777;\n}\n\n.hover-silver:focus, .hover-silver:hover {\n color: #999;\n}\n\n.hover-light-silver:focus, .hover-light-silver:hover {\n color: #aaa;\n}\n\n.hover-moon-gray:focus, .hover-moon-gray:hover {\n color: #ccc;\n}\n\n.hover-light-gray:focus, .hover-light-gray:hover {\n color: #eee;\n}\n\n.hover-near-white:focus, .hover-near-white:hover {\n color: #f4f4f4;\n}\n\n.hover-white:focus, .hover-white:hover {\n color: #fff;\n}\n\n.hover-black-90:focus, .hover-black-90:hover {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.hover-black-80:focus, .hover-black-80:hover {\n color: rgba(0, 0, 0, 0.8);\n}\n\n.hover-black-70:focus, .hover-black-70:hover {\n color: rgba(0, 0, 0, 0.7);\n}\n\n.hover-black-60:focus, .hover-black-60:hover {\n color: rgba(0, 0, 0, 0.6);\n}\n\n.hover-black-50:focus, .hover-black-50:hover {\n color: rgba(0, 0, 0, 0.5);\n}\n\n.hover-black-40:focus, .hover-black-40:hover {\n color: rgba(0, 0, 0, 0.4);\n}\n\n.hover-black-30:focus, .hover-black-30:hover {\n color: rgba(0, 0, 0, 0.3);\n}\n\n.hover-black-20:focus, .hover-black-20:hover {\n color: rgba(0, 0, 0, 0.2);\n}\n\n.hover-black-10:focus, .hover-black-10:hover {\n color: rgba(0, 0, 0, 0.1);\n}\n\n.hover-white-90:focus, .hover-white-90:hover {\n color: rgba(255, 255, 255, 0.9);\n}\n\n.hover-white-80:focus, .hover-white-80:hover {\n color: rgba(255, 255, 255, 0.8);\n}\n\n.hover-white-70:focus, .hover-white-70:hover {\n color: rgba(255, 255, 255, 0.7);\n}\n\n.hover-white-60:focus, .hover-white-60:hover {\n color: rgba(255, 255, 255, 0.6);\n}\n\n.hover-white-50:focus, .hover-white-50:hover {\n color: rgba(255, 255, 255, 0.5);\n}\n\n.hover-white-40:focus, .hover-white-40:hover {\n color: rgba(255, 255, 255, 0.4);\n}\n\n.hover-white-30:focus, .hover-white-30:hover {\n color: rgba(255, 255, 255, 0.3);\n}\n\n.hover-white-20:focus, .hover-white-20:hover {\n color: rgba(255, 255, 255, 0.2);\n}\n\n.hover-white-10:focus, .hover-white-10:hover {\n color: rgba(255, 255, 255, 0.1);\n}\n\n.hover-inherit:focus, .hover-inherit:hover {\n color: inherit;\n}\n\n.hover-bg-black:focus, .hover-bg-black:hover {\n background-color: #000;\n}\n\n.hover-bg-near-black:focus, .hover-bg-near-black:hover {\n background-color: #111;\n}\n\n.hover-bg-dark-gray:focus, .hover-bg-dark-gray:hover {\n background-color: #333;\n}\n\n.hover-bg-mid-gray:focus, .hover-bg-mid-gray:hover {\n background-color: #555;\n}\n\n.hover-bg-gray:focus, .hover-bg-gray:hover {\n background-color: #777;\n}\n\n.hover-bg-silver:focus, .hover-bg-silver:hover {\n background-color: #999;\n}\n\n.hover-bg-light-silver:focus, .hover-bg-light-silver:hover {\n background-color: #aaa;\n}\n\n.hover-bg-moon-gray:focus, .hover-bg-moon-gray:hover {\n background-color: #ccc;\n}\n\n.hover-bg-light-gray:focus, .hover-bg-light-gray:hover {\n background-color: #eee;\n}\n\n.hover-bg-near-white:focus, .hover-bg-near-white:hover {\n background-color: #f4f4f4;\n}\n\n.hover-bg-white:focus, .hover-bg-white:hover {\n background-color: #fff;\n}\n\n.hover-bg-transparent:focus, .hover-bg-transparent:hover {\n background-color: transparent;\n}\n\n.hover-bg-black-90:focus, .hover-bg-black-90:hover {\n background-color: rgba(0, 0, 0, 0.9);\n}\n\n.hover-bg-black-80:focus, .hover-bg-black-80:hover {\n background-color: rgba(0, 0, 0, 0.8);\n}\n\n.hover-bg-black-70:focus, .hover-bg-black-70:hover {\n background-color: rgba(0, 0, 0, 0.7);\n}\n\n.hover-bg-black-60:focus, .hover-bg-black-60:hover {\n background-color: rgba(0, 0, 0, 0.6);\n}\n\n.hover-bg-black-50:focus, .hover-bg-black-50:hover {\n background-color: rgba(0, 0, 0, 0.5);\n}\n\n.hover-bg-black-40:focus, .hover-bg-black-40:hover {\n background-color: rgba(0, 0, 0, 0.4);\n}\n\n.hover-bg-black-30:focus, .hover-bg-black-30:hover {\n background-color: rgba(0, 0, 0, 0.3);\n}\n\n.hover-bg-black-20:focus, .hover-bg-black-20:hover {\n background-color: rgba(0, 0, 0, 0.2);\n}\n\n.hover-bg-black-10:focus, .hover-bg-black-10:hover {\n background-color: rgba(0, 0, 0, 0.1);\n}\n\n.hover-bg-white-90:focus, .hover-bg-white-90:hover {\n background-color: rgba(255, 255, 255, 0.9);\n}\n\n.hover-bg-white-80:focus, .hover-bg-white-80:hover {\n background-color: rgba(255, 255, 255, 0.8);\n}\n\n.hover-bg-white-70:focus, .hover-bg-white-70:hover {\n background-color: rgba(255, 255, 255, 0.7);\n}\n\n.hover-bg-white-60:focus, .hover-bg-white-60:hover {\n background-color: rgba(255, 255, 255, 0.6);\n}\n\n.hover-bg-white-50:focus, .hover-bg-white-50:hover {\n background-color: rgba(255, 255, 255, 0.5);\n}\n\n.hover-bg-white-40:focus, .hover-bg-white-40:hover {\n background-color: rgba(255, 255, 255, 0.4);\n}\n\n.hover-bg-white-30:focus, .hover-bg-white-30:hover {\n background-color: rgba(255, 255, 255, 0.3);\n}\n\n.hover-bg-white-20:focus, .hover-bg-white-20:hover {\n background-color: rgba(255, 255, 255, 0.2);\n}\n\n.hover-bg-white-10:focus, .hover-bg-white-10:hover {\n background-color: rgba(255, 255, 255, 0.1);\n}\n\n.hover-dark-red:focus, .hover-dark-red:hover {\n color: #e7040f;\n}\n\n.hover-red:focus, .hover-red:hover {\n color: #ff4136;\n}\n\n.hover-light-red:focus, .hover-light-red:hover {\n color: #ff725c;\n}\n\n.hover-orange:focus, .hover-orange:hover {\n color: #ff6300;\n}\n\n.hover-gold:focus, .hover-gold:hover {\n color: #ffb700;\n}\n\n.hover-yellow:focus, .hover-yellow:hover {\n color: gold;\n}\n\n.hover-light-yellow:focus, .hover-light-yellow:hover {\n color: #fbf1a9;\n}\n\n.hover-purple:focus, .hover-purple:hover {\n color: #5e2ca5;\n}\n\n.hover-light-purple:focus, .hover-light-purple:hover {\n color: #a463f2;\n}\n\n.hover-dark-pink:focus, .hover-dark-pink:hover {\n color: #d5008f;\n}\n\n.hover-hot-pink:focus, .hover-hot-pink:hover {\n color: #ff41b4;\n}\n\n.hover-pink:focus, .hover-pink:hover {\n color: #ff80cc;\n}\n\n.hover-light-pink:focus, .hover-light-pink:hover {\n color: #ffa3d7;\n}\n\n.hover-dark-green:focus, .hover-dark-green:hover {\n color: #137752;\n}\n\n.hover-green:focus, .hover-green:hover {\n color: #19a974;\n}\n\n.hover-light-green:focus, .hover-light-green:hover {\n color: #9eebcf;\n}\n\n.hover-navy:focus, .hover-navy:hover {\n color: #001b44;\n}\n\n.hover-dark-blue:focus, .hover-dark-blue:hover {\n color: #00449e;\n}\n\n.hover-blue:focus, .hover-blue:hover {\n color: #357edd;\n}\n\n.hover-light-blue:focus, .hover-light-blue:hover {\n color: #96ccff;\n}\n\n.hover-lightest-blue:focus, .hover-lightest-blue:hover {\n color: #cdecff;\n}\n\n.hover-washed-blue:focus, .hover-washed-blue:hover {\n color: #f6fffe;\n}\n\n.hover-washed-green:focus, .hover-washed-green:hover {\n color: #e8fdf5;\n}\n\n.hover-washed-yellow:focus, .hover-washed-yellow:hover {\n color: #fffceb;\n}\n\n.hover-washed-red:focus, .hover-washed-red:hover {\n color: #ffdfdf;\n}\n\n.hover-bg-dark-red:focus, .hover-bg-dark-red:hover {\n background-color: #e7040f;\n}\n\n.hover-bg-red:focus, .hover-bg-red:hover {\n background-color: #ff4136;\n}\n\n.hover-bg-light-red:focus, .hover-bg-light-red:hover {\n background-color: #ff725c;\n}\n\n.hover-bg-orange:focus, .hover-bg-orange:hover {\n background-color: #ff6300;\n}\n\n.hover-bg-gold:focus, .hover-bg-gold:hover {\n background-color: #ffb700;\n}\n\n.hover-bg-yellow:focus, .hover-bg-yellow:hover {\n background-color: gold;\n}\n\n.hover-bg-light-yellow:focus, .hover-bg-light-yellow:hover {\n background-color: #fbf1a9;\n}\n\n.hover-bg-purple:focus, .hover-bg-purple:hover {\n background-color: #5e2ca5;\n}\n\n.hover-bg-light-purple:focus, .hover-bg-light-purple:hover {\n background-color: #a463f2;\n}\n\n.hover-bg-dark-pink:focus, .hover-bg-dark-pink:hover {\n background-color: #d5008f;\n}\n\n.hover-bg-hot-pink:focus, .hover-bg-hot-pink:hover {\n background-color: #ff41b4;\n}\n\n.hover-bg-pink:focus, .hover-bg-pink:hover {\n background-color: #ff80cc;\n}\n\n.hover-bg-light-pink:focus, .hover-bg-light-pink:hover {\n background-color: #ffa3d7;\n}\n\n.hover-bg-dark-green:focus, .hover-bg-dark-green:hover {\n background-color: #137752;\n}\n\n.hover-bg-green:focus, .hover-bg-green:hover {\n background-color: #19a974;\n}\n\n.hover-bg-light-green:focus, .hover-bg-light-green:hover {\n background-color: #9eebcf;\n}\n\n.hover-bg-navy:focus, .hover-bg-navy:hover {\n background-color: #001b44;\n}\n\n.hover-bg-dark-blue:focus, .hover-bg-dark-blue:hover {\n background-color: #00449e;\n}\n\n.hover-bg-blue:focus, .hover-bg-blue:hover {\n background-color: #357edd;\n}\n\n.hover-bg-light-blue:focus, .hover-bg-light-blue:hover {\n background-color: #96ccff;\n}\n\n.hover-bg-lightest-blue:focus, .hover-bg-lightest-blue:hover {\n background-color: #cdecff;\n}\n\n.hover-bg-washed-blue:focus, .hover-bg-washed-blue:hover {\n background-color: #f6fffe;\n}\n\n.hover-bg-washed-green:focus, .hover-bg-washed-green:hover {\n background-color: #e8fdf5;\n}\n\n.hover-bg-washed-yellow:focus, .hover-bg-washed-yellow:hover {\n background-color: #fffceb;\n}\n\n.hover-bg-washed-red:focus, .hover-bg-washed-red:hover {\n background-color: #ffdfdf;\n}\n\n.hover-bg-inherit:focus, .hover-bg-inherit:hover {\n background-color: inherit;\n}\n\n.pa0 {\n padding: 0;\n}\n\n.pa1 {\n padding: .25rem;\n}\n\n.pa2 {\n padding: .5rem;\n}\n\n.pa3 {\n padding: 1rem;\n}\n\n.pa4 {\n padding: 2rem;\n}\n\n.pa5 {\n padding: 4rem;\n}\n\n.pa6 {\n padding: 8rem;\n}\n\n.pa7 {\n padding: 16rem;\n}\n\n.pl0 {\n padding-left: 0;\n}\n\n.pl1 {\n padding-left: .25rem;\n}\n\n.pl2 {\n padding-left: .5rem;\n}\n\n.pl3 {\n padding-left: 1rem;\n}\n\n.pl4 {\n padding-left: 2rem;\n}\n\n.pl5 {\n padding-left: 4rem;\n}\n\n.pl6 {\n padding-left: 8rem;\n}\n\n.pl7 {\n padding-left: 16rem;\n}\n\n.pr0 {\n padding-right: 0;\n}\n\n.pr1 {\n padding-right: .25rem;\n}\n\n.pr2 {\n padding-right: .5rem;\n}\n\n.pr3 {\n padding-right: 1rem;\n}\n\n.pr4 {\n padding-right: 2rem;\n}\n\n.pr5 {\n padding-right: 4rem;\n}\n\n.pr6 {\n padding-right: 8rem;\n}\n\n.pr7 {\n padding-right: 16rem;\n}\n\n.pb0 {\n padding-bottom: 0;\n}\n\n.pb1 {\n padding-bottom: .25rem;\n}\n\n.pb2 {\n padding-bottom: .5rem;\n}\n\n.pb3 {\n padding-bottom: 1rem;\n}\n\n.pb4 {\n padding-bottom: 2rem;\n}\n\n.pb5 {\n padding-bottom: 4rem;\n}\n\n.pb6 {\n padding-bottom: 8rem;\n}\n\n.pb7 {\n padding-bottom: 16rem;\n}\n\n.pt0 {\n padding-top: 0;\n}\n\n.pt1 {\n padding-top: .25rem;\n}\n\n.pt2 {\n padding-top: .5rem;\n}\n\n.pt3 {\n padding-top: 1rem;\n}\n\n.pt4 {\n padding-top: 2rem;\n}\n\n.pt5 {\n padding-top: 4rem;\n}\n\n.pt6 {\n padding-top: 8rem;\n}\n\n.pt7 {\n padding-top: 16rem;\n}\n\n.pv0 {\n padding-top: 0;\n padding-bottom: 0;\n}\n\n.pv1 {\n padding-top: .25rem;\n padding-bottom: .25rem;\n}\n\n.pv2 {\n padding-top: .5rem;\n padding-bottom: .5rem;\n}\n\n.pv3 {\n padding-top: 1rem;\n padding-bottom: 1rem;\n}\n\n.pv4 {\n padding-top: 2rem;\n padding-bottom: 2rem;\n}\n\n.pv5 {\n padding-top: 4rem;\n padding-bottom: 4rem;\n}\n\n.pv6 {\n padding-top: 8rem;\n padding-bottom: 8rem;\n}\n\n.pv7 {\n padding-top: 16rem;\n padding-bottom: 16rem;\n}\n\n.ph0 {\n padding-left: 0;\n padding-right: 0;\n}\n\n.ph1 {\n padding-left: .25rem;\n padding-right: .25rem;\n}\n\n.ph2 {\n padding-left: .5rem;\n padding-right: .5rem;\n}\n\n.ph3 {\n padding-left: 1rem;\n padding-right: 1rem;\n}\n\n.ph4 {\n padding-left: 2rem;\n padding-right: 2rem;\n}\n\n.ph5 {\n padding-left: 4rem;\n padding-right: 4rem;\n}\n\n.ph6 {\n padding-left: 8rem;\n padding-right: 8rem;\n}\n\n.ph7 {\n padding-left: 16rem;\n padding-right: 16rem;\n}\n\n.ma0 {\n margin: 0;\n}\n\n.ma1 {\n margin: .25rem;\n}\n\n.ma2 {\n margin: .5rem;\n}\n\n.ma3 {\n margin: 1rem;\n}\n\n.ma4 {\n margin: 2rem;\n}\n\n.ma5 {\n margin: 4rem;\n}\n\n.ma6 {\n margin: 8rem;\n}\n\n.ma7 {\n margin: 16rem;\n}\n\n.ml0 {\n margin-left: 0;\n}\n\n.ml1 {\n margin-left: .25rem;\n}\n\n.ml2 {\n margin-left: .5rem;\n}\n\n.ml3 {\n margin-left: 1rem;\n}\n\n.ml4 {\n margin-left: 2rem;\n}\n\n.ml5 {\n margin-left: 4rem;\n}\n\n.ml6 {\n margin-left: 8rem;\n}\n\n.ml7 {\n margin-left: 16rem;\n}\n\n.mr0 {\n margin-right: 0;\n}\n\n.mr1 {\n margin-right: .25rem;\n}\n\n.mr2 {\n margin-right: .5rem;\n}\n\n.mr3 {\n margin-right: 1rem;\n}\n\n.mr4 {\n margin-right: 2rem;\n}\n\n.mr5 {\n margin-right: 4rem;\n}\n\n.mr6 {\n margin-right: 8rem;\n}\n\n.mr7 {\n margin-right: 16rem;\n}\n\n.mb0 {\n margin-bottom: 0;\n}\n\n.mb1 {\n margin-bottom: .25rem;\n}\n\n.mb2 {\n margin-bottom: .5rem;\n}\n\n.mb3 {\n margin-bottom: 1rem;\n}\n\n.mb4 {\n margin-bottom: 2rem;\n}\n\n.mb5 {\n margin-bottom: 4rem;\n}\n\n.mb6 {\n margin-bottom: 8rem;\n}\n\n.mb7 {\n margin-bottom: 16rem;\n}\n\n.mt0 {\n margin-top: 0;\n}\n\n.mt1 {\n margin-top: .25rem;\n}\n\n.mt2 {\n margin-top: .5rem;\n}\n\n.mt3 {\n margin-top: 1rem;\n}\n\n.mt4 {\n margin-top: 2rem;\n}\n\n.mt5 {\n margin-top: 4rem;\n}\n\n.mt6 {\n margin-top: 8rem;\n}\n\n.mt7 {\n margin-top: 16rem;\n}\n\n.mv0 {\n margin-top: 0;\n margin-bottom: 0;\n}\n\n.mv1 {\n margin-top: .25rem;\n margin-bottom: .25rem;\n}\n\n.mv2 {\n margin-top: .5rem;\n margin-bottom: .5rem;\n}\n\n.mv3 {\n margin-top: 1rem;\n margin-bottom: 1rem;\n}\n\n.mv4 {\n margin-top: 2rem;\n margin-bottom: 2rem;\n}\n\n.mv5 {\n margin-top: 4rem;\n margin-bottom: 4rem;\n}\n\n.mv6 {\n margin-top: 8rem;\n margin-bottom: 8rem;\n}\n\n.mv7 {\n margin-top: 16rem;\n margin-bottom: 16rem;\n}\n\n.mh0 {\n margin-left: 0;\n margin-right: 0;\n}\n\n.mh1 {\n margin-left: .25rem;\n margin-right: .25rem;\n}\n\n.mh2 {\n margin-left: .5rem;\n margin-right: .5rem;\n}\n\n.mh3 {\n margin-left: 1rem;\n margin-right: 1rem;\n}\n\n.mh4 {\n margin-left: 2rem;\n margin-right: 2rem;\n}\n\n.mh5 {\n margin-left: 4rem;\n margin-right: 4rem;\n}\n\n.mh6 {\n margin-left: 8rem;\n margin-right: 8rem;\n}\n\n.mh7 {\n margin-left: 16rem;\n margin-right: 16rem;\n}\n\n.na1 {\n margin: -.25rem;\n}\n\n.na2 {\n margin: -.5rem;\n}\n\n.na3 {\n margin: -1rem;\n}\n\n.na4 {\n margin: -2rem;\n}\n\n.na5 {\n margin: -4rem;\n}\n\n.na6 {\n margin: -8rem;\n}\n\n.na7 {\n margin: -16rem;\n}\n\n.nl1 {\n margin-left: -.25rem;\n}\n\n.nl2 {\n margin-left: -.5rem;\n}\n\n.nl3 {\n margin-left: -1rem;\n}\n\n.nl4 {\n margin-left: -2rem;\n}\n\n.nl5 {\n margin-left: -4rem;\n}\n\n.nl6 {\n margin-left: -8rem;\n}\n\n.nl7 {\n margin-left: -16rem;\n}\n\n.nr1 {\n margin-right: -.25rem;\n}\n\n.nr2 {\n margin-right: -.5rem;\n}\n\n.nr3 {\n margin-right: -1rem;\n}\n\n.nr4 {\n margin-right: -2rem;\n}\n\n.nr5 {\n margin-right: -4rem;\n}\n\n.nr6 {\n margin-right: -8rem;\n}\n\n.nr7 {\n margin-right: -16rem;\n}\n\n.nb1 {\n margin-bottom: -.25rem;\n}\n\n.nb2 {\n margin-bottom: -.5rem;\n}\n\n.nb3 {\n margin-bottom: -1rem;\n}\n\n.nb4 {\n margin-bottom: -2rem;\n}\n\n.nb5 {\n margin-bottom: -4rem;\n}\n\n.nb6 {\n margin-bottom: -8rem;\n}\n\n.nb7 {\n margin-bottom: -16rem;\n}\n\n.nt1 {\n margin-top: -.25rem;\n}\n\n.nt2 {\n margin-top: -.5rem;\n}\n\n.nt3 {\n margin-top: -1rem;\n}\n\n.nt4 {\n margin-top: -2rem;\n}\n\n.nt5 {\n margin-top: -4rem;\n}\n\n.nt6 {\n margin-top: -8rem;\n}\n\n.nt7 {\n margin-top: -16rem;\n}\n\n.collapse {\n border-collapse: collapse;\n border-spacing: 0;\n}\n\n.striped--light-silver:nth-child(odd) {\n background-color: #aaa;\n}\n\n.striped--moon-gray:nth-child(odd) {\n background-color: #ccc;\n}\n\n.striped--light-gray:nth-child(odd) {\n background-color: #eee;\n}\n\n.striped--near-white:nth-child(odd) {\n background-color: #f4f4f4;\n}\n\n.stripe-light:nth-child(odd) {\n background-color: rgba(255, 255, 255, 0.1);\n}\n\n.stripe-dark:nth-child(odd) {\n background-color: rgba(0, 0, 0, 0.1);\n}\n\n.strike {\n text-decoration: line-through;\n}\n\n.underline {\n text-decoration: underline;\n}\n\n.no-underline {\n text-decoration: none;\n}\n\n.tl {\n text-align: left;\n}\n\n.tr {\n text-align: right;\n}\n\n.tc {\n text-align: center;\n}\n\n.tj {\n text-align: justify;\n}\n\n.ttc {\n text-transform: capitalize;\n}\n\n.ttl {\n text-transform: lowercase;\n}\n\n.ttu {\n text-transform: uppercase;\n}\n\n.ttn {\n text-transform: none;\n}\n\n.f-6, .f-headline {\n font-size: 6rem;\n}\n\n.f-5, .f-subheadline {\n font-size: 5rem;\n}\n\n.f1 {\n font-size: 3rem;\n}\n\n.f2 {\n font-size: 2.25rem;\n}\n\n.f3 {\n font-size: 1.5rem;\n}\n\n.f4 {\n font-size: 1.25rem;\n}\n\n.f5 {\n font-size: 1rem;\n}\n\n.f6 {\n font-size: .875rem;\n}\n\n.f7 {\n font-size: .75rem;\n}\n\n.measure {\n max-width: 30em;\n}\n\n.measure-wide {\n max-width: 34em;\n}\n\n.measure-narrow {\n max-width: 20em;\n}\n\n.indent {\n text-indent: 1em;\n margin-top: 0;\n margin-bottom: 0;\n}\n\n.small-caps {\n font-variant: small-caps;\n}\n\n.truncate {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.overflow-container {\n overflow-y: scroll;\n}\n\n.center {\n margin-left: auto;\n}\n\n.center, .mr-auto {\n margin-right: auto;\n}\n\n.ml-auto {\n margin-left: auto;\n}\n\n.clip {\n position: fixed !important;\n _position: absolute !important;\n clip: rect(1px 1px 1px 1px);\n clip: rect(1px, 1px, 1px, 1px);\n}\n\n.ws-normal {\n white-space: normal;\n}\n\n.nowrap {\n white-space: nowrap;\n}\n\n.pre {\n white-space: pre;\n}\n\n.v-base {\n vertical-align: baseline;\n}\n\n.v-mid {\n vertical-align: middle;\n}\n\n.v-top {\n vertical-align: top;\n}\n\n.v-btm {\n vertical-align: bottom;\n}\n\n.dim {\n opacity: 1;\n}\n\n.dim, .dim:focus, .dim:hover {\n transition: opacity .15s ease-in;\n}\n\n.dim:focus, .dim:hover {\n opacity: .5;\n}\n\n.dim:active {\n opacity: .8;\n transition: opacity .15s ease-out;\n}\n\n.glow, .glow:focus, .glow:hover {\n transition: opacity .15s ease-in;\n}\n\n.glow:focus, .glow:hover {\n opacity: 1;\n}\n\n.hide-child .child {\n opacity: 0;\n transition: opacity .15s ease-in;\n}\n\n.hide-child:active .child, .hide-child:focus .child, .hide-child:hover .child {\n opacity: 1;\n transition: opacity .15s ease-in;\n}\n\n.underline-hover:focus, .underline-hover:hover {\n text-decoration: underline;\n}\n\n.grow {\n -moz-osx-font-smoothing: grayscale;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n -webkit-transform: translateZ(0);\n transform: translateZ(0);\n transition: -webkit-transform .25s ease-out;\n transition: transform .25s ease-out;\n transition: transform .25s ease-out,-webkit-transform .25s ease-out;\n}\n\n.grow:focus, .grow:hover {\n -webkit-transform: scale(1.05);\n transform: scale(1.05);\n}\n\n.grow:active {\n -webkit-transform: scale(0.9);\n transform: scale(0.9);\n}\n\n.grow-large {\n -moz-osx-font-smoothing: grayscale;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n -webkit-transform: translateZ(0);\n transform: translateZ(0);\n transition: -webkit-transform .25s ease-in-out;\n transition: transform .25s ease-in-out;\n transition: transform .25s ease-in-out,-webkit-transform .25s ease-in-out;\n}\n\n.grow-large:focus, .grow-large:hover {\n -webkit-transform: scale(1.2);\n transform: scale(1.2);\n}\n\n.grow-large:active {\n -webkit-transform: scale(0.95);\n transform: scale(0.95);\n}\n\n.pointer:hover, .shadow-hover {\n cursor: pointer;\n}\n\n.shadow-hover {\n position: relative;\n transition: all 0.5s cubic-bezier(0.165, 0.84, 0.44, 1);\n}\n\n.shadow-hover:after {\n content: \"\";\n box-shadow: 0 0 16px 2px rgba(0, 0, 0, 0.2);\n border-radius: inherit;\n opacity: 0;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: -1;\n transition: opacity 0.5s cubic-bezier(0.165, 0.84, 0.44, 1);\n}\n\n.shadow-hover:focus:after, .shadow-hover:hover:after {\n opacity: 1;\n}\n\n.bg-animate, .bg-animate:focus, .bg-animate:hover {\n transition: background-color .15s ease-in-out;\n}\n\n.z-0 {\n z-index: 0;\n}\n\n.z-1 {\n z-index: 1;\n}\n\n.z-2 {\n z-index: 2;\n}\n\n.z-3 {\n z-index: 3;\n}\n\n.z-4 {\n z-index: 4;\n}\n\n.z-5 {\n z-index: 5;\n}\n\n.z-999 {\n z-index: 999;\n}\n\n.z-9999 {\n z-index: 9999;\n}\n\n.z-max {\n z-index: 2147483647;\n}\n\n.z-inherit {\n z-index: inherit;\n}\n\n.z-initial {\n z-index: auto;\n}\n\n.z-unset {\n z-index: unset;\n}\n\n.nested-copy-line-height ol, .nested-copy-line-height p, .nested-copy-line-height ul {\n line-height: 1.5;\n}\n\n.nested-headline-line-height h1, .nested-headline-line-height h2, .nested-headline-line-height h3, .nested-headline-line-height h4, .nested-headline-line-height h5, .nested-headline-line-height h6 {\n line-height: 1.25;\n}\n\n.nested-list-reset ol, .nested-list-reset ul {\n padding-left: 0;\n margin-left: 0;\n list-style-type: none;\n}\n\n.nested-copy-indent p + p {\n text-indent: 1em;\n margin-top: 0;\n margin-bottom: 0;\n}\n\n.nested-copy-separator p + p {\n margin-top: 1.5em;\n}\n\n.nested-img img {\n width: 100%;\n max-width: 100%;\n display: block;\n}\n\n.nested-links a {\n color: #357edd;\n transition: color .15s ease-in;\n}\n\n.nested-links a:focus, .nested-links a:hover {\n color: #96ccff;\n transition: color .15s ease-in;\n}\n\n.debug * {\n outline: 1px solid gold;\n}\n\n.debug-white * {\n outline: 1px solid #fff;\n}\n\n.debug-black * {\n outline: 1px solid #000;\n}\n\n.debug-grid {\n background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAAFElEQVR4AWPAC97/9x0eCsAEPgwAVLshdpENIxcAAAAASUVORK5CYII=) repeat 0 0;\n}\n\n.debug-grid-16 {\n background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMklEQVR4AWOgCLz/b0epAa6UGuBOqQHOQHLUgFEDnAbcBZ4UGwDOkiCnkIhdgNgNxAYAiYlD+8sEuo8AAAAASUVORK5CYII=) repeat 0 0;\n}\n\n.debug-grid-8-solid {\n background: #fff url(data:image/gif;base64,R0lGODdhCAAIAPEAAADw/wDx/////wAAACwAAAAACAAIAAACDZQvgaeb/lxbAIKA8y0AOw==) repeat 0 0;\n}\n\n.debug-grid-16-solid {\n background: #fff url(data:image/gif;base64,R0lGODdhEAAQAPEAAADw/wDx/xXy/////ywAAAAAEAAQAAACIZyPKckYDQFsb6ZqD85jZ2+BkwiRFKehhqQCQgDHcgwEBQA7) repeat 0 0;\n}\n\n@media screen and (min-width: 30em) {\n .aspect-ratio-ns {\n height: 0;\n position: relative;\n }\n .aspect-ratio--16x9-ns {\n padding-bottom: 56.25%;\n }\n .aspect-ratio--9x16-ns {\n padding-bottom: 177.77%;\n }\n .aspect-ratio--4x3-ns {\n padding-bottom: 75%;\n }\n .aspect-ratio--3x4-ns {\n padding-bottom: 133.33%;\n }\n .aspect-ratio--6x4-ns {\n padding-bottom: 66.6%;\n }\n .aspect-ratio--4x6-ns {\n padding-bottom: 150%;\n }\n .aspect-ratio--8x5-ns {\n padding-bottom: 62.5%;\n }\n .aspect-ratio--5x8-ns {\n padding-bottom: 160%;\n }\n .aspect-ratio--7x5-ns {\n padding-bottom: 71.42%;\n }\n .aspect-ratio--5x7-ns {\n padding-bottom: 140%;\n }\n .aspect-ratio--1x1-ns {\n padding-bottom: 100%;\n }\n .aspect-ratio--object-ns {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 100;\n }\n .cover-ns {\n background-size: cover !important;\n }\n .contain-ns {\n background-size: contain !important;\n }\n .bg-center-ns {\n background-position: 50%;\n }\n .bg-center-ns, .bg-top-ns {\n background-repeat: no-repeat;\n }\n .bg-top-ns {\n background-position: top;\n }\n .bg-right-ns {\n background-position: 100%;\n }\n .bg-bottom-ns, .bg-right-ns {\n background-repeat: no-repeat;\n }\n .bg-bottom-ns {\n background-position: bottom;\n }\n .bg-left-ns {\n background-repeat: no-repeat;\n background-position: 0;\n }\n .outline-ns {\n outline: 1px solid;\n }\n .outline-transparent-ns {\n outline: 1px solid transparent;\n }\n .outline-0-ns {\n outline: 0;\n }\n .ba-ns {\n border-style: solid;\n border-width: 1px;\n }\n .bt-ns {\n border-top-style: solid;\n border-top-width: 1px;\n }\n .br-ns {\n border-right-style: solid;\n border-right-width: 1px;\n }\n .bb-ns {\n border-bottom-style: solid;\n border-bottom-width: 1px;\n }\n .bl-ns {\n border-left-style: solid;\n border-left-width: 1px;\n }\n .bn-ns {\n border-style: none;\n border-width: 0;\n }\n .br0-ns {\n border-radius: 0;\n }\n .br1-ns {\n border-radius: .125rem;\n }\n .br2-ns {\n border-radius: .25rem;\n }\n .br3-ns {\n border-radius: .5rem;\n }\n .br4-ns {\n border-radius: 1rem;\n }\n .br-100-ns {\n border-radius: 100%;\n }\n .br-pill-ns {\n border-radius: 9999px;\n }\n .br--bottom-ns {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n .br--top-ns {\n border-bottom-right-radius: 0;\n }\n .br--right-ns, .br--top-ns {\n border-bottom-left-radius: 0;\n }\n .br--right-ns {\n border-top-left-radius: 0;\n }\n .br--left-ns {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n .b--dotted-ns {\n border-style: dotted;\n }\n .b--dashed-ns {\n border-style: dashed;\n }\n .b--solid-ns {\n border-style: solid;\n }\n .b--none-ns {\n border-style: none;\n }\n .bw0-ns {\n border-width: 0;\n }\n .bw1-ns {\n border-width: .125rem;\n }\n .bw2-ns {\n border-width: .25rem;\n }\n .bw3-ns {\n border-width: .5rem;\n }\n .bw4-ns {\n border-width: 1rem;\n }\n .bw5-ns {\n border-width: 2rem;\n }\n .bt-0-ns {\n border-top-width: 0;\n }\n .br-0-ns {\n border-right-width: 0;\n }\n .bb-0-ns {\n border-bottom-width: 0;\n }\n .bl-0-ns {\n border-left-width: 0;\n }\n .shadow-1-ns {\n box-shadow: 0 0 4px 2px rgba(0, 0, 0, 0.2);\n }\n .shadow-2-ns {\n box-shadow: 0 0 8px 2px rgba(0, 0, 0, 0.2);\n }\n .shadow-3-ns {\n box-shadow: 2px 2px 4px 2px rgba(0, 0, 0, 0.2);\n }\n .shadow-4-ns {\n box-shadow: 2px 2px 8px 0 rgba(0, 0, 0, 0.2);\n }\n .shadow-5-ns {\n box-shadow: 4px 4px 8px 0 rgba(0, 0, 0, 0.2);\n }\n .top-0-ns {\n top: 0;\n }\n .left-0-ns {\n left: 0;\n }\n .right-0-ns {\n right: 0;\n }\n .bottom-0-ns {\n bottom: 0;\n }\n .top-1-ns {\n top: 1rem;\n }\n .left-1-ns {\n left: 1rem;\n }\n .right-1-ns {\n right: 1rem;\n }\n .bottom-1-ns {\n bottom: 1rem;\n }\n .top-2-ns {\n top: 2rem;\n }\n .left-2-ns {\n left: 2rem;\n }\n .right-2-ns {\n right: 2rem;\n }\n .bottom-2-ns {\n bottom: 2rem;\n }\n .top--1-ns {\n top: -1rem;\n }\n .right--1-ns {\n right: -1rem;\n }\n .bottom--1-ns {\n bottom: -1rem;\n }\n .left--1-ns {\n left: -1rem;\n }\n .top--2-ns {\n top: -2rem;\n }\n .right--2-ns {\n right: -2rem;\n }\n .bottom--2-ns {\n bottom: -2rem;\n }\n .left--2-ns {\n left: -2rem;\n }\n .absolute--fill-ns {\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n }\n .cl-ns {\n clear: left;\n }\n .cr-ns {\n clear: right;\n }\n .cb-ns {\n clear: both;\n }\n .cn-ns {\n clear: none;\n }\n .dn-ns {\n display: none;\n }\n .di-ns {\n display: inline;\n }\n .db-ns {\n display: block;\n }\n .dib-ns {\n display: inline-block;\n }\n .dit-ns {\n display: inline-table;\n }\n .dt-ns {\n display: table;\n }\n .dtc-ns {\n display: table-cell;\n }\n .dt-row-ns {\n display: table-row;\n }\n .dt-row-group-ns {\n display: table-row-group;\n }\n .dt-column-ns {\n display: table-column;\n }\n .dt-column-group-ns {\n display: table-column-group;\n }\n .dt--fixed-ns {\n table-layout: fixed;\n width: 100%;\n }\n .flex-ns {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n }\n .inline-flex-ns {\n display: -webkit-inline-box;\n display: -ms-inline-flexbox;\n display: inline-flex;\n }\n .flex-auto-ns {\n -webkit-box-flex: 1;\n -ms-flex: 1 1 auto;\n flex: 1 1 auto;\n min-width: 0;\n min-height: 0;\n }\n .flex-none-ns {\n -webkit-box-flex: 0;\n -ms-flex: none;\n flex: none;\n }\n .flex-column-ns {\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n }\n .flex-row-ns {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-direction: row;\n flex-direction: row;\n }\n .flex-wrap-ns {\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n }\n .flex-nowrap-ns {\n -ms-flex-wrap: nowrap;\n flex-wrap: nowrap;\n }\n .flex-wrap-reverse-ns {\n -ms-flex-wrap: wrap-reverse;\n flex-wrap: wrap-reverse;\n }\n .flex-column-reverse-ns {\n -webkit-box-orient: vertical;\n -webkit-box-direction: reverse;\n -ms-flex-direction: column-reverse;\n flex-direction: column-reverse;\n }\n .flex-row-reverse-ns {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: reverse;\n -ms-flex-direction: row-reverse;\n flex-direction: row-reverse;\n }\n .items-start-ns {\n -webkit-box-align: start;\n -ms-flex-align: start;\n align-items: flex-start;\n }\n .items-end-ns {\n -webkit-box-align: end;\n -ms-flex-align: end;\n align-items: flex-end;\n }\n .items-center-ns {\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n }\n .items-baseline-ns {\n -webkit-box-align: baseline;\n -ms-flex-align: baseline;\n align-items: baseline;\n }\n .items-stretch-ns {\n -webkit-box-align: stretch;\n -ms-flex-align: stretch;\n align-items: stretch;\n }\n .self-start-ns {\n -ms-flex-item-align: start;\n align-self: flex-start;\n }\n .self-end-ns {\n -ms-flex-item-align: end;\n align-self: flex-end;\n }\n .self-center-ns {\n -ms-flex-item-align: center;\n -ms-grid-row-align: center;\n align-self: center;\n }\n .self-baseline-ns {\n -ms-flex-item-align: baseline;\n align-self: baseline;\n }\n .self-stretch-ns {\n -ms-flex-item-align: stretch;\n -ms-grid-row-align: stretch;\n align-self: stretch;\n }\n .justify-start-ns {\n -webkit-box-pack: start;\n -ms-flex-pack: start;\n justify-content: flex-start;\n }\n .justify-end-ns {\n -webkit-box-pack: end;\n -ms-flex-pack: end;\n justify-content: flex-end;\n }\n .justify-center-ns {\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n }\n .justify-between-ns {\n -webkit-box-pack: justify;\n -ms-flex-pack: justify;\n justify-content: space-between;\n }\n .justify-around-ns {\n -ms-flex-pack: distribute;\n justify-content: space-around;\n }\n .content-start-ns {\n -ms-flex-line-pack: start;\n align-content: flex-start;\n }\n .content-end-ns {\n -ms-flex-line-pack: end;\n align-content: flex-end;\n }\n .content-center-ns {\n -ms-flex-line-pack: center;\n align-content: center;\n }\n .content-between-ns {\n -ms-flex-line-pack: justify;\n align-content: space-between;\n }\n .content-around-ns {\n -ms-flex-line-pack: distribute;\n align-content: space-around;\n }\n .content-stretch-ns {\n -ms-flex-line-pack: stretch;\n align-content: stretch;\n }\n .order-0-ns {\n -webkit-box-ordinal-group: 1;\n -ms-flex-order: 0;\n order: 0;\n }\n .order-1-ns {\n -webkit-box-ordinal-group: 2;\n -ms-flex-order: 1;\n order: 1;\n }\n .order-2-ns {\n -webkit-box-ordinal-group: 3;\n -ms-flex-order: 2;\n order: 2;\n }\n .order-3-ns {\n -webkit-box-ordinal-group: 4;\n -ms-flex-order: 3;\n order: 3;\n }\n .order-4-ns {\n -webkit-box-ordinal-group: 5;\n -ms-flex-order: 4;\n order: 4;\n }\n .order-5-ns {\n -webkit-box-ordinal-group: 6;\n -ms-flex-order: 5;\n order: 5;\n }\n .order-6-ns {\n -webkit-box-ordinal-group: 7;\n -ms-flex-order: 6;\n order: 6;\n }\n .order-7-ns {\n -webkit-box-ordinal-group: 8;\n -ms-flex-order: 7;\n order: 7;\n }\n .order-8-ns {\n -webkit-box-ordinal-group: 9;\n -ms-flex-order: 8;\n order: 8;\n }\n .order-last-ns {\n -webkit-box-ordinal-group: 100000;\n -ms-flex-order: 99999;\n order: 99999;\n }\n .flex-grow-0-ns {\n -webkit-box-flex: 0;\n -ms-flex-positive: 0;\n flex-grow: 0;\n }\n .flex-grow-1-ns {\n -webkit-box-flex: 1;\n -ms-flex-positive: 1;\n flex-grow: 1;\n }\n .flex-shrink-0-ns {\n -ms-flex-negative: 0;\n flex-shrink: 0;\n }\n .flex-shrink-1-ns {\n -ms-flex-negative: 1;\n flex-shrink: 1;\n }\n .fl-ns {\n float: left;\n }\n .fl-ns, .fr-ns {\n display: inline;\n }\n .fr-ns {\n float: right;\n }\n .fn-ns {\n float: none;\n }\n .i-ns {\n font-style: italic;\n }\n .fs-normal-ns {\n font-style: normal;\n }\n .normal-ns {\n font-weight: 400;\n }\n .b-ns {\n font-weight: 700;\n }\n .fw1-ns {\n font-weight: 100;\n }\n .fw2-ns {\n font-weight: 200;\n }\n .fw3-ns {\n font-weight: 300;\n }\n .fw4-ns {\n font-weight: 400;\n }\n .fw5-ns {\n font-weight: 500;\n }\n .fw6-ns {\n font-weight: 600;\n }\n .fw7-ns {\n font-weight: 700;\n }\n .fw8-ns {\n font-weight: 800;\n }\n .fw9-ns {\n font-weight: 900;\n }\n .h1-ns {\n height: 1rem;\n }\n .h2-ns {\n height: 2rem;\n }\n .h3-ns {\n height: 4rem;\n }\n .h4-ns {\n height: 8rem;\n }\n .h5-ns {\n height: 16rem;\n }\n .h-25-ns {\n height: 25%;\n }\n .h-50-ns {\n height: 50%;\n }\n .h-75-ns {\n height: 75%;\n }\n .h-100-ns {\n height: 100%;\n }\n .min-h-100-ns {\n min-height: 100%;\n }\n .vh-25-ns {\n height: 25vh;\n }\n .vh-50-ns {\n height: 50vh;\n }\n .vh-75-ns {\n height: 75vh;\n }\n .vh-100-ns {\n height: 100vh;\n }\n .min-vh-100-ns {\n min-height: 100vh;\n }\n .h-auto-ns {\n height: auto;\n }\n .h-inherit-ns {\n height: inherit;\n }\n .tracked-ns {\n letter-spacing: .1em;\n }\n .tracked-tight-ns {\n letter-spacing: -.05em;\n }\n .tracked-mega-ns {\n letter-spacing: .25em;\n }\n .lh-solid-ns {\n line-height: 1;\n }\n .lh-title-ns {\n line-height: 1.25;\n }\n .lh-copy-ns {\n line-height: 1.5;\n }\n .mw-100-ns {\n max-width: 100%;\n }\n .mw1-ns {\n max-width: 1rem;\n }\n .mw2-ns {\n max-width: 2rem;\n }\n .mw3-ns {\n max-width: 4rem;\n }\n .mw4-ns {\n max-width: 8rem;\n }\n .mw5-ns {\n max-width: 16rem;\n }\n .mw6-ns {\n max-width: 32rem;\n }\n .mw7-ns {\n max-width: 48rem;\n }\n .mw8-ns {\n max-width: 64rem;\n }\n .mw9-ns {\n max-width: 96rem;\n }\n .mw-none-ns {\n max-width: none;\n }\n .w1-ns {\n width: 1rem;\n }\n .w2-ns {\n width: 2rem;\n }\n .w3-ns {\n width: 4rem;\n }\n .w4-ns {\n width: 8rem;\n }\n .w5-ns {\n width: 16rem;\n }\n .w-10-ns {\n width: 10%;\n }\n .w-20-ns {\n width: 20%;\n }\n .w-25-ns {\n width: 25%;\n }\n .w-30-ns {\n width: 30%;\n }\n .w-33-ns {\n width: 33%;\n }\n .w-34-ns {\n width: 34%;\n }\n .w-40-ns {\n width: 40%;\n }\n .w-50-ns {\n width: 50%;\n }\n .w-60-ns {\n width: 60%;\n }\n .w-70-ns {\n width: 70%;\n }\n .w-75-ns {\n width: 75%;\n }\n .w-80-ns {\n width: 80%;\n }\n .w-90-ns {\n width: 90%;\n }\n .w-100-ns {\n width: 100%;\n }\n .w-third-ns {\n width: 33.33333%;\n }\n .w-two-thirds-ns {\n width: 66.66667%;\n }\n .w-auto-ns {\n width: auto;\n }\n .overflow-visible-ns {\n overflow: visible;\n }\n .overflow-hidden-ns {\n overflow: hidden;\n }\n .overflow-scroll-ns {\n overflow: scroll;\n }\n .overflow-auto-ns {\n overflow: auto;\n }\n .overflow-x-visible-ns {\n overflow-x: visible;\n }\n .overflow-x-hidden-ns {\n overflow-x: hidden;\n }\n .overflow-x-scroll-ns {\n overflow-x: scroll;\n }\n .overflow-x-auto-ns {\n overflow-x: auto;\n }\n .overflow-y-visible-ns {\n overflow-y: visible;\n }\n .overflow-y-hidden-ns {\n overflow-y: hidden;\n }\n .overflow-y-scroll-ns {\n overflow-y: scroll;\n }\n .overflow-y-auto-ns {\n overflow-y: auto;\n }\n .static-ns {\n position: static;\n }\n .relative-ns {\n position: relative;\n }\n .absolute-ns {\n position: absolute;\n }\n .fixed-ns {\n position: fixed;\n }\n .rotate-45-ns {\n -webkit-transform: rotate(45deg);\n transform: rotate(45deg);\n }\n .rotate-90-ns {\n -webkit-transform: rotate(90deg);\n transform: rotate(90deg);\n }\n .rotate-135-ns {\n -webkit-transform: rotate(135deg);\n transform: rotate(135deg);\n }\n .rotate-180-ns {\n -webkit-transform: rotate(180deg);\n transform: rotate(180deg);\n }\n .rotate-225-ns {\n -webkit-transform: rotate(225deg);\n transform: rotate(225deg);\n }\n .rotate-270-ns {\n -webkit-transform: rotate(270deg);\n transform: rotate(270deg);\n }\n .rotate-315-ns {\n -webkit-transform: rotate(315deg);\n transform: rotate(315deg);\n }\n .pa0-ns {\n padding: 0;\n }\n .pa1-ns {\n padding: .25rem;\n }\n .pa2-ns {\n padding: .5rem;\n }\n .pa3-ns {\n padding: 1rem;\n }\n .pa4-ns {\n padding: 2rem;\n }\n .pa5-ns {\n padding: 4rem;\n }\n .pa6-ns {\n padding: 8rem;\n }\n .pa7-ns {\n padding: 16rem;\n }\n .pl0-ns {\n padding-left: 0;\n }\n .pl1-ns {\n padding-left: .25rem;\n }\n .pl2-ns {\n padding-left: .5rem;\n }\n .pl3-ns {\n padding-left: 1rem;\n }\n .pl4-ns {\n padding-left: 2rem;\n }\n .pl5-ns {\n padding-left: 4rem;\n }\n .pl6-ns {\n padding-left: 8rem;\n }\n .pl7-ns {\n padding-left: 16rem;\n }\n .pr0-ns {\n padding-right: 0;\n }\n .pr1-ns {\n padding-right: .25rem;\n }\n .pr2-ns {\n padding-right: .5rem;\n }\n .pr3-ns {\n padding-right: 1rem;\n }\n .pr4-ns {\n padding-right: 2rem;\n }\n .pr5-ns {\n padding-right: 4rem;\n }\n .pr6-ns {\n padding-right: 8rem;\n }\n .pr7-ns {\n padding-right: 16rem;\n }\n .pb0-ns {\n padding-bottom: 0;\n }\n .pb1-ns {\n padding-bottom: .25rem;\n }\n .pb2-ns {\n padding-bottom: .5rem;\n }\n .pb3-ns {\n padding-bottom: 1rem;\n }\n .pb4-ns {\n padding-bottom: 2rem;\n }\n .pb5-ns {\n padding-bottom: 4rem;\n }\n .pb6-ns {\n padding-bottom: 8rem;\n }\n .pb7-ns {\n padding-bottom: 16rem;\n }\n .pt0-ns {\n padding-top: 0;\n }\n .pt1-ns {\n padding-top: .25rem;\n }\n .pt2-ns {\n padding-top: .5rem;\n }\n .pt3-ns {\n padding-top: 1rem;\n }\n .pt4-ns {\n padding-top: 2rem;\n }\n .pt5-ns {\n padding-top: 4rem;\n }\n .pt6-ns {\n padding-top: 8rem;\n }\n .pt7-ns {\n padding-top: 16rem;\n }\n .pv0-ns {\n padding-top: 0;\n padding-bottom: 0;\n }\n .pv1-ns {\n padding-top: .25rem;\n padding-bottom: .25rem;\n }\n .pv2-ns {\n padding-top: .5rem;\n padding-bottom: .5rem;\n }\n .pv3-ns {\n padding-top: 1rem;\n padding-bottom: 1rem;\n }\n .pv4-ns {\n padding-top: 2rem;\n padding-bottom: 2rem;\n }\n .pv5-ns {\n padding-top: 4rem;\n padding-bottom: 4rem;\n }\n .pv6-ns {\n padding-top: 8rem;\n padding-bottom: 8rem;\n }\n .pv7-ns {\n padding-top: 16rem;\n padding-bottom: 16rem;\n }\n .ph0-ns {\n padding-left: 0;\n padding-right: 0;\n }\n .ph1-ns {\n padding-left: .25rem;\n padding-right: .25rem;\n }\n .ph2-ns {\n padding-left: .5rem;\n padding-right: .5rem;\n }\n .ph3-ns {\n padding-left: 1rem;\n padding-right: 1rem;\n }\n .ph4-ns {\n padding-left: 2rem;\n padding-right: 2rem;\n }\n .ph5-ns {\n padding-left: 4rem;\n padding-right: 4rem;\n }\n .ph6-ns {\n padding-left: 8rem;\n padding-right: 8rem;\n }\n .ph7-ns {\n padding-left: 16rem;\n padding-right: 16rem;\n }\n .ma0-ns {\n margin: 0;\n }\n .ma1-ns {\n margin: .25rem;\n }\n .ma2-ns {\n margin: .5rem;\n }\n .ma3-ns {\n margin: 1rem;\n }\n .ma4-ns {\n margin: 2rem;\n }\n .ma5-ns {\n margin: 4rem;\n }\n .ma6-ns {\n margin: 8rem;\n }\n .ma7-ns {\n margin: 16rem;\n }\n .ml0-ns {\n margin-left: 0;\n }\n .ml1-ns {\n margin-left: .25rem;\n }\n .ml2-ns {\n margin-left: .5rem;\n }\n .ml3-ns {\n margin-left: 1rem;\n }\n .ml4-ns {\n margin-left: 2rem;\n }\n .ml5-ns {\n margin-left: 4rem;\n }\n .ml6-ns {\n margin-left: 8rem;\n }\n .ml7-ns {\n margin-left: 16rem;\n }\n .mr0-ns {\n margin-right: 0;\n }\n .mr1-ns {\n margin-right: .25rem;\n }\n .mr2-ns {\n margin-right: .5rem;\n }\n .mr3-ns {\n margin-right: 1rem;\n }\n .mr4-ns {\n margin-right: 2rem;\n }\n .mr5-ns {\n margin-right: 4rem;\n }\n .mr6-ns {\n margin-right: 8rem;\n }\n .mr7-ns {\n margin-right: 16rem;\n }\n .mb0-ns {\n margin-bottom: 0;\n }\n .mb1-ns {\n margin-bottom: .25rem;\n }\n .mb2-ns {\n margin-bottom: .5rem;\n }\n .mb3-ns {\n margin-bottom: 1rem;\n }\n .mb4-ns {\n margin-bottom: 2rem;\n }\n .mb5-ns {\n margin-bottom: 4rem;\n }\n .mb6-ns {\n margin-bottom: 8rem;\n }\n .mb7-ns {\n margin-bottom: 16rem;\n }\n .mt0-ns {\n margin-top: 0;\n }\n .mt1-ns {\n margin-top: .25rem;\n }\n .mt2-ns {\n margin-top: .5rem;\n }\n .mt3-ns {\n margin-top: 1rem;\n }\n .mt4-ns {\n margin-top: 2rem;\n }\n .mt5-ns {\n margin-top: 4rem;\n }\n .mt6-ns {\n margin-top: 8rem;\n }\n .mt7-ns {\n margin-top: 16rem;\n }\n .mv0-ns {\n margin-top: 0;\n margin-bottom: 0;\n }\n .mv1-ns {\n margin-top: .25rem;\n margin-bottom: .25rem;\n }\n .mv2-ns {\n margin-top: .5rem;\n margin-bottom: .5rem;\n }\n .mv3-ns {\n margin-top: 1rem;\n margin-bottom: 1rem;\n }\n .mv4-ns {\n margin-top: 2rem;\n margin-bottom: 2rem;\n }\n .mv5-ns {\n margin-top: 4rem;\n margin-bottom: 4rem;\n }\n .mv6-ns {\n margin-top: 8rem;\n margin-bottom: 8rem;\n }\n .mv7-ns {\n margin-top: 16rem;\n margin-bottom: 16rem;\n }\n .mh0-ns {\n margin-left: 0;\n margin-right: 0;\n }\n .mh1-ns {\n margin-left: .25rem;\n margin-right: .25rem;\n }\n .mh2-ns {\n margin-left: .5rem;\n margin-right: .5rem;\n }\n .mh3-ns {\n margin-left: 1rem;\n margin-right: 1rem;\n }\n .mh4-ns {\n margin-left: 2rem;\n margin-right: 2rem;\n }\n .mh5-ns {\n margin-left: 4rem;\n margin-right: 4rem;\n }\n .mh6-ns {\n margin-left: 8rem;\n margin-right: 8rem;\n }\n .mh7-ns {\n margin-left: 16rem;\n margin-right: 16rem;\n }\n .na1-ns {\n margin: -.25rem;\n }\n .na2-ns {\n margin: -.5rem;\n }\n .na3-ns {\n margin: -1rem;\n }\n .na4-ns {\n margin: -2rem;\n }\n .na5-ns {\n margin: -4rem;\n }\n .na6-ns {\n margin: -8rem;\n }\n .na7-ns {\n margin: -16rem;\n }\n .nl1-ns {\n margin-left: -.25rem;\n }\n .nl2-ns {\n margin-left: -.5rem;\n }\n .nl3-ns {\n margin-left: -1rem;\n }\n .nl4-ns {\n margin-left: -2rem;\n }\n .nl5-ns {\n margin-left: -4rem;\n }\n .nl6-ns {\n margin-left: -8rem;\n }\n .nl7-ns {\n margin-left: -16rem;\n }\n .nr1-ns {\n margin-right: -.25rem;\n }\n .nr2-ns {\n margin-right: -.5rem;\n }\n .nr3-ns {\n margin-right: -1rem;\n }\n .nr4-ns {\n margin-right: -2rem;\n }\n .nr5-ns {\n margin-right: -4rem;\n }\n .nr6-ns {\n margin-right: -8rem;\n }\n .nr7-ns {\n margin-right: -16rem;\n }\n .nb1-ns {\n margin-bottom: -.25rem;\n }\n .nb2-ns {\n margin-bottom: -.5rem;\n }\n .nb3-ns {\n margin-bottom: -1rem;\n }\n .nb4-ns {\n margin-bottom: -2rem;\n }\n .nb5-ns {\n margin-bottom: -4rem;\n }\n .nb6-ns {\n margin-bottom: -8rem;\n }\n .nb7-ns {\n margin-bottom: -16rem;\n }\n .nt1-ns {\n margin-top: -.25rem;\n }\n .nt2-ns {\n margin-top: -.5rem;\n }\n .nt3-ns {\n margin-top: -1rem;\n }\n .nt4-ns {\n margin-top: -2rem;\n }\n .nt5-ns {\n margin-top: -4rem;\n }\n .nt6-ns {\n margin-top: -8rem;\n }\n .nt7-ns {\n margin-top: -16rem;\n }\n .strike-ns {\n text-decoration: line-through;\n }\n .underline-ns {\n text-decoration: underline;\n }\n .no-underline-ns {\n text-decoration: none;\n }\n .tl-ns {\n text-align: left;\n }\n .tr-ns {\n text-align: right;\n }\n .tc-ns {\n text-align: center;\n }\n .tj-ns {\n text-align: justify;\n }\n .ttc-ns {\n text-transform: capitalize;\n }\n .ttl-ns {\n text-transform: lowercase;\n }\n .ttu-ns {\n text-transform: uppercase;\n }\n .ttn-ns {\n text-transform: none;\n }\n .f-6-ns, .f-headline-ns {\n font-size: 6rem;\n }\n .f-5-ns, .f-subheadline-ns {\n font-size: 5rem;\n }\n .f1-ns {\n font-size: 3rem;\n }\n .f2-ns {\n font-size: 2.25rem;\n }\n .f3-ns {\n font-size: 1.5rem;\n }\n .f4-ns {\n font-size: 1.25rem;\n }\n .f5-ns {\n font-size: 1rem;\n }\n .f6-ns {\n font-size: .875rem;\n }\n .f7-ns {\n font-size: .75rem;\n }\n .measure-ns {\n max-width: 30em;\n }\n .measure-wide-ns {\n max-width: 34em;\n }\n .measure-narrow-ns {\n max-width: 20em;\n }\n .indent-ns {\n text-indent: 1em;\n margin-top: 0;\n margin-bottom: 0;\n }\n .small-caps-ns {\n font-variant: small-caps;\n }\n .truncate-ns {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n .center-ns {\n margin-left: auto;\n }\n .center-ns, .mr-auto-ns {\n margin-right: auto;\n }\n .ml-auto-ns {\n margin-left: auto;\n }\n .clip-ns {\n position: fixed !important;\n position: absolute !important;\n clip: rect(1px 1px 1px 1px);\n clip: rect(1px, 1px, 1px, 1px);\n }\n .ws-normal-ns {\n white-space: normal;\n }\n .nowrap-ns {\n white-space: nowrap;\n }\n .pre-ns {\n white-space: pre;\n }\n .v-base-ns {\n vertical-align: baseline;\n }\n .v-mid-ns {\n vertical-align: middle;\n }\n .v-top-ns {\n vertical-align: top;\n }\n .v-btm-ns {\n vertical-align: bottom;\n }\n}\n\n@media screen and (min-width: 30em) and (max-width: 60em) {\n .aspect-ratio-m {\n height: 0;\n position: relative;\n }\n .aspect-ratio--16x9-m {\n padding-bottom: 56.25%;\n }\n .aspect-ratio--9x16-m {\n padding-bottom: 177.77%;\n }\n .aspect-ratio--4x3-m {\n padding-bottom: 75%;\n }\n .aspect-ratio--3x4-m {\n padding-bottom: 133.33%;\n }\n .aspect-ratio--6x4-m {\n padding-bottom: 66.6%;\n }\n .aspect-ratio--4x6-m {\n padding-bottom: 150%;\n }\n .aspect-ratio--8x5-m {\n padding-bottom: 62.5%;\n }\n .aspect-ratio--5x8-m {\n padding-bottom: 160%;\n }\n .aspect-ratio--7x5-m {\n padding-bottom: 71.42%;\n }\n .aspect-ratio--5x7-m {\n padding-bottom: 140%;\n }\n .aspect-ratio--1x1-m {\n padding-bottom: 100%;\n }\n .aspect-ratio--object-m {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 100;\n }\n .cover-m {\n background-size: cover !important;\n }\n .contain-m {\n background-size: contain !important;\n }\n .bg-center-m {\n background-position: 50%;\n }\n .bg-center-m, .bg-top-m {\n background-repeat: no-repeat;\n }\n .bg-top-m {\n background-position: top;\n }\n .bg-right-m {\n background-position: 100%;\n }\n .bg-bottom-m, .bg-right-m {\n background-repeat: no-repeat;\n }\n .bg-bottom-m {\n background-position: bottom;\n }\n .bg-left-m {\n background-repeat: no-repeat;\n background-position: 0;\n }\n .outline-m {\n outline: 1px solid;\n }\n .outline-transparent-m {\n outline: 1px solid transparent;\n }\n .outline-0-m {\n outline: 0;\n }\n .ba-m {\n border-style: solid;\n border-width: 1px;\n }\n .bt-m {\n border-top-style: solid;\n border-top-width: 1px;\n }\n .br-m {\n border-right-style: solid;\n border-right-width: 1px;\n }\n .bb-m {\n border-bottom-style: solid;\n border-bottom-width: 1px;\n }\n .bl-m {\n border-left-style: solid;\n border-left-width: 1px;\n }\n .bn-m {\n border-style: none;\n border-width: 0;\n }\n .br0-m {\n border-radius: 0;\n }\n .br1-m {\n border-radius: .125rem;\n }\n .br2-m {\n border-radius: .25rem;\n }\n .br3-m {\n border-radius: .5rem;\n }\n .br4-m {\n border-radius: 1rem;\n }\n .br-100-m {\n border-radius: 100%;\n }\n .br-pill-m {\n border-radius: 9999px;\n }\n .br--bottom-m {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n .br--top-m {\n border-bottom-right-radius: 0;\n }\n .br--right-m, .br--top-m {\n border-bottom-left-radius: 0;\n }\n .br--right-m {\n border-top-left-radius: 0;\n }\n .br--left-m {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n .b--dotted-m {\n border-style: dotted;\n }\n .b--dashed-m {\n border-style: dashed;\n }\n .b--solid-m {\n border-style: solid;\n }\n .b--none-m {\n border-style: none;\n }\n .bw0-m {\n border-width: 0;\n }\n .bw1-m {\n border-width: .125rem;\n }\n .bw2-m {\n border-width: .25rem;\n }\n .bw3-m {\n border-width: .5rem;\n }\n .bw4-m {\n border-width: 1rem;\n }\n .bw5-m {\n border-width: 2rem;\n }\n .bt-0-m {\n border-top-width: 0;\n }\n .br-0-m {\n border-right-width: 0;\n }\n .bb-0-m {\n border-bottom-width: 0;\n }\n .bl-0-m {\n border-left-width: 0;\n }\n .shadow-1-m {\n box-shadow: 0 0 4px 2px rgba(0, 0, 0, 0.2);\n }\n .shadow-2-m {\n box-shadow: 0 0 8px 2px rgba(0, 0, 0, 0.2);\n }\n .shadow-3-m {\n box-shadow: 2px 2px 4px 2px rgba(0, 0, 0, 0.2);\n }\n .shadow-4-m {\n box-shadow: 2px 2px 8px 0 rgba(0, 0, 0, 0.2);\n }\n .shadow-5-m {\n box-shadow: 4px 4px 8px 0 rgba(0, 0, 0, 0.2);\n }\n .top-0-m {\n top: 0;\n }\n .left-0-m {\n left: 0;\n }\n .right-0-m {\n right: 0;\n }\n .bottom-0-m {\n bottom: 0;\n }\n .top-1-m {\n top: 1rem;\n }\n .left-1-m {\n left: 1rem;\n }\n .right-1-m {\n right: 1rem;\n }\n .bottom-1-m {\n bottom: 1rem;\n }\n .top-2-m {\n top: 2rem;\n }\n .left-2-m {\n left: 2rem;\n }\n .right-2-m {\n right: 2rem;\n }\n .bottom-2-m {\n bottom: 2rem;\n }\n .top--1-m {\n top: -1rem;\n }\n .right--1-m {\n right: -1rem;\n }\n .bottom--1-m {\n bottom: -1rem;\n }\n .left--1-m {\n left: -1rem;\n }\n .top--2-m {\n top: -2rem;\n }\n .right--2-m {\n right: -2rem;\n }\n .bottom--2-m {\n bottom: -2rem;\n }\n .left--2-m {\n left: -2rem;\n }\n .absolute--fill-m {\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n }\n .cl-m {\n clear: left;\n }\n .cr-m {\n clear: right;\n }\n .cb-m {\n clear: both;\n }\n .cn-m {\n clear: none;\n }\n .dn-m {\n display: none;\n }\n .di-m {\n display: inline;\n }\n .db-m {\n display: block;\n }\n .dib-m {\n display: inline-block;\n }\n .dit-m {\n display: inline-table;\n }\n .dt-m {\n display: table;\n }\n .dtc-m {\n display: table-cell;\n }\n .dt-row-m {\n display: table-row;\n }\n .dt-row-group-m {\n display: table-row-group;\n }\n .dt-column-m {\n display: table-column;\n }\n .dt-column-group-m {\n display: table-column-group;\n }\n .dt--fixed-m {\n table-layout: fixed;\n width: 100%;\n }\n .flex-m {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n }\n .inline-flex-m {\n display: -webkit-inline-box;\n display: -ms-inline-flexbox;\n display: inline-flex;\n }\n .flex-auto-m {\n -webkit-box-flex: 1;\n -ms-flex: 1 1 auto;\n flex: 1 1 auto;\n min-width: 0;\n min-height: 0;\n }\n .flex-none-m {\n -webkit-box-flex: 0;\n -ms-flex: none;\n flex: none;\n }\n .flex-column-m {\n -webkit-box-orient: vertical;\n -ms-flex-direction: column;\n flex-direction: column;\n }\n .flex-column-m, .flex-row-m {\n -webkit-box-direction: normal;\n }\n .flex-row-m {\n -webkit-box-orient: horizontal;\n -ms-flex-direction: row;\n flex-direction: row;\n }\n .flex-wrap-m {\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n }\n .flex-nowrap-m {\n -ms-flex-wrap: nowrap;\n flex-wrap: nowrap;\n }\n .flex-wrap-reverse-m {\n -ms-flex-wrap: wrap-reverse;\n flex-wrap: wrap-reverse;\n }\n .flex-column-reverse-m {\n -webkit-box-orient: vertical;\n -webkit-box-direction: reverse;\n -ms-flex-direction: column-reverse;\n flex-direction: column-reverse;\n }\n .flex-row-reverse-m {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: reverse;\n -ms-flex-direction: row-reverse;\n flex-direction: row-reverse;\n }\n .items-start-m {\n -webkit-box-align: start;\n -ms-flex-align: start;\n align-items: flex-start;\n }\n .items-end-m {\n -webkit-box-align: end;\n -ms-flex-align: end;\n align-items: flex-end;\n }\n .items-center-m {\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n }\n .items-baseline-m {\n -webkit-box-align: baseline;\n -ms-flex-align: baseline;\n align-items: baseline;\n }\n .items-stretch-m {\n -webkit-box-align: stretch;\n -ms-flex-align: stretch;\n align-items: stretch;\n }\n .self-start-m {\n -ms-flex-item-align: start;\n align-self: flex-start;\n }\n .self-end-m {\n -ms-flex-item-align: end;\n align-self: flex-end;\n }\n .self-center-m {\n -ms-flex-item-align: center;\n -ms-grid-row-align: center;\n align-self: center;\n }\n .self-baseline-m {\n -ms-flex-item-align: baseline;\n align-self: baseline;\n }\n .self-stretch-m {\n -ms-flex-item-align: stretch;\n -ms-grid-row-align: stretch;\n align-self: stretch;\n }\n .justify-start-m {\n -webkit-box-pack: start;\n -ms-flex-pack: start;\n justify-content: flex-start;\n }\n .justify-end-m {\n -webkit-box-pack: end;\n -ms-flex-pack: end;\n justify-content: flex-end;\n }\n .justify-center-m {\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n }\n .justify-between-m {\n -webkit-box-pack: justify;\n -ms-flex-pack: justify;\n justify-content: space-between;\n }\n .justify-around-m {\n -ms-flex-pack: distribute;\n justify-content: space-around;\n }\n .content-start-m {\n -ms-flex-line-pack: start;\n align-content: flex-start;\n }\n .content-end-m {\n -ms-flex-line-pack: end;\n align-content: flex-end;\n }\n .content-center-m {\n -ms-flex-line-pack: center;\n align-content: center;\n }\n .content-between-m {\n -ms-flex-line-pack: justify;\n align-content: space-between;\n }\n .content-around-m {\n -ms-flex-line-pack: distribute;\n align-content: space-around;\n }\n .content-stretch-m {\n -ms-flex-line-pack: stretch;\n align-content: stretch;\n }\n .order-0-m {\n -webkit-box-ordinal-group: 1;\n -ms-flex-order: 0;\n order: 0;\n }\n .order-1-m {\n -webkit-box-ordinal-group: 2;\n -ms-flex-order: 1;\n order: 1;\n }\n .order-2-m {\n -webkit-box-ordinal-group: 3;\n -ms-flex-order: 2;\n order: 2;\n }\n .order-3-m {\n -webkit-box-ordinal-group: 4;\n -ms-flex-order: 3;\n order: 3;\n }\n .order-4-m {\n -webkit-box-ordinal-group: 5;\n -ms-flex-order: 4;\n order: 4;\n }\n .order-5-m {\n -webkit-box-ordinal-group: 6;\n -ms-flex-order: 5;\n order: 5;\n }\n .order-6-m {\n -webkit-box-ordinal-group: 7;\n -ms-flex-order: 6;\n order: 6;\n }\n .order-7-m {\n -webkit-box-ordinal-group: 8;\n -ms-flex-order: 7;\n order: 7;\n }\n .order-8-m {\n -webkit-box-ordinal-group: 9;\n -ms-flex-order: 8;\n order: 8;\n }\n .order-last-m {\n -webkit-box-ordinal-group: 100000;\n -ms-flex-order: 99999;\n order: 99999;\n }\n .flex-grow-0-m {\n -webkit-box-flex: 0;\n -ms-flex-positive: 0;\n flex-grow: 0;\n }\n .flex-grow-1-m {\n -webkit-box-flex: 1;\n -ms-flex-positive: 1;\n flex-grow: 1;\n }\n .flex-shrink-0-m {\n -ms-flex-negative: 0;\n flex-shrink: 0;\n }\n .flex-shrink-1-m {\n -ms-flex-negative: 1;\n flex-shrink: 1;\n }\n .fl-m {\n float: left;\n }\n .fl-m, .fr-m {\n display: inline;\n }\n .fr-m {\n float: right;\n }\n .fn-m {\n float: none;\n }\n .i-m {\n font-style: italic;\n }\n .fs-normal-m {\n font-style: normal;\n }\n .normal-m {\n font-weight: 400;\n }\n .b-m {\n font-weight: 700;\n }\n .fw1-m {\n font-weight: 100;\n }\n .fw2-m {\n font-weight: 200;\n }\n .fw3-m {\n font-weight: 300;\n }\n .fw4-m {\n font-weight: 400;\n }\n .fw5-m {\n font-weight: 500;\n }\n .fw6-m {\n font-weight: 600;\n }\n .fw7-m {\n font-weight: 700;\n }\n .fw8-m {\n font-weight: 800;\n }\n .fw9-m {\n font-weight: 900;\n }\n .h1-m {\n height: 1rem;\n }\n .h2-m {\n height: 2rem;\n }\n .h3-m {\n height: 4rem;\n }\n .h4-m {\n height: 8rem;\n }\n .h5-m {\n height: 16rem;\n }\n .h-25-m {\n height: 25%;\n }\n .h-50-m {\n height: 50%;\n }\n .h-75-m {\n height: 75%;\n }\n .h-100-m {\n height: 100%;\n }\n .min-h-100-m {\n min-height: 100%;\n }\n .vh-25-m {\n height: 25vh;\n }\n .vh-50-m {\n height: 50vh;\n }\n .vh-75-m {\n height: 75vh;\n }\n .vh-100-m {\n height: 100vh;\n }\n .min-vh-100-m {\n min-height: 100vh;\n }\n .h-auto-m {\n height: auto;\n }\n .h-inherit-m {\n height: inherit;\n }\n .tracked-m {\n letter-spacing: .1em;\n }\n .tracked-tight-m {\n letter-spacing: -.05em;\n }\n .tracked-mega-m {\n letter-spacing: .25em;\n }\n .lh-solid-m {\n line-height: 1;\n }\n .lh-title-m {\n line-height: 1.25;\n }\n .lh-copy-m {\n line-height: 1.5;\n }\n .mw-100-m {\n max-width: 100%;\n }\n .mw1-m {\n max-width: 1rem;\n }\n .mw2-m {\n max-width: 2rem;\n }\n .mw3-m {\n max-width: 4rem;\n }\n .mw4-m {\n max-width: 8rem;\n }\n .mw5-m {\n max-width: 16rem;\n }\n .mw6-m {\n max-width: 32rem;\n }\n .mw7-m {\n max-width: 48rem;\n }\n .mw8-m {\n max-width: 64rem;\n }\n .mw9-m {\n max-width: 96rem;\n }\n .mw-none-m {\n max-width: none;\n }\n .w1-m {\n width: 1rem;\n }\n .w2-m {\n width: 2rem;\n }\n .w3-m {\n width: 4rem;\n }\n .w4-m {\n width: 8rem;\n }\n .w5-m {\n width: 16rem;\n }\n .w-10-m {\n width: 10%;\n }\n .w-20-m {\n width: 20%;\n }\n .w-25-m {\n width: 25%;\n }\n .w-30-m {\n width: 30%;\n }\n .w-33-m {\n width: 33%;\n }\n .w-34-m {\n width: 34%;\n }\n .w-40-m {\n width: 40%;\n }\n .w-50-m {\n width: 50%;\n }\n .w-60-m {\n width: 60%;\n }\n .w-70-m {\n width: 70%;\n }\n .w-75-m {\n width: 75%;\n }\n .w-80-m {\n width: 80%;\n }\n .w-90-m {\n width: 90%;\n }\n .w-100-m {\n width: 100%;\n }\n .w-third-m {\n width: 33.33333%;\n }\n .w-two-thirds-m {\n width: 66.66667%;\n }\n .w-auto-m {\n width: auto;\n }\n .overflow-visible-m {\n overflow: visible;\n }\n .overflow-hidden-m {\n overflow: hidden;\n }\n .overflow-scroll-m {\n overflow: scroll;\n }\n .overflow-auto-m {\n overflow: auto;\n }\n .overflow-x-visible-m {\n overflow-x: visible;\n }\n .overflow-x-hidden-m {\n overflow-x: hidden;\n }\n .overflow-x-scroll-m {\n overflow-x: scroll;\n }\n .overflow-x-auto-m {\n overflow-x: auto;\n }\n .overflow-y-visible-m {\n overflow-y: visible;\n }\n .overflow-y-hidden-m {\n overflow-y: hidden;\n }\n .overflow-y-scroll-m {\n overflow-y: scroll;\n }\n .overflow-y-auto-m {\n overflow-y: auto;\n }\n .static-m {\n position: static;\n }\n .relative-m {\n position: relative;\n }\n .absolute-m {\n position: absolute;\n }\n .fixed-m {\n position: fixed;\n }\n .rotate-45-m {\n -webkit-transform: rotate(45deg);\n transform: rotate(45deg);\n }\n .rotate-90-m {\n -webkit-transform: rotate(90deg);\n transform: rotate(90deg);\n }\n .rotate-135-m {\n -webkit-transform: rotate(135deg);\n transform: rotate(135deg);\n }\n .rotate-180-m {\n -webkit-transform: rotate(180deg);\n transform: rotate(180deg);\n }\n .rotate-225-m {\n -webkit-transform: rotate(225deg);\n transform: rotate(225deg);\n }\n .rotate-270-m {\n -webkit-transform: rotate(270deg);\n transform: rotate(270deg);\n }\n .rotate-315-m {\n -webkit-transform: rotate(315deg);\n transform: rotate(315deg);\n }\n .pa0-m {\n padding: 0;\n }\n .pa1-m {\n padding: .25rem;\n }\n .pa2-m {\n padding: .5rem;\n }\n .pa3-m {\n padding: 1rem;\n }\n .pa4-m {\n padding: 2rem;\n }\n .pa5-m {\n padding: 4rem;\n }\n .pa6-m {\n padding: 8rem;\n }\n .pa7-m {\n padding: 16rem;\n }\n .pl0-m {\n padding-left: 0;\n }\n .pl1-m {\n padding-left: .25rem;\n }\n .pl2-m {\n padding-left: .5rem;\n }\n .pl3-m {\n padding-left: 1rem;\n }\n .pl4-m {\n padding-left: 2rem;\n }\n .pl5-m {\n padding-left: 4rem;\n }\n .pl6-m {\n padding-left: 8rem;\n }\n .pl7-m {\n padding-left: 16rem;\n }\n .pr0-m {\n padding-right: 0;\n }\n .pr1-m {\n padding-right: .25rem;\n }\n .pr2-m {\n padding-right: .5rem;\n }\n .pr3-m {\n padding-right: 1rem;\n }\n .pr4-m {\n padding-right: 2rem;\n }\n .pr5-m {\n padding-right: 4rem;\n }\n .pr6-m {\n padding-right: 8rem;\n }\n .pr7-m {\n padding-right: 16rem;\n }\n .pb0-m {\n padding-bottom: 0;\n }\n .pb1-m {\n padding-bottom: .25rem;\n }\n .pb2-m {\n padding-bottom: .5rem;\n }\n .pb3-m {\n padding-bottom: 1rem;\n }\n .pb4-m {\n padding-bottom: 2rem;\n }\n .pb5-m {\n padding-bottom: 4rem;\n }\n .pb6-m {\n padding-bottom: 8rem;\n }\n .pb7-m {\n padding-bottom: 16rem;\n }\n .pt0-m {\n padding-top: 0;\n }\n .pt1-m {\n padding-top: .25rem;\n }\n .pt2-m {\n padding-top: .5rem;\n }\n .pt3-m {\n padding-top: 1rem;\n }\n .pt4-m {\n padding-top: 2rem;\n }\n .pt5-m {\n padding-top: 4rem;\n }\n .pt6-m {\n padding-top: 8rem;\n }\n .pt7-m {\n padding-top: 16rem;\n }\n .pv0-m {\n padding-top: 0;\n padding-bottom: 0;\n }\n .pv1-m {\n padding-top: .25rem;\n padding-bottom: .25rem;\n }\n .pv2-m {\n padding-top: .5rem;\n padding-bottom: .5rem;\n }\n .pv3-m {\n padding-top: 1rem;\n padding-bottom: 1rem;\n }\n .pv4-m {\n padding-top: 2rem;\n padding-bottom: 2rem;\n }\n .pv5-m {\n padding-top: 4rem;\n padding-bottom: 4rem;\n }\n .pv6-m {\n padding-top: 8rem;\n padding-bottom: 8rem;\n }\n .pv7-m {\n padding-top: 16rem;\n padding-bottom: 16rem;\n }\n .ph0-m {\n padding-left: 0;\n padding-right: 0;\n }\n .ph1-m {\n padding-left: .25rem;\n padding-right: .25rem;\n }\n .ph2-m {\n padding-left: .5rem;\n padding-right: .5rem;\n }\n .ph3-m {\n padding-left: 1rem;\n padding-right: 1rem;\n }\n .ph4-m {\n padding-left: 2rem;\n padding-right: 2rem;\n }\n .ph5-m {\n padding-left: 4rem;\n padding-right: 4rem;\n }\n .ph6-m {\n padding-left: 8rem;\n padding-right: 8rem;\n }\n .ph7-m {\n padding-left: 16rem;\n padding-right: 16rem;\n }\n .ma0-m {\n margin: 0;\n }\n .ma1-m {\n margin: .25rem;\n }\n .ma2-m {\n margin: .5rem;\n }\n .ma3-m {\n margin: 1rem;\n }\n .ma4-m {\n margin: 2rem;\n }\n .ma5-m {\n margin: 4rem;\n }\n .ma6-m {\n margin: 8rem;\n }\n .ma7-m {\n margin: 16rem;\n }\n .ml0-m {\n margin-left: 0;\n }\n .ml1-m {\n margin-left: .25rem;\n }\n .ml2-m {\n margin-left: .5rem;\n }\n .ml3-m {\n margin-left: 1rem;\n }\n .ml4-m {\n margin-left: 2rem;\n }\n .ml5-m {\n margin-left: 4rem;\n }\n .ml6-m {\n margin-left: 8rem;\n }\n .ml7-m {\n margin-left: 16rem;\n }\n .mr0-m {\n margin-right: 0;\n }\n .mr1-m {\n margin-right: .25rem;\n }\n .mr2-m {\n margin-right: .5rem;\n }\n .mr3-m {\n margin-right: 1rem;\n }\n .mr4-m {\n margin-right: 2rem;\n }\n .mr5-m {\n margin-right: 4rem;\n }\n .mr6-m {\n margin-right: 8rem;\n }\n .mr7-m {\n margin-right: 16rem;\n }\n .mb0-m {\n margin-bottom: 0;\n }\n .mb1-m {\n margin-bottom: .25rem;\n }\n .mb2-m {\n margin-bottom: .5rem;\n }\n .mb3-m {\n margin-bottom: 1rem;\n }\n .mb4-m {\n margin-bottom: 2rem;\n }\n .mb5-m {\n margin-bottom: 4rem;\n }\n .mb6-m {\n margin-bottom: 8rem;\n }\n .mb7-m {\n margin-bottom: 16rem;\n }\n .mt0-m {\n margin-top: 0;\n }\n .mt1-m {\n margin-top: .25rem;\n }\n .mt2-m {\n margin-top: .5rem;\n }\n .mt3-m {\n margin-top: 1rem;\n }\n .mt4-m {\n margin-top: 2rem;\n }\n .mt5-m {\n margin-top: 4rem;\n }\n .mt6-m {\n margin-top: 8rem;\n }\n .mt7-m {\n margin-top: 16rem;\n }\n .mv0-m {\n margin-top: 0;\n margin-bottom: 0;\n }\n .mv1-m {\n margin-top: .25rem;\n margin-bottom: .25rem;\n }\n .mv2-m {\n margin-top: .5rem;\n margin-bottom: .5rem;\n }\n .mv3-m {\n margin-top: 1rem;\n margin-bottom: 1rem;\n }\n .mv4-m {\n margin-top: 2rem;\n margin-bottom: 2rem;\n }\n .mv5-m {\n margin-top: 4rem;\n margin-bottom: 4rem;\n }\n .mv6-m {\n margin-top: 8rem;\n margin-bottom: 8rem;\n }\n .mv7-m {\n margin-top: 16rem;\n margin-bottom: 16rem;\n }\n .mh0-m {\n margin-left: 0;\n margin-right: 0;\n }\n .mh1-m {\n margin-left: .25rem;\n margin-right: .25rem;\n }\n .mh2-m {\n margin-left: .5rem;\n margin-right: .5rem;\n }\n .mh3-m {\n margin-left: 1rem;\n margin-right: 1rem;\n }\n .mh4-m {\n margin-left: 2rem;\n margin-right: 2rem;\n }\n .mh5-m {\n margin-left: 4rem;\n margin-right: 4rem;\n }\n .mh6-m {\n margin-left: 8rem;\n margin-right: 8rem;\n }\n .mh7-m {\n margin-left: 16rem;\n margin-right: 16rem;\n }\n .na1-m {\n margin: -.25rem;\n }\n .na2-m {\n margin: -.5rem;\n }\n .na3-m {\n margin: -1rem;\n }\n .na4-m {\n margin: -2rem;\n }\n .na5-m {\n margin: -4rem;\n }\n .na6-m {\n margin: -8rem;\n }\n .na7-m {\n margin: -16rem;\n }\n .nl1-m {\n margin-left: -.25rem;\n }\n .nl2-m {\n margin-left: -.5rem;\n }\n .nl3-m {\n margin-left: -1rem;\n }\n .nl4-m {\n margin-left: -2rem;\n }\n .nl5-m {\n margin-left: -4rem;\n }\n .nl6-m {\n margin-left: -8rem;\n }\n .nl7-m {\n margin-left: -16rem;\n }\n .nr1-m {\n margin-right: -.25rem;\n }\n .nr2-m {\n margin-right: -.5rem;\n }\n .nr3-m {\n margin-right: -1rem;\n }\n .nr4-m {\n margin-right: -2rem;\n }\n .nr5-m {\n margin-right: -4rem;\n }\n .nr6-m {\n margin-right: -8rem;\n }\n .nr7-m {\n margin-right: -16rem;\n }\n .nb1-m {\n margin-bottom: -.25rem;\n }\n .nb2-m {\n margin-bottom: -.5rem;\n }\n .nb3-m {\n margin-bottom: -1rem;\n }\n .nb4-m {\n margin-bottom: -2rem;\n }\n .nb5-m {\n margin-bottom: -4rem;\n }\n .nb6-m {\n margin-bottom: -8rem;\n }\n .nb7-m {\n margin-bottom: -16rem;\n }\n .nt1-m {\n margin-top: -.25rem;\n }\n .nt2-m {\n margin-top: -.5rem;\n }\n .nt3-m {\n margin-top: -1rem;\n }\n .nt4-m {\n margin-top: -2rem;\n }\n .nt5-m {\n margin-top: -4rem;\n }\n .nt6-m {\n margin-top: -8rem;\n }\n .nt7-m {\n margin-top: -16rem;\n }\n .strike-m {\n text-decoration: line-through;\n }\n .underline-m {\n text-decoration: underline;\n }\n .no-underline-m {\n text-decoration: none;\n }\n .tl-m {\n text-align: left;\n }\n .tr-m {\n text-align: right;\n }\n .tc-m {\n text-align: center;\n }\n .tj-m {\n text-align: justify;\n }\n .ttc-m {\n text-transform: capitalize;\n }\n .ttl-m {\n text-transform: lowercase;\n }\n .ttu-m {\n text-transform: uppercase;\n }\n .ttn-m {\n text-transform: none;\n }\n .f-6-m, .f-headline-m {\n font-size: 6rem;\n }\n .f-5-m, .f-subheadline-m {\n font-size: 5rem;\n }\n .f1-m {\n font-size: 3rem;\n }\n .f2-m {\n font-size: 2.25rem;\n }\n .f3-m {\n font-size: 1.5rem;\n }\n .f4-m {\n font-size: 1.25rem;\n }\n .f5-m {\n font-size: 1rem;\n }\n .f6-m {\n font-size: .875rem;\n }\n .f7-m {\n font-size: .75rem;\n }\n .measure-m {\n max-width: 30em;\n }\n .measure-wide-m {\n max-width: 34em;\n }\n .measure-narrow-m {\n max-width: 20em;\n }\n .indent-m {\n text-indent: 1em;\n margin-top: 0;\n margin-bottom: 0;\n }\n .small-caps-m {\n font-variant: small-caps;\n }\n .truncate-m {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n .center-m {\n margin-left: auto;\n }\n .center-m, .mr-auto-m {\n margin-right: auto;\n }\n .ml-auto-m {\n margin-left: auto;\n }\n .clip-m {\n position: fixed !important;\n position: absolute !important;\n clip: rect(1px 1px 1px 1px);\n clip: rect(1px, 1px, 1px, 1px);\n }\n .ws-normal-m {\n white-space: normal;\n }\n .nowrap-m {\n white-space: nowrap;\n }\n .pre-m {\n white-space: pre;\n }\n .v-base-m {\n vertical-align: baseline;\n }\n .v-mid-m {\n vertical-align: middle;\n }\n .v-top-m {\n vertical-align: top;\n }\n .v-btm-m {\n vertical-align: bottom;\n }\n}\n\n@media screen and (min-width: 60em) {\n .aspect-ratio-l {\n height: 0;\n position: relative;\n }\n .aspect-ratio--16x9-l {\n padding-bottom: 56.25%;\n }\n .aspect-ratio--9x16-l {\n padding-bottom: 177.77%;\n }\n .aspect-ratio--4x3-l {\n padding-bottom: 75%;\n }\n .aspect-ratio--3x4-l {\n padding-bottom: 133.33%;\n }\n .aspect-ratio--6x4-l {\n padding-bottom: 66.6%;\n }\n .aspect-ratio--4x6-l {\n padding-bottom: 150%;\n }\n .aspect-ratio--8x5-l {\n padding-bottom: 62.5%;\n }\n .aspect-ratio--5x8-l {\n padding-bottom: 160%;\n }\n .aspect-ratio--7x5-l {\n padding-bottom: 71.42%;\n }\n .aspect-ratio--5x7-l {\n padding-bottom: 140%;\n }\n .aspect-ratio--1x1-l {\n padding-bottom: 100%;\n }\n .aspect-ratio--object-l {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 100;\n }\n .cover-l {\n background-size: cover !important;\n }\n .contain-l {\n background-size: contain !important;\n }\n .bg-center-l {\n background-position: 50%;\n }\n .bg-center-l, .bg-top-l {\n background-repeat: no-repeat;\n }\n .bg-top-l {\n background-position: top;\n }\n .bg-right-l {\n background-position: 100%;\n }\n .bg-bottom-l, .bg-right-l {\n background-repeat: no-repeat;\n }\n .bg-bottom-l {\n background-position: bottom;\n }\n .bg-left-l {\n background-repeat: no-repeat;\n background-position: 0;\n }\n .outline-l {\n outline: 1px solid;\n }\n .outline-transparent-l {\n outline: 1px solid transparent;\n }\n .outline-0-l {\n outline: 0;\n }\n .ba-l {\n border-style: solid;\n border-width: 1px;\n }\n .bt-l {\n border-top-style: solid;\n border-top-width: 1px;\n }\n .br-l {\n border-right-style: solid;\n border-right-width: 1px;\n }\n .bb-l {\n border-bottom-style: solid;\n border-bottom-width: 1px;\n }\n .bl-l {\n border-left-style: solid;\n border-left-width: 1px;\n }\n .bn-l {\n border-style: none;\n border-width: 0;\n }\n .br0-l {\n border-radius: 0;\n }\n .br1-l {\n border-radius: .125rem;\n }\n .br2-l {\n border-radius: .25rem;\n }\n .br3-l {\n border-radius: .5rem;\n }\n .br4-l {\n border-radius: 1rem;\n }\n .br-100-l {\n border-radius: 100%;\n }\n .br-pill-l {\n border-radius: 9999px;\n }\n .br--bottom-l {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n .br--top-l {\n border-bottom-right-radius: 0;\n }\n .br--right-l, .br--top-l {\n border-bottom-left-radius: 0;\n }\n .br--right-l {\n border-top-left-radius: 0;\n }\n .br--left-l {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n .b--dotted-l {\n border-style: dotted;\n }\n .b--dashed-l {\n border-style: dashed;\n }\n .b--solid-l {\n border-style: solid;\n }\n .b--none-l {\n border-style: none;\n }\n .bw0-l {\n border-width: 0;\n }\n .bw1-l {\n border-width: .125rem;\n }\n .bw2-l {\n border-width: .25rem;\n }\n .bw3-l {\n border-width: .5rem;\n }\n .bw4-l {\n border-width: 1rem;\n }\n .bw5-l {\n border-width: 2rem;\n }\n .bt-0-l {\n border-top-width: 0;\n }\n .br-0-l {\n border-right-width: 0;\n }\n .bb-0-l {\n border-bottom-width: 0;\n }\n .bl-0-l {\n border-left-width: 0;\n }\n .shadow-1-l {\n box-shadow: 0 0 4px 2px rgba(0, 0, 0, 0.2);\n }\n .shadow-2-l {\n box-shadow: 0 0 8px 2px rgba(0, 0, 0, 0.2);\n }\n .shadow-3-l {\n box-shadow: 2px 2px 4px 2px rgba(0, 0, 0, 0.2);\n }\n .shadow-4-l {\n box-shadow: 2px 2px 8px 0 rgba(0, 0, 0, 0.2);\n }\n .shadow-5-l {\n box-shadow: 4px 4px 8px 0 rgba(0, 0, 0, 0.2);\n }\n .top-0-l {\n top: 0;\n }\n .left-0-l {\n left: 0;\n }\n .right-0-l {\n right: 0;\n }\n .bottom-0-l {\n bottom: 0;\n }\n .top-1-l {\n top: 1rem;\n }\n .left-1-l {\n left: 1rem;\n }\n .right-1-l {\n right: 1rem;\n }\n .bottom-1-l {\n bottom: 1rem;\n }\n .top-2-l {\n top: 2rem;\n }\n .left-2-l {\n left: 2rem;\n }\n .right-2-l {\n right: 2rem;\n }\n .bottom-2-l {\n bottom: 2rem;\n }\n .top--1-l {\n top: -1rem;\n }\n .right--1-l {\n right: -1rem;\n }\n .bottom--1-l {\n bottom: -1rem;\n }\n .left--1-l {\n left: -1rem;\n }\n .top--2-l {\n top: -2rem;\n }\n .right--2-l {\n right: -2rem;\n }\n .bottom--2-l {\n bottom: -2rem;\n }\n .left--2-l {\n left: -2rem;\n }\n .absolute--fill-l {\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n }\n .cl-l {\n clear: left;\n }\n .cr-l {\n clear: right;\n }\n .cb-l {\n clear: both;\n }\n .cn-l {\n clear: none;\n }\n .dn-l {\n display: none;\n }\n .di-l {\n display: inline;\n }\n .db-l {\n display: block;\n }\n .dib-l {\n display: inline-block;\n }\n .dit-l {\n display: inline-table;\n }\n .dt-l {\n display: table;\n }\n .dtc-l {\n display: table-cell;\n }\n .dt-row-l {\n display: table-row;\n }\n .dt-row-group-l {\n display: table-row-group;\n }\n .dt-column-l {\n display: table-column;\n }\n .dt-column-group-l {\n display: table-column-group;\n }\n .dt--fixed-l {\n table-layout: fixed;\n width: 100%;\n }\n .flex-l {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n }\n .inline-flex-l {\n display: -webkit-inline-box;\n display: -ms-inline-flexbox;\n display: inline-flex;\n }\n .flex-auto-l {\n -webkit-box-flex: 1;\n -ms-flex: 1 1 auto;\n flex: 1 1 auto;\n min-width: 0;\n min-height: 0;\n }\n .flex-none-l {\n -webkit-box-flex: 0;\n -ms-flex: none;\n flex: none;\n }\n .flex-column-l {\n -webkit-box-orient: vertical;\n -ms-flex-direction: column;\n flex-direction: column;\n }\n .flex-column-l, .flex-row-l {\n -webkit-box-direction: normal;\n }\n .flex-row-l {\n -webkit-box-orient: horizontal;\n -ms-flex-direction: row;\n flex-direction: row;\n }\n .flex-wrap-l {\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n }\n .flex-nowrap-l {\n -ms-flex-wrap: nowrap;\n flex-wrap: nowrap;\n }\n .flex-wrap-reverse-l {\n -ms-flex-wrap: wrap-reverse;\n flex-wrap: wrap-reverse;\n }\n .flex-column-reverse-l {\n -webkit-box-orient: vertical;\n -webkit-box-direction: reverse;\n -ms-flex-direction: column-reverse;\n flex-direction: column-reverse;\n }\n .flex-row-reverse-l {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: reverse;\n -ms-flex-direction: row-reverse;\n flex-direction: row-reverse;\n }\n .items-start-l {\n -webkit-box-align: start;\n -ms-flex-align: start;\n align-items: flex-start;\n }\n .items-end-l {\n -webkit-box-align: end;\n -ms-flex-align: end;\n align-items: flex-end;\n }\n .items-center-l {\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n }\n .items-baseline-l {\n -webkit-box-align: baseline;\n -ms-flex-align: baseline;\n align-items: baseline;\n }\n .items-stretch-l {\n -webkit-box-align: stretch;\n -ms-flex-align: stretch;\n align-items: stretch;\n }\n .self-start-l {\n -ms-flex-item-align: start;\n align-self: flex-start;\n }\n .self-end-l {\n -ms-flex-item-align: end;\n align-self: flex-end;\n }\n .self-center-l {\n -ms-flex-item-align: center;\n -ms-grid-row-align: center;\n align-self: center;\n }\n .self-baseline-l {\n -ms-flex-item-align: baseline;\n align-self: baseline;\n }\n .self-stretch-l {\n -ms-flex-item-align: stretch;\n -ms-grid-row-align: stretch;\n align-self: stretch;\n }\n .justify-start-l {\n -webkit-box-pack: start;\n -ms-flex-pack: start;\n justify-content: flex-start;\n }\n .justify-end-l {\n -webkit-box-pack: end;\n -ms-flex-pack: end;\n justify-content: flex-end;\n }\n .justify-center-l {\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n }\n .justify-between-l {\n -webkit-box-pack: justify;\n -ms-flex-pack: justify;\n justify-content: space-between;\n }\n .justify-around-l {\n -ms-flex-pack: distribute;\n justify-content: space-around;\n }\n .content-start-l {\n -ms-flex-line-pack: start;\n align-content: flex-start;\n }\n .content-end-l {\n -ms-flex-line-pack: end;\n align-content: flex-end;\n }\n .content-center-l {\n -ms-flex-line-pack: center;\n align-content: center;\n }\n .content-between-l {\n -ms-flex-line-pack: justify;\n align-content: space-between;\n }\n .content-around-l {\n -ms-flex-line-pack: distribute;\n align-content: space-around;\n }\n .content-stretch-l {\n -ms-flex-line-pack: stretch;\n align-content: stretch;\n }\n .order-0-l {\n -webkit-box-ordinal-group: 1;\n -ms-flex-order: 0;\n order: 0;\n }\n .order-1-l {\n -webkit-box-ordinal-group: 2;\n -ms-flex-order: 1;\n order: 1;\n }\n .order-2-l {\n -webkit-box-ordinal-group: 3;\n -ms-flex-order: 2;\n order: 2;\n }\n .order-3-l {\n -webkit-box-ordinal-group: 4;\n -ms-flex-order: 3;\n order: 3;\n }\n .order-4-l {\n -webkit-box-ordinal-group: 5;\n -ms-flex-order: 4;\n order: 4;\n }\n .order-5-l {\n -webkit-box-ordinal-group: 6;\n -ms-flex-order: 5;\n order: 5;\n }\n .order-6-l {\n -webkit-box-ordinal-group: 7;\n -ms-flex-order: 6;\n order: 6;\n }\n .order-7-l {\n -webkit-box-ordinal-group: 8;\n -ms-flex-order: 7;\n order: 7;\n }\n .order-8-l {\n -webkit-box-ordinal-group: 9;\n -ms-flex-order: 8;\n order: 8;\n }\n .order-last-l {\n -webkit-box-ordinal-group: 100000;\n -ms-flex-order: 99999;\n order: 99999;\n }\n .flex-grow-0-l {\n -webkit-box-flex: 0;\n -ms-flex-positive: 0;\n flex-grow: 0;\n }\n .flex-grow-1-l {\n -webkit-box-flex: 1;\n -ms-flex-positive: 1;\n flex-grow: 1;\n }\n .flex-shrink-0-l {\n -ms-flex-negative: 0;\n flex-shrink: 0;\n }\n .flex-shrink-1-l {\n -ms-flex-negative: 1;\n flex-shrink: 1;\n }\n .fl-l {\n float: left;\n }\n .fl-l, .fr-l {\n display: inline;\n }\n .fr-l {\n float: right;\n }\n .fn-l {\n float: none;\n }\n .i-l {\n font-style: italic;\n }\n .fs-normal-l {\n font-style: normal;\n }\n .normal-l {\n font-weight: 400;\n }\n .b-l {\n font-weight: 700;\n }\n .fw1-l {\n font-weight: 100;\n }\n .fw2-l {\n font-weight: 200;\n }\n .fw3-l {\n font-weight: 300;\n }\n .fw4-l {\n font-weight: 400;\n }\n .fw5-l {\n font-weight: 500;\n }\n .fw6-l {\n font-weight: 600;\n }\n .fw7-l {\n font-weight: 700;\n }\n .fw8-l {\n font-weight: 800;\n }\n .fw9-l {\n font-weight: 900;\n }\n .h1-l {\n height: 1rem;\n }\n .h2-l {\n height: 2rem;\n }\n .h3-l {\n height: 4rem;\n }\n .h4-l {\n height: 8rem;\n }\n .h5-l {\n height: 16rem;\n }\n .h-25-l {\n height: 25%;\n }\n .h-50-l {\n height: 50%;\n }\n .h-75-l {\n height: 75%;\n }\n .h-100-l {\n height: 100%;\n }\n .min-h-100-l {\n min-height: 100%;\n }\n .vh-25-l {\n height: 25vh;\n }\n .vh-50-l {\n height: 50vh;\n }\n .vh-75-l {\n height: 75vh;\n }\n .vh-100-l {\n height: 100vh;\n }\n .min-vh-100-l {\n min-height: 100vh;\n }\n .h-auto-l {\n height: auto;\n }\n .h-inherit-l {\n height: inherit;\n }\n .tracked-l {\n letter-spacing: .1em;\n }\n .tracked-tight-l {\n letter-spacing: -.05em;\n }\n .tracked-mega-l {\n letter-spacing: .25em;\n }\n .lh-solid-l {\n line-height: 1;\n }\n .lh-title-l {\n line-height: 1.25;\n }\n .lh-copy-l {\n line-height: 1.5;\n }\n .mw-100-l {\n max-width: 100%;\n }\n .mw1-l {\n max-width: 1rem;\n }\n .mw2-l {\n max-width: 2rem;\n }\n .mw3-l {\n max-width: 4rem;\n }\n .mw4-l {\n max-width: 8rem;\n }\n .mw5-l {\n max-width: 16rem;\n }\n .mw6-l {\n max-width: 32rem;\n }\n .mw7-l {\n max-width: 48rem;\n }\n .mw8-l {\n max-width: 64rem;\n }\n .mw9-l {\n max-width: 96rem;\n }\n .mw-none-l {\n max-width: none;\n }\n .w1-l {\n width: 1rem;\n }\n .w2-l {\n width: 2rem;\n }\n .w3-l {\n width: 4rem;\n }\n .w4-l {\n width: 8rem;\n }\n .w5-l {\n width: 16rem;\n }\n .w-10-l {\n width: 10%;\n }\n .w-20-l {\n width: 20%;\n }\n .w-25-l {\n width: 25%;\n }\n .w-30-l {\n width: 30%;\n }\n .w-33-l {\n width: 33%;\n }\n .w-34-l {\n width: 34%;\n }\n .w-40-l {\n width: 40%;\n }\n .w-50-l {\n width: 50%;\n }\n .w-60-l {\n width: 60%;\n }\n .w-70-l {\n width: 70%;\n }\n .w-75-l {\n width: 75%;\n }\n .w-80-l {\n width: 80%;\n }\n .w-90-l {\n width: 90%;\n }\n .w-100-l {\n width: 100%;\n }\n .w-third-l {\n width: 33.33333%;\n }\n .w-two-thirds-l {\n width: 66.66667%;\n }\n .w-auto-l {\n width: auto;\n }\n .overflow-visible-l {\n overflow: visible;\n }\n .overflow-hidden-l {\n overflow: hidden;\n }\n .overflow-scroll-l {\n overflow: scroll;\n }\n .overflow-auto-l {\n overflow: auto;\n }\n .overflow-x-visible-l {\n overflow-x: visible;\n }\n .overflow-x-hidden-l {\n overflow-x: hidden;\n }\n .overflow-x-scroll-l {\n overflow-x: scroll;\n }\n .overflow-x-auto-l {\n overflow-x: auto;\n }\n .overflow-y-visible-l {\n overflow-y: visible;\n }\n .overflow-y-hidden-l {\n overflow-y: hidden;\n }\n .overflow-y-scroll-l {\n overflow-y: scroll;\n }\n .overflow-y-auto-l {\n overflow-y: auto;\n }\n .static-l {\n position: static;\n }\n .relative-l {\n position: relative;\n }\n .absolute-l {\n position: absolute;\n }\n .fixed-l {\n position: fixed;\n }\n .rotate-45-l {\n -webkit-transform: rotate(45deg);\n transform: rotate(45deg);\n }\n .rotate-90-l {\n -webkit-transform: rotate(90deg);\n transform: rotate(90deg);\n }\n .rotate-135-l {\n -webkit-transform: rotate(135deg);\n transform: rotate(135deg);\n }\n .rotate-180-l {\n -webkit-transform: rotate(180deg);\n transform: rotate(180deg);\n }\n .rotate-225-l {\n -webkit-transform: rotate(225deg);\n transform: rotate(225deg);\n }\n .rotate-270-l {\n -webkit-transform: rotate(270deg);\n transform: rotate(270deg);\n }\n .rotate-315-l {\n -webkit-transform: rotate(315deg);\n transform: rotate(315deg);\n }\n .pa0-l {\n padding: 0;\n }\n .pa1-l {\n padding: .25rem;\n }\n .pa2-l {\n padding: .5rem;\n }\n .pa3-l {\n padding: 1rem;\n }\n .pa4-l {\n padding: 2rem;\n }\n .pa5-l {\n padding: 4rem;\n }\n .pa6-l {\n padding: 8rem;\n }\n .pa7-l {\n padding: 16rem;\n }\n .pl0-l {\n padding-left: 0;\n }\n .pl1-l {\n padding-left: .25rem;\n }\n .pl2-l {\n padding-left: .5rem;\n }\n .pl3-l {\n padding-left: 1rem;\n }\n .pl4-l {\n padding-left: 2rem;\n }\n .pl5-l {\n padding-left: 4rem;\n }\n .pl6-l {\n padding-left: 8rem;\n }\n .pl7-l {\n padding-left: 16rem;\n }\n .pr0-l {\n padding-right: 0;\n }\n .pr1-l {\n padding-right: .25rem;\n }\n .pr2-l {\n padding-right: .5rem;\n }\n .pr3-l {\n padding-right: 1rem;\n }\n .pr4-l {\n padding-right: 2rem;\n }\n .pr5-l {\n padding-right: 4rem;\n }\n .pr6-l {\n padding-right: 8rem;\n }\n .pr7-l {\n padding-right: 16rem;\n }\n .pb0-l {\n padding-bottom: 0;\n }\n .pb1-l {\n padding-bottom: .25rem;\n }\n .pb2-l {\n padding-bottom: .5rem;\n }\n .pb3-l {\n padding-bottom: 1rem;\n }\n .pb4-l {\n padding-bottom: 2rem;\n }\n .pb5-l {\n padding-bottom: 4rem;\n }\n .pb6-l {\n padding-bottom: 8rem;\n }\n .pb7-l {\n padding-bottom: 16rem;\n }\n .pt0-l {\n padding-top: 0;\n }\n .pt1-l {\n padding-top: .25rem;\n }\n .pt2-l {\n padding-top: .5rem;\n }\n .pt3-l {\n padding-top: 1rem;\n }\n .pt4-l {\n padding-top: 2rem;\n }\n .pt5-l {\n padding-top: 4rem;\n }\n .pt6-l {\n padding-top: 8rem;\n }\n .pt7-l {\n padding-top: 16rem;\n }\n .pv0-l {\n padding-top: 0;\n padding-bottom: 0;\n }\n .pv1-l {\n padding-top: .25rem;\n padding-bottom: .25rem;\n }\n .pv2-l {\n padding-top: .5rem;\n padding-bottom: .5rem;\n }\n .pv3-l {\n padding-top: 1rem;\n padding-bottom: 1rem;\n }\n .pv4-l {\n padding-top: 2rem;\n padding-bottom: 2rem;\n }\n .pv5-l {\n padding-top: 4rem;\n padding-bottom: 4rem;\n }\n .pv6-l {\n padding-top: 8rem;\n padding-bottom: 8rem;\n }\n .pv7-l {\n padding-top: 16rem;\n padding-bottom: 16rem;\n }\n .ph0-l {\n padding-left: 0;\n padding-right: 0;\n }\n .ph1-l {\n padding-left: .25rem;\n padding-right: .25rem;\n }\n .ph2-l {\n padding-left: .5rem;\n padding-right: .5rem;\n }\n .ph3-l {\n padding-left: 1rem;\n padding-right: 1rem;\n }\n .ph4-l {\n padding-left: 2rem;\n padding-right: 2rem;\n }\n .ph5-l {\n padding-left: 4rem;\n padding-right: 4rem;\n }\n .ph6-l {\n padding-left: 8rem;\n padding-right: 8rem;\n }\n .ph7-l {\n padding-left: 16rem;\n padding-right: 16rem;\n }\n .ma0-l {\n margin: 0;\n }\n .ma1-l {\n margin: .25rem;\n }\n .ma2-l {\n margin: .5rem;\n }\n .ma3-l {\n margin: 1rem;\n }\n .ma4-l {\n margin: 2rem;\n }\n .ma5-l {\n margin: 4rem;\n }\n .ma6-l {\n margin: 8rem;\n }\n .ma7-l {\n margin: 16rem;\n }\n .ml0-l {\n margin-left: 0;\n }\n .ml1-l {\n margin-left: .25rem;\n }\n .ml2-l {\n margin-left: .5rem;\n }\n .ml3-l {\n margin-left: 1rem;\n }\n .ml4-l {\n margin-left: 2rem;\n }\n .ml5-l {\n margin-left: 4rem;\n }\n .ml6-l {\n margin-left: 8rem;\n }\n .ml7-l {\n margin-left: 16rem;\n }\n .mr0-l {\n margin-right: 0;\n }\n .mr1-l {\n margin-right: .25rem;\n }\n .mr2-l {\n margin-right: .5rem;\n }\n .mr3-l {\n margin-right: 1rem;\n }\n .mr4-l {\n margin-right: 2rem;\n }\n .mr5-l {\n margin-right: 4rem;\n }\n .mr6-l {\n margin-right: 8rem;\n }\n .mr7-l {\n margin-right: 16rem;\n }\n .mb0-l {\n margin-bottom: 0;\n }\n .mb1-l {\n margin-bottom: .25rem;\n }\n .mb2-l {\n margin-bottom: .5rem;\n }\n .mb3-l {\n margin-bottom: 1rem;\n }\n .mb4-l {\n margin-bottom: 2rem;\n }\n .mb5-l {\n margin-bottom: 4rem;\n }\n .mb6-l {\n margin-bottom: 8rem;\n }\n .mb7-l {\n margin-bottom: 16rem;\n }\n .mt0-l {\n margin-top: 0;\n }\n .mt1-l {\n margin-top: .25rem;\n }\n .mt2-l {\n margin-top: .5rem;\n }\n .mt3-l {\n margin-top: 1rem;\n }\n .mt4-l {\n margin-top: 2rem;\n }\n .mt5-l {\n margin-top: 4rem;\n }\n .mt6-l {\n margin-top: 8rem;\n }\n .mt7-l {\n margin-top: 16rem;\n }\n .mv0-l {\n margin-top: 0;\n margin-bottom: 0;\n }\n .mv1-l {\n margin-top: .25rem;\n margin-bottom: .25rem;\n }\n .mv2-l {\n margin-top: .5rem;\n margin-bottom: .5rem;\n }\n .mv3-l {\n margin-top: 1rem;\n margin-bottom: 1rem;\n }\n .mv4-l {\n margin-top: 2rem;\n margin-bottom: 2rem;\n }\n .mv5-l {\n margin-top: 4rem;\n margin-bottom: 4rem;\n }\n .mv6-l {\n margin-top: 8rem;\n margin-bottom: 8rem;\n }\n .mv7-l {\n margin-top: 16rem;\n margin-bottom: 16rem;\n }\n .mh0-l {\n margin-left: 0;\n margin-right: 0;\n }\n .mh1-l {\n margin-left: .25rem;\n margin-right: .25rem;\n }\n .mh2-l {\n margin-left: .5rem;\n margin-right: .5rem;\n }\n .mh3-l {\n margin-left: 1rem;\n margin-right: 1rem;\n }\n .mh4-l {\n margin-left: 2rem;\n margin-right: 2rem;\n }\n .mh5-l {\n margin-left: 4rem;\n margin-right: 4rem;\n }\n .mh6-l {\n margin-left: 8rem;\n margin-right: 8rem;\n }\n .mh7-l {\n margin-left: 16rem;\n margin-right: 16rem;\n }\n .na1-l {\n margin: -.25rem;\n }\n .na2-l {\n margin: -.5rem;\n }\n .na3-l {\n margin: -1rem;\n }\n .na4-l {\n margin: -2rem;\n }\n .na5-l {\n margin: -4rem;\n }\n .na6-l {\n margin: -8rem;\n }\n .na7-l {\n margin: -16rem;\n }\n .nl1-l {\n margin-left: -.25rem;\n }\n .nl2-l {\n margin-left: -.5rem;\n }\n .nl3-l {\n margin-left: -1rem;\n }\n .nl4-l {\n margin-left: -2rem;\n }\n .nl5-l {\n margin-left: -4rem;\n }\n .nl6-l {\n margin-left: -8rem;\n }\n .nl7-l {\n margin-left: -16rem;\n }\n .nr1-l {\n margin-right: -.25rem;\n }\n .nr2-l {\n margin-right: -.5rem;\n }\n .nr3-l {\n margin-right: -1rem;\n }\n .nr4-l {\n margin-right: -2rem;\n }\n .nr5-l {\n margin-right: -4rem;\n }\n .nr6-l {\n margin-right: -8rem;\n }\n .nr7-l {\n margin-right: -16rem;\n }\n .nb1-l {\n margin-bottom: -.25rem;\n }\n .nb2-l {\n margin-bottom: -.5rem;\n }\n .nb3-l {\n margin-bottom: -1rem;\n }\n .nb4-l {\n margin-bottom: -2rem;\n }\n .nb5-l {\n margin-bottom: -4rem;\n }\n .nb6-l {\n margin-bottom: -8rem;\n }\n .nb7-l {\n margin-bottom: -16rem;\n }\n .nt1-l {\n margin-top: -.25rem;\n }\n .nt2-l {\n margin-top: -.5rem;\n }\n .nt3-l {\n margin-top: -1rem;\n }\n .nt4-l {\n margin-top: -2rem;\n }\n .nt5-l {\n margin-top: -4rem;\n }\n .nt6-l {\n margin-top: -8rem;\n }\n .nt7-l {\n margin-top: -16rem;\n }\n .strike-l {\n text-decoration: line-through;\n }\n .underline-l {\n text-decoration: underline;\n }\n .no-underline-l {\n text-decoration: none;\n }\n .tl-l {\n text-align: left;\n }\n .tr-l {\n text-align: right;\n }\n .tc-l {\n text-align: center;\n }\n .tj-l {\n text-align: justify;\n }\n .ttc-l {\n text-transform: capitalize;\n }\n .ttl-l {\n text-transform: lowercase;\n }\n .ttu-l {\n text-transform: uppercase;\n }\n .ttn-l {\n text-transform: none;\n }\n .f-6-l, .f-headline-l {\n font-size: 6rem;\n }\n .f-5-l, .f-subheadline-l {\n font-size: 5rem;\n }\n .f1-l {\n font-size: 3rem;\n }\n .f2-l {\n font-size: 2.25rem;\n }\n .f3-l {\n font-size: 1.5rem;\n }\n .f4-l {\n font-size: 1.25rem;\n }\n .f5-l {\n font-size: 1rem;\n }\n .f6-l {\n font-size: .875rem;\n }\n .f7-l {\n font-size: .75rem;\n }\n .measure-l {\n max-width: 30em;\n }\n .measure-wide-l {\n max-width: 34em;\n }\n .measure-narrow-l {\n max-width: 20em;\n }\n .indent-l {\n text-indent: 1em;\n margin-top: 0;\n margin-bottom: 0;\n }\n .small-caps-l {\n font-variant: small-caps;\n }\n .truncate-l {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n .center-l {\n margin-left: auto;\n }\n .center-l, .mr-auto-l {\n margin-right: auto;\n }\n .ml-auto-l {\n margin-left: auto;\n }\n .clip-l {\n position: fixed !important;\n position: absolute !important;\n clip: rect(1px 1px 1px 1px);\n clip: rect(1px, 1px, 1px, 1px);\n }\n .ws-normal-l {\n white-space: normal;\n }\n .nowrap-l {\n white-space: nowrap;\n }\n .pre-l {\n white-space: pre;\n }\n .v-base-l {\n vertical-align: baseline;\n }\n .v-mid-l {\n vertical-align: middle;\n }\n .v-top-l {\n vertical-align: top;\n }\n .v-btm-l {\n vertical-align: bottom;\n }\n}\n\ndiv.tagsinput {\n border: 1px solid #CCC;\n background: #FFF;\n padding: 5px;\n width: 300px;\n height: 100px;\n overflow-y: auto;\n}\n\ndiv.tagsinput span.tag {\n border: 1px solid #a5d24a;\n -moz-border-radius: 2px;\n -webkit-border-radius: 2px;\n display: block;\n float: left;\n padding: 5px;\n text-decoration: none;\n background: #cde69c;\n color: #638421;\n margin-right: 5px;\n margin-bottom: 5px;\n font-family: helvetica;\n font-size: 13px;\n}\n\ndiv.tagsinput span.tag a {\n font-weight: 700;\n color: #82ad2b;\n text-decoration: none;\n font-size: 11px;\n}\n\ndiv.tagsinput input {\n width: 80px;\n margin: 0 5px 5px 0;\n font-family: helvetica;\n font-size: 13px;\n border: 1px solid transparent;\n padding: 5px;\n background: 0 0;\n color: #000;\n outline: 0;\n}\n\ndiv.tagsinput div {\n display: block;\n float: left;\n}\n\n.tags_clear {\n clear: both;\n width: 100%;\n height: 0;\n}\n\n.not_valid {\n background: #FBD8DB !important;\n color: #90111A !important;\n}\n\ntable.dataTable {\n clear: both;\n margin-top: 6px !important;\n margin-bottom: 6px !important;\n max-width: none !important;\n border-collapse: separate !important;\n}\n\ntable.dataTable td,\ntable.dataTable th {\n -webkit-box-sizing: content-box;\n box-sizing: content-box;\n}\n\ntable.dataTable td.dataTables_empty,\ntable.dataTable th.dataTables_empty {\n text-align: center;\n}\n\ntable.dataTable.nowrap th,\ntable.dataTable.nowrap td {\n white-space: nowrap;\n}\n\ndiv.dataTables_wrapper div.dataTables_length label {\n font-weight: normal;\n text-align: left;\n white-space: nowrap;\n}\n\ndiv.dataTables_wrapper div.dataTables_length select {\n width: 75px;\n display: inline-block;\n}\n\ndiv.dataTables_wrapper div.dataTables_filter {\n text-align: right;\n}\n\ndiv.dataTables_wrapper div.dataTables_filter label {\n font-weight: normal;\n white-space: nowrap;\n text-align: left;\n}\n\ndiv.dataTables_wrapper div.dataTables_filter input {\n margin-left: 0.5em;\n display: inline-block;\n width: auto;\n}\n\ndiv.dataTables_wrapper div.dataTables_info {\n padding-top: 0.85em;\n white-space: nowrap;\n}\n\ndiv.dataTables_wrapper div.dataTables_paginate {\n margin: 0;\n white-space: nowrap;\n text-align: right;\n}\n\ndiv.dataTables_wrapper div.dataTables_paginate ul.pagination {\n margin: 2px 0;\n white-space: nowrap;\n}\n\ndiv.dataTables_wrapper div.dataTables_processing {\n position: absolute;\n top: 50%;\n left: 50%;\n width: 200px;\n margin-left: -100px;\n margin-top: -26px;\n text-align: center;\n padding: 1em 0;\n}\n\ntable.dataTable thead > tr > th.sorting_asc,\ntable.dataTable thead > tr > th.sorting_desc,\ntable.dataTable thead > tr > th.sorting,\ntable.dataTable thead > tr > td.sorting_asc,\ntable.dataTable thead > tr > td.sorting_desc,\ntable.dataTable thead > tr > td.sorting {\n padding-right: 30px;\n}\n\ntable.dataTable thead > tr > th:active,\ntable.dataTable thead > tr > td:active {\n outline: none;\n}\n\ntable.dataTable thead .sorting,\ntable.dataTable thead .sorting_asc,\ntable.dataTable thead .sorting_desc,\ntable.dataTable thead .sorting_asc_disabled,\ntable.dataTable thead .sorting_desc_disabled {\n cursor: pointer;\n position: relative;\n}\n\ntable.dataTable thead .sorting:before,\ntable.dataTable thead .sorting:after,\ntable.dataTable thead .sorting_asc:before,\ntable.dataTable thead .sorting_asc:after,\ntable.dataTable thead .sorting_desc:before,\ntable.dataTable thead .sorting_desc:after,\ntable.dataTable thead .sorting_asc_disabled:before,\ntable.dataTable thead .sorting_asc_disabled:after,\ntable.dataTable thead .sorting_desc_disabled:before,\ntable.dataTable thead .sorting_desc_disabled:after {\n position: absolute;\n bottom: 0.9em;\n display: block;\n opacity: 0.3;\n}\n\ntable.dataTable thead .sorting:before,\ntable.dataTable thead .sorting_asc:before,\ntable.dataTable thead .sorting_desc:before,\ntable.dataTable thead .sorting_asc_disabled:before,\ntable.dataTable thead .sorting_desc_disabled:before {\n right: 23px;\n content: \"\\2191\";\n top: 2px;\n}\n\ntable.dataTable thead .sorting:after,\ntable.dataTable thead .sorting_asc:after,\ntable.dataTable thead .sorting_desc:after,\ntable.dataTable thead .sorting_asc_disabled:after,\ntable.dataTable thead .sorting_desc_disabled:after {\n right: 10px;\n content: \"\\2193\";\n top: 2px;\n}\n\ntable.dataTable thead .sorting_asc:before,\ntable.dataTable thead .sorting_desc:after {\n opacity: 1;\n}\n\ntable.dataTable thead .sorting_asc_disabled:before,\ntable.dataTable thead .sorting_desc_disabled:after {\n opacity: 0;\n}\n\ndiv.dataTables_scrollHead table.dataTable {\n margin-bottom: 0 !important;\n}\n\ndiv.dataTables_scrollBody table {\n border-top: none;\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n\ndiv.dataTables_scrollBody table thead .sorting:after,\ndiv.dataTables_scrollBody table thead .sorting_asc:after,\ndiv.dataTables_scrollBody table thead .sorting_desc:after {\n display: none;\n}\n\ndiv.dataTables_scrollBody table tbody tr:first-child th,\ndiv.dataTables_scrollBody table tbody tr:first-child td {\n border-top: none;\n}\n\ndiv.dataTables_scrollFoot table {\n margin-top: 0 !important;\n border-top: none;\n}\n\n@media screen and (max-width: 767px) {\n div.dataTables_wrapper div.dataTables_length,\n div.dataTables_wrapper div.dataTables_filter,\n div.dataTables_wrapper div.dataTables_info,\n div.dataTables_wrapper div.dataTables_paginate {\n text-align: center;\n }\n}\n\ntable.dataTable.table-condensed > thead > tr > th {\n padding-right: 20px;\n}\n\ntable.dataTable.table-condensed .sorting:after,\ntable.dataTable.table-condensed .sorting_asc:after,\ntable.dataTable.table-condensed .sorting_desc:after {\n top: 6px;\n right: 6px;\n}\n\ntable.table-bordered.dataTable th,\ntable.table-bordered.dataTable td {\n border-left-width: 0;\n}\n\ntable.table-bordered.dataTable th:last-child,\ntable.table-bordered.dataTable th:last-child,\ntable.table-bordered.dataTable td:last-child,\ntable.table-bordered.dataTable td:last-child {\n border-right-width: 0;\n}\n\ntable.table-bordered.dataTable tbody th,\ntable.table-bordered.dataTable tbody td {\n border-bottom-width: 0;\n}\n\ndiv.dataTables_scrollHead table.table-bordered {\n border-bottom-width: 0;\n}\n\ndiv.table-responsive > div.dataTables_wrapper > div.row {\n margin: 0;\n}\n\ndiv.table-responsive > div.dataTables_wrapper > div.row > div[class^=\"col-\"]:first-child {\n padding-left: 0;\n}\n\ndiv.table-responsive > div.dataTables_wrapper > div.row > div[class^=\"col-\"]:last-child {\n padding-right: 0;\n}\n\n/*!\n * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome\n * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)\n */\n/* FONT PATH\n * -------------------------- */\n@font-face {\n font-family: 'FontAwesome';\n src: url(\"../fonts/fontawesome-webfont.eot?v=4.7.0\");\n src: url(\"../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0\") format(\"embedded-opentype\"), url(\"../fonts/fontawesome-webfont.woff2?v=4.7.0\") format(\"woff2\"), url(\"../fonts/fontawesome-webfont.woff?v=4.7.0\") format(\"woff\"), url(\"../fonts/fontawesome-webfont.ttf?v=4.7.0\") format(\"truetype\"), url(\"../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular\") format(\"svg\");\n font-weight: normal;\n font-style: normal;\n}\n\n.fa {\n display: inline-block;\n font: normal normal normal 14px/1 FontAwesome;\n font-size: inherit;\n text-rendering: auto;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n/* makes the font 33% larger relative to the icon container */\n.fa-lg {\n font-size: 1.33333333em;\n line-height: 0.75em;\n vertical-align: -15%;\n}\n\n.fa-2x {\n font-size: 2em;\n}\n\n.fa-3x {\n font-size: 3em;\n}\n\n.fa-4x {\n font-size: 4em;\n}\n\n.fa-5x {\n font-size: 5em;\n}\n\n.fa-fw {\n width: 1.28571429em;\n text-align: center;\n}\n\n.fa-ul {\n padding-left: 0;\n margin-left: 2.14285714em;\n list-style-type: none;\n}\n\n.fa-ul > li {\n position: relative;\n}\n\n.fa-li {\n position: absolute;\n left: -2.14285714em;\n width: 2.14285714em;\n top: 0.14285714em;\n text-align: center;\n}\n\n.fa-li.fa-lg {\n left: -1.85714286em;\n}\n\n.fa-border {\n padding: .2em .25em .15em;\n border: solid 0.08em #eee;\n border-radius: .1em;\n}\n\n.fa-pull-left {\n float: left;\n}\n\n.fa-pull-right {\n float: right;\n}\n\n.fa.fa-pull-left {\n margin-right: .3em;\n}\n\n.fa.fa-pull-right {\n margin-left: .3em;\n}\n\n/* Deprecated as of 4.4.0 */\n.pull-right {\n float: right;\n}\n\n.pull-left {\n float: left;\n}\n\n.fa.pull-left {\n margin-right: .3em;\n}\n\n.fa.pull-right {\n margin-left: .3em;\n}\n\n.fa-spin {\n -webkit-animation: fa-spin 2s infinite linear;\n animation: fa-spin 2s infinite linear;\n}\n\n.fa-pulse {\n -webkit-animation: fa-spin 1s infinite steps(8);\n animation: fa-spin 1s infinite steps(8);\n}\n\n@-webkit-keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(359deg);\n transform: rotate(359deg);\n }\n}\n\n@keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(359deg);\n transform: rotate(359deg);\n }\n}\n\n.fa-rotate-90 {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\";\n -webkit-transform: rotate(90deg);\n -ms-transform: rotate(90deg);\n transform: rotate(90deg);\n}\n\n.fa-rotate-180 {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\";\n -webkit-transform: rotate(180deg);\n -ms-transform: rotate(180deg);\n transform: rotate(180deg);\n}\n\n.fa-rotate-270 {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\";\n -webkit-transform: rotate(270deg);\n -ms-transform: rotate(270deg);\n transform: rotate(270deg);\n}\n\n.fa-flip-horizontal {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\";\n -webkit-transform: scale(-1, 1);\n -ms-transform: scale(-1, 1);\n transform: scale(-1, 1);\n}\n\n.fa-flip-vertical {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";\n -webkit-transform: scale(1, -1);\n -ms-transform: scale(1, -1);\n transform: scale(1, -1);\n}\n\n:root .fa-rotate-90,\n:root .fa-rotate-180,\n:root .fa-rotate-270,\n:root .fa-flip-horizontal,\n:root .fa-flip-vertical {\n filter: none;\n}\n\n.fa-stack {\n position: relative;\n display: inline-block;\n width: 2em;\n height: 2em;\n line-height: 2em;\n vertical-align: middle;\n}\n\n.fa-stack-1x, .fa-stack-2x {\n position: absolute;\n left: 0;\n width: 100%;\n text-align: center;\n}\n\n.fa-stack-1x {\n line-height: inherit;\n}\n\n.fa-stack-2x {\n font-size: 2em;\n}\n\n.fa-inverse {\n color: #fff;\n}\n\n/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen\n readers do not read off random characters that represent icons */\n.fa-glass:before {\n content: \"\";\n}\n\n.fa-music:before {\n content: \"\";\n}\n\n.fa-search:before {\n content: \"\";\n}\n\n.fa-envelope-o:before {\n content: \"\";\n}\n\n.fa-heart:before {\n content: \"\";\n}\n\n.fa-star:before {\n content: \"\";\n}\n\n.fa-star-o:before {\n content: \"\";\n}\n\n.fa-user:before {\n content: \"\";\n}\n\n.fa-film:before {\n content: \"\";\n}\n\n.fa-th-large:before {\n content: \"\";\n}\n\n.fa-th:before {\n content: \"\";\n}\n\n.fa-th-list:before {\n content: \"\";\n}\n\n.fa-check:before {\n content: \"\";\n}\n\n.fa-remove:before,\n.fa-close:before,\n.fa-times:before {\n content: \"\";\n}\n\n.fa-search-plus:before {\n content: \"\";\n}\n\n.fa-search-minus:before {\n content: \"\";\n}\n\n.fa-power-off:before {\n content: \"\";\n}\n\n.fa-signal:before {\n content: \"\";\n}\n\n.fa-gear:before,\n.fa-cog:before {\n content: \"\";\n}\n\n.fa-trash-o:before {\n content: \"\";\n}\n\n.fa-home:before {\n content: \"\";\n}\n\n.fa-file-o:before {\n content: \"\";\n}\n\n.fa-clock-o:before {\n content: \"\";\n}\n\n.fa-road:before {\n content: \"\";\n}\n\n.fa-download:before {\n content: \"\";\n}\n\n.fa-arrow-circle-o-down:before {\n content: \"\";\n}\n\n.fa-arrow-circle-o-up:before {\n content: \"\";\n}\n\n.fa-inbox:before {\n content: \"\";\n}\n\n.fa-play-circle-o:before {\n content: \"\";\n}\n\n.fa-rotate-right:before,\n.fa-repeat:before {\n content: \"\";\n}\n\n.fa-refresh:before {\n content: \"\";\n}\n\n.fa-list-alt:before {\n content: \"\";\n}\n\n.fa-lock:before {\n content: \"\";\n}\n\n.fa-flag:before {\n content: \"\";\n}\n\n.fa-headphones:before {\n content: \"\";\n}\n\n.fa-volume-off:before {\n content: \"\";\n}\n\n.fa-volume-down:before {\n content: \"\";\n}\n\n.fa-volume-up:before {\n content: \"\";\n}\n\n.fa-qrcode:before {\n content: \"\";\n}\n\n.fa-barcode:before {\n content: \"\";\n}\n\n.fa-tag:before {\n content: \"\";\n}\n\n.fa-tags:before {\n content: \"\";\n}\n\n.fa-book:before {\n content: \"\";\n}\n\n.fa-bookmark:before {\n content: \"\";\n}\n\n.fa-print:before {\n content: \"\";\n}\n\n.fa-camera:before {\n content: \"\";\n}\n\n.fa-font:before {\n content: \"\";\n}\n\n.fa-bold:before {\n content: \"\";\n}\n\n.fa-italic:before {\n content: \"\";\n}\n\n.fa-text-height:before {\n content: \"\";\n}\n\n.fa-text-width:before {\n content: \"\";\n}\n\n.fa-align-left:before {\n content: \"\";\n}\n\n.fa-align-center:before {\n content: \"\";\n}\n\n.fa-align-right:before {\n content: \"\";\n}\n\n.fa-align-justify:before {\n content: \"\";\n}\n\n.fa-list:before {\n content: \"\";\n}\n\n.fa-dedent:before,\n.fa-outdent:before {\n content: \"\";\n}\n\n.fa-indent:before {\n content: \"\";\n}\n\n.fa-video-camera:before {\n content: \"\";\n}\n\n.fa-photo:before,\n.fa-image:before,\n.fa-picture-o:before {\n content: \"\";\n}\n\n.fa-pencil:before {\n content: \"\";\n}\n\n.fa-map-marker:before {\n content: \"\";\n}\n\n.fa-adjust:before {\n content: \"\";\n}\n\n.fa-tint:before {\n content: \"\";\n}\n\n.fa-edit:before,\n.fa-pencil-square-o:before {\n content: \"\";\n}\n\n.fa-share-square-o:before {\n content: \"\";\n}\n\n.fa-check-square-o:before {\n content: \"\";\n}\n\n.fa-arrows:before {\n content: \"\";\n}\n\n.fa-step-backward:before {\n content: \"\";\n}\n\n.fa-fast-backward:before {\n content: \"\";\n}\n\n.fa-backward:before {\n content: \"\";\n}\n\n.fa-play:before {\n content: \"\";\n}\n\n.fa-pause:before {\n content: \"\";\n}\n\n.fa-stop:before {\n content: \"\";\n}\n\n.fa-forward:before {\n content: \"\";\n}\n\n.fa-fast-forward:before {\n content: \"\";\n}\n\n.fa-step-forward:before {\n content: \"\";\n}\n\n.fa-eject:before {\n content: \"\";\n}\n\n.fa-chevron-left:before {\n content: \"\";\n}\n\n.fa-chevron-right:before {\n content: \"\";\n}\n\n.fa-plus-circle:before {\n content: \"\";\n}\n\n.fa-minus-circle:before {\n content: \"\";\n}\n\n.fa-times-circle:before {\n content: \"\";\n}\n\n.fa-check-circle:before {\n content: \"\";\n}\n\n.fa-question-circle:before {\n content: \"\";\n}\n\n.fa-info-circle:before {\n content: \"\";\n}\n\n.fa-crosshairs:before {\n content: \"\";\n}\n\n.fa-times-circle-o:before {\n content: \"\";\n}\n\n.fa-check-circle-o:before {\n content: \"\";\n}\n\n.fa-ban:before {\n content: \"\";\n}\n\n.fa-arrow-left:before {\n content: \"\";\n}\n\n.fa-arrow-right:before {\n content: \"\";\n}\n\n.fa-arrow-up:before {\n content: \"\";\n}\n\n.fa-arrow-down:before {\n content: \"\";\n}\n\n.fa-mail-forward:before,\n.fa-share:before {\n content: \"\";\n}\n\n.fa-expand:before {\n content: \"\";\n}\n\n.fa-compress:before {\n content: \"\";\n}\n\n.fa-plus:before {\n content: \"\";\n}\n\n.fa-minus:before {\n content: \"\";\n}\n\n.fa-asterisk:before {\n content: \"\";\n}\n\n.fa-exclamation-circle:before {\n content: \"\";\n}\n\n.fa-gift:before {\n content: \"\";\n}\n\n.fa-leaf:before {\n content: \"\";\n}\n\n.fa-fire:before {\n content: \"\";\n}\n\n.fa-eye:before {\n content: \"\";\n}\n\n.fa-eye-slash:before {\n content: \"\";\n}\n\n.fa-warning:before,\n.fa-exclamation-triangle:before {\n content: \"\";\n}\n\n.fa-plane:before {\n content: \"\";\n}\n\n.fa-calendar:before {\n content: \"\";\n}\n\n.fa-random:before {\n content: \"\";\n}\n\n.fa-comment:before {\n content: \"\";\n}\n\n.fa-magnet:before {\n content: \"\";\n}\n\n.fa-chevron-up:before {\n content: \"\";\n}\n\n.fa-chevron-down:before {\n content: \"\";\n}\n\n.fa-retweet:before {\n content: \"\";\n}\n\n.fa-shopping-cart:before {\n content: \"\";\n}\n\n.fa-folder:before {\n content: \"\";\n}\n\n.fa-folder-open:before {\n content: \"\";\n}\n\n.fa-arrows-v:before {\n content: \"\";\n}\n\n.fa-arrows-h:before {\n content: \"\";\n}\n\n.fa-bar-chart-o:before,\n.fa-bar-chart:before {\n content: \"\";\n}\n\n.fa-twitter-square:before {\n content: \"\";\n}\n\n.fa-facebook-square:before {\n content: \"\";\n}\n\n.fa-camera-retro:before {\n content: \"\";\n}\n\n.fa-key:before {\n content: \"\";\n}\n\n.fa-gears:before,\n.fa-cogs:before {\n content: \"\";\n}\n\n.fa-comments:before {\n content: \"\";\n}\n\n.fa-thumbs-o-up:before {\n content: \"\";\n}\n\n.fa-thumbs-o-down:before {\n content: \"\";\n}\n\n.fa-star-half:before {\n content: \"\";\n}\n\n.fa-heart-o:before {\n content: \"\";\n}\n\n.fa-sign-out:before {\n content: \"\";\n}\n\n.fa-linkedin-square:before {\n content: \"\";\n}\n\n.fa-thumb-tack:before {\n content: \"\";\n}\n\n.fa-external-link:before {\n content: \"\";\n}\n\n.fa-sign-in:before {\n content: \"\";\n}\n\n.fa-trophy:before {\n content: \"\";\n}\n\n.fa-github-square:before {\n content: \"\";\n}\n\n.fa-upload:before {\n content: \"\";\n}\n\n.fa-lemon-o:before {\n content: \"\";\n}\n\n.fa-phone:before {\n content: \"\";\n}\n\n.fa-square-o:before {\n content: \"\";\n}\n\n.fa-bookmark-o:before {\n content: \"\";\n}\n\n.fa-phone-square:before {\n content: \"\";\n}\n\n.fa-twitter:before {\n content: \"\";\n}\n\n.fa-facebook-f:before,\n.fa-facebook:before {\n content: \"\";\n}\n\n.fa-github:before {\n content: \"\";\n}\n\n.fa-unlock:before {\n content: \"\";\n}\n\n.fa-credit-card:before {\n content: \"\";\n}\n\n.fa-feed:before,\n.fa-rss:before {\n content: \"\";\n}\n\n.fa-hdd-o:before {\n content: \"\";\n}\n\n.fa-bullhorn:before {\n content: \"\";\n}\n\n.fa-bell:before {\n content: \"\";\n}\n\n.fa-certificate:before {\n content: \"\";\n}\n\n.fa-hand-o-right:before {\n content: \"\";\n}\n\n.fa-hand-o-left:before {\n content: \"\";\n}\n\n.fa-hand-o-up:before {\n content: \"\";\n}\n\n.fa-hand-o-down:before {\n content: \"\";\n}\n\n.fa-arrow-circle-left:before {\n content: \"\";\n}\n\n.fa-arrow-circle-right:before {\n content: \"\";\n}\n\n.fa-arrow-circle-up:before {\n content: \"\";\n}\n\n.fa-arrow-circle-down:before {\n content: \"\";\n}\n\n.fa-globe:before {\n content: \"\";\n}\n\n.fa-wrench:before {\n content: \"\";\n}\n\n.fa-tasks:before {\n content: \"\";\n}\n\n.fa-filter:before {\n content: \"\";\n}\n\n.fa-briefcase:before {\n content: \"\";\n}\n\n.fa-arrows-alt:before {\n content: \"\";\n}\n\n.fa-group:before,\n.fa-users:before {\n content: \"\";\n}\n\n.fa-chain:before,\n.fa-link:before {\n content: \"\";\n}\n\n.fa-cloud:before {\n content: \"\";\n}\n\n.fa-flask:before {\n content: \"\";\n}\n\n.fa-cut:before,\n.fa-scissors:before {\n content: \"\";\n}\n\n.fa-copy:before,\n.fa-files-o:before {\n content: \"\";\n}\n\n.fa-paperclip:before {\n content: \"\";\n}\n\n.fa-save:before,\n.fa-floppy-o:before {\n content: \"\";\n}\n\n.fa-square:before {\n content: \"\";\n}\n\n.fa-navicon:before,\n.fa-reorder:before,\n.fa-bars:before {\n content: \"\";\n}\n\n.fa-list-ul:before {\n content: \"\";\n}\n\n.fa-list-ol:before {\n content: \"\";\n}\n\n.fa-strikethrough:before {\n content: \"\";\n}\n\n.fa-underline:before {\n content: \"\";\n}\n\n.fa-table:before {\n content: \"\";\n}\n\n.fa-magic:before {\n content: \"\";\n}\n\n.fa-truck:before {\n content: \"\";\n}\n\n.fa-pinterest:before {\n content: \"\";\n}\n\n.fa-pinterest-square:before {\n content: \"\";\n}\n\n.fa-google-plus-square:before {\n content: \"\";\n}\n\n.fa-google-plus:before {\n content: \"\";\n}\n\n.fa-money:before {\n content: \"\";\n}\n\n.fa-caret-down:before {\n content: \"\";\n}\n\n.fa-caret-up:before {\n content: \"\";\n}\n\n.fa-caret-left:before {\n content: \"\";\n}\n\n.fa-caret-right:before {\n content: \"\";\n}\n\n.fa-columns:before {\n content: \"\";\n}\n\n.fa-unsorted:before,\n.fa-sort:before {\n content: \"\";\n}\n\n.fa-sort-down:before,\n.fa-sort-desc:before {\n content: \"\";\n}\n\n.fa-sort-up:before,\n.fa-sort-asc:before {\n content: \"\";\n}\n\n.fa-envelope:before {\n content: \"\";\n}\n\n.fa-linkedin:before {\n content: \"\";\n}\n\n.fa-rotate-left:before,\n.fa-undo:before {\n content: \"\";\n}\n\n.fa-legal:before,\n.fa-gavel:before {\n content: \"\";\n}\n\n.fa-dashboard:before,\n.fa-tachometer:before {\n content: \"\";\n}\n\n.fa-comment-o:before {\n content: \"\";\n}\n\n.fa-comments-o:before {\n content: \"\";\n}\n\n.fa-flash:before,\n.fa-bolt:before {\n content: \"\";\n}\n\n.fa-sitemap:before {\n content: \"\";\n}\n\n.fa-umbrella:before {\n content: \"\";\n}\n\n.fa-paste:before,\n.fa-clipboard:before {\n content: \"\";\n}\n\n.fa-lightbulb-o:before {\n content: \"\";\n}\n\n.fa-exchange:before {\n content: \"\";\n}\n\n.fa-cloud-download:before {\n content: \"\";\n}\n\n.fa-cloud-upload:before {\n content: \"\";\n}\n\n.fa-user-md:before {\n content: \"\";\n}\n\n.fa-stethoscope:before {\n content: \"\";\n}\n\n.fa-suitcase:before {\n content: \"\";\n}\n\n.fa-bell-o:before {\n content: \"\";\n}\n\n.fa-coffee:before {\n content: \"\";\n}\n\n.fa-cutlery:before {\n content: \"\";\n}\n\n.fa-file-text-o:before {\n content: \"\";\n}\n\n.fa-building-o:before {\n content: \"\";\n}\n\n.fa-hospital-o:before {\n content: \"\";\n}\n\n.fa-ambulance:before {\n content: \"\";\n}\n\n.fa-medkit:before {\n content: \"\";\n}\n\n.fa-fighter-jet:before {\n content: \"\";\n}\n\n.fa-beer:before {\n content: \"\";\n}\n\n.fa-h-square:before {\n content: \"\";\n}\n\n.fa-plus-square:before {\n content: \"\";\n}\n\n.fa-angle-double-left:before {\n content: \"\";\n}\n\n.fa-angle-double-right:before {\n content: \"\";\n}\n\n.fa-angle-double-up:before {\n content: \"\";\n}\n\n.fa-angle-double-down:before {\n content: \"\";\n}\n\n.fa-angle-left:before {\n content: \"\";\n}\n\n.fa-angle-right:before {\n content: \"\";\n}\n\n.fa-angle-up:before {\n content: \"\";\n}\n\n.fa-angle-down:before {\n content: \"\";\n}\n\n.fa-desktop:before {\n content: \"\";\n}\n\n.fa-laptop:before {\n content: \"\";\n}\n\n.fa-tablet:before {\n content: \"\";\n}\n\n.fa-mobile-phone:before,\n.fa-mobile:before {\n content: \"\";\n}\n\n.fa-circle-o:before {\n content: \"\";\n}\n\n.fa-quote-left:before {\n content: \"\";\n}\n\n.fa-quote-right:before {\n content: \"\";\n}\n\n.fa-spinner:before {\n content: \"\";\n}\n\n.fa-circle:before {\n content: \"\";\n}\n\n.fa-mail-reply:before,\n.fa-reply:before {\n content: \"\";\n}\n\n.fa-github-alt:before {\n content: \"\";\n}\n\n.fa-folder-o:before {\n content: \"\";\n}\n\n.fa-folder-open-o:before {\n content: \"\";\n}\n\n.fa-smile-o:before {\n content: \"\";\n}\n\n.fa-frown-o:before {\n content: \"\";\n}\n\n.fa-meh-o:before {\n content: \"\";\n}\n\n.fa-gamepad:before {\n content: \"\";\n}\n\n.fa-keyboard-o:before {\n content: \"\";\n}\n\n.fa-flag-o:before {\n content: \"\";\n}\n\n.fa-flag-checkered:before {\n content: \"\";\n}\n\n.fa-terminal:before {\n content: \"\";\n}\n\n.fa-code:before {\n content: \"\";\n}\n\n.fa-mail-reply-all:before,\n.fa-reply-all:before {\n content: \"\";\n}\n\n.fa-star-half-empty:before,\n.fa-star-half-full:before,\n.fa-star-half-o:before {\n content: \"\";\n}\n\n.fa-location-arrow:before {\n content: \"\";\n}\n\n.fa-crop:before {\n content: \"\";\n}\n\n.fa-code-fork:before {\n content: \"\";\n}\n\n.fa-unlink:before,\n.fa-chain-broken:before {\n content: \"\";\n}\n\n.fa-question:before {\n content: \"\";\n}\n\n.fa-info:before {\n content: \"\";\n}\n\n.fa-exclamation:before {\n content: \"\";\n}\n\n.fa-superscript:before {\n content: \"\";\n}\n\n.fa-subscript:before {\n content: \"\";\n}\n\n.fa-eraser:before {\n content: \"\";\n}\n\n.fa-puzzle-piece:before {\n content: \"\";\n}\n\n.fa-microphone:before {\n content: \"\";\n}\n\n.fa-microphone-slash:before {\n content: \"\";\n}\n\n.fa-shield:before {\n content: \"\";\n}\n\n.fa-calendar-o:before {\n content: \"\";\n}\n\n.fa-fire-extinguisher:before {\n content: \"\";\n}\n\n.fa-rocket:before {\n content: \"\";\n}\n\n.fa-maxcdn:before {\n content: \"\";\n}\n\n.fa-chevron-circle-left:before {\n content: \"\";\n}\n\n.fa-chevron-circle-right:before {\n content: \"\";\n}\n\n.fa-chevron-circle-up:before {\n content: \"\";\n}\n\n.fa-chevron-circle-down:before {\n content: \"\";\n}\n\n.fa-html5:before {\n content: \"\";\n}\n\n.fa-css3:before {\n content: \"\";\n}\n\n.fa-anchor:before {\n content: \"\";\n}\n\n.fa-unlock-alt:before {\n content: \"\";\n}\n\n.fa-bullseye:before {\n content: \"\";\n}\n\n.fa-ellipsis-h:before {\n content: \"\";\n}\n\n.fa-ellipsis-v:before {\n content: \"\";\n}\n\n.fa-rss-square:before {\n content: \"\";\n}\n\n.fa-play-circle:before {\n content: \"\";\n}\n\n.fa-ticket:before {\n content: \"\";\n}\n\n.fa-minus-square:before {\n content: \"\";\n}\n\n.fa-minus-square-o:before {\n content: \"\";\n}\n\n.fa-level-up:before {\n content: \"\";\n}\n\n.fa-level-down:before {\n content: \"\";\n}\n\n.fa-check-square:before {\n content: \"\";\n}\n\n.fa-pencil-square:before {\n content: \"\";\n}\n\n.fa-external-link-square:before {\n content: \"\";\n}\n\n.fa-share-square:before {\n content: \"\";\n}\n\n.fa-compass:before {\n content: \"\";\n}\n\n.fa-toggle-down:before,\n.fa-caret-square-o-down:before {\n content: \"\";\n}\n\n.fa-toggle-up:before,\n.fa-caret-square-o-up:before {\n content: \"\";\n}\n\n.fa-toggle-right:before,\n.fa-caret-square-o-right:before {\n content: \"\";\n}\n\n.fa-euro:before,\n.fa-eur:before {\n content: \"\";\n}\n\n.fa-gbp:before {\n content: \"\";\n}\n\n.fa-dollar:before,\n.fa-usd:before {\n content: \"\";\n}\n\n.fa-rupee:before,\n.fa-inr:before {\n content: \"\";\n}\n\n.fa-cny:before,\n.fa-rmb:before,\n.fa-yen:before,\n.fa-jpy:before {\n content: \"\";\n}\n\n.fa-ruble:before,\n.fa-rouble:before,\n.fa-rub:before {\n content: \"\";\n}\n\n.fa-won:before,\n.fa-krw:before {\n content: \"\";\n}\n\n.fa-bitcoin:before,\n.fa-btc:before {\n content: \"\";\n}\n\n.fa-file:before {\n content: \"\";\n}\n\n.fa-file-text:before {\n content: \"\";\n}\n\n.fa-sort-alpha-asc:before {\n content: \"\";\n}\n\n.fa-sort-alpha-desc:before {\n content: \"\";\n}\n\n.fa-sort-amount-asc:before {\n content: \"\";\n}\n\n.fa-sort-amount-desc:before {\n content: \"\";\n}\n\n.fa-sort-numeric-asc:before {\n content: \"\";\n}\n\n.fa-sort-numeric-desc:before {\n content: \"\";\n}\n\n.fa-thumbs-up:before {\n content: \"\";\n}\n\n.fa-thumbs-down:before {\n content: \"\";\n}\n\n.fa-youtube-square:before {\n content: \"\";\n}\n\n.fa-youtube:before {\n content: \"\";\n}\n\n.fa-xing:before {\n content: \"\";\n}\n\n.fa-xing-square:before {\n content: \"\";\n}\n\n.fa-youtube-play:before {\n content: \"\";\n}\n\n.fa-dropbox:before {\n content: \"\";\n}\n\n.fa-stack-overflow:before {\n content: \"\";\n}\n\n.fa-instagram:before {\n content: \"\";\n}\n\n.fa-flickr:before {\n content: \"\";\n}\n\n.fa-adn:before {\n content: \"\";\n}\n\n.fa-bitbucket:before {\n content: \"\";\n}\n\n.fa-bitbucket-square:before {\n content: \"\";\n}\n\n.fa-tumblr:before {\n content: \"\";\n}\n\n.fa-tumblr-square:before {\n content: \"\";\n}\n\n.fa-long-arrow-down:before {\n content: \"\";\n}\n\n.fa-long-arrow-up:before {\n content: \"\";\n}\n\n.fa-long-arrow-left:before {\n content: \"\";\n}\n\n.fa-long-arrow-right:before {\n content: \"\";\n}\n\n.fa-apple:before {\n content: \"\";\n}\n\n.fa-windows:before {\n content: \"\";\n}\n\n.fa-android:before {\n content: \"\";\n}\n\n.fa-linux:before {\n content: \"\";\n}\n\n.fa-dribbble:before {\n content: \"\";\n}\n\n.fa-skype:before {\n content: \"\";\n}\n\n.fa-foursquare:before {\n content: \"\";\n}\n\n.fa-trello:before {\n content: \"\";\n}\n\n.fa-female:before {\n content: \"\";\n}\n\n.fa-male:before {\n content: \"\";\n}\n\n.fa-gittip:before,\n.fa-gratipay:before {\n content: \"\";\n}\n\n.fa-sun-o:before {\n content: \"\";\n}\n\n.fa-moon-o:before {\n content: \"\";\n}\n\n.fa-archive:before {\n content: \"\";\n}\n\n.fa-bug:before {\n content: \"\";\n}\n\n.fa-vk:before {\n content: \"\";\n}\n\n.fa-weibo:before {\n content: \"\";\n}\n\n.fa-renren:before {\n content: \"\";\n}\n\n.fa-pagelines:before {\n content: \"\";\n}\n\n.fa-stack-exchange:before {\n content: \"\";\n}\n\n.fa-arrow-circle-o-right:before {\n content: \"\";\n}\n\n.fa-arrow-circle-o-left:before {\n content: \"\";\n}\n\n.fa-toggle-left:before,\n.fa-caret-square-o-left:before {\n content: \"\";\n}\n\n.fa-dot-circle-o:before {\n content: \"\";\n}\n\n.fa-wheelchair:before {\n content: \"\";\n}\n\n.fa-vimeo-square:before {\n content: \"\";\n}\n\n.fa-turkish-lira:before,\n.fa-try:before {\n content: \"\";\n}\n\n.fa-plus-square-o:before {\n content: \"\";\n}\n\n.fa-space-shuttle:before {\n content: \"\";\n}\n\n.fa-slack:before {\n content: \"\";\n}\n\n.fa-envelope-square:before {\n content: \"\";\n}\n\n.fa-wordpress:before {\n content: \"\";\n}\n\n.fa-openid:before {\n content: \"\";\n}\n\n.fa-institution:before,\n.fa-bank:before,\n.fa-university:before {\n content: \"\";\n}\n\n.fa-mortar-board:before,\n.fa-graduation-cap:before {\n content: \"\";\n}\n\n.fa-yahoo:before {\n content: \"\";\n}\n\n.fa-google:before {\n content: \"\";\n}\n\n.fa-reddit:before {\n content: \"\";\n}\n\n.fa-reddit-square:before {\n content: \"\";\n}\n\n.fa-stumbleupon-circle:before {\n content: \"\";\n}\n\n.fa-stumbleupon:before {\n content: \"\";\n}\n\n.fa-delicious:before {\n content: \"\";\n}\n\n.fa-digg:before {\n content: \"\";\n}\n\n.fa-pied-piper-pp:before {\n content: \"\";\n}\n\n.fa-pied-piper-alt:before {\n content: \"\";\n}\n\n.fa-drupal:before {\n content: \"\";\n}\n\n.fa-joomla:before {\n content: \"\";\n}\n\n.fa-language:before {\n content: \"\";\n}\n\n.fa-fax:before {\n content: \"\";\n}\n\n.fa-building:before {\n content: \"\";\n}\n\n.fa-child:before {\n content: \"\";\n}\n\n.fa-paw:before {\n content: \"\";\n}\n\n.fa-spoon:before {\n content: \"\";\n}\n\n.fa-cube:before {\n content: \"\";\n}\n\n.fa-cubes:before {\n content: \"\";\n}\n\n.fa-behance:before {\n content: \"\";\n}\n\n.fa-behance-square:before {\n content: \"\";\n}\n\n.fa-steam:before {\n content: \"\";\n}\n\n.fa-steam-square:before {\n content: \"\";\n}\n\n.fa-recycle:before {\n content: \"\";\n}\n\n.fa-automobile:before,\n.fa-car:before {\n content: \"\";\n}\n\n.fa-cab:before,\n.fa-taxi:before {\n content: \"\";\n}\n\n.fa-tree:before {\n content: \"\";\n}\n\n.fa-spotify:before {\n content: \"\";\n}\n\n.fa-deviantart:before {\n content: \"\";\n}\n\n.fa-soundcloud:before {\n content: \"\";\n}\n\n.fa-database:before {\n content: \"\";\n}\n\n.fa-file-pdf-o:before {\n content: \"\";\n}\n\n.fa-file-word-o:before {\n content: \"\";\n}\n\n.fa-file-excel-o:before {\n content: \"\";\n}\n\n.fa-file-powerpoint-o:before {\n content: \"\";\n}\n\n.fa-file-photo-o:before,\n.fa-file-picture-o:before,\n.fa-file-image-o:before {\n content: \"\";\n}\n\n.fa-file-zip-o:before,\n.fa-file-archive-o:before {\n content: \"\";\n}\n\n.fa-file-sound-o:before,\n.fa-file-audio-o:before {\n content: \"\";\n}\n\n.fa-file-movie-o:before,\n.fa-file-video-o:before {\n content: \"\";\n}\n\n.fa-file-code-o:before {\n content: \"\";\n}\n\n.fa-vine:before {\n content: \"\";\n}\n\n.fa-codepen:before {\n content: \"\";\n}\n\n.fa-jsfiddle:before {\n content: \"\";\n}\n\n.fa-life-bouy:before,\n.fa-life-buoy:before,\n.fa-life-saver:before,\n.fa-support:before,\n.fa-life-ring:before {\n content: \"\";\n}\n\n.fa-circle-o-notch:before {\n content: \"\";\n}\n\n.fa-ra:before,\n.fa-resistance:before,\n.fa-rebel:before {\n content: \"\";\n}\n\n.fa-ge:before,\n.fa-empire:before {\n content: \"\";\n}\n\n.fa-git-square:before {\n content: \"\";\n}\n\n.fa-git:before {\n content: \"\";\n}\n\n.fa-y-combinator-square:before,\n.fa-yc-square:before,\n.fa-hacker-news:before {\n content: \"\";\n}\n\n.fa-tencent-weibo:before {\n content: \"\";\n}\n\n.fa-qq:before {\n content: \"\";\n}\n\n.fa-wechat:before,\n.fa-weixin:before {\n content: \"\";\n}\n\n.fa-send:before,\n.fa-paper-plane:before {\n content: \"\";\n}\n\n.fa-send-o:before,\n.fa-paper-plane-o:before {\n content: \"\";\n}\n\n.fa-history:before {\n content: \"\";\n}\n\n.fa-circle-thin:before {\n content: \"\";\n}\n\n.fa-header:before {\n content: \"\";\n}\n\n.fa-paragraph:before {\n content: \"\";\n}\n\n.fa-sliders:before {\n content: \"\";\n}\n\n.fa-share-alt:before {\n content: \"\";\n}\n\n.fa-share-alt-square:before {\n content: \"\";\n}\n\n.fa-bomb:before {\n content: \"\";\n}\n\n.fa-soccer-ball-o:before,\n.fa-futbol-o:before {\n content: \"\";\n}\n\n.fa-tty:before {\n content: \"\";\n}\n\n.fa-binoculars:before {\n content: \"\";\n}\n\n.fa-plug:before {\n content: \"\";\n}\n\n.fa-slideshare:before {\n content: \"\";\n}\n\n.fa-twitch:before {\n content: \"\";\n}\n\n.fa-yelp:before {\n content: \"\";\n}\n\n.fa-newspaper-o:before {\n content: \"\";\n}\n\n.fa-wifi:before {\n content: \"\";\n}\n\n.fa-calculator:before {\n content: \"\";\n}\n\n.fa-paypal:before {\n content: \"\";\n}\n\n.fa-google-wallet:before {\n content: \"\";\n}\n\n.fa-cc-visa:before {\n content: \"\";\n}\n\n.fa-cc-mastercard:before {\n content: \"\";\n}\n\n.fa-cc-discover:before {\n content: \"\";\n}\n\n.fa-cc-amex:before {\n content: \"\";\n}\n\n.fa-cc-paypal:before {\n content: \"\";\n}\n\n.fa-cc-stripe:before {\n content: \"\";\n}\n\n.fa-bell-slash:before {\n content: \"\";\n}\n\n.fa-bell-slash-o:before {\n content: \"\";\n}\n\n.fa-trash:before {\n content: \"\";\n}\n\n.fa-copyright:before {\n content: \"\";\n}\n\n.fa-at:before {\n content: \"\";\n}\n\n.fa-eyedropper:before {\n content: \"\";\n}\n\n.fa-paint-brush:before {\n content: \"\";\n}\n\n.fa-birthday-cake:before {\n content: \"\";\n}\n\n.fa-area-chart:before {\n content: \"\";\n}\n\n.fa-pie-chart:before {\n content: \"\";\n}\n\n.fa-line-chart:before {\n content: \"\";\n}\n\n.fa-lastfm:before {\n content: \"\";\n}\n\n.fa-lastfm-square:before {\n content: \"\";\n}\n\n.fa-toggle-off:before {\n content: \"\";\n}\n\n.fa-toggle-on:before {\n content: \"\";\n}\n\n.fa-bicycle:before {\n content: \"\";\n}\n\n.fa-bus:before {\n content: \"\";\n}\n\n.fa-ioxhost:before {\n content: \"\";\n}\n\n.fa-angellist:before {\n content: \"\";\n}\n\n.fa-cc:before {\n content: \"\";\n}\n\n.fa-shekel:before,\n.fa-sheqel:before,\n.fa-ils:before {\n content: \"\";\n}\n\n.fa-meanpath:before {\n content: \"\";\n}\n\n.fa-buysellads:before {\n content: \"\";\n}\n\n.fa-connectdevelop:before {\n content: \"\";\n}\n\n.fa-dashcube:before {\n content: \"\";\n}\n\n.fa-forumbee:before {\n content: \"\";\n}\n\n.fa-leanpub:before {\n content: \"\";\n}\n\n.fa-sellsy:before {\n content: \"\";\n}\n\n.fa-shirtsinbulk:before {\n content: \"\";\n}\n\n.fa-simplybuilt:before {\n content: \"\";\n}\n\n.fa-skyatlas:before {\n content: \"\";\n}\n\n.fa-cart-plus:before {\n content: \"\";\n}\n\n.fa-cart-arrow-down:before {\n content: \"\";\n}\n\n.fa-diamond:before {\n content: \"\";\n}\n\n.fa-ship:before {\n content: \"\";\n}\n\n.fa-user-secret:before {\n content: \"\";\n}\n\n.fa-motorcycle:before {\n content: \"\";\n}\n\n.fa-street-view:before {\n content: \"\";\n}\n\n.fa-heartbeat:before {\n content: \"\";\n}\n\n.fa-venus:before {\n content: \"\";\n}\n\n.fa-mars:before {\n content: \"\";\n}\n\n.fa-mercury:before {\n content: \"\";\n}\n\n.fa-intersex:before,\n.fa-transgender:before {\n content: \"\";\n}\n\n.fa-transgender-alt:before {\n content: \"\";\n}\n\n.fa-venus-double:before {\n content: \"\";\n}\n\n.fa-mars-double:before {\n content: \"\";\n}\n\n.fa-venus-mars:before {\n content: \"\";\n}\n\n.fa-mars-stroke:before {\n content: \"\";\n}\n\n.fa-mars-stroke-v:before {\n content: \"\";\n}\n\n.fa-mars-stroke-h:before {\n content: \"\";\n}\n\n.fa-neuter:before {\n content: \"\";\n}\n\n.fa-genderless:before {\n content: \"\";\n}\n\n.fa-facebook-official:before {\n content: \"\";\n}\n\n.fa-pinterest-p:before {\n content: \"\";\n}\n\n.fa-whatsapp:before {\n content: \"\";\n}\n\n.fa-server:before {\n content: \"\";\n}\n\n.fa-user-plus:before {\n content: \"\";\n}\n\n.fa-user-times:before {\n content: \"\";\n}\n\n.fa-hotel:before,\n.fa-bed:before {\n content: \"\";\n}\n\n.fa-viacoin:before {\n content: \"\";\n}\n\n.fa-train:before {\n content: \"\";\n}\n\n.fa-subway:before {\n content: \"\";\n}\n\n.fa-medium:before {\n content: \"\";\n}\n\n.fa-yc:before,\n.fa-y-combinator:before {\n content: \"\";\n}\n\n.fa-optin-monster:before {\n content: \"\";\n}\n\n.fa-opencart:before {\n content: \"\";\n}\n\n.fa-expeditedssl:before {\n content: \"\";\n}\n\n.fa-battery-4:before,\n.fa-battery:before,\n.fa-battery-full:before {\n content: \"\";\n}\n\n.fa-battery-3:before,\n.fa-battery-three-quarters:before {\n content: \"\";\n}\n\n.fa-battery-2:before,\n.fa-battery-half:before {\n content: \"\";\n}\n\n.fa-battery-1:before,\n.fa-battery-quarter:before {\n content: \"\";\n}\n\n.fa-battery-0:before,\n.fa-battery-empty:before {\n content: \"\";\n}\n\n.fa-mouse-pointer:before {\n content: \"\";\n}\n\n.fa-i-cursor:before {\n content: \"\";\n}\n\n.fa-object-group:before {\n content: \"\";\n}\n\n.fa-object-ungroup:before {\n content: \"\";\n}\n\n.fa-sticky-note:before {\n content: \"\";\n}\n\n.fa-sticky-note-o:before {\n content: \"\";\n}\n\n.fa-cc-jcb:before {\n content: \"\";\n}\n\n.fa-cc-diners-club:before {\n content: \"\";\n}\n\n.fa-clone:before {\n content: \"\";\n}\n\n.fa-balance-scale:before {\n content: \"\";\n}\n\n.fa-hourglass-o:before {\n content: \"\";\n}\n\n.fa-hourglass-1:before,\n.fa-hourglass-start:before {\n content: \"\";\n}\n\n.fa-hourglass-2:before,\n.fa-hourglass-half:before {\n content: \"\";\n}\n\n.fa-hourglass-3:before,\n.fa-hourglass-end:before {\n content: \"\";\n}\n\n.fa-hourglass:before {\n content: \"\";\n}\n\n.fa-hand-grab-o:before,\n.fa-hand-rock-o:before {\n content: \"\";\n}\n\n.fa-hand-stop-o:before,\n.fa-hand-paper-o:before {\n content: \"\";\n}\n\n.fa-hand-scissors-o:before {\n content: \"\";\n}\n\n.fa-hand-lizard-o:before {\n content: \"\";\n}\n\n.fa-hand-spock-o:before {\n content: \"\";\n}\n\n.fa-hand-pointer-o:before {\n content: \"\";\n}\n\n.fa-hand-peace-o:before {\n content: \"\";\n}\n\n.fa-trademark:before {\n content: \"\";\n}\n\n.fa-registered:before {\n content: \"\";\n}\n\n.fa-creative-commons:before {\n content: \"\";\n}\n\n.fa-gg:before {\n content: \"\";\n}\n\n.fa-gg-circle:before {\n content: \"\";\n}\n\n.fa-tripadvisor:before {\n content: \"\";\n}\n\n.fa-odnoklassniki:before {\n content: \"\";\n}\n\n.fa-odnoklassniki-square:before {\n content: \"\";\n}\n\n.fa-get-pocket:before {\n content: \"\";\n}\n\n.fa-wikipedia-w:before {\n content: \"\";\n}\n\n.fa-safari:before {\n content: \"\";\n}\n\n.fa-chrome:before {\n content: \"\";\n}\n\n.fa-firefox:before {\n content: \"\";\n}\n\n.fa-opera:before {\n content: \"\";\n}\n\n.fa-internet-explorer:before {\n content: \"\";\n}\n\n.fa-tv:before,\n.fa-television:before {\n content: \"\";\n}\n\n.fa-contao:before {\n content: \"\";\n}\n\n.fa-500px:before {\n content: \"\";\n}\n\n.fa-amazon:before {\n content: \"\";\n}\n\n.fa-calendar-plus-o:before {\n content: \"\";\n}\n\n.fa-calendar-minus-o:before {\n content: \"\";\n}\n\n.fa-calendar-times-o:before {\n content: \"\";\n}\n\n.fa-calendar-check-o:before {\n content: \"\";\n}\n\n.fa-industry:before {\n content: \"\";\n}\n\n.fa-map-pin:before {\n content: \"\";\n}\n\n.fa-map-signs:before {\n content: \"\";\n}\n\n.fa-map-o:before {\n content: \"\";\n}\n\n.fa-map:before {\n content: \"\";\n}\n\n.fa-commenting:before {\n content: \"\";\n}\n\n.fa-commenting-o:before {\n content: \"\";\n}\n\n.fa-houzz:before {\n content: \"\";\n}\n\n.fa-vimeo:before {\n content: \"\";\n}\n\n.fa-black-tie:before {\n content: \"\";\n}\n\n.fa-fonticons:before {\n content: \"\";\n}\n\n.fa-reddit-alien:before {\n content: \"\";\n}\n\n.fa-edge:before {\n content: \"\";\n}\n\n.fa-credit-card-alt:before {\n content: \"\";\n}\n\n.fa-codiepie:before {\n content: \"\";\n}\n\n.fa-modx:before {\n content: \"\";\n}\n\n.fa-fort-awesome:before {\n content: \"\";\n}\n\n.fa-usb:before {\n content: \"\";\n}\n\n.fa-product-hunt:before {\n content: \"\";\n}\n\n.fa-mixcloud:before {\n content: \"\";\n}\n\n.fa-scribd:before {\n content: \"\";\n}\n\n.fa-pause-circle:before {\n content: \"\";\n}\n\n.fa-pause-circle-o:before {\n content: \"\";\n}\n\n.fa-stop-circle:before {\n content: \"\";\n}\n\n.fa-stop-circle-o:before {\n content: \"\";\n}\n\n.fa-shopping-bag:before {\n content: \"\";\n}\n\n.fa-shopping-basket:before {\n content: \"\";\n}\n\n.fa-hashtag:before {\n content: \"\";\n}\n\n.fa-bluetooth:before {\n content: \"\";\n}\n\n.fa-bluetooth-b:before {\n content: \"\";\n}\n\n.fa-percent:before {\n content: \"\";\n}\n\n.fa-gitlab:before {\n content: \"\";\n}\n\n.fa-wpbeginner:before {\n content: \"\";\n}\n\n.fa-wpforms:before {\n content: \"\";\n}\n\n.fa-envira:before {\n content: \"\";\n}\n\n.fa-universal-access:before {\n content: \"\";\n}\n\n.fa-wheelchair-alt:before {\n content: \"\";\n}\n\n.fa-question-circle-o:before {\n content: \"\";\n}\n\n.fa-blind:before {\n content: \"\";\n}\n\n.fa-audio-description:before {\n content: \"\";\n}\n\n.fa-volume-control-phone:before {\n content: \"\";\n}\n\n.fa-braille:before {\n content: \"\";\n}\n\n.fa-assistive-listening-systems:before {\n content: \"\";\n}\n\n.fa-asl-interpreting:before,\n.fa-american-sign-language-interpreting:before {\n content: \"\";\n}\n\n.fa-deafness:before,\n.fa-hard-of-hearing:before,\n.fa-deaf:before {\n content: \"\";\n}\n\n.fa-glide:before {\n content: \"\";\n}\n\n.fa-glide-g:before {\n content: \"\";\n}\n\n.fa-signing:before,\n.fa-sign-language:before {\n content: \"\";\n}\n\n.fa-low-vision:before {\n content: \"\";\n}\n\n.fa-viadeo:before {\n content: \"\";\n}\n\n.fa-viadeo-square:before {\n content: \"\";\n}\n\n.fa-snapchat:before {\n content: \"\";\n}\n\n.fa-snapchat-ghost:before {\n content: \"\";\n}\n\n.fa-snapchat-square:before {\n content: \"\";\n}\n\n.fa-pied-piper:before {\n content: \"\";\n}\n\n.fa-first-order:before {\n content: \"\";\n}\n\n.fa-yoast:before {\n content: \"\";\n}\n\n.fa-themeisle:before {\n content: \"\";\n}\n\n.fa-google-plus-circle:before,\n.fa-google-plus-official:before {\n content: \"\";\n}\n\n.fa-fa:before,\n.fa-font-awesome:before {\n content: \"\";\n}\n\n.fa-handshake-o:before {\n content: \"\";\n}\n\n.fa-envelope-open:before {\n content: \"\";\n}\n\n.fa-envelope-open-o:before {\n content: \"\";\n}\n\n.fa-linode:before {\n content: \"\";\n}\n\n.fa-address-book:before {\n content: \"\";\n}\n\n.fa-address-book-o:before {\n content: \"\";\n}\n\n.fa-vcard:before,\n.fa-address-card:before {\n content: \"\";\n}\n\n.fa-vcard-o:before,\n.fa-address-card-o:before {\n content: \"\";\n}\n\n.fa-user-circle:before {\n content: \"\";\n}\n\n.fa-user-circle-o:before {\n content: \"\";\n}\n\n.fa-user-o:before {\n content: \"\";\n}\n\n.fa-id-badge:before {\n content: \"\";\n}\n\n.fa-drivers-license:before,\n.fa-id-card:before {\n content: \"\";\n}\n\n.fa-drivers-license-o:before,\n.fa-id-card-o:before {\n content: \"\";\n}\n\n.fa-quora:before {\n content: \"\";\n}\n\n.fa-free-code-camp:before {\n content: \"\";\n}\n\n.fa-telegram:before {\n content: \"\";\n}\n\n.fa-thermometer-4:before,\n.fa-thermometer:before,\n.fa-thermometer-full:before {\n content: \"\";\n}\n\n.fa-thermometer-3:before,\n.fa-thermometer-three-quarters:before {\n content: \"\";\n}\n\n.fa-thermometer-2:before,\n.fa-thermometer-half:before {\n content: \"\";\n}\n\n.fa-thermometer-1:before,\n.fa-thermometer-quarter:before {\n content: \"\";\n}\n\n.fa-thermometer-0:before,\n.fa-thermometer-empty:before {\n content: \"\";\n}\n\n.fa-shower:before {\n content: \"\";\n}\n\n.fa-bathtub:before,\n.fa-s15:before,\n.fa-bath:before {\n content: \"\";\n}\n\n.fa-podcast:before {\n content: \"\";\n}\n\n.fa-window-maximize:before {\n content: \"\";\n}\n\n.fa-window-minimize:before {\n content: \"\";\n}\n\n.fa-window-restore:before {\n content: \"\";\n}\n\n.fa-times-rectangle:before,\n.fa-window-close:before {\n content: \"\";\n}\n\n.fa-times-rectangle-o:before,\n.fa-window-close-o:before {\n content: \"\";\n}\n\n.fa-bandcamp:before {\n content: \"\";\n}\n\n.fa-grav:before {\n content: \"\";\n}\n\n.fa-etsy:before {\n content: \"\";\n}\n\n.fa-imdb:before {\n content: \"\";\n}\n\n.fa-ravelry:before {\n content: \"\";\n}\n\n.fa-eercast:before {\n content: \"\";\n}\n\n.fa-microchip:before {\n content: \"\";\n}\n\n.fa-snowflake-o:before {\n content: \"\";\n}\n\n.fa-superpowers:before {\n content: \"\";\n}\n\n.fa-wpexplorer:before {\n content: \"\";\n}\n\n.fa-meetup:before {\n content: \"\";\n}\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n border: 0;\n}\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n}\n\n.btn {\n position: relative;\n display: inline-block;\n padding: 6px 12px;\n font-size: 14px;\n font-weight: 600;\n line-height: 20px;\n color: #333;\n white-space: nowrap;\n vertical-align: middle;\n cursor: pointer;\n user-select: none;\n background-color: #eee;\n background-image: linear-gradient(#fcfcfc, #eee);\n border: 1px solid #d5d5d5;\n border-radius: 3px;\n appearance: none;\n text-align: center;\n text-decoration: none;\n}\n\n.btn:hover {\n background-color: #ddd;\n background-image: linear-gradient(#eee, #ddd);\n border-color: #ccc;\n color: #333;\n text-decoration: none;\n}\n\n.btn-primary {\n background-color: #60b044;\n background-image: linear-gradient(#8add6d, #60b044);\n border-color: #5ca941;\n color: #fff;\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.15);\n}\n\n.btn-primary:hover {\n background-color: #569e3d;\n background-image: linear-gradient(#79d858, #569e3d);\n border-color: #4a993e;\n color: #fff;\n}\n\n.btn-danger {\n color: #900;\n}\n\n.btn-danger:hover {\n background-color: #b33630;\n background-image: linear-gradient(#dc5f59, #b33630);\n border-color: #cd504a;\n color: #fff;\n}\n\n.btn-add {\n position: relative;\n top: 3px;\n border: 1px solid #576675;\n border-radius: 50%;\n width: 15px;\n margin-right: 3px;\n}\n\nheader {\n background-color: #325776;\n}\n\nheader .main-cta {\n position: relative;\n top: 16px;\n}\n\n.logo {\n margin: 10px 15px;\n}\n\n.logo a:hover {\n background-color: transparent;\n color: #fff;\n}\n\n.header-search {\n padding: 0;\n margin: auto 0;\n}\n\n.header-search-form {\n position: relative;\n}\n\n.header-search-form span {\n color: #d7d7d7;\n font-size: 12px;\n left: 10px;\n position: absolute;\n top: 10px;\n}\n\n.header-search-form input {\n border: 0;\n color: #fff;\n padding-left: 29px;\n}\n\n.header-nav {\n margin-top: 24px;\n text-align: right;\n}\n\n.header-nav-item {\n display: inline;\n margin-right: 10px;\n}\n\n.header-nav-item:last-child {\n margin-right: 0;\n}\n\n.header-nav-item-link {\n color: #fff;\n font-weight: 300;\n padding: 3px 11px;\n text-decoration: none;\n}\n\n.header-nav-item-link:hover {\n background-color: #497193;\n border-radius: 3px;\n color: #fff;\n padding: 3px 11px;\n text-decoration: none;\n}\n\n.header-search-input {\n background: #497193;\n border-color: #497193;\n color: white;\n}\n\n.header-search-input::placeholder {\n color: rgba(255, 255, 255, 0.4);\n}\n\n.header-search-input:-ms-input-placeholder {\n color: rgba(255, 255, 255, 0.4);\n}\n\n.header-search-input:focus {\n background: white;\n color: #323232;\n}\n\n.header-search-results {\n position: absolute;\n width: 100%;\n z-index: 10;\n}\n\n.header-search-result {\n position: relative;\n background: white;\n box-shadow: 0 3px 3px 0 rgba(0, 0, 0, 0.3);\n border-bottom: 1px solid #eee;\n}\n\n.header-search-result a {\n color: inherit;\n text-decoration: none;\n vertical-align: middle;\n background: transparent;\n}\n\n.header-search-result a span {\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n z-index: 1;\n}\n\n.header-search-result a:hover {\n background: inherit;\n color: inherit;\n}\n\n.header-search-result .avatar {\n border-radius: 3px;\n display: inline-block;\n height: 36px;\n margin: 10px;\n width: 36px;\n}\n\n.header-search-result .avatar-initials {\n text-align: center;\n padding-top: 6px;\n font-size: 15px;\n color: #fff;\n}\n\n.header-search-result:last-child {\n border-bottom: initial;\n}\n\n.header-search-result:hover {\n background: #f5f5f5;\n}\n\n@media (max-width: 767px) {\n header .mobile-menu {\n background-color: #58748c;\n border: 1px solid #325776;\n margin-bottom: 20px;\n }\n header .mobile-menu li {\n border-bottom: 1px solid #475b6b;\n margin-bottom: 0;\n padding: 4px 0;\n }\n header .mobile-menu li a {\n text-decoration: none;\n }\n header .mobile-menu li:last-child {\n border-bottom: 0;\n }\n header .mobile-menu li.cta {\n border: 0;\n }\n header .mobile-menu li.cta a {\n width: 100%;\n }\n .header-search {\n padding: 0;\n margin: 20px 0;\n }\n .header-search ul {\n padding-right: 26px;\n }\n}\n\n.people-list .breadcrumb {\n border-bottom: 1px solid #eee;\n}\n\n.people-list .main-content {\n margin-top: 20px;\n}\n\n.people-list .sidebar .sidebar-cta {\n margin-bottom: 20px;\n padding: 15px;\n text-align: center;\n width: 100%;\n}\n\n.people-list .sidebar li {\n margin-bottom: 7px;\n padding-left: 15px;\n position: relative;\n}\n\n.people-list .sidebar li.selected::before {\n color: #999;\n content: '>';\n left: 0;\n position: absolute;\n}\n\n.people-list .sidebar li .number-contacts-per-tag {\n float: right;\n}\n\n.people-list .list {\n border: 1px solid #eee;\n border-radius: 3px;\n}\n\n.people-list .clear-filter {\n border: 1px solid #eee;\n position: relative;\n padding: 6px;\n border-radius: 3px;\n}\n\n.people-list .clear-filter a {\n position: absolute;\n right: 10px;\n}\n\n.people-list .people-list-item {\n border-bottom: 1px solid #eee;\n padding: 10px;\n}\n\n.people-list .people-list-item:hover {\n background-color: #f7fbfc;\n}\n\n.people-list .people-list-item.sorting {\n background-color: #f6f8fa;\n position: relative;\n padding: 10px;\n}\n\n.people-list .people-list-item.sorting .options {\n display: inline;\n position: absolute;\n right: 10px;\n}\n\n.people-list .people-list-item.sorting .options .dropdown-btn:after {\n content: '\\f0d7';\n font-family: FontAwesome;\n margin-left: 5px;\n}\n\n.people-list .people-list-item.sorting .options .dropdown-item {\n padding: 3px 20px 3px 10px;\n}\n\n.people-list .people-list-item.sorting .options .dropdown-item:before {\n content: '\\f00c';\n font-family: FontAwesome;\n margin-right: 5px;\n color: #fff;\n}\n\n.people-list .people-list-item.sorting .options .dropdown-item:hover {\n background-color: #0366d6;\n color: #fff;\n}\n\n.people-list .people-list-item.sorting .options .dropdown-item.selected:before {\n color: #999;\n}\n\n.people-list .people-list-item .avatar {\n background-color: #93521e;\n border-radius: 3px;\n color: #fff;\n display: inline-block;\n font-size: 15px;\n height: 43px;\n margin-right: 5px;\n padding-left: 5px;\n padding-top: 10px;\n vertical-align: middle;\n width: 43px;\n}\n\n.people-list .people-list-item .avatar.one-letter {\n padding-left: 0;\n text-align: center;\n}\n\n.people-list .people-list-item img {\n border-radius: 3px;\n margin-right: 5px;\n}\n\n.people-list .people-list-item a {\n color: #333;\n text-decoration: none;\n}\n\n.people-list .people-list-item a:hover {\n background-color: transparent;\n color: #333;\n}\n\n.people-list .people-list-item .people-list-item-information {\n color: #999;\n float: right;\n font-size: 12px;\n font-style: italic;\n position: relative;\n text-align: right;\n top: 16px;\n}\n\n.blank-people-state {\n margin-top: 30px;\n text-align: center;\n}\n\n.blank-people-state h3 {\n font-weight: 400;\n margin-bottom: 30px;\n}\n\n.blank-people-state .cta-blank {\n margin-bottom: 30px;\n}\n\n.blank-people-state .illustration-blank p {\n margin-top: 30px;\n}\n\n.blank-people-state .illustration-blank img {\n display: block;\n margin: 0 auto 20px;\n}\n\n.people-show .pagehead {\n background-color: #f9f9fb;\n border-bottom: 1px solid #eee;\n position: relative;\n padding-bottom: 20px;\n}\n\n.people-show .pagehead .people-profile-information {\n margin-bottom: 10px;\n position: relative;\n}\n\n.people-show .pagehead .people-profile-information .avatar {\n background-color: #93521e;\n border-radius: 3px;\n color: #fff;\n display: inline-block;\n font-size: 30px;\n height: 87px;\n margin-right: 5px;\n padding-left: 5px;\n padding-top: 21px;\n position: absolute;\n width: 87px;\n}\n\n.people-show .pagehead .people-profile-information .avatar.one-letter {\n padding-left: 0;\n text-align: center;\n}\n\n.people-show .pagehead .people-profile-information img {\n border-radius: 3px;\n position: absolute;\n}\n\n.people-show .pagehead .people-profile-information h2 {\n display: block;\n font-size: 24px;\n font-weight: 300;\n margin-bottom: 0;\n padding-left: 100px;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n width: calc(100% - 245px);\n margin-right: -9999px;\n}\n\n@media (max-width: 480px) {\n .people-show .pagehead .people-profile-information h2 {\n width: 100%;\n }\n}\n\n.people-show .pagehead .people-profile-information .profile-detail-summary {\n padding-left: 100px;\n margin-top: 3px;\n}\n\n.people-show .pagehead .people-profile-information .profile-detail-summary li:not(:last-child) {\n margin-right: 10px;\n}\n\n.people-show .pagehead .people-profile-information #tagsForm {\n padding-left: 100px;\n position: relative;\n}\n\n.people-show .pagehead .people-profile-information #tagsForm #tags_tagsinput {\n height: 40px !important;\n min-height: 40px !important;\n width: 370px !important;\n display: inline-block;\n overflow: hidden;\n}\n\n.people-show .pagehead .people-profile-information #tagsForm .tagsFormActions {\n display: inline;\n position: relative;\n top: -17px;\n}\n\n.people-show .pagehead .people-profile-information .tags {\n padding: 0;\n padding-left: 100px;\n list-style: none;\n line-height: 20px;\n margin: 0;\n overflow: hidden;\n margin-top: 8px;\n}\n\n.people-show .pagehead .people-profile-information .tags li {\n float: left;\n}\n\n.people-show .pagehead .quick-actions {\n position: absolute;\n right: 0;\n top: 14px;\n}\n\n.people-show .main-content {\n background-color: #fff;\n padding-bottom: 20px;\n padding-top: 40px;\n}\n\n.people-show .main-content .section-title {\n position: relative;\n}\n\n.people-show .main-content .section-title h3 {\n border-bottom: 1px solid #e1e2e3;\n font-size: 18px;\n font-weight: 400;\n margin-bottom: 20px;\n padding-bottom: 10px;\n padding-left: 23px;\n padding-top: 10px;\n position: relative;\n}\n\n.people-show .main-content .section-title .icon-section {\n position: absolute;\n top: 14px;\n width: 17px;\n}\n\n.people-show .main-content .sidebar .sidebar-cta a {\n margin-bottom: 20px;\n width: 100%;\n}\n\n.people-show .profile .sidebar-box {\n background-color: #fafafa;\n border: 1px solid #eee;\n border-radius: 3px;\n color: #333;\n margin-bottom: 25px;\n padding: 10px;\n position: relative;\n}\n\n.people-show .profile .sidebar-box-title {\n margin-bottom: 4px;\n position: relative;\n}\n\n.people-show .profile .sidebar-box-title strong {\n font-size: 12px;\n font-weight: 500;\n text-transform: uppercase;\n}\n\n.people-show .profile .sidebar-box-title a {\n position: absolute;\n right: 7px;\n}\n\n.people-show .profile .sidebar-box-title img {\n left: -3px;\n position: relative;\n width: 20px;\n}\n\n.people-show .profile .sidebar-box-title img.people-information {\n top: -4px;\n}\n\n.people-show .profile .sidebar-box-paragraph {\n margin-bottom: 0;\n}\n\n.people-show .profile .people-list li {\n margin-bottom: 4px;\n}\n\n.people-show .profile .people-information li,\n.people-show .profile .work li,\n.people-show .profile .introductions li {\n color: #999;\n font-size: 12px;\n margin-bottom: 10px;\n}\n\n.people-show .profile .people-information li:last-child,\n.people-show .profile .work li:last-child,\n.people-show .profile .introductions li:last-child {\n margin-bottom: 0;\n}\n\n.people-show .profile .people-information li i,\n.people-show .profile .work li i,\n.people-show .profile .introductions li i {\n text-align: center;\n width: 17px;\n}\n\n.people-show .profile .section {\n margin-bottom: 35px;\n}\n\n.people-show .profile .section.kids .section-heading img, .people-show .profile .section.food-preferencies .section-heading img {\n position: relative;\n top: -3px;\n}\n\n.people-show .profile .section .inline-action {\n display: inline;\n margin-left: 10px;\n}\n\n.people-show .profile .section .inline-action a {\n margin-right: 5px;\n}\n\n.people-show .profile .section .section-heading {\n border-bottom: 1px solid #eee;\n padding-bottom: 4px;\n margin-bottom: 10px;\n}\n\n.people-show .profile .section .section-heading img {\n width: 25px;\n}\n\n.people-show .profile .section .section-action {\n display: inline;\n float: right;\n}\n\n.people-show .profile .section .section-blank {\n background-color: #fafafa;\n border: 1px solid #eee;\n border-radius: 3px;\n padding: 15px;\n text-align: center;\n}\n\n.people-show .profile .section .section-blank h3 {\n font-weight: 400;\n font-size: 14px;\n}\n\n.people-show .gifts .gift-recipient {\n font-size: 15px;\n}\n\n.people-show .gifts .gift-recipient:not(:first-child) {\n margin-top: 25px;\n}\n\n.people-show .gifts .offered {\n background-color: #5cb85c;\n border-radius: 10rem;\n display: inline-block;\n font-size: 75%;\n font-weight: 400;\n line-height: 1;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n padding: 2px 0;\n padding-right: .6em;\n padding-left: .6em;\n}\n\n.people-show .gifts .gift-list-item {\n border-top: 1px solid #eee;\n padding: 5px 0;\n}\n\n.people-show .gifts .gift-list-item:last-child {\n border-bottom: 0;\n}\n\n.people-show .gifts .gift-list-item-url {\n display: inline;\n font-size: 12px;\n margin-left: 10px;\n padding: 5px 0 0;\n}\n\n.people-show .gifts .gift-list-item-information {\n display: inline;\n margin-left: 10px;\n}\n\n.people-show .gifts .gift-list-item-date,\n.people-show .gifts .gift-list-item-actions {\n color: #999;\n display: inline;\n font-size: 12px;\n}\n\n.people-show .gifts .gift-list-item-date a,\n.people-show .gifts .gift-list-item-actions a {\n color: #999;\n font-size: 11px;\n margin-right: 5px;\n text-decoration: underline;\n}\n\n.people-show .gifts .gift-list-item-date li,\n.people-show .gifts .gift-list-item-actions li {\n display: inline;\n}\n\n.people-show .gifts .gift-list-item-actions {\n margin-left: 5px;\n}\n\n.people-show .gifts .for {\n font-style: italic;\n margin-left: 10px;\n}\n\n.people-show .activities .date,\n.people-show .reminders .date,\n.people-show .tasks .date,\n.people-show .debts .date,\n.people-show .gifts .date,\n.people-show .calls .date {\n color: #777;\n font-size: 12px;\n margin-right: 10px;\n width: 100px;\n}\n\n.people-show .activities .pa2 li,\n.people-show .reminders .pa2 li,\n.people-show .tasks .pa2 li,\n.people-show .debts .pa2 li,\n.people-show .gifts .pa2 li,\n.people-show .calls .pa2 li {\n list-style: inside disc;\n}\n\n.people-show .activities .frequency-type,\n.people-show .activities .value,\n.people-show .reminders .frequency-type,\n.people-show .reminders .value,\n.people-show .tasks .frequency-type,\n.people-show .tasks .value,\n.people-show .debts .frequency-type,\n.people-show .debts .value,\n.people-show .gifts .frequency-type,\n.people-show .gifts .value,\n.people-show .calls .frequency-type,\n.people-show .calls .value {\n background-color: #ecf9ff;\n border: 1px solid #eee;\n border-radius: 3px;\n display: inline;\n font-size: 12px;\n padding: 0 6px;\n}\n\n.people-show .activities .list-actions,\n.people-show .reminders .list-actions,\n.people-show .tasks .list-actions,\n.people-show .debts .list-actions,\n.people-show .gifts .list-actions,\n.people-show .calls .list-actions {\n position: relative;\n text-align: center;\n width: 60px;\n}\n\n.people-show .activities .list-actions a:first-child,\n.people-show .reminders .list-actions a:first-child,\n.people-show .tasks .list-actions a:first-child,\n.people-show .debts .list-actions a:first-child,\n.people-show .gifts .list-actions a:first-child,\n.people-show .calls .list-actions a:first-child {\n margin-right: 5px;\n}\n\n.people-show .activities .list-actions a.edit,\n.people-show .reminders .list-actions a.edit,\n.people-show .tasks .list-actions a.edit,\n.people-show .debts .list-actions a.edit,\n.people-show .gifts .list-actions a.edit,\n.people-show .calls .list-actions a.edit {\n position: relative;\n top: 1px;\n}\n\n.people-show .activities .empty,\n.people-show .reminders .empty,\n.people-show .tasks .empty,\n.people-show .debts .empty,\n.people-show .gifts .empty,\n.people-show .calls .empty {\n font-style: italic;\n}\n\n.people-show .reminders .frequency-type {\n white-space: nowrap;\n}\n\n.people-show .reminders input[type='date'] {\n margin-bottom: 20px;\n width: 170px;\n}\n\n.people-show .reminders .form-check input[type='number'] {\n display: inline;\n width: 50px;\n}\n\n.people-show .debts .debts-list .debt-nature {\n width: 220px;\n}\n\n.people-show.significantother .significant-other-blank-state, .people-show.kid .significant-other-blank-state {\n text-align: center;\n}\n\n.people-show.significantother .significant-other-blank-state img, .people-show.kid .significant-other-blank-state img {\n margin-bottom: 20px;\n margin-top: 10px;\n}\n\n.people-show.significantother .central-form .hint-reminder, .people-show.kid .central-form .hint-reminder {\n margin-top: 10px;\n}\n\n.people-show.significantother .central-form .hint-reminder p, .people-show.kid .central-form .hint-reminder p {\n margin-bottom: 0;\n}\n\n.people-show.significantother .central-form .real-contact-checkbox, .people-show.kid .central-form .real-contact-checkbox {\n margin-bottom: 0;\n}\n\n.people-show.significantother .central-form .real-contact-checkbox input, .people-show.kid .central-form .real-contact-checkbox input {\n margin-right: 5px;\n}\n\n.people-show.significantother .central-form .real-contact-checkbox .help, .people-show.kid .central-form .real-contact-checkbox .help {\n color: #999;\n}\n\n.create-people .import {\n margin-bottom: 30px;\n text-align: center;\n}\n\n@media (max-width: 480px) {\n .people-list {\n margin-top: 20px;\n }\n .people-list .people-list-mobile {\n border-bottom: 1px solid #dfdfdf;\n }\n .people-list .people-list-mobile li {\n padding: 6px 0;\n }\n .people-list .people-list-item .people-list-item-information {\n display: none;\n }\n .people-show .pagehead .people-profile-information {\n margin-bottom: 20px;\n margin-top: 10px;\n }\n .people-show .pagehead .people-profile-information h2 {\n padding-left: 80px;\n }\n .people-show .pagehead .people-profile-information h2 span {\n display: none;\n }\n .people-show .pagehead .people-profile-information #tagsForm {\n display: block;\n margin-top: 40px;\n padding-left: 0;\n }\n .people-show .pagehead .people-profile-information #tagsForm #tags_tagsinput {\n width: 100% !important;\n }\n .people-show .pagehead .people-profile-information #tagsForm .tagsFormActions {\n display: block;\n margin-top: 20px;\n }\n .people-show .pagehead .people-profile-information .profile-detail-summary {\n padding-left: 0;\n margin-top: 10px;\n }\n .people-show .pagehead .people-profile-information .profile-detail-summary li {\n display: block;\n margin-right: 0;\n }\n .people-show .pagehead .people-profile-information .profile-detail-summary li:not(:last-child)::after {\n content: '';\n margin-left: 0;\n }\n .people-show .pagehead .people-profile-information .avatar {\n height: 67px;\n width: 67px;\n padding-top: 11px;\n }\n .people-show .pagehead .people-profile-information .tags {\n padding-left: 80px;\n }\n .people-show .pagehead .edit-information {\n position: relative;\n width: 100%;\n margin-bottom: 10px;\n }\n .people-show .main-content.modal {\n margin-top: 0;\n }\n .people-show .main-content.dashboard .sidebar-box {\n margin-bottom: 15px;\n }\n .people-show .main-content.dashboard .sidebar-cta {\n margin-top: 15px;\n }\n .people-show .main-content.dashboard .people-information-actions {\n margin-bottom: 20px;\n }\n .people-show .main-content.activities .cta-mobile {\n margin-bottom: 20px;\n }\n .people-show .main-content.activities .cta-mobile a {\n width: 100%;\n }\n .people-show .main-content.activities .activities-list .activity-item-date {\n top: -4px;\n }\n .create-people {\n width: 100%;\n }\n .create-people .btn {\n width: 100%;\n }\n .list-add-item {\n margin-left: 0;\n }\n .inline-form .task-add-title {\n width: 100%;\n }\n .inline-form textarea {\n width: 100%;\n }\n .box-links {\n margin-bottom: 10px;\n position: relative;\n right: 0;\n top: 0;\n }\n .box-links li {\n margin-left: 0;\n }\n}\n\n.journal-calendar-text {\n top: 19px;\n line-height: 16px;\n width: 62px;\n}\n\n.journal-calendar-box {\n width: 62px;\n margin-right: 11px;\n}\n\n.journal-calendar-content {\n width: calc(100% - 73px);\n}\n\n.journal-line {\n transition: all .2s;\n}\n\n.journal-line:hover {\n border-color: #00a8ff;\n}\n\n.marketing.homepage .top-page {\n background-color: #313940;\n border-bottom: 1px solid #d0d0d0;\n color: #fff;\n padding-top: 40px;\n text-align: center;\n}\n\n.marketing.homepage .top-page .navigation {\n position: absolute;\n right: 20px;\n top: 20px;\n}\n\n.marketing.homepage .top-page .navigation a {\n border: 1px solid #fff;\n border-radius: 6px;\n color: #fff;\n padding: 10px;\n text-decoration: none;\n}\n\n.marketing.homepage .top-page h1 {\n font-size: 32px;\n font-weight: 300;\n margin-bottom: 40px;\n}\n\n.marketing.homepage .top-page p {\n font-size: 18px;\n font-weight: 300;\n margin: 0 auto;\n max-width: 550px;\n}\n\n.marketing.homepage .top-page p.cta {\n margin-bottom: 50px;\n margin-top: 70px;\n}\n\n.marketing.homepage .top-page p.cta a {\n font-size: 20px;\n font-weight: 300;\n padding: 20px 50px;\n}\n\n.marketing.homepage .top-page .logo {\n margin-bottom: 20px;\n}\n\n.marketing.homepage .before-sections {\n text-align: center;\n}\n\n.marketing.homepage .before-sections h3 {\n font-size: 25px;\n font-weight: 300;\n margin-bottom: 40px;\n margin-top: 80px;\n}\n\n.marketing.homepage .section-homepage {\n border-bottom: 1px solid #dcdcdc;\n padding: 60px 0;\n}\n\n.marketing.homepage .section-homepage .visual {\n text-align: center;\n}\n\n.marketing.homepage .section-homepage h2 {\n font-size: 18px;\n font-weight: 300;\n margin-bottom: 25px;\n}\n\n.marketing.homepage .section-homepage.dates h2 {\n margin-top: 40px;\n}\n\n.marketing.homepage .section-homepage.activities h2 {\n margin-top: 130px;\n}\n\n.marketing.homepage .section-homepage.features h3 {\n font-size: 18px;\n font-weight: 300;\n margin-bottom: 40px;\n text-align: center;\n}\n\n.marketing.homepage .section-homepage.features ul li {\n font-size: 16px;\n margin: 10px auto;\n max-width: 60%;\n}\n\n.marketing.homepage .section-homepage.features ul li i {\n color: #417741;\n}\n\n.marketing.homepage .section-homepage.try {\n text-align: center;\n}\n\n.marketing.homepage .section-homepage.try p {\n margin-bottom: 50px;\n margin-top: 70px;\n}\n\n.marketing.homepage .section-homepage.try p a {\n font-size: 20px;\n font-weight: 300;\n padding: 20px 50px;\n}\n\n.marketing.homepage .why {\n background-color: #313940;\n color: #fff;\n padding-bottom: 50px;\n}\n\n.marketing.homepage .why h3 {\n font-size: 20px;\n font-weight: 300;\n margin-bottom: 30px;\n padding-top: 50px;\n text-align: center;\n}\n\n.marketing.homepage .why p {\n font-size: 16px;\n font-weight: 300;\n margin: 10px auto 20px;\n max-width: 550px;\n}\n\n.marketing .footer-marketing {\n margin-bottom: 40px;\n padding-top: 40px;\n text-align: center;\n}\n\n.marketing .footer-marketing a {\n margin-right: 10px;\n}\n\n.marketing.register {\n background-color: #fafbfc;\n padding-top: 90px;\n padding-bottom: 40px;\n}\n\n.marketing.register .signup-box {\n background-color: #fff;\n border: 1px solid #e4edf5;\n border-radius: 5px;\n padding: 50px 20px 20px;\n}\n\n.marketing.register .signup-box .logo {\n left: 40%;\n position: absolute;\n top: -33px;\n}\n\n.marketing.register .signup-box h1 {\n font-weight: 700;\n text-align: center;\n}\n\n.marketing.register .signup-box h2, .marketing.register .signup-box h3 {\n font-weight: 300;\n text-align: center;\n}\n\n.marketing.register .signup-box h2 {\n margin-top: 20px;\n margin-bottom: 20px;\n}\n\n.marketing.register .signup-box h3 {\n font-size: 15px;\n margin-bottom: 30px;\n}\n\n.marketing.register .signup-box .form-inline label {\n display: block;\n}\n\n.marketing.register .signup-box button {\n margin-top: 10px;\n width: 100%;\n}\n\n.marketing.register .signup-box a.action {\n margin-top: 10px;\n width: 100%;\n}\n\n.marketing.register .signup-box .help {\n font-size: 13px;\n text-align: center;\n}\n\n.marketing.register .signup-box .checkbox {\n display: none;\n}\n\n.marketing.register .signup-box .links {\n margin-top: 20px;\n}\n\n.marketing.register .signup-box .links li {\n font-size: 14px;\n margin-bottom: 5px;\n}\n\n.marketing .subpages .header {\n background-color: #313940;\n text-align: center;\n}\n\n.releases, .privacy, .statistics {\n max-width: 750px;\n margin-left: auto;\n margin-right: auto;\n padding: 20px 30px 100px 30px;\n margin-top: 50px;\n background-color: #fff;\n box-shadow: 0px 8px 20px #dadbdd;\n}\n\n.releases h2, .privacy h2, .statistics h2 {\n text-align: center;\n}\n\n.releases h3, .privacy h3, .statistics h3 {\n font-size: 15px;\n margin-top: 30px;\n}\n\n.releases ul {\n list-style-type: disc;\n margin-left: 20px;\n}\n\n@media (max-width: 480px) {\n .marketing.homepage img {\n max-width: 100%;\n }\n .marketing.homepage .before-sections h3 {\n margin-bottom: 0;\n }\n .marketing.homepage .section-homepage.people .visual {\n margin-top: 40px;\n }\n .marketing.homepage .section-homepage.activities h2 {\n margin-top: 0;\n }\n .marketing.homepage .section-homepage.activities .visual {\n margin-top: 40px;\n }\n .marketing.homepage .section-homepage.features ul li {\n max-width: 100%;\n }\n .marketing.homepage .section-homepage.try {\n padding: 30px 0;\n }\n .marketing.register .signup-box .logo {\n left: 39%;\n top: -47px;\n }\n}\n\n.settings .breadcrumb {\n margin-bottom: 20px;\n}\n\n.settings .sidebar-menu ul {\n border: 1px solid #dfdfdf;\n border-radius: 3px;\n}\n\n.settings .sidebar-menu li {\n padding: 10px;\n}\n\n.settings .sidebar-menu li:not(:last-child) {\n border-bottom: 1px solid #dfdfdf;\n}\n\n.settings .sidebar-menu li.selected {\n background-color: #f7fbfc;\n}\n\n.settings .sidebar-menu li.selected i {\n color: green;\n}\n\n.settings .sidebar-menu li a {\n width: 100%;\n}\n\n.settings .sidebar-menu li i {\n margin-right: 5px;\n color: #999;\n}\n\n.settings .settings-reset,\n.settings .settings-delete {\n border: 1px solid;\n padding: 10px;\n margin-top: 40px;\n}\n\n.settings .settings-reset h2,\n.settings .settings-delete h2 {\n font-weight: normal;\n font-size: 16px;\n}\n\n.settings .settings-delete {\n border-color: #d9534f;\n border-radius: 3px;\n}\n\n.settings .settings-reset {\n border-color: #f0ad4e;\n border-radius: 3px;\n}\n\n.settings .warning-zone {\n margin-bottom: 30px;\n margin-top: 30px;\n padding: 10px 10px 5px 15px;\n border: 1px solid #f1c897;\n border-radius: 3px;\n background-color: #ffe8bc;\n}\n\n.settings .users-list h3.with-actions {\n padding-bottom: 13px;\n}\n\n.settings .users-list h3.with-actions a {\n float: right;\n}\n\n.settings .users-list .table-cell.actions {\n text-align: right;\n}\n\n.settings .blank-screen {\n text-align: center;\n}\n\n.settings .blank-screen img {\n margin-bottom: 30px;\n margin-top: 30px;\n}\n\n.settings .blank-screen h2 {\n font-weight: normal;\n margin-bottom: 10px;\n}\n\n.settings .blank-screen h3 {\n margin-top: 0;\n border-bottom: 0;\n}\n\n.settings .blank-screen p {\n margin: 0 auto;\n width: 400px;\n}\n\n.settings .blank-screen p.cta {\n margin-top: 40px;\n margin-bottom: 10px;\n}\n\n.settings .blank-screen .requires-subscription {\n margin-top: 20px;\n font-size: 13px;\n color: #999;\n}\n\n.settings .subscriptions .upgrade-benefits {\n margin-bottom: 20px;\n}\n\n.settings .subscriptions .upgrade-benefits li {\n margin-left: 20px;\n list-style-type: disc;\n}\n\n.settings .subscriptions #label-card-element {\n margin-bottom: 15px;\n}\n\n.settings .subscriptions .downgrade ul {\n background-color: #f8f8f8;\n border: 1px solid #dfdfdf;\n border-radius: 6px;\n margin-bottom: 20px;\n padding: 25px;\n}\n\n.settings .subscriptions .downgrade li {\n padding-bottom: 15px;\n}\n\n.settings .subscriptions .downgrade li:not(:last-child) {\n border-bottom: 1px solid #dfdfdf;\n}\n\n.settings .subscriptions .downgrade li:not(:first-child) {\n margin-top: 10px;\n}\n\n.settings .subscriptions .downgrade li.success .rule-title {\n text-decoration: line-through;\n}\n\n.settings .subscriptions .downgrade li.success .icon:after {\n font-family: FontAwesome;\n font-size: 17px;\n color: #0eb0b7;\n content: \"\\f058\";\n top: 10px;\n position: relative;\n}\n\n.settings .subscriptions .downgrade li.fail .icon:after {\n font-family: FontAwesome;\n font-size: 17px;\n color: #cd4400;\n content: \"\\f057\";\n top: 10px;\n position: relative;\n}\n\n.settings .subscriptions .downgrade li .rule-title {\n font-size: 18px;\n padding-left: 5px;\n}\n\n.settings .subscriptions .downgrade li .rule-to-succeed {\n font-size: 13px;\n display: block;\n padding-left: 27px;\n}\n\n.settings .report .report-summary {\n background-color: #fafafa;\n border: 1px solid #dfdfdf;\n border-radius: 3px;\n margin-bottom: 30px;\n}\n\n.settings .report .report-summary li {\n padding: 5px 10px;\n}\n\n.settings .report .report-summary li:not(:last-child) {\n border-bottom: 1px solid #dfdfdf;\n}\n\n.settings .report .report-summary li span {\n font-weight: 600;\n}\n\n.settings .report .status {\n text-align: center;\n width: 95px;\n}\n\n.settings .report .reason {\n font-style: italic;\n}\n\n.settings.import .success {\n color: #5cb85c;\n}\n\n.settings.import .failure {\n color: #d9534f;\n}\n\n.settings.import .warning {\n color: #f0ad4e;\n}\n\n.settings.import .date {\n font-size: 13px;\n margin-left: 10px;\n}\n\n.settings.import h3.with-actions {\n padding-bottom: 13px;\n}\n\n.settings.import h3.with-actions a {\n float: right;\n}\n\n.settings.upload .warning-zone {\n padding: 20px 15px;\n}\n\n.settings.upload .warning-zone ul {\n margin-left: 20px;\n list-style-type: disc;\n}\n\n.settings .tags-list .tags-list-contact-number {\n margin-left: 10px;\n color: #999;\n}\n\n.settings .tags-list .actions {\n text-align: right;\n}\n\n.modal h5 {\n font-size: 20px;\n font-weight: 500;\n}\n\n.modal label {\n padding-left: 0;\n}\n\n.modal .close {\n position: absolute;\n right: 19px;\n top: 14px;\n font-size: 30px;\n}\n\n.modal.log-call .date-it-happened {\n margin-top: 20px;\n}\n\n.modal.log-call .exact-date {\n display: none;\n margin-top: 20px;\n}\n\n.modal.log-call .exact-date input {\n display: inline;\n width: 165px;\n}\n\n.bg-gray-monica {\n background-color: #f2f4f8;\n}\n\n.b--gray-monica {\n border-color: #dde2e9;\n}\n\n.w-5 {\n width: 5%;\n}\n\n.w-95 {\n width: 95%;\n}\n\n.form-error-message {\n border-top: 1px solid #ed6246;\n background-color: #fbeae5;\n box-shadow: inset 0 3px 0 0 #ed6347, inset 0 0 0 0 transparent, 0 0 0 1px rgba(63, 63, 68, 0.05), 0 1px 3px 0 rgba(63, 63, 68, 0.15);\n}\n\n.form-information-message {\n border-top: 1px solid #46C1BF;\n background-color: #E0F5F5;\n box-shadow: inset 0 3px 0 0 #47c1bf, inset 0 0 0 0 transparent, 0 0 0 1px rgba(63, 63, 68, 0.05), 0 1px 3px 0 rgba(63, 63, 68, 0.15);\n}\n\n.form-information-message svg {\n width: 20px;\n fill: #00848e;\n color: #fff;\n}\n\n.border-bottom {\n border-bottom: 1px solid #dfdfdf;\n}\n\n.border-top {\n border-top: 1px solid #dfdfdf;\n}\n\n.border-right {\n border-right: 1px solid #dfdfdf;\n}\n\n.border-left {\n border-left: 1px solid #dfdfdf;\n}\n\n.padding-left-none {\n padding-left: 0;\n}\n\n.boxed {\n background: #fff;\n border: 1px solid #dfdfdf;\n border-radius: 3px;\n box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.05);\n}\n\n.box-padding {\n padding: 15px;\n}\n\n.badge {\n display: inline-block;\n padding: 4px 5px;\n font-size: 75%;\n font-weight: 700;\n line-height: 1;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: .25rem;\n}\n\n.badge-success {\n background-color: #5cb85c;\n}\n\n.badge-danger {\n background-color: #d9534f;\n}\n\n.pretty-tag {\n background: #eee;\n border-radius: 3px;\n color: #555;\n display: inline-block;\n font-size: 11px;\n height: 22px;\n line-height: 22px;\n padding: 0 10px 0 19px;\n position: relative;\n margin: 0 10px 0 0;\n text-decoration: none;\n -webkit-transition: color 0.2s;\n}\n\n.pretty-tag::before {\n background: #fff;\n border-radius: 10px;\n box-shadow: inset 0 1px rgba(0, 0, 0, 0.25);\n content: '';\n height: 6px;\n left: 7px;\n position: absolute;\n width: 6px;\n top: 9px;\n}\n\n.pretty-tag:hover {\n background-color: #0366d6;\n}\n\n.pretty-tag:hover a {\n color: #fff;\n}\n\n.pretty-tag a {\n text-decoration: none;\n color: #555;\n}\n\n.pretty-tag a:hover {\n background-color: transparent;\n color: #fff;\n}\n\nbody {\n color: #323b43;\n}\n\na {\n color: #0366d6;\n padding: 1px;\n text-decoration: underline;\n}\n\na:hover {\n background-color: #0366d6;\n color: #fff;\n text-decoration: none;\n}\n\na.action-link {\n color: #999;\n font-size: 11px;\n margin-right: 5px;\n text-decoration: underline;\n}\n\na[hreflang]:after {\n content: \" (\" attr(hreflang) \")\";\n}\n\nul {\n list-style-type: none;\n margin: 0;\n padding: 0;\n}\n\nul.horizontal li {\n display: inline;\n}\n\n.hidden {\n display: none;\n}\n\ninput:disabled {\n background-color: #999;\n}\n\n.pagination-box {\n margin-top: 30px;\n text-align: center;\n}\n\n.alert-success {\n margin: 20px 0;\n}\n\n.central-form {\n margin-top: 40px;\n}\n\n.central-form h2 {\n font-weight: 400;\n margin-bottom: 20px;\n text-align: center;\n}\n\n.central-form .form-check-inline {\n margin-right: 10px;\n}\n\n.central-form .form-group > label:not(:first-child) {\n margin-top: 10px;\n}\n\n.central-form input[type=\"radio\"] {\n margin-right: 5px;\n}\n\n.central-form .dates .form-inline {\n display: inline;\n}\n\n.central-form .dates .form-inline input[type=\"number\"] {\n margin: 0 10px;\n width: 52px;\n}\n\n.central-form .dates .form-inline input[type=\"date\"] {\n margin-left: 20px;\n margin-top: 10px;\n}\n\n.central-form .form-group:not(:last-child) {\n border-bottom: 1px solid #eee;\n padding-bottom: 20px;\n}\n\n.central-form .nav {\n margin-top: 40px;\n}\n\n.central-form .nav .nav-link {\n text-decoration: none;\n}\n\n.central-form .tab-content {\n border-right: 1px solid #ddd;\n border-left: 1px solid #ddd;\n border-bottom: 1px solid #ddd;\n padding: 15px;\n}\n\n.avatar-photo img {\n border-radius: 3px;\n}\n\n.breadcrumb {\n background-color: #f9f9fb;\n}\n\n.breadcrumb ul {\n font-size: 12px;\n padding: 30px 0 24px;\n}\n\n.breadcrumb ul li:not(:last-child):after {\n content: '>';\n margin-left: 5px;\n margin-right: 1px;\n}\n\n.btn {\n color: #24292e;\n background-color: #eff3f6;\n background-image: -webkit-linear-gradient(270deg, #fafbfc 0%, #eff3f6 90%);\n background-image: linear-gradient(-180deg, #fafbfc 0%, #eff3f6 90%);\n position: relative;\n display: inline-block;\n padding: 6px 12px;\n font-size: 14px;\n font-weight: 600;\n line-height: 20px;\n white-space: nowrap;\n vertical-align: middle;\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n background-repeat: repeat-x;\n background-position: -1px -1px;\n background-size: 110% 110%;\n border: 1px solid rgba(27, 31, 35, 0.2);\n border-radius: 0.25em;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n text-decoration: none;\n}\n\n.btn:hover, .btn:visited {\n text-decoration: none;\n background-color: #e6ebf1;\n background-image: -webkit-linear-gradient(270deg, #f0f3f6 0%, #e6ebf1 90%);\n background-image: linear-gradient(-180deg, #f0f3f6 0%, #e6ebf1 90%);\n background-position: 0 -0.5em;\n background-repeat: repeat-x;\n border-color: rgba(27, 31, 35, 0.35);\n}\n\n.btn:active {\n background-color: #e9ecef;\n background-image: none;\n border-color: rgba(27, 31, 35, 0.35);\n box-shadow: inset 0 0.15em 0.3em rgba(27, 31, 35, 0.15);\n}\n\n.btn:disabled {\n background-image: linear-gradient(-180deg, #63b175 0%, #61986e 90%);\n}\n\n.btn:focus {\n outline: none;\n text-decoration: none;\n}\n\n.btn-primary {\n color: #fff;\n background-color: #28a745;\n background-image: -webkit-linear-gradient(270deg, #34d058 0%, #28a745 90%);\n background-image: linear-gradient(-180deg, #34d058 0%, #28a745 90%);\n}\n\n.btn-primary:hover {\n background-color: #269f42;\n background-image: -webkit-linear-gradient(270deg, #2fcb53 0%, #269f42 90%);\n background-image: linear-gradient(-180deg, #2fcb53 0%, #269f42 90%);\n background-position: 0 -0.5em;\n border-color: rgba(27, 31, 35, 0.5);\n}\n\n.table {\n border-collapse: collapse;\n display: table;\n width: 100%;\n}\n\n.table .table-row {\n border-left: 1px solid #ddd;\n border-right: 1px solid #ddd;\n border-top: 1px solid #ddd;\n display: table-row;\n}\n\n.table .table-row:first-child .table-cell:first-child {\n border-top-left-radius: 3px;\n}\n\n.table .table-row:first-child .table-cell:last-child {\n border-top-right-radius: 3px;\n}\n\n.table .table-row:last-child {\n border-bottom: 1px solid #ddd;\n}\n\n.table .table-row:hover {\n background-color: #f6f8fa;\n}\n\n.table .table-cell {\n display: table-cell;\n padding: 8px 10px;\n}\n\nfooter .badge-success {\n font-size: 12px;\n font-weight: 400;\n}\n\nfooter .show-version {\n text-align: left;\n}\n\nfooter .show-version h2 {\n font-size: 16px;\n}\n\nfooter .show-version .note {\n margin-bottom: 20px;\n}\n\nfooter .show-version .note ul {\n list-style-type: disc;\n}\n\nfooter .show-version .note li {\n display: block;\n font-size: 15px;\n text-align: left;\n}\n\n@media (max-width: 480px) {\n .sidebar-box {\n border: 1px solid #dfdfdf;\n border-radius: 3px;\n }\n .sidebar-box .sidebar-heading {\n background-color: #fafafa;\n margin-top: 0;\n padding: 5px;\n }\n .sidebar-box .sidebar-blank {\n background-color: #fff;\n border: 0;\n }\n .sidebar-box li {\n padding: 5px;\n }\n}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJlc291cmNlcy9hc3NldHMvc2Fzcy9hcHAuc2NzcyIsInJlc291cmNlcy9hc3NldHMvc2Fzcy9fY3VzdG9tX2Jvb3RzdHJhcC5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL192YXJpYWJsZXMuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fbWl4aW5zLnNjc3MiLCJub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19icmVha3BvaW50cy5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9faG92ZXIuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX2ltYWdlLnNjc3MiLCJub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19sYWJlbC5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fcmVzZXQtZmlsdGVyLnNjc3MiLCJub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19yZXNpemUuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX3NjcmVlbi1yZWFkZXIuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX3NpemUuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX3RhYi1mb2N1cy5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fcmVzZXQtdGV4dC5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fdGV4dC1lbXBoYXNpcy5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fdGV4dC1oaWRlLnNjc3MiLCJub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL190ZXh0LXRydW5jYXRlLnNjc3MiLCJub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19hbGVydC5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fYnV0dG9ucy5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fY2FyZHMuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX3BhZ2luYXRpb24uc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX2xpc3RzLnNjc3MiLCJub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19saXN0LWdyb3VwLnNjc3MiLCJub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19uYXYtZGl2aWRlci5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fZm9ybXMuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX3Byb2dyZXNzLnNjc3MiLCJub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL190YWJsZS1yb3cuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX2JhY2tncm91bmQtdmFyaWFudC5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fYm9yZGVyLXJhZGl1cy5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fZ3JhZGllbnRzLnNjc3MiLCJub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19jbGVhcmZpeC5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fY2VudGVyLWJsb2NrLnNjc3MiLCJub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19ncmlkLWZyYW1ld29yay5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fZ3JpZC5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fcHVsbHMuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fbm9ybWFsaXplLnNjc3MiLCJub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX3ByaW50LnNjc3MiLCJub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX3JlYm9vdC5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19ncmlkLnNjc3MiLCJub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX3RhYmxlcy5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19mb3Jtcy5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19kcm9wZG93bi5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19uYXYuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fY2FyZC5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19wYWdpbmF0aW9uLnNjc3MiLCJub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX2FsZXJ0LnNjc3MiLCJub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX2Nsb3NlLnNjc3MiLCJub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX21vZGFsLnNjc3MiLCJub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX3V0aWxpdGllcy1yZXNwb25zaXZlLnNjc3MiLCJub2RlX21vZHVsZXMvaGludC5jc3MvaGludC5taW4uY3NzIiwibm9kZV9tb2R1bGVzL3RhY2h5b25zL2Nzcy90YWNoeW9ucy5taW4uY3NzIiwibm9kZV9tb2R1bGVzL2pRdWVyeS1UYWdzLUlucHV0L2Rpc3QvanF1ZXJ5LnRhZ3NpbnB1dC5taW4uY3NzIiwicmVzb3VyY2VzL2Fzc2V0cy9zYXNzL19kYXRhdGFibGUubWluLnNjc3MiLCJub2RlX21vZHVsZXMvZm9udC1hd2Vzb21lL3Njc3MvZm9udC1hd2Vzb21lLnNjc3MiLCJub2RlX21vZHVsZXMvZm9udC1hd2Vzb21lL3Njc3MvX3ZhcmlhYmxlcy5zY3NzIiwibm9kZV9tb2R1bGVzL2ZvbnQtYXdlc29tZS9zY3NzL19taXhpbnMuc2NzcyIsIm5vZGVfbW9kdWxlcy9mb250LWF3ZXNvbWUvc2Nzcy9fcGF0aC5zY3NzIiwibm9kZV9tb2R1bGVzL2ZvbnQtYXdlc29tZS9zY3NzL19jb3JlLnNjc3MiLCJub2RlX21vZHVsZXMvZm9udC1hd2Vzb21lL3Njc3MvX2xhcmdlci5zY3NzIiwibm9kZV9tb2R1bGVzL2ZvbnQtYXdlc29tZS9zY3NzL19maXhlZC13aWR0aC5zY3NzIiwibm9kZV9tb2R1bGVzL2ZvbnQtYXdlc29tZS9zY3NzL19saXN0LnNjc3MiLCJub2RlX21vZHVsZXMvZm9udC1hd2Vzb21lL3Njc3MvX2JvcmRlcmVkLXB1bGxlZC5zY3NzIiwibm9kZV9tb2R1bGVzL2ZvbnQtYXdlc29tZS9zY3NzL19hbmltYXRlZC5zY3NzIiwibm9kZV9tb2R1bGVzL2ZvbnQtYXdlc29tZS9zY3NzL19yb3RhdGVkLWZsaXBwZWQuc2NzcyIsIm5vZGVfbW9kdWxlcy9mb250LWF3ZXNvbWUvc2Nzcy9fc3RhY2tlZC5zY3NzIiwibm9kZV9tb2R1bGVzL2ZvbnQtYXdlc29tZS9zY3NzL19pY29ucy5zY3NzIiwibm9kZV9tb2R1bGVzL2ZvbnQtYXdlc29tZS9zY3NzL19zY3JlZW4tcmVhZGVyLnNjc3MiLCJyZXNvdXJjZXMvYXNzZXRzL3Nhc3MvYnV0dG9ucy5zY3NzIiwicmVzb3VyY2VzL2Fzc2V0cy9zYXNzL2hlYWRlci5zY3NzIiwicmVzb3VyY2VzL2Fzc2V0cy9zYXNzL3Blb3BsZS5zY3NzIiwicmVzb3VyY2VzL2Fzc2V0cy9zYXNzL2pvdXJuYWwuc2NzcyIsInJlc291cmNlcy9hc3NldHMvc2Fzcy9tYXJrZXRpbmcuc2NzcyIsInJlc291cmNlcy9hc3NldHMvc2Fzcy9zZXR0aW5ncy5zY3NzIiwicmVzb3VyY2VzL2Fzc2V0cy9zYXNzL21vZGFsLnNjc3MiXSwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCBcIl9jdXN0b21fYm9vdHN0cmFwXCI7XG5AaW1wb3J0IFwifmhpbnQuY3NzL2hpbnQubWluXCI7XG5cbkBpbXBvcnQgXCJ+dGFjaHlvbnMvY3NzL3RhY2h5b25zLm1pblwiO1xuXG4vLyBUYWdzIGZvciBhIGNvbnRhY3RcbkBpbXBvcnQgXCJ+alF1ZXJ5LVRhZ3MtSW5wdXQvZGlzdC9qcXVlcnkudGFnc2lucHV0Lm1pblwiO1xuXG4vLyBGb3IgdGhlIGRhdGF0YWJsZXNcbkBpbXBvcnQgXCJfZGF0YXRhYmxlLm1pblwiO1xuXG4vLyBJY29uIGZvbnRzXG5AaW1wb3J0IFwifmZvbnQtYXdlc29tZS9zY3NzL2ZvbnQtYXdlc29tZVwiO1xuXG4kYm9yZGVyLWNvbG9yOiAjZGZkZmRmO1xuXG5AaW1wb3J0IFwiYnV0dG9uc1wiO1xuQGltcG9ydCBcImhlYWRlclwiO1xuQGltcG9ydCBcInBlb3BsZVwiO1xuQGltcG9ydCBcImpvdXJuYWxcIjtcbkBpbXBvcnQgXCJtYXJrZXRpbmdcIjtcbkBpbXBvcnQgXCJzZXR0aW5nc1wiO1xuQGltcG9ydCBcIm1vZGFsXCI7XG5cbi8vIEN1c3RvbSBjb2xvcnNcbi8vIEV4dGVuZGluZyBUYWNoeWlvbnNcbi5iZy1ncmF5LW1vbmljYSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmMmY0Zjg7XG59XG5cbi5iLS1ncmF5LW1vbmljYSB7XG4gIGJvcmRlci1jb2xvcjogI2RkZTJlOTtcbn1cbi53LTUgeyB3aWR0aDogNSU7IH1cbi53LTk1IHsgd2lkdGg6IDk1JTsgfVxuXG4uZm9ybS1lcnJvci1tZXNzYWdlIHtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlZDYyNDY7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmYmVhZTU7XG4gIGJveC1zaGFkb3c6IGluc2V0IDAgM3B4IDAgMCAjZWQ2MzQ3LCBpbnNldCAwIDAgMCAwIHRyYW5zcGFyZW50LCAwIDAgMCAxcHggcmdiYSg2Myw2Myw2OCwuMDUpLCAwIDFweCAzcHggMCByZ2JhKDYzLDYzLDY4LC4xNSk7XG59XG5cbi5mb3JtLWluZm9ybWF0aW9uLW1lc3NhZ2Uge1xuICBib3JkZXItdG9wOiAxcHggc29saWQgIzQ2QzFCRjtcbiAgYmFja2dyb3VuZC1jb2xvcjogI0UwRjVGNTtcbiAgYm94LXNoYWRvdzogaW5zZXQgMCAzcHggMCAwICM0N2MxYmYsIGluc2V0IDAgMCAwIDAgdHJhbnNwYXJlbnQsIDAgMCAwIDFweCByZ2JhKDYzLDYzLDY4LC4wNSksIDAgMXB4IDNweCAwIHJnYmEoNjMsNjMsNjgsLjE1KTtcblxuICBzdmcge1xuICAgIHdpZHRoOiAyMHB4O1xuICAgIGZpbGw6ICMwMDg0OGU7XG4gICAgY29sb3I6ICNmZmY7XG4gIH1cbn1cblxuLy8gVXRpbGl0aWVzXG4uYm9yZGVyLWJvdHRvbSB7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYm9yZGVyLWNvbG9yO1xufVxuXG4uYm9yZGVyLXRvcCB7XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAkYm9yZGVyLWNvbG9yO1xufVxuXG4uYm9yZGVyLXJpZ2h0IHtcbiAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgJGJvcmRlci1jb2xvcjtcbn1cblxuLmJvcmRlci1sZWZ0IHtcbiAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAkYm9yZGVyLWNvbG9yO1xufVxuXG4ucGFkZGluZy1sZWZ0LW5vbmUge1xuICBwYWRkaW5nLWxlZnQ6IDA7XG59XG5cbi5ib3hlZCB7XG4gIGJhY2tncm91bmQ6ICNmZmY7XG4gIGJvcmRlcjogMXB4IHNvbGlkICRib3JkZXItY29sb3I7XG4gIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgYm94LXNoYWRvdzogMCAxcHggM3B4IDAgcmdiYSgwLCAwLCAwLCAuMDUpO1xufVxuXG4uYm94LXBhZGRpbmcge1xuICBwYWRkaW5nOiAxNXB4O1xufVxuXG4uYmFkZ2Uge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBhZGRpbmc6IDRweCA1cHg7XG4gIGZvbnQtc2l6ZTogNzUlO1xuICBmb250LXdlaWdodDogNzAwO1xuICBsaW5lLWhlaWdodDogMTtcbiAgY29sb3I6ICNmZmY7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xuICBib3JkZXItcmFkaXVzOiAuMjVyZW07XG59XG5cbi5iYWRnZS1zdWNjZXNzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzVjYjg1Yztcbn1cblxuLmJhZGdlLWRhbmdlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkOTUzNGY7XG59XG5cbi5wcmV0dHktdGFnIHtcbiAgYmFja2dyb3VuZDogI2VlZTtcbiAgYm9yZGVyLXJhZGl1czogM3B4O1xuICBjb2xvcjogIzU1NTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBmb250LXNpemU6IDExcHg7XG4gIGhlaWdodDogMjJweDtcbiAgbGluZS1oZWlnaHQ6IDIycHg7XG4gIHBhZGRpbmc6IDAgMTBweCAwIDE5cHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luOiAwIDEwcHggMCAwO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIC13ZWJraXQtdHJhbnNpdGlvbjogY29sb3IgMC4ycztcblxuICAmOjpiZWZvcmUge1xuICAgIGJhY2tncm91bmQ6ICNmZmY7XG4gICAgYm9yZGVyLXJhZGl1czogMTBweDtcbiAgICBib3gtc2hhZG93OiBpbnNldCAwIDFweCByZ2JhKDAsIDAsIDAsIDAuMjUpO1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIGhlaWdodDogNnB4O1xuICAgIGxlZnQ6IDdweDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IDZweDtcbiAgICB0b3A6IDlweDtcbiAgfVxuXG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMwMzY2ZDY7XG5cbiAgICBhIHtcbiAgICAgIGNvbG9yOiAjZmZmO1xuICAgIH1cbiAgfVxuXG4gIGEge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBjb2xvcjogIzU1NTtcblxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBjb2xvcjogI2ZmZjtcbiAgICB9XG4gIH1cbn1cblxuLy8gR2VuZXJpYyBzdHlsZXNcbmJvZHkge1xuICBjb2xvcjogIzMyM2I0Mztcbn1cblxuYSB7XG4gIGNvbG9yOiAjMDM2NmQ2O1xuICBwYWRkaW5nOiAxcHg7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuXG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMwMzY2ZDY7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB9XG5cbiAgJi5hY3Rpb24tbGluayB7XG4gICAgY29sb3I6ICM5OTk7XG4gICAgZm9udC1zaXplOiAxMXB4O1xuICAgIG1hcmdpbi1yaWdodDogNXB4O1xuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICB9XG59XG5cbmFbaHJlZmxhbmddOmFmdGVyIHtcbiAgY29udGVudDogXCIgKFwiIGF0dHIoaHJlZmxhbmcpIFwiKVwiOyBcbn1cblxudWwge1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcblxuICAmLmhvcml6b250YWwge1xuICAgIGxpIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZTtcbiAgICB9XG4gIH1cbn1cblxuLmhpZGRlbiB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbmlucHV0OmRpc2FibGVkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzk5OTtcbn1cblxuLnBhZ2luYXRpb24tYm94IHtcbiAgbWFyZ2luLXRvcDogMzBweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4uYWxlcnQtc3VjY2VzcyB7XG4gIG1hcmdpbjogMjBweCAwO1xufVxuXG4uY2VudHJhbC1mb3JtIHtcbiAgbWFyZ2luLXRvcDogNDBweDtcblxuICBoMiB7XG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgfVxuXG4gIC5mb3JtLWNoZWNrLWlubGluZSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuICB9XG5cbiAgLmZvcm0tZ3JvdXAgPiBsYWJlbDpub3QoOmZpcnN0LWNoaWxkKSB7XG4gICAgbWFyZ2luLXRvcDogMTBweDtcbiAgfVxuXG4gIGlucHV0W3R5cGU9XCJyYWRpb1wiXSB7XG4gICAgbWFyZ2luLXJpZ2h0OiA1cHg7XG4gIH1cblxuICAuZGF0ZXMge1xuICAgIC5mb3JtLWlubGluZSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmU7XG5cbiAgICAgIGlucHV0W3R5cGU9XCJudW1iZXJcIl0ge1xuICAgICAgICBtYXJnaW46IDAgMTBweDtcbiAgICAgICAgd2lkdGg6IDUycHg7XG4gICAgICB9XG5cbiAgICAgIGlucHV0W3R5cGU9XCJkYXRlXCJdIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDIwcHg7XG4gICAgICAgIG1hcmdpbi10b3A6IDEwcHg7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmZvcm0tZ3JvdXA6bm90KDpsYXN0LWNoaWxkKSB7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlZWU7XG4gICAgcGFkZGluZy1ib3R0b206IDIwcHg7XG4gIH1cblxuICAubmF2IHtcbiAgICBtYXJnaW4tdG9wOiA0MHB4O1xuXG4gICAgLm5hdi1saW5rIHtcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICB9XG4gIH1cblxuICAudGFiLWNvbnRlbnQge1xuICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNkZGQ7XG4gICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjZGRkO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGRkO1xuICAgIHBhZGRpbmc6IDE1cHg7XG4gIH1cbn1cblxuLmF2YXRhci1waG90byB7XG4gIGltZyB7XG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xuICB9XG59XG5cbi5icmVhZGNydW1iIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y5ZjlmYjtcblxuICB1bCB7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIHBhZGRpbmc6IDMwcHggMCAyNHB4O1xuXG4gICAgbGk6bm90KDpsYXN0LWNoaWxkKTphZnRlciB7XG4gICAgICBjb250ZW50OiAnPic7XG4gICAgICBtYXJnaW4tbGVmdDogNXB4O1xuICAgICAgbWFyZ2luLXJpZ2h0OiAxcHg7XG4gICAgfVxuICB9XG59XG5cbi5idG4ge1xuICBjb2xvcjogIzI0MjkyZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VmZjNmNjtcbiAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQoMjcwZGVnLCAjZmFmYmZjIDAlLCAjZWZmM2Y2IDkwJSk7XG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCgtMTgwZGVnLCAjZmFmYmZjIDAlLCAjZWZmM2Y2IDkwJSk7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwYWRkaW5nOiA2cHggMTJweDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBmb250LXdlaWdodDogNjAwO1xuICBsaW5lLWhlaWdodDogMjBweDtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xuICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XG4gIHVzZXItc2VsZWN0OiBub25lO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IC0xcHggLTFweDtcbiAgYmFja2dyb3VuZC1zaXplOiAxMTAlIDExMCU7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjcsMzEsMzUsMC4yKTtcbiAgYm9yZGVyLXJhZGl1czogMC4yNWVtO1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gIC1tb3otYXBwZWFyYW5jZTogbm9uZTtcbiAgYXBwZWFyYW5jZTogbm9uZTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXG4gICY6aG92ZXIsICY6dmlzaXRlZCB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNlNmViZjE7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQoMjcwZGVnLCAjZjBmM2Y2IDAlLCAjZTZlYmYxIDkwJSk7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KC0xODBkZWcsICNmMGYzZjYgMCUsICNlNmViZjEgOTAlKTtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIC0wLjVlbTtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7XG4gICAgYm9yZGVyLWNvbG9yOiByZ2JhKDI3LDMxLDM1LDAuMzUpO1xuICB9XG5cbiAgJjphY3RpdmUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbiAgICBib3JkZXItY29sb3I6IHJnYmEoMjcsMzEsMzUsMC4zNSk7XG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAwLjE1ZW0gMC4zZW0gcmdiYSgyNywzMSwzNSwwLjE1KVxuICB9XG5cbiAgJjpkaXNhYmxlZCB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KC0xODBkZWcsICM2M2IxNzUgMCUsICM2MTk4NmUgOTAlKTtcbiAgfVxuXG4gICY6Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB9XG59XG5cbi5idG4tcHJpbWFyeSB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjhhNzQ1O1xuICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCgyNzBkZWcsICMzNGQwNTggMCUsICMyOGE3NDUgOTAlKTtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KC0xODBkZWcsICMzNGQwNTggMCUsICMyOGE3NDUgOTAlKTtcblxuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjY5ZjQyO1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KDI3MGRlZywgIzJmY2I1MyAwJSwgIzI2OWY0MiA5MCUpO1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCgtMTgwZGVnLCAjMmZjYjUzIDAlLCAjMjY5ZjQyIDkwJSk7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAtMC41ZW07XG4gICAgYm9yZGVyLWNvbG9yOiByZ2JhKDI3LDMxLDM1LDAuNSk7XG4gIH1cbn1cblxuLnRhYmxlIHtcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgZGlzcGxheTogdGFibGU7XG4gIHdpZHRoOiAxMDAlO1xuXG4gIC50YWJsZS1yb3cge1xuICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2RkZDtcbiAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZGRkO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGRkO1xuICAgIGRpc3BsYXk6IHRhYmxlLXJvdztcblxuICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgLnRhYmxlLWNlbGw6Zmlyc3QtY2hpbGQge1xuICAgICAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAzcHg7XG4gICAgICB9XG5cbiAgICAgIC50YWJsZS1jZWxsOmxhc3QtY2hpbGQge1xuICAgICAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogM3B4O1xuICAgICAgfVxuICAgIH1cblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RkZDtcbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmNmY4ZmE7XG4gICAgfVxuICB9XG5cbiAgLnRhYmxlLWNlbGwge1xuICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgcGFkZGluZzogOHB4IDEwcHg7XG4gIH1cbn1cblxuZm9vdGVyIHtcbiAgLmJhZGdlLXN1Y2Nlc3Mge1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBmb250LXdlaWdodDogNDAwO1xuICB9XG5cbiAgLnNob3ctdmVyc2lvbiB7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcblxuICAgIGgyIHtcbiAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICB9XG5cbiAgICAubm90ZSB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuXG4gICAgICB1bCB7XG4gICAgICAgIGxpc3Qtc3R5bGUtdHlwZTogZGlzYztcbiAgICAgIH1cblxuICAgICAgbGkge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgZm9udC1zaXplOiAxNXB4O1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHtcbiAgLnNpZGViYXItYm94IHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyLWNvbG9yO1xuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcblxuICAgIC5zaWRlYmFyLWhlYWRpbmcge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZhZmFmYTtcbiAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICBwYWRkaW5nOiA1cHg7XG4gICAgfVxuXG4gICAgLnNpZGViYXItYmxhbmsge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgICAgIGJvcmRlcjogMDtcbiAgICB9XG5cbiAgICBsaSB7XG4gICAgICBwYWRkaW5nOiA1cHg7XG4gICAgfVxuICB9XG59XG4iLCIvLyBCb290c3RyYXAgd2l0aCBGbGV4Ym94IGVuYWJsZWRcbi8vXG4vLyBJbmNsdWRlcyBhbGwgdGhlIGltcG9ydHMgZnJvbSB0aGUgc3RhbmRhcmQgQm9vdHN0cmFwIHByb2plY3QsIGJ1dCBlbmFibGVzXG4vLyB0aGUgZmxleGJveCB2YXJpYWJsZS5cblxuJGVuYWJsZS1mbGV4OiB0cnVlO1xuXG4vLyRmb250LWZhbWlseS1zYW5zLXNlcmlmOiBcIkhlbHZldGljYSBOZXVlXCIsIEhlbHZldGljYSwgVmVyZGFuYSwgQXJpYWwsIHNhbnMtc2VyaWY7XG4kZm9udC1mYW1pbHktc2Fucy1zZXJpZjogJ09wZW4gU2FucycsIHNhbnMtc2VyaWY7XG4kZm9udC1mYW1pbHktc2Fucy1zZXJpZjogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCBcIlNlZ29lIFVJXCIsIFJvYm90bywgT3h5Z2VuLVNhbnMsIFVidW50dSwgQ2FudGFyZWxsLCBcIkhlbHZldGljYSBOZXVlXCIsIHNhbnMtc2VyaWY7XG4kZm9udC1zaXplLXJvb3Q6IDE0cHg7XG5cbkBpbXBvcnQgXCJ+Ym9vdHN0cmFwL3Njc3MvX3ZhcmlhYmxlc1wiO1xuQGltcG9ydCBcIn5ib290c3RyYXAvc2Nzcy9fbWl4aW5zXCI7XG5cbi8vIFJlc2V0IGFuZCBkZXBlbmRlbmNpZXNcbkBpbXBvcnQgXCJ+Ym9vdHN0cmFwL3Njc3MvX25vcm1hbGl6ZVwiO1xuQGltcG9ydCBcIn5ib290c3RyYXAvc2Nzcy9fcHJpbnRcIjtcblxuLy8gQ29yZSBDU1NcbkBpbXBvcnQgXCJ+Ym9vdHN0cmFwL3Njc3MvX3JlYm9vdFwiO1xuLy9AaW1wb3J0IFwiYm9vdHN0cmFwL3R5cGVcIjtcbi8vQGltcG9ydCBcImJvb3RzdHJhcC9pbWFnZXNcIjtcbi8vQGltcG9ydCBcImJvb3RzdHJhcC9jb2RlXCI7XG5AaW1wb3J0IFwifmJvb3RzdHJhcC9zY3NzL19ncmlkXCI7XG5AaW1wb3J0IFwifmJvb3RzdHJhcC9zY3NzL190YWJsZXNcIjtcbkBpbXBvcnQgXCJ+Ym9vdHN0cmFwL3Njc3MvX2Zvcm1zXCI7XG4vL0BpbXBvcnQgXCJib290c3RyYXAvYnV0dG9uc1wiO1xuXG4vLyBDb21wb25lbnRzXG4vL0BpbXBvcnQgXCJib290c3RyYXAvYW5pbWF0aW9uXCI7XG5AaW1wb3J0IFwifmJvb3RzdHJhcC9zY3NzL19kcm9wZG93blwiO1xuLy9AaW1wb3J0IFwiYm9vdHN0cmFwL2J1dHRvbi1ncm91cFwiO1xuLy9AaW1wb3J0IFwiYm9vdHN0cmFwL2lucHV0LWdyb3VwXCI7XG4vL0BpbXBvcnQgXCJib290c3RyYXAvY3VzdG9tLWZvcm1zXCI7XG5AaW1wb3J0IFwifmJvb3RzdHJhcC9zY3NzL19uYXZcIjtcbi8vIEBpbXBvcnQgXCJib290c3RyYXAvbmF2YmFyXCI7XG5AaW1wb3J0IFwifmJvb3RzdHJhcC9zY3NzL19jYXJkXCI7XG4vLyBAaW1wb3J0IFwiYm9vdHN0cmFwL2JyZWFkY3J1bWJcIjtcbkBpbXBvcnQgXCJ+Ym9vdHN0cmFwL3Njc3MvX3BhZ2luYXRpb25cIjtcbi8vIEBpbXBvcnQgXCJib290c3RyYXAvcGFnZXJcIjtcbi8vIEBpbXBvcnQgXCJib290c3RyYXAvbGFiZWxzXCI7XG4vLyBAaW1wb3J0IFwiYm9vdHN0cmFwL2p1bWJvdHJvblwiO1xuQGltcG9ydCBcIn5ib290c3RyYXAvc2Nzcy9fYWxlcnRcIjtcbi8vIEBpbXBvcnQgXCIuLi8uLi92ZW5kb3IvYm9vdHN0cmFwL3Njc3MvcHJvZ3Jlc3NcIjtcbi8vIEBpbXBvcnQgXCJib290c3RyYXAvbWVkaWFcIjtcbi8vIEBpbXBvcnQgXCJib290c3RyYXAvbGlzdC1ncm91cFwiO1xuLy8gQGltcG9ydCBcImJvb3RzdHJhcC9yZXNwb25zaXZlLWVtYmVkXCI7XG5AaW1wb3J0IFwifmJvb3RzdHJhcC9zY3NzL19jbG9zZVwiO1xuXG4vLyBDb21wb25lbnRzIHcvIEphdmFTY3JpcHRcbkBpbXBvcnQgXCJ+Ym9vdHN0cmFwL3Njc3MvX21vZGFsXCI7XG4vL0BpbXBvcnQgXCIuLi8uLi92ZW5kb3IvYm9vdHN0cmFwL3Rvb2x0aXBcIjtcbi8vIEBpbXBvcnQgXCJib290c3RyYXAvcG9wb3ZlclwiO1xuLy8gQGltcG9ydCBcImJvb3RzdHJhcC9jYXJvdXNlbFwiO1xuXG4vLyBVdGlsaXR5IGNsYXNzZXNcbi8vIEBpbXBvcnQgXCJib290c3RyYXAvdXRpbGl0aWVzXCI7XG4vLyBAaW1wb3J0IFwiYm9vdHN0cmFwL3V0aWxpdGllcy1iYWNrZ3JvdW5kXCI7XG4vLyBAaW1wb3J0IFwiYm9vdHN0cmFwL3V0aWxpdGllcy1zcGFjaW5nXCI7XG5AaW1wb3J0IFwifmJvb3RzdHJhcC9zY3NzL191dGlsaXRpZXMtcmVzcG9uc2l2ZVwiO1xuIiwiLy8gVmFyaWFibGVzXG4vL1xuLy8gQ29weSBzZXR0aW5ncyBmcm9tIHRoaXMgZmlsZSBpbnRvIHRoZSBwcm92aWRlZCBgX2N1c3RvbS5zY3NzYCB0byBvdmVycmlkZVxuLy8gdGhlIEJvb3RzdHJhcCBkZWZhdWx0cyB3aXRob3V0IG1vZGlmeWluZyBrZXksIHZlcnNpb25lZCBmaWxlcy5cblxuXG4vLyBUYWJsZSBvZiBDb250ZW50c1xuLy9cbi8vIENvbG9yc1xuLy8gT3B0aW9uc1xuLy8gU3BhY2luZ1xuLy8gQm9keVxuLy8gTGlua3Ncbi8vIEdyaWQgYnJlYWtwb2ludHNcbi8vIEdyaWQgY29udGFpbmVyc1xuLy8gR3JpZCBjb2x1bW5zXG4vLyBGb250c1xuLy8gQ29tcG9uZW50c1xuXG4vLyBHZW5lcmFsIHZhcmlhYmxlIHN0cnVjdHVyZVxuLy9cbi8vIFZhcmlhYmxlIGZvcm1hdCBzaG91bGQgZm9sbG93IHRoZSBgJGNvbXBvbmVudC1tb2RpZmllci1zdGF0ZS1wcm9wZXJ0eWAgb3JkZXIuXG5cblxuLy8gQ29sb3JzXG4vL1xuLy8gR3JheXNjYWxlIGFuZCBicmFuZCBjb2xvcnMgZm9yIHVzZSBhY3Jvc3MgQm9vdHN0cmFwLlxuXG4kZ3JheS1kYXJrOiAgICAgICAgICAgICAgICAgIzM3M2EzYyAhZGVmYXVsdDtcbiRncmF5OiAgICAgICAgICAgICAgICAgICAgICAjNTU1OTVjICFkZWZhdWx0O1xuJGdyYXktbGlnaHQ6ICAgICAgICAgICAgICAgICM4MThhOTEgIWRlZmF1bHQ7XG4kZ3JheS1saWdodGVyOiAgICAgICAgICAgICAgI2VjZWVlZiAhZGVmYXVsdDtcbiRncmF5LWxpZ2h0ZXN0OiAgICAgICAgICAgICAjZjdmN2Y5ICFkZWZhdWx0O1xuXG4kYnJhbmQtcHJpbWFyeTogICAgICAgICAgICAgIzAyNzVkOCAhZGVmYXVsdDtcbiRicmFuZC1zdWNjZXNzOiAgICAgICAgICAgICAjNWNiODVjICFkZWZhdWx0O1xuJGJyYW5kLWluZm86ICAgICAgICAgICAgICAgICM1YmMwZGUgIWRlZmF1bHQ7XG4kYnJhbmQtd2FybmluZzogICAgICAgICAgICAgI2YwYWQ0ZSAhZGVmYXVsdDtcbiRicmFuZC1kYW5nZXI6ICAgICAgICAgICAgICAjZDk1MzRmICFkZWZhdWx0O1xuXG5cbi8vIE9wdGlvbnNcbi8vXG4vLyBRdWlja2x5IG1vZGlmeSBnbG9iYWwgc3R5bGluZyBieSBlbmFibGluZyBvciBkaXNhYmxpbmcgb3B0aW9uYWwgZmVhdHVyZXMuXG5cbiRlbmFibGUtZmxleDogICAgICAgICAgICAgICBmYWxzZSAhZGVmYXVsdDtcbiRlbmFibGUtcm91bmRlZDogICAgICAgICAgICB0cnVlICFkZWZhdWx0O1xuJGVuYWJsZS1zaGFkb3dzOiAgICAgICAgICAgIGZhbHNlICFkZWZhdWx0O1xuJGVuYWJsZS1ncmFkaWVudHM6ICAgICAgICAgIGZhbHNlICFkZWZhdWx0O1xuJGVuYWJsZS10cmFuc2l0aW9uczogICAgICAgIGZhbHNlICFkZWZhdWx0O1xuJGVuYWJsZS1ob3Zlci1tZWRpYS1xdWVyeTogIGZhbHNlICFkZWZhdWx0O1xuJGVuYWJsZS1ncmlkLWNsYXNzZXM6ICAgICAgIHRydWUgIWRlZmF1bHQ7XG5cblxuLy8gU3BhY2luZ1xuLy9cbi8vIENvbnRyb2wgdGhlIGRlZmF1bHQgc3R5bGluZyBvZiBtb3N0IEJvb3RzdHJhcCBlbGVtZW50cyBieSBtb2RpZnlpbmcgdGhlc2Vcbi8vIHZhcmlhYmxlcy4gTW9zdGx5IGZvY3VzZWQgb24gc3BhY2luZy5cblxuJHNwYWNlcjogICAgICAgICAgICAgICAgICAgICAxcmVtICFkZWZhdWx0O1xuJHNwYWNlci14OiAgICAgICAgICAgICAgICAgICAkc3BhY2VyICFkZWZhdWx0O1xuJHNwYWNlci15OiAgICAgICAgICAgICAgICAgICAkc3BhY2VyICFkZWZhdWx0O1xuJHNwYWNlcnM6IChcbiAgMDogKFxuICAgIHg6ICAgMCxcbiAgICB5OiAgIDBcbiAgKSxcbiAgMTogKFxuICAgIHg6ICAgJHNwYWNlci14LFxuICAgIHk6ICAgJHNwYWNlci15XG4gICksXG4gIDI6IChcbiAgICB4OiAgICgkc3BhY2VyLXggKiAxLjUpLFxuICAgIHk6ICAgKCRzcGFjZXIteSAqIDEuNSlcbiAgKSxcbiAgMzogKFxuICAgIHg6ICAgKCRzcGFjZXIteCAqIDMpLFxuICAgIHk6ICAgKCRzcGFjZXIteSAqIDMpXG4gIClcbikgIWRlZmF1bHQ7XG4kYm9yZGVyLXdpZHRoOiAgICAgICAgICAgICAgIDFweCAhZGVmYXVsdDtcblxuXG4vLyBCb2R5XG4vL1xuLy8gU2V0dGluZ3MgZm9yIHRoZSBgPGJvZHk+YCBlbGVtZW50LlxuXG4kYm9keS1iZzogICAgICAgICAgICAgICAgICAgICNmZmYgIWRlZmF1bHQ7XG4kYm9keS1jb2xvcjogICAgICAgICAgICAgICAgICRncmF5LWRhcmsgIWRlZmF1bHQ7XG5cblxuLy8gTGlua3Ncbi8vXG4vLyBTdHlsZSBhbmNob3IgZWxlbWVudHMuXG5cbiRsaW5rLWNvbG9yOiAgICAgICAgICAgICAgICAgJGJyYW5kLXByaW1hcnkgIWRlZmF1bHQ7XG4kbGluay1kZWNvcmF0aW9uOiAgICAgICAgICAgIG5vbmUgIWRlZmF1bHQ7XG4kbGluay1ob3Zlci1jb2xvcjogICAgICAgICAgIGRhcmtlbigkbGluay1jb2xvciwgMTUlKSAhZGVmYXVsdDtcbiRsaW5rLWhvdmVyLWRlY29yYXRpb246ICAgICAgdW5kZXJsaW5lICFkZWZhdWx0O1xuXG5cbi8vIEdyaWQgYnJlYWtwb2ludHNcbi8vXG4vLyBEZWZpbmUgdGhlIG1pbmltdW0gYW5kIG1heGltdW0gZGltZW5zaW9ucyBhdCB3aGljaCB5b3VyIGxheW91dCB3aWxsIGNoYW5nZSxcbi8vIGFkYXB0aW5nIHRvIGRpZmZlcmVudCBzY3JlZW4gc2l6ZXMsIGZvciB1c2UgaW4gbWVkaWEgcXVlcmllcy5cblxuJGdyaWQtYnJlYWtwb2ludHM6IChcbiAgLy8gRXh0cmEgc21hbGwgc2NyZWVuIC8gcGhvbmVcbiAgeHM6IDAsXG4gIC8vIFNtYWxsIHNjcmVlbiAvIHBob25lXG4gIHNtOiA1NDRweCxcbiAgLy8gTWVkaXVtIHNjcmVlbiAvIHRhYmxldFxuICBtZDogNzY4cHgsXG4gIC8vIExhcmdlIHNjcmVlbiAvIGRlc2t0b3BcbiAgbGc6IDk5MnB4LFxuICAvLyBFeHRyYSBsYXJnZSBzY3JlZW4gLyB3aWRlIGRlc2t0b3BcbiAgeGw6IDEyMDBweFxuKSAhZGVmYXVsdDtcblxuXG4vLyBHcmlkIGNvbnRhaW5lcnNcbi8vXG4vLyBEZWZpbmUgdGhlIG1heGltdW0gd2lkdGggb2YgYC5jb250YWluZXJgIGZvciBkaWZmZXJlbnQgc2NyZWVuIHNpemVzLlxuXG4kY29udGFpbmVyLW1heC13aWR0aHM6IChcbiAgc206IDU3NnB4LFxuICBtZDogNzIwcHgsXG4gIGxnOiA5NDBweCxcbiAgeGw6IDExNDBweFxuKSAhZGVmYXVsdDtcblxuXG4vLyBHcmlkIGNvbHVtbnNcbi8vXG4vLyBTZXQgdGhlIG51bWJlciBvZiBjb2x1bW5zIGFuZCBzcGVjaWZ5IHRoZSB3aWR0aCBvZiB0aGUgZ3V0dGVycy5cblxuJGdyaWQtY29sdW1uczogICAgICAgICAgICAgICAxMiAhZGVmYXVsdDtcbiRncmlkLWd1dHRlci13aWR0aDogICAgICAgICAgMS44NzVyZW0gIWRlZmF1bHQ7IC8vIDMwcHhcblxuXG4vLyBUeXBvZ3JhcGh5XG4vL1xuLy8gRm9udCwgbGluZS1oZWlnaHQsIGFuZCBjb2xvciBmb3IgYm9keSB0ZXh0LCBoZWFkaW5ncywgYW5kIG1vcmUuXG5cbiRmb250LWZhbWlseS1zYW5zLXNlcmlmOiAgICAgXCJIZWx2ZXRpY2EgTmV1ZVwiLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmICFkZWZhdWx0O1xuJGZvbnQtZmFtaWx5LXNlcmlmOiAgICAgICAgICBHZW9yZ2lhLCBcIlRpbWVzIE5ldyBSb21hblwiLCBUaW1lcywgc2VyaWYgIWRlZmF1bHQ7XG4kZm9udC1mYW1pbHktbW9ub3NwYWNlOiAgICAgIE1lbmxvLCBNb25hY28sIENvbnNvbGFzLCBcIkNvdXJpZXIgTmV3XCIsIG1vbm9zcGFjZSAhZGVmYXVsdDtcbiRmb250LWZhbWlseS1iYXNlOiAgICAgICAgICAgJGZvbnQtZmFtaWx5LXNhbnMtc2VyaWYgIWRlZmF1bHQ7XG5cbi8vIFBpeGVsIHZhbHVlIHVzZWQgdG8gcmVzcG9uc2l2ZWx5IHNjYWxlIGFsbCB0eXBvZ3JhcGh5LiBBcHBsaWVkIHRvIHRoZSBgPGh0bWw+YCBlbGVtZW50LlxuJGZvbnQtc2l6ZS1yb290OiAgICAgICAgICAgICAxNnB4ICFkZWZhdWx0O1xuXG4kZm9udC1zaXplLWJhc2U6ICAgICAgICAgICAgIDFyZW0gIWRlZmF1bHQ7XG4kZm9udC1zaXplLWxnOiAgICAgICAgICAgICAgIDEuMjVyZW0gIWRlZmF1bHQ7XG4kZm9udC1zaXplLXNtOiAgICAgICAgICAgICAgIC44NzVyZW0gIWRlZmF1bHQ7XG4kZm9udC1zaXplLXhzOiAgICAgICAgICAgICAgIC43NXJlbSAhZGVmYXVsdDtcblxuJGZvbnQtc2l6ZS1oMTogICAgICAgICAgICAgICAyLjVyZW0gIWRlZmF1bHQ7XG4kZm9udC1zaXplLWgyOiAgICAgICAgICAgICAgIDJyZW0gIWRlZmF1bHQ7XG4kZm9udC1zaXplLWgzOiAgICAgICAgICAgICAgIDEuNzVyZW0gIWRlZmF1bHQ7XG4kZm9udC1zaXplLWg0OiAgICAgICAgICAgICAgIDEuNXJlbSAhZGVmYXVsdDtcbiRmb250LXNpemUtaDU6ICAgICAgICAgICAgICAgMS4yNXJlbSAhZGVmYXVsdDtcbiRmb250LXNpemUtaDY6ICAgICAgICAgICAgICAgMXJlbSAhZGVmYXVsdDtcblxuJGRpc3BsYXkxLXNpemU6ICAgICAgICAgICAgICAgNnJlbSAhZGVmYXVsdDtcbiRkaXNwbGF5Mi1zaXplOiAgICAgICAgICAgICAgIDUuNXJlbSAhZGVmYXVsdDtcbiRkaXNwbGF5My1zaXplOiAgICAgICAgICAgICAgIDQuNXJlbSAhZGVmYXVsdDtcbiRkaXNwbGF5NC1zaXplOiAgICAgICAgICAgICAgIDMuNXJlbSAhZGVmYXVsdDtcblxuJGRpc3BsYXkxLXdlaWdodDogICAgICAgICAgICAgMzAwICFkZWZhdWx0O1xuJGRpc3BsYXkyLXdlaWdodDogICAgICAgICAgICAgMzAwICFkZWZhdWx0O1xuJGRpc3BsYXkzLXdlaWdodDogICAgICAgICAgICAgMzAwICFkZWZhdWx0O1xuJGRpc3BsYXk0LXdlaWdodDogICAgICAgICAgICAgMzAwICFkZWZhdWx0O1xuXG4kbGluZS1oZWlnaHQ6ICAgICAgICAgICAgICAgIDEuNSAhZGVmYXVsdDtcblxuJGhlYWRpbmdzLW1hcmdpbi1ib3R0b206ICAgICAoJHNwYWNlciAvIDIpICFkZWZhdWx0O1xuJGhlYWRpbmdzLWZvbnQtZmFtaWx5OiAgICAgICBpbmhlcml0ICFkZWZhdWx0O1xuJGhlYWRpbmdzLWZvbnQtd2VpZ2h0OiAgICAgICA1MDAgIWRlZmF1bHQ7XG4kaGVhZGluZ3MtbGluZS1oZWlnaHQ6ICAgICAgIDEuMSAhZGVmYXVsdDtcbiRoZWFkaW5ncy1jb2xvcjogICAgICAgICAgICAgaW5oZXJpdCAhZGVmYXVsdDtcblxuJGxlYWQtZm9udC1zaXplOiAgICAgICAgICAgICAxLjI1cmVtICFkZWZhdWx0O1xuJGxlYWQtZm9udC13ZWlnaHQ6ICAgICAgICAgICAzMDAgIWRlZmF1bHQ7XG5cbiR0ZXh0LW11dGVkOiAgICAgICAgICAgICAgICAgICRncmF5LWxpZ2h0ICFkZWZhdWx0O1xuXG4kYWJici1ib3JkZXItY29sb3I6ICAgICAgICAgICAkZ3JheS1saWdodCAhZGVmYXVsdDtcblxuJGJsb2NrcXVvdGUtc21hbGwtY29sb3I6ICAgICAgJGdyYXktbGlnaHQgIWRlZmF1bHQ7XG4kYmxvY2txdW90ZS1mb250LXNpemU6ICAgICAgICAoJGZvbnQtc2l6ZS1iYXNlICogMS4yNSkgIWRlZmF1bHQ7XG4kYmxvY2txdW90ZS1ib3JkZXItY29sb3I6ICAgICAkZ3JheS1saWdodGVyICFkZWZhdWx0O1xuXG4kaHItYm9yZGVyLWNvbG9yOiAgICAgICAgICAgICByZ2JhKDAsMCwwLC4xKSAhZGVmYXVsdDtcbiRoci1ib3JkZXItd2lkdGg6ICAgICAgICAgICAgICRib3JkZXItd2lkdGggIWRlZmF1bHQ7XG5cbiRkdC1mb250LXdlaWdodDogICAgICAgICAgICAgIGJvbGQgIWRlZmF1bHQ7XG5cbiRuZXN0ZWQta2JkLWZvbnQtd2VpZ2h0OiAgICAgIGJvbGQgIWRlZmF1bHQ7XG5cbiRsaXN0LWlubGluZS1wYWRkaW5nOiAgICAgICAgIDVweCAhZGVmYXVsdDtcblxuXG4vLyBDb21wb25lbnRzXG4vL1xuLy8gRGVmaW5lIGNvbW1vbiBwYWRkaW5nIGFuZCBib3JkZXIgcmFkaXVzIHNpemVzIGFuZCBtb3JlLlxuXG4kbGluZS1oZWlnaHQtbGc6ICAgICAgICAgKDQgLyAzKSAhZGVmYXVsdDtcbiRsaW5lLWhlaWdodC1zbTogICAgICAgICAxLjUgIWRlZmF1bHQ7XG5cbiRib3JkZXItcmFkaXVzOiAgICAgICAgICAuMjVyZW0gIWRlZmF1bHQ7XG4kYm9yZGVyLXJhZGl1cy1sZzogICAgICAgLjNyZW0gIWRlZmF1bHQ7XG4kYm9yZGVyLXJhZGl1cy1zbTogICAgICAgLjJyZW0gIWRlZmF1bHQ7XG5cbiRjb21wb25lbnQtYWN0aXZlLWNvbG9yOiAjZmZmICFkZWZhdWx0O1xuJGNvbXBvbmVudC1hY3RpdmUtYmc6ICAgICRicmFuZC1wcmltYXJ5ICFkZWZhdWx0O1xuXG4kY2FyZXQtd2lkdGg6ICAgICAgICAgICAgLjNlbSAhZGVmYXVsdDtcbiRjYXJldC13aWR0aC1sZzogICAgICAgICAkY2FyZXQtd2lkdGggIWRlZmF1bHQ7XG5cblxuLy8gVGFibGVzXG4vL1xuLy8gQ3VzdG9taXplcyB0aGUgYC50YWJsZWAgY29tcG9uZW50IHdpdGggYmFzaWMgdmFsdWVzLCBlYWNoIHVzZWQgYWNyb3NzIGFsbCB0YWJsZSB2YXJpYXRpb25zLlxuXG4kdGFibGUtY2VsbC1wYWRkaW5nOiAgICAgICAgICAgIC43NXJlbSAhZGVmYXVsdDtcbiR0YWJsZS1zbS1jZWxsLXBhZGRpbmc6ICAgICAgICAgLjNyZW0gIWRlZmF1bHQ7XG5cbiR0YWJsZS1iZzogICAgICAgICAgICAgICAgICAgICAgdHJhbnNwYXJlbnQgIWRlZmF1bHQ7XG4kdGFibGUtYmctYWNjZW50OiAgICAgICAgICAgICAgICNmOWY5ZjkgIWRlZmF1bHQ7XG4kdGFibGUtYmctaG92ZXI6ICAgICAgICAgICAgICAgICNmNWY1ZjUgIWRlZmF1bHQ7XG4kdGFibGUtYmctYWN0aXZlOiAgICAgICAgICAgICAgICR0YWJsZS1iZy1ob3ZlciAhZGVmYXVsdDtcblxuJHRhYmxlLWJvcmRlci13aWR0aDogICAgICAgICAgICAkYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xuJHRhYmxlLWJvcmRlci1jb2xvcjogICAgICAgICAgICAkZ3JheS1saWdodGVyICFkZWZhdWx0O1xuXG5cbi8vIEJ1dHRvbnNcbi8vXG4vLyBGb3IgZWFjaCBvZiBCb290c3RyYXAncyBidXR0b25zLCBkZWZpbmUgdGV4dCwgYmFja2dyb3VuZCBhbmQgYm9yZGVyIGNvbG9yLlxuXG4kYnRuLXBhZGRpbmcteDogICAgICAgICAgICAgICAgICAxcmVtICFkZWZhdWx0O1xuJGJ0bi1wYWRkaW5nLXk6ICAgICAgICAgICAgICAgICAgLjM3NXJlbSAhZGVmYXVsdDtcbiRidG4tZm9udC13ZWlnaHQ6ICAgICAgICAgICAgICAgIG5vcm1hbCAhZGVmYXVsdDtcblxuJGJ0bi1wcmltYXJ5LWNvbG9yOiAgICAgICAgICAgICAgI2ZmZiAhZGVmYXVsdDtcbiRidG4tcHJpbWFyeS1iZzogICAgICAgICAgICAgICAgICRicmFuZC1wcmltYXJ5ICFkZWZhdWx0O1xuJGJ0bi1wcmltYXJ5LWJvcmRlcjogICAgICAgICAgICAgJGJ0bi1wcmltYXJ5LWJnICFkZWZhdWx0O1xuXG4kYnRuLXNlY29uZGFyeS1jb2xvcjogICAgICAgICAgICAkZ3JheS1kYXJrICFkZWZhdWx0O1xuJGJ0bi1zZWNvbmRhcnktYmc6ICAgICAgICAgICAgICAgI2ZmZiAhZGVmYXVsdDtcbiRidG4tc2Vjb25kYXJ5LWJvcmRlcjogICAgICAgICAgICNjY2MgIWRlZmF1bHQ7XG5cbiRidG4taW5mby1jb2xvcjogICAgICAgICAgICAgICAgICNmZmYgIWRlZmF1bHQ7XG4kYnRuLWluZm8tYmc6ICAgICAgICAgICAgICAgICAgICAkYnJhbmQtaW5mbyAhZGVmYXVsdDtcbiRidG4taW5mby1ib3JkZXI6ICAgICAgICAgICAgICAgICRidG4taW5mby1iZyAhZGVmYXVsdDtcblxuJGJ0bi1zdWNjZXNzLWNvbG9yOiAgICAgICAgICAgICAgI2ZmZiAhZGVmYXVsdDtcbiRidG4tc3VjY2Vzcy1iZzogICAgICAgICAgICAgICAgICRicmFuZC1zdWNjZXNzICFkZWZhdWx0O1xuJGJ0bi1zdWNjZXNzLWJvcmRlcjogICAgICAgICAgICAgJGJ0bi1zdWNjZXNzLWJnICFkZWZhdWx0O1xuXG4kYnRuLXdhcm5pbmctY29sb3I6ICAgICAgICAgICAgICAjZmZmICFkZWZhdWx0O1xuJGJ0bi13YXJuaW5nLWJnOiAgICAgICAgICAgICAgICAgJGJyYW5kLXdhcm5pbmcgIWRlZmF1bHQ7XG4kYnRuLXdhcm5pbmctYm9yZGVyOiAgICAgICAgICAgICAkYnRuLXdhcm5pbmctYmcgIWRlZmF1bHQ7XG5cbiRidG4tZGFuZ2VyLWNvbG9yOiAgICAgICAgICAgICAgICNmZmYgIWRlZmF1bHQ7XG4kYnRuLWRhbmdlci1iZzogICAgICAgICAgICAgICAgICAkYnJhbmQtZGFuZ2VyICFkZWZhdWx0O1xuJGJ0bi1kYW5nZXItYm9yZGVyOiAgICAgICAgICAgICAgJGJ0bi1kYW5nZXItYmcgIWRlZmF1bHQ7XG5cbiRidG4tbGluay1kaXNhYmxlZC1jb2xvcjogICAgICAgICRncmF5LWxpZ2h0ICFkZWZhdWx0O1xuXG4kYnRuLXBhZGRpbmcteC1zbTogICAgICAgICAgICAgICAuNzVyZW0gIWRlZmF1bHQ7XG4kYnRuLXBhZGRpbmcteS1zbTogICAgICAgICAgICAgICAuMjVyZW0gIWRlZmF1bHQ7XG5cbiRidG4tcGFkZGluZy14LWxnOiAgICAgICAgICAgICAgIDEuMjVyZW0gIWRlZmF1bHQ7XG4kYnRuLXBhZGRpbmcteS1sZzogICAgICAgICAgICAgICAuNzVyZW0gIWRlZmF1bHQ7XG5cbi8vIEFsbG93cyBmb3IgY3VzdG9taXppbmcgYnV0dG9uIHJhZGl1cyBpbmRlcGVuZGVudGx5IGZyb20gZ2xvYmFsIGJvcmRlciByYWRpdXNcbiRidG4tYm9yZGVyLXJhZGl1czogICAgICAgICAgICAgICRib3JkZXItcmFkaXVzICFkZWZhdWx0O1xuJGJ0bi1ib3JkZXItcmFkaXVzLWxnOiAgICAgICAgICAgJGJvcmRlci1yYWRpdXMtbGcgIWRlZmF1bHQ7XG4kYnRuLWJvcmRlci1yYWRpdXMtc206ICAgICAgICAgICAkYm9yZGVyLXJhZGl1cy1zbSAhZGVmYXVsdDtcblxuXG4vLyBGb3Jtc1xuXG4kaW5wdXQtcGFkZGluZy14OiAgICAgICAgICAgICAgICAuNzVyZW0gIWRlZmF1bHQ7XG4kaW5wdXQtcGFkZGluZy15OiAgICAgICAgICAgICAgICAuMzc1cmVtICFkZWZhdWx0O1xuXG4kaW5wdXQtYmc6ICAgICAgICAgICAgICAgICAgICAgICAjZmZmICFkZWZhdWx0O1xuJGlucHV0LWJnLWRpc2FibGVkOiAgICAgICAgICAgICAgJGdyYXktbGlnaHRlciAhZGVmYXVsdDtcblxuJGlucHV0LWNvbG9yOiAgICAgICAgICAgICAgICAgICAgJGdyYXkgIWRlZmF1bHQ7XG4kaW5wdXQtYm9yZGVyLWNvbG9yOiAgICAgICAgICAgICAjY2NjICFkZWZhdWx0O1xuJGlucHV0LWJ0bi1ib3JkZXItd2lkdGg6ICAgICAgICAgJGJvcmRlci13aWR0aCAhZGVmYXVsdDsgLy8gRm9yIGZvcm0gY29udHJvbHMgYW5kIGJ1dHRvbnNcbiRpbnB1dC1ib3gtc2hhZG93OiAgICAgICAgICAgICAgIGluc2V0IDAgMXB4IDFweCByZ2JhKDAsMCwwLC4wNzUpICFkZWZhdWx0O1xuXG4kaW5wdXQtYm9yZGVyLXJhZGl1czogICAgICAgICAgICAkYm9yZGVyLXJhZGl1cyAhZGVmYXVsdDtcbiRpbnB1dC1ib3JkZXItcmFkaXVzLWxnOiAgICAgICAgICRib3JkZXItcmFkaXVzLWxnICFkZWZhdWx0O1xuJGlucHV0LWJvcmRlci1yYWRpdXMtc206ICAgICAgICAgJGJvcmRlci1yYWRpdXMtc20gIWRlZmF1bHQ7XG5cbiRpbnB1dC1ib3JkZXItZm9jdXM6ICAgICAgICAgICAgICM2NmFmZTkgIWRlZmF1bHQ7XG4kaW5wdXQtYm94LXNoYWRvdy1mb2N1czogICAgICAgICByZ2JhKDEwMiwxNzUsMjMzLC42KSAhZGVmYXVsdDtcblxuJGlucHV0LWNvbG9yLXBsYWNlaG9sZGVyOiAgICAgICAgIzk5OSAhZGVmYXVsdDtcblxuJGlucHV0LXBhZGRpbmcteC1zbTogICAgICAgICAgICAgLjc1cmVtICFkZWZhdWx0O1xuJGlucHV0LXBhZGRpbmcteS1zbTogICAgICAgICAgICAgLjI3NXJlbSAhZGVmYXVsdDtcblxuJGlucHV0LXBhZGRpbmcteC1sZzogICAgICAgICAgICAgMS4yNXJlbSAhZGVmYXVsdDtcbiRpbnB1dC1wYWRkaW5nLXktbGc6ICAgICAgICAgICAgIC43NXJlbSAhZGVmYXVsdDtcblxuJGlucHV0LWhlaWdodDogICAgICAgICAgICAgICAgICAgKCgkZm9udC1zaXplLWJhc2UgKiAkbGluZS1oZWlnaHQpICsgKCRpbnB1dC1wYWRkaW5nLXkgKiAyKSkgIWRlZmF1bHQ7XG4kaW5wdXQtaGVpZ2h0LWxnOiAgICAgICAgICAgICAgICAoKCRmb250LXNpemUtbGcgKiAkbGluZS1oZWlnaHQtbGcpICsgKCRpbnB1dC1wYWRkaW5nLXktbGcgKiAyKSkgIWRlZmF1bHQ7XG4kaW5wdXQtaGVpZ2h0LXNtOiAgICAgICAgICAgICAgICAoKCRmb250LXNpemUtc20gKiAkbGluZS1oZWlnaHQtc20pICsgKCRpbnB1dC1wYWRkaW5nLXktc20gKiAyKSkgIWRlZmF1bHQ7XG5cbiRmb3JtLWdyb3VwLW1hcmdpbi1ib3R0b206ICAgICAgICRzcGFjZXIteSAhZGVmYXVsdDtcblxuJGlucHV0LWdyb3VwLWFkZG9uLWJnOiAgICAgICAgICAgJGdyYXktbGlnaHRlciAhZGVmYXVsdDtcbiRpbnB1dC1ncm91cC1hZGRvbi1ib3JkZXItY29sb3I6ICRpbnB1dC1ib3JkZXItY29sb3IgIWRlZmF1bHQ7XG5cbiRjdXJzb3ItZGlzYWJsZWQ6ICAgICAgICAgICAgICAgIG5vdC1hbGxvd2VkICFkZWZhdWx0O1xuXG4vLyBGb3JtIHZhbGlkYXRpb24gaWNvbnNcbiRmb3JtLWljb24tc3VjY2VzczogXCJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUI0Yld4dWN6MGlhSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZNakF3TUM5emRtY2lJSFpwWlhkQ2IzZzlJakFnTUNBMk1USWdOemt5SWo0OGNHRjBhQ0JtYVd4c1BTSWpOV05pT0RWaklpQmtQU0pOTWpNekxqZ2dOakV3WXkweE15NHpJREF0TWpZdE5pMHpOQzB4Tmk0NFREa3dMalVnTkRRNExqaEROell1TXlBME16QWdPREFnTkRBekxqTWdPVGd1T0NBek9EbGpNVGd1T0MweE5DNHlJRFExTGpVdE1UQXVOQ0ExT1M0NElEZ3VOR3czTWlBNU5VdzBOVEV1TXlBeU5ESmpNVEl1TlMweU1DQXpPQzQ0TFRJMkxqSWdOVGd1T0MweE15NDNJREl3SURFeUxqUWdNallnTXpndU55QXhNeTQzSURVNExqaE1NamN3SURVNU1HTXROeTQwSURFeUxUSXdMaklnTVRrdU5DMHpOQzR6SURJd2FDMHllaUl2UGp3dmMzWm5QZz09XCIgIWRlZmF1bHQ7XG4kZm9ybS1pY29uLXdhcm5pbmc6IFwiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlCNGJXeHVjejBpYUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2TWpBd01DOXpkbWNpSUhacFpYZENiM2c5SWpBZ01DQTJNVElnTnpreUlqNDhjR0YwYUNCbWFXeHNQU0lqWmpCaFpEUmxJaUJrUFNKTk5qQXpJRFkwTUM0eWJDMHlOemd1TlMwMU1EbGpMVE11T0MwMkxqWXRNVEF1T0MweE1DNDJMVEU0TGpVdE1UQXVObk10TVRRdU55QTBMVEU0TGpVZ01UQXVOa3c1SURZME1DNHlZeTB6TGpjZ05pNDFMVE11TmlBeE5DNDBMaklnTWpBdU9DQXpMamdnTmk0MUlERXdMamdnTVRBdU5DQXhPQzR6SURFd0xqUm9OVFUzWXpjdU5pQXdJREUwTGpZdE5DQXhPQzQwTFRFd0xqUWdNeTQxTFRZdU5DQXpMall0TVRRdU5DQXdMVEl3TGpoNmJTMHlOall1TkMwek1HZ3ROakV1TWxZMU5EbG9OakV1TW5ZMk1TNHllbTB3TFRFd04yZ3ROakV1TWxZek1EUm9OakV1TW5ZeE9UbDZJaTgrUEM5emRtYytcIiAhZGVmYXVsdDtcbiRmb3JtLWljb24tZGFuZ2VyOiBcImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QjRiV3h1Y3owaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1qQXdNQzl6ZG1jaUlIWnBaWGRDYjNnOUlqQWdNQ0EyTVRJZ056a3lJajQ4Y0dGMGFDQm1hV3hzUFNJalpEazFNelJtSWlCa1BTSk5ORFEzSURVME5DNDBZeTB4TkM0MElERTBMalF0TXpjdU5pQXhOQzQwTFRVeUlEQnNMVGc1TFRreUxqY3RPRGtnT1RJdU4yTXRNVFF1TlNBeE5DNDBMVE0zTGpjZ01UUXVOQzAxTWlBd0xURTBMalF0TVRRdU5DMHhOQzQwTFRNM0xqWWdNQzAxTW13NU1pNDBMVGsyTGpNdE9USXVOQzA1Tmk0ell5MHhOQzQwTFRFMExqUXRNVFF1TkMwek55NDJJREF0TlRKek16Y3VOaTB4TkM0eklEVXlJREJzT0RrZ09USXVPQ0E0T1M0eUxUa3lMamRqTVRRdU5DMHhOQzQwSURNM0xqWXRNVFF1TkNBMU1pQXdJREUwTGpNZ01UUXVOQ0F4TkM0eklETTNMallnTUNBMU1rd3pOVFF1TmlBek9UWnNPVEl1TkNBNU5pNDBZekUwTGpRZ01UUXVOQ0F4TkM0MElETTNMallnTUNBMU1ub2lMejQ4TDNOMlp6ND1cIiAhZGVmYXVsdDtcblxuXG4vLyBEcm9wZG93bnNcbi8vXG4vLyBEcm9wZG93biBtZW51IGNvbnRhaW5lciBhbmQgY29udGVudHMuXG5cbiRkcm9wZG93bi1iZzogICAgICAgICAgICAgICAgICAgICNmZmYgIWRlZmF1bHQ7XG4kZHJvcGRvd24tYm9yZGVyLWNvbG9yOiAgICAgICAgICByZ2JhKDAsMCwwLC4xNSkgIWRlZmF1bHQ7XG4kZHJvcGRvd24tYm9yZGVyLXdpZHRoOiAgICAgICAgICAkYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xuJGRyb3Bkb3duLWRpdmlkZXItYmc6ICAgICAgICAgICAgI2U1ZTVlNSAhZGVmYXVsdDtcblxuJGRyb3Bkb3duLWxpbmstY29sb3I6ICAgICAgICAgICAgJGdyYXktZGFyayAhZGVmYXVsdDtcbiRkcm9wZG93bi1saW5rLWhvdmVyLWNvbG9yOiAgICAgIGRhcmtlbigkZ3JheS1kYXJrLCA1JSkgIWRlZmF1bHQ7XG4kZHJvcGRvd24tbGluay1ob3Zlci1iZzogICAgICAgICAjZjVmNWY1ICFkZWZhdWx0O1xuXG4kZHJvcGRvd24tbGluay1hY3RpdmUtY29sb3I6ICAgICAkY29tcG9uZW50LWFjdGl2ZS1jb2xvciAhZGVmYXVsdDtcbiRkcm9wZG93bi1saW5rLWFjdGl2ZS1iZzogICAgICAgICRjb21wb25lbnQtYWN0aXZlLWJnICFkZWZhdWx0O1xuXG4kZHJvcGRvd24tbGluay1kaXNhYmxlZC1jb2xvcjogICAkZ3JheS1saWdodCAhZGVmYXVsdDtcblxuJGRyb3Bkb3duLWhlYWRlci1jb2xvcjogICAgICAgICAgJGdyYXktbGlnaHQgIWRlZmF1bHQ7XG5cblxuLy8gWi1pbmRleCBtYXN0ZXIgbGlzdFxuLy9cbi8vIFdhcm5pbmc6IEF2b2lkIGN1c3RvbWl6aW5nIHRoZXNlIHZhbHVlcy4gVGhleSdyZSB1c2VkIGZvciBhIGJpcmQncyBleWUgdmlld1xuLy8gb2YgY29tcG9uZW50cyBkZXBlbmRlbnQgb24gdGhlIHotYXhpcyBhbmQgYXJlIGRlc2lnbmVkIHRvIGFsbCB3b3JrIHRvZ2V0aGVyLlxuXG4kemluZGV4LW5hdmJhcjogICAgICAgICAgICAxMDAwICFkZWZhdWx0O1xuJHppbmRleC1kcm9wZG93bjogICAgICAgICAgMTAwMCAhZGVmYXVsdDtcbiR6aW5kZXgtcG9wb3ZlcjogICAgICAgICAgIDEwNjAgIWRlZmF1bHQ7XG4kemluZGV4LXRvb2x0aXA6ICAgICAgICAgICAxMDcwICFkZWZhdWx0O1xuJHppbmRleC1uYXZiYXItZml4ZWQ6ICAgICAgMTAzMCAhZGVmYXVsdDtcbiR6aW5kZXgtbmF2YmFyLXN0aWNreTogICAgIDEwMzAgIWRlZmF1bHQ7XG4kemluZGV4LW1vZGFsLWJnOiAgICAgICAgICAxMDQwICFkZWZhdWx0O1xuJHppbmRleC1tb2RhbDogICAgICAgICAgICAgMTA1MCAhZGVmYXVsdDtcblxuXG4vLyBOYXZiYXJcblxuJG5hdmJhci1ib3JkZXItcmFkaXVzOiAgICAgICAgICAgICAgJGJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XG4kbmF2YmFyLXBhZGRpbmctaG9yaXpvbnRhbDogICAgICAgICAkc3BhY2VyICFkZWZhdWx0O1xuJG5hdmJhci1wYWRkaW5nLXZlcnRpY2FsOiAgICAgICAgICAgKCRzcGFjZXIgLyAyKSAhZGVmYXVsdDtcblxuJG5hdmJhci1kYXJrLWNvbG9yOiAgICAgICAgICAgICAgICAgcmdiYSgyNTUsMjU1LDI1NSwuNSkgIWRlZmF1bHQ7XG4kbmF2YmFyLWRhcmstaG92ZXItY29sb3I6ICAgICAgICAgICByZ2JhKDI1NSwyNTUsMjU1LC43NSkgIWRlZmF1bHQ7XG4kbmF2YmFyLWRhcmstYWN0aXZlLWNvbG9yOiAgICAgICAgICByZ2JhKDI1NSwyNTUsMjU1LDEpICFkZWZhdWx0O1xuJG5hdmJhci1kYXJrLWRpc2FibGVkLWNvbG9yOiAgICAgICAgcmdiYSgyNTUsMjU1LDI1NSwuMjUpICFkZWZhdWx0O1xuXG4kbmF2YmFyLWxpZ2h0LWNvbG9yOiAgICAgICAgICAgICAgICByZ2JhKDAsMCwwLC4zKSAhZGVmYXVsdDtcbiRuYXZiYXItbGlnaHQtaG92ZXItY29sb3I6ICAgICAgICAgIHJnYmEoMCwwLDAsLjYpICFkZWZhdWx0O1xuJG5hdmJhci1saWdodC1hY3RpdmUtY29sb3I6ICAgICAgICAgcmdiYSgwLDAsMCwuOCkgIWRlZmF1bHQ7XG4kbmF2YmFyLWxpZ2h0LWRpc2FibGVkLWNvbG9yOiAgICAgICByZ2JhKDAsMCwwLC4xNSkgIWRlZmF1bHQ7XG5cblxuLy8gTmF2c1xuXG4kbmF2LWxpbmstcGFkZGluZzogICAgICAgICAgICAgICAgICAgICAgICAgIC41ZW0gMWVtICFkZWZhdWx0O1xuJG5hdi1saW5rLWhvdmVyLWJnOiAgICAgICAgICAgICAgICAgICAgICAgICAkZ3JheS1saWdodGVyICFkZWZhdWx0O1xuXG4kbmF2LWRpc2FibGVkLWxpbmstY29sb3I6ICAgICAgICAgICAgICAgICAgICRncmF5LWxpZ2h0ICFkZWZhdWx0O1xuJG5hdi1kaXNhYmxlZC1saW5rLWhvdmVyLWNvbG9yOiAgICAgICAgICAgICAkZ3JheS1saWdodCAhZGVmYXVsdDtcblxuJG5hdi10YWJzLWJvcmRlci1jb2xvcjogICAgICAgICAgICAgICAgICAgICAjZGRkICFkZWZhdWx0O1xuXG4kbmF2LXRhYnMtbGluay1ib3JkZXItd2lkdGg6ICAgICAgICAgICAgICAgICRib3JkZXItd2lkdGggIWRlZmF1bHQ7XG4kbmF2LXRhYnMtbGluay1ob3Zlci1ib3JkZXItY29sb3I6ICAgICAgICAgICRncmF5LWxpZ2h0ZXIgIWRlZmF1bHQ7XG5cbiRuYXYtdGFicy1hY3RpdmUtbGluay1ob3Zlci1iZzogICAgICAgICAgICAgJGJvZHktYmcgIWRlZmF1bHQ7XG4kbmF2LXRhYnMtYWN0aXZlLWxpbmstaG92ZXItY29sb3I6ICAgICAgICAgICRncmF5ICFkZWZhdWx0O1xuJG5hdi10YWJzLWFjdGl2ZS1saW5rLWhvdmVyLWJvcmRlci1jb2xvcjogICAjZGRkICFkZWZhdWx0O1xuXG4kbmF2LXRhYnMtanVzdGlmaWVkLWxpbmstYm9yZGVyLWNvbG9yOiAgICAgICAgICAgICNkZGQgIWRlZmF1bHQ7XG4kbmF2LXRhYnMtanVzdGlmaWVkLWFjdGl2ZS1saW5rLWJvcmRlci1jb2xvcjogICAgICRib2R5LWJnICFkZWZhdWx0O1xuXG4kbmF2LXBpbGxzLWJvcmRlci1yYWRpdXM6ICAgICAgICAgICAgICAgICAgICRib3JkZXItcmFkaXVzICFkZWZhdWx0O1xuJG5hdi1waWxscy1hY3RpdmUtbGluay1ob3Zlci1iZzogICAgICAgICAgICAkY29tcG9uZW50LWFjdGl2ZS1iZyAhZGVmYXVsdDtcbiRuYXYtcGlsbHMtYWN0aXZlLWxpbmstaG92ZXItY29sb3I6ICAgICAgICAgJGNvbXBvbmVudC1hY3RpdmUtY29sb3IgIWRlZmF1bHQ7XG5cblxuLy8gUGFnaW5hdGlvblxuXG4kcGFnaW5hdGlvbi1wYWRkaW5nLXg6ICAgICAgICAgICAgICAgIC43NXJlbSAhZGVmYXVsdDtcbiRwYWdpbmF0aW9uLXBhZGRpbmcteTogICAgICAgICAgICAgICAgLjVyZW0gIWRlZmF1bHQ7XG4kcGFnaW5hdGlvbi1wYWRkaW5nLXgtc206ICAgICAgICAgICAgIC43NXJlbSAhZGVmYXVsdDtcbiRwYWdpbmF0aW9uLXBhZGRpbmcteS1zbTogICAgICAgICAgICAgLjI3NXJlbSAhZGVmYXVsdDtcbiRwYWdpbmF0aW9uLXBhZGRpbmcteC1sZzogICAgICAgICAgICAgMS41cmVtICFkZWZhdWx0O1xuJHBhZ2luYXRpb24tcGFkZGluZy15LWxnOiAgICAgICAgICAgICAuNzVyZW0gIWRlZmF1bHQ7XG5cblxuJHBhZ2luYXRpb24tY29sb3I6ICAgICAgICAgICAgICAgICAgICAgJGxpbmstY29sb3IgIWRlZmF1bHQ7XG4kcGFnaW5hdGlvbi1iZzogICAgICAgICAgICAgICAgICAgICAgICAjZmZmICFkZWZhdWx0O1xuJHBhZ2luYXRpb24tYm9yZGVyLXdpZHRoOiAgICAgICAgICAgICAgJGJvcmRlci13aWR0aCAhZGVmYXVsdDtcbiRwYWdpbmF0aW9uLWJvcmRlci1jb2xvcjogICAgICAgICAgICAgICNkZGQgIWRlZmF1bHQ7XG5cbiRwYWdpbmF0aW9uLWhvdmVyLWNvbG9yOiAgICAgICAgICAgICAgICRsaW5rLWhvdmVyLWNvbG9yICFkZWZhdWx0O1xuJHBhZ2luYXRpb24taG92ZXItYmc6ICAgICAgICAgICAgICAgICAgJGdyYXktbGlnaHRlciAhZGVmYXVsdDtcbiRwYWdpbmF0aW9uLWhvdmVyLWJvcmRlcjogICAgICAgICAgICAgICNkZGQgIWRlZmF1bHQ7XG5cbiRwYWdpbmF0aW9uLWFjdGl2ZS1jb2xvcjogICAgICAgICAgICAgICNmZmYgIWRlZmF1bHQ7XG4kcGFnaW5hdGlvbi1hY3RpdmUtYmc6ICAgICAgICAgICAgICAgICAkYnJhbmQtcHJpbWFyeSAhZGVmYXVsdDtcbiRwYWdpbmF0aW9uLWFjdGl2ZS1ib3JkZXI6ICAgICAgICAgICAgICRicmFuZC1wcmltYXJ5ICFkZWZhdWx0O1xuXG4kcGFnaW5hdGlvbi1kaXNhYmxlZC1jb2xvcjogICAgICAgICAgICAkZ3JheS1saWdodCAhZGVmYXVsdDtcbiRwYWdpbmF0aW9uLWRpc2FibGVkLWJnOiAgICAgICAgICAgICAgICNmZmYgIWRlZmF1bHQ7XG4kcGFnaW5hdGlvbi1kaXNhYmxlZC1ib3JkZXI6ICAgICAgICAgICAjZGRkICFkZWZhdWx0O1xuXG5cbi8vIFBhZ2VyXG5cbiRwYWdlci1iZzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYWdpbmF0aW9uLWJnICFkZWZhdWx0O1xuJHBhZ2VyLWJvcmRlci13aWR0aDogICAgICAgICAgICAgICAgICAgJGJvcmRlci13aWR0aCAhZGVmYXVsdDtcbiRwYWdlci1ib3JkZXItY29sb3I6ICAgICAgICAgICAgICAgICAgICRwYWdpbmF0aW9uLWJvcmRlci1jb2xvciAhZGVmYXVsdDtcbiRwYWdlci1ib3JkZXItcmFkaXVzOiAgICAgICAgICAgICAgICAgIDE1cHggIWRlZmF1bHQ7XG5cbiRwYWdlci1ob3Zlci1iZzogICAgICAgICAgICAgICAgICAgICAgICRwYWdpbmF0aW9uLWhvdmVyLWJnICFkZWZhdWx0O1xuXG4kcGFnZXItYWN0aXZlLWJnOiAgICAgICAgICAgICAgICAgICAgICAkcGFnaW5hdGlvbi1hY3RpdmUtYmcgIWRlZmF1bHQ7XG4kcGFnZXItYWN0aXZlLWNvbG9yOiAgICAgICAgICAgICAgICAgICAkcGFnaW5hdGlvbi1hY3RpdmUtY29sb3IgIWRlZmF1bHQ7XG5cbiRwYWdlci1kaXNhYmxlZC1jb2xvcjogICAgICAgICAgICAgICAgICRwYWdpbmF0aW9uLWRpc2FibGVkLWNvbG9yICFkZWZhdWx0O1xuXG5cbi8vIEp1bWJvdHJvblxuXG4kanVtYm90cm9uLXBhZGRpbmc6ICAgICAgICAgICAgICAycmVtICFkZWZhdWx0O1xuJGp1bWJvdHJvbi1iZzogICAgICAgICAgICAgICAgICAgJGdyYXktbGlnaHRlciAhZGVmYXVsdDtcblxuXG4vLyBGb3JtIHN0YXRlcyBhbmQgYWxlcnRzXG4vL1xuLy8gRGVmaW5lIGNvbG9ycyBmb3IgZm9ybSBmZWVkYmFjayBzdGF0ZXMgYW5kLCBieSBkZWZhdWx0LCBhbGVydHMuXG5cbiRzdGF0ZS1zdWNjZXNzLXRleHQ6ICAgICAgICAgICAgICMzYzc2M2QgIWRlZmF1bHQ7XG4kc3RhdGUtc3VjY2Vzcy1iZzogICAgICAgICAgICAgICAjZGZmMGQ4ICFkZWZhdWx0O1xuJHN0YXRlLXN1Y2Nlc3MtYm9yZGVyOiAgICAgICAgICAgZGFya2VuKCRzdGF0ZS1zdWNjZXNzLWJnLCA1JSkgIWRlZmF1bHQ7XG5cbiRzdGF0ZS1pbmZvLXRleHQ6ICAgICAgICAgICAgICAgICMzMTcwOGYgIWRlZmF1bHQ7XG4kc3RhdGUtaW5mby1iZzogICAgICAgICAgICAgICAgICAjZDllZGY3ICFkZWZhdWx0O1xuJHN0YXRlLWluZm8tYm9yZGVyOiAgICAgICAgICAgICAgZGFya2VuKCRzdGF0ZS1pbmZvLWJnLCA3JSkgIWRlZmF1bHQ7XG5cbiRzdGF0ZS13YXJuaW5nLXRleHQ6ICAgICAgICAgICAgICM4YTZkM2IgIWRlZmF1bHQ7XG4kc3RhdGUtd2FybmluZy1iZzogICAgICAgICAgICAgICAjZmNmOGUzICFkZWZhdWx0O1xuJHN0YXRlLXdhcm5pbmctYm9yZGVyOiAgICAgICAgICAgZGFya2VuKCRzdGF0ZS13YXJuaW5nLWJnLCA1JSkgIWRlZmF1bHQ7XG5cbiRzdGF0ZS1kYW5nZXItdGV4dDogICAgICAgICAgICAgICNhOTQ0NDIgIWRlZmF1bHQ7XG4kc3RhdGUtZGFuZ2VyLWJnOiAgICAgICAgICAgICAgICAjZjJkZWRlICFkZWZhdWx0O1xuJHN0YXRlLWRhbmdlci1ib3JkZXI6ICAgICAgICAgICAgZGFya2VuKCRzdGF0ZS1kYW5nZXItYmcsIDUlKSAhZGVmYXVsdDtcblxuXG4vLyBDYXJkc1xuJGNhcmQtc3BhY2VyLXg6ICAgICAgICAgICAgMS4yNXJlbSAhZGVmYXVsdDtcbiRjYXJkLXNwYWNlci15OiAgICAgICAgICAgIC43NXJlbSAhZGVmYXVsdDtcbiRjYXJkLWJvcmRlci13aWR0aDogICAgICAgIDFweCAhZGVmYXVsdDtcbiRjYXJkLWJvcmRlci1yYWRpdXM6ICAgICAgICRib3JkZXItcmFkaXVzICFkZWZhdWx0O1xuJGNhcmQtYm9yZGVyLWNvbG9yOiAgICAgICAgI2U1ZTVlNSAhZGVmYXVsdDtcbiRjYXJkLWJvcmRlci1yYWRpdXMtaW5uZXI6ICRjYXJkLWJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XG4kY2FyZC1jYXAtYmc6ICAgICAgICAgICAgICAjZjVmNWY1ICFkZWZhdWx0O1xuJGNhcmQtYmc6ICAgICAgICAgICAgICAgICAgI2ZmZiAhZGVmYXVsdDtcblxuJGNhcmQtbGluay1ob3Zlci1jb2xvcjogICAgI2ZmZiAhZGVmYXVsdDtcblxuXG4vLyBUb29sdGlwc1xuXG4kdG9vbHRpcC1tYXgtd2lkdGg6ICAgICAgICAgICAyMDBweCAhZGVmYXVsdDtcbiR0b29sdGlwLWNvbG9yOiAgICAgICAgICAgICAgICNmZmYgIWRlZmF1bHQ7XG4kdG9vbHRpcC1iZzogICAgICAgICAgICAgICAgICAjMDAwICFkZWZhdWx0O1xuJHRvb2x0aXAtb3BhY2l0eTogICAgICAgICAgICAgLjkgIWRlZmF1bHQ7XG5cbiR0b29sdGlwLWFycm93LXdpZHRoOiAgICAgICAgIDVweCAhZGVmYXVsdDtcbiR0b29sdGlwLWFycm93LWNvbG9yOiAgICAgICAgICR0b29sdGlwLWJnICFkZWZhdWx0O1xuXG5cbi8vIFBvcG92ZXJzXG5cbiRwb3BvdmVyLWJnOiAgICAgICAgICAgICAgICAgICAgICAgICAgI2ZmZiAhZGVmYXVsdDtcbiRwb3BvdmVyLW1heC13aWR0aDogICAgICAgICAgICAgICAgICAgMjc2cHggIWRlZmF1bHQ7XG4kcG9wb3Zlci1ib3JkZXItd2lkdGg6ICAgICAgICAgICAgICAgICRib3JkZXItd2lkdGggIWRlZmF1bHQ7XG4kcG9wb3Zlci1ib3JkZXItY29sb3I6ICAgICAgICAgICAgICAgIHJnYmEoMCwwLDAsLjIpICFkZWZhdWx0O1xuXG4kcG9wb3Zlci10aXRsZS1iZzogICAgICAgICAgICAgICAgICAgIGRhcmtlbigkcG9wb3Zlci1iZywgMyUpICFkZWZhdWx0O1xuXG4kcG9wb3Zlci1hcnJvdy13aWR0aDogICAgICAgICAgICAgICAgIDEwcHggIWRlZmF1bHQ7XG4kcG9wb3Zlci1hcnJvdy1jb2xvcjogICAgICAgICAgICAgICAgICRwb3BvdmVyLWJnICFkZWZhdWx0O1xuXG4kcG9wb3Zlci1hcnJvdy1vdXRlci13aWR0aDogICAgICAgICAgICgkcG9wb3Zlci1hcnJvdy13aWR0aCArIDEpICFkZWZhdWx0O1xuJHBvcG92ZXItYXJyb3ctb3V0ZXItY29sb3I6ICAgICAgICAgICBmYWRlLWluKCRwb3BvdmVyLWJvcmRlci1jb2xvciwgMC4wNSkgIWRlZmF1bHQ7XG5cblxuLy8gTGFiZWxzXG5cbiRsYWJlbC1kZWZhdWx0LWJnOiAgICAgICAgICAgICRncmF5LWxpZ2h0ICFkZWZhdWx0O1xuJGxhYmVsLXByaW1hcnktYmc6ICAgICAgICAgICAgJGJyYW5kLXByaW1hcnkgIWRlZmF1bHQ7XG4kbGFiZWwtc3VjY2Vzcy1iZzogICAgICAgICAgICAkYnJhbmQtc3VjY2VzcyAhZGVmYXVsdDtcbiRsYWJlbC1pbmZvLWJnOiAgICAgICAgICAgICAgICRicmFuZC1pbmZvICFkZWZhdWx0O1xuJGxhYmVsLXdhcm5pbmctYmc6ICAgICAgICAgICAgJGJyYW5kLXdhcm5pbmcgIWRlZmF1bHQ7XG4kbGFiZWwtZGFuZ2VyLWJnOiAgICAgICAgICAgICAkYnJhbmQtZGFuZ2VyICFkZWZhdWx0O1xuXG4kbGFiZWwtY29sb3I6ICAgICAgICAgICAgICAgICAjZmZmICFkZWZhdWx0O1xuJGxhYmVsLWxpbmstaG92ZXItY29sb3I6ICAgICAgI2ZmZiAhZGVmYXVsdDtcbiRsYWJlbC1mb250LXdlaWdodDogICAgICAgICAgIGJvbGQgIWRlZmF1bHQ7XG5cblxuLy8gTW9kYWxzXG5cbi8vIFBhZGRpbmcgYXBwbGllZCB0byB0aGUgbW9kYWwgYm9keVxuJG1vZGFsLWlubmVyLXBhZGRpbmc6ICAgICAgICAgMTVweCAhZGVmYXVsdDtcblxuJG1vZGFsLXRpdGxlLXBhZGRpbmc6ICAgICAgICAgMTVweCAhZGVmYXVsdDtcbiRtb2RhbC10aXRsZS1saW5lLWhlaWdodDogICAgICRsaW5lLWhlaWdodCAhZGVmYXVsdDtcblxuJG1vZGFsLWNvbnRlbnQtYmc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjZmZmICFkZWZhdWx0O1xuJG1vZGFsLWNvbnRlbnQtYm9yZGVyLWNvbG9yOiAgICAgICAgICAgICAgICAgICByZ2JhKDAsMCwwLC4yKSAhZGVmYXVsdDtcblxuJG1vZGFsLWJhY2tkcm9wLWJnOiAgICAgICAgICAgIzAwMCAhZGVmYXVsdDtcbiRtb2RhbC1iYWNrZHJvcC1vcGFjaXR5OiAgICAgIC41ICFkZWZhdWx0O1xuJG1vZGFsLWhlYWRlci1ib3JkZXItY29sb3I6ICAgI2U1ZTVlNSAhZGVmYXVsdDtcbiRtb2RhbC1mb290ZXItYm9yZGVyLWNvbG9yOiAgICRtb2RhbC1oZWFkZXItYm9yZGVyLWNvbG9yICFkZWZhdWx0O1xuXG4kbW9kYWwtbGc6ICAgICAgICAgICAgICAgICAgICA5MDBweCAhZGVmYXVsdDtcbiRtb2RhbC1tZDogICAgICAgICAgICAgICAgICAgIDYwMHB4ICFkZWZhdWx0O1xuJG1vZGFsLXNtOiAgICAgICAgICAgICAgICAgICAgMzAwcHggIWRlZmF1bHQ7XG5cblxuLy8gQWxlcnRzXG4vL1xuLy8gRGVmaW5lIGFsZXJ0IGNvbG9ycywgYm9yZGVyIHJhZGl1cywgYW5kIHBhZGRpbmcuXG5cbiRhbGVydC1wYWRkaW5nOiAgICAgICAgICAgICAgIDE1cHggIWRlZmF1bHQ7XG4kYWxlcnQtYm9yZGVyLXJhZGl1czogICAgICAgICAkYm9yZGVyLXJhZGl1cyAhZGVmYXVsdDtcbiRhbGVydC1saW5rLWZvbnQtd2VpZ2h0OiAgICAgIGJvbGQgIWRlZmF1bHQ7XG4kYWxlcnQtYm9yZGVyLXdpZHRoOiAgICAgICAgICAkYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xuXG4kYWxlcnQtc3VjY2Vzcy1iZzogICAgICAgICAgICAkc3RhdGUtc3VjY2Vzcy1iZyAhZGVmYXVsdDtcbiRhbGVydC1zdWNjZXNzLXRleHQ6ICAgICAgICAgICRzdGF0ZS1zdWNjZXNzLXRleHQgIWRlZmF1bHQ7XG4kYWxlcnQtc3VjY2Vzcy1ib3JkZXI6ICAgICAgICAkc3RhdGUtc3VjY2Vzcy1ib3JkZXIgIWRlZmF1bHQ7XG5cbiRhbGVydC1pbmZvLWJnOiAgICAgICAgICAgICAgICRzdGF0ZS1pbmZvLWJnICFkZWZhdWx0O1xuJGFsZXJ0LWluZm8tdGV4dDogICAgICAgICAgICAgJHN0YXRlLWluZm8tdGV4dCAhZGVmYXVsdDtcbiRhbGVydC1pbmZvLWJvcmRlcjogICAgICAgICAgICRzdGF0ZS1pbmZvLWJvcmRlciAhZGVmYXVsdDtcblxuJGFsZXJ0LXdhcm5pbmctYmc6ICAgICAgICAgICAgJHN0YXRlLXdhcm5pbmctYmcgIWRlZmF1bHQ7XG4kYWxlcnQtd2FybmluZy10ZXh0OiAgICAgICAgICAkc3RhdGUtd2FybmluZy10ZXh0ICFkZWZhdWx0O1xuJGFsZXJ0LXdhcm5pbmctYm9yZGVyOiAgICAgICAgJHN0YXRlLXdhcm5pbmctYm9yZGVyICFkZWZhdWx0O1xuXG4kYWxlcnQtZGFuZ2VyLWJnOiAgICAgICAgICAgICAkc3RhdGUtZGFuZ2VyLWJnICFkZWZhdWx0O1xuJGFsZXJ0LWRhbmdlci10ZXh0OiAgICAgICAgICAgJHN0YXRlLWRhbmdlci10ZXh0ICFkZWZhdWx0O1xuJGFsZXJ0LWRhbmdlci1ib3JkZXI6ICAgICAgICAgJHN0YXRlLWRhbmdlci1ib3JkZXIgIWRlZmF1bHQ7XG5cblxuLy8gUHJvZ3Jlc3MgYmFyc1xuXG4kcHJvZ3Jlc3MtYmc6ICAgICAgICAgICAgICAgICAjZjVmNWY1ICFkZWZhdWx0O1xuJHByb2dyZXNzLWJhci1jb2xvcjogICAgICAgICAgI2ZmZiAhZGVmYXVsdDtcbiRwcm9ncmVzcy1ib3JkZXItcmFkaXVzOiAgICAgICRib3JkZXItcmFkaXVzICFkZWZhdWx0O1xuXG4kcHJvZ3Jlc3MtYmFyLWJnOiAgICAgICAgICAgICAkYnJhbmQtcHJpbWFyeSAhZGVmYXVsdDtcbiRwcm9ncmVzcy1iYXItc3VjY2Vzcy1iZzogICAgICRicmFuZC1zdWNjZXNzICFkZWZhdWx0O1xuJHByb2dyZXNzLWJhci13YXJuaW5nLWJnOiAgICAgJGJyYW5kLXdhcm5pbmcgIWRlZmF1bHQ7XG4kcHJvZ3Jlc3MtYmFyLWRhbmdlci1iZzogICAgICAkYnJhbmQtZGFuZ2VyICFkZWZhdWx0O1xuJHByb2dyZXNzLWJhci1pbmZvLWJnOiAgICAgICAgJGJyYW5kLWluZm8gIWRlZmF1bHQ7XG5cblxuLy8gTGlzdCBncm91cFxuXG4kbGlzdC1ncm91cC1iZzogICAgICAgICAgICAgICAgICNmZmYgIWRlZmF1bHQ7XG4kbGlzdC1ncm91cC1ib3JkZXItY29sb3I6ICAgICAgICNkZGQgIWRlZmF1bHQ7XG4kbGlzdC1ncm91cC1ib3JkZXItd2lkdGg6ICAgICAgICRib3JkZXItd2lkdGggIWRlZmF1bHQ7XG4kbGlzdC1ncm91cC1ib3JkZXItcmFkaXVzOiAgICAgICRib3JkZXItcmFkaXVzICFkZWZhdWx0O1xuXG4kbGlzdC1ncm91cC1ob3Zlci1iZzogICAgICAgICAgICNmNWY1ZjUgIWRlZmF1bHQ7XG4kbGlzdC1ncm91cC1hY3RpdmUtY29sb3I6ICAgICAgICRjb21wb25lbnQtYWN0aXZlLWNvbG9yICFkZWZhdWx0O1xuJGxpc3QtZ3JvdXAtYWN0aXZlLWJnOiAgICAgICAgICAkY29tcG9uZW50LWFjdGl2ZS1iZyAhZGVmYXVsdDtcbiRsaXN0LWdyb3VwLWFjdGl2ZS1ib3JkZXI6ICAgICAgJGxpc3QtZ3JvdXAtYWN0aXZlLWJnICFkZWZhdWx0O1xuJGxpc3QtZ3JvdXAtYWN0aXZlLXRleHQtY29sb3I6ICBsaWdodGVuKCRsaXN0LWdyb3VwLWFjdGl2ZS1iZywgNDAlKSAhZGVmYXVsdDtcblxuJGxpc3QtZ3JvdXAtZGlzYWJsZWQtY29sb3I6ICAgICAgJGdyYXktbGlnaHQgIWRlZmF1bHQ7XG4kbGlzdC1ncm91cC1kaXNhYmxlZC1iZzogICAgICAgICAkZ3JheS1saWdodGVyICFkZWZhdWx0O1xuJGxpc3QtZ3JvdXAtZGlzYWJsZWQtdGV4dC1jb2xvcjogJGxpc3QtZ3JvdXAtZGlzYWJsZWQtY29sb3IgIWRlZmF1bHQ7XG5cbiRsaXN0LWdyb3VwLWxpbmstY29sb3I6ICAgICAgICAgIzU1NSAhZGVmYXVsdDtcbiRsaXN0LWdyb3VwLWxpbmstaG92ZXItY29sb3I6ICAgJGxpc3QtZ3JvdXAtbGluay1jb2xvciAhZGVmYXVsdDtcbiRsaXN0LWdyb3VwLWxpbmstaGVhZGluZy1jb2xvcjogIzMzMyAhZGVmYXVsdDtcblxuXG4vLyBJbWFnZSB0aHVtYm5haWxzXG5cbiR0aHVtYm5haWwtcGFkZGluZzogICAgICAgICAgIC4yNXJlbSAhZGVmYXVsdDtcbiR0aHVtYm5haWwtYmc6ICAgICAgICAgICAgICAgICRib2R5LWJnICFkZWZhdWx0O1xuJHRodW1ibmFpbC1ib3JkZXItd2lkdGg6ICAgICAgJGJvcmRlci13aWR0aCAhZGVmYXVsdDtcbiR0aHVtYm5haWwtYm9yZGVyLWNvbG9yOiAgICAgICNkZGQgIWRlZmF1bHQ7XG4kdGh1bWJuYWlsLWJvcmRlci1yYWRpdXM6ICAgICAkYm9yZGVyLXJhZGl1cyAhZGVmYXVsdDtcblxuXG4vLyBCcmVhZGNydW1ic1xuXG4kYnJlYWRjcnVtYi1wYWRkaW5nLXZlcnRpY2FsOiAgIC43NXJlbSAhZGVmYXVsdDtcbiRicmVhZGNydW1iLXBhZGRpbmctaG9yaXpvbnRhbDogMXJlbSAhZGVmYXVsdDtcblxuJGJyZWFkY3J1bWItYmc6ICAgICAgICAgICAgICAgICAkZ3JheS1saWdodGVyICFkZWZhdWx0O1xuJGJyZWFkY3J1bWItZGl2aWRlci1jb2xvcjogICAgICAkZ3JheS1saWdodCAhZGVmYXVsdDtcbiRicmVhZGNydW1iLWFjdGl2ZS1jb2xvcjogICAgICAgJGdyYXktbGlnaHQgIWRlZmF1bHQ7XG4kYnJlYWRjcnVtYi1kaXZpZGVyOiAgICAgICAgICAgIFwiL1wiICFkZWZhdWx0O1xuXG5cbi8vIENhcm91c2VsXG5cbiRjYXJvdXNlbC10ZXh0LXNoYWRvdzogICAgICAgICAgICAgICAgICAgICAgICAwIDFweCAycHggcmdiYSgwLDAsMCwuNikgIWRlZmF1bHQ7XG5cbiRjYXJvdXNlbC1jb250cm9sLWNvbG9yOiAgICAgICAgICAgICAgICAgICAgICAjZmZmICFkZWZhdWx0O1xuJGNhcm91c2VsLWNvbnRyb2wtd2lkdGg6ICAgICAgICAgICAgICAgICAgICAgIDE1JSAhZGVmYXVsdDtcbiRjYXJvdXNlbC1jb250cm9sLW9wYWNpdHk6ICAgICAgICAgICAgICAgICAgICAuNSAhZGVmYXVsdDtcbiRjYXJvdXNlbC1jb250cm9sLWZvbnQtc2l6ZTogICAgICAgICAgICAgICAgICAyMHB4ICFkZWZhdWx0O1xuXG4kY2Fyb3VzZWwtaW5kaWNhdG9yLWFjdGl2ZS1iZzogICAgICAgICAgICAgICAgI2ZmZiAhZGVmYXVsdDtcbiRjYXJvdXNlbC1pbmRpY2F0b3ItYm9yZGVyLWNvbG9yOiAgICAgICAgICAgICAjZmZmICFkZWZhdWx0O1xuXG4kY2Fyb3VzZWwtY2FwdGlvbi1jb2xvcjogICAgICAgICAgICAgICAgICAgICAgI2ZmZiAhZGVmYXVsdDtcblxuXG4vLyBDbG9zZVxuXG4kY2xvc2UtZm9udC13ZWlnaHQ6ICAgICAgICAgICBib2xkICFkZWZhdWx0O1xuJGNsb3NlLWNvbG9yOiAgICAgICAgICAgICAgICAgIzAwMCAhZGVmYXVsdDtcbiRjbG9zZS10ZXh0LXNoYWRvdzogICAgICAgICAgIDAgMXB4IDAgI2ZmZiAhZGVmYXVsdDtcblxuXG4vLyBDb2RlXG5cbiRjb2RlLWNvbG9yOiAgICAgICAgICAgICAgICAgICNiZDQxNDcgIWRlZmF1bHQ7XG4kY29kZS1iZzogICAgICAgICAgICAgICAgICAgICAjZjdmN2Y5ICFkZWZhdWx0O1xuXG4ka2JkLWNvbG9yOiAgICAgICAgICAgICAgICAgICAjZmZmICFkZWZhdWx0O1xuJGtiZC1iZzogICAgICAgICAgICAgICAgICAgICAgIzMzMyAhZGVmYXVsdDtcblxuJHByZS1iZzogICAgICAgICAgICAgICAgICAgICAgI2Y3ZjdmOSAhZGVmYXVsdDtcbiRwcmUtY29sb3I6ICAgICAgICAgICAgICAgICAgICRncmF5LWRhcmsgIWRlZmF1bHQ7XG4kcHJlLWJvcmRlci1jb2xvcjogICAgICAgICAgICAjY2NjICFkZWZhdWx0O1xuJHByZS1zY3JvbGxhYmxlLW1heC1oZWlnaHQ6ICAgMzQwcHggIWRlZmF1bHQ7XG4iLCIvLyBUb2dnbGVzXG4vL1xuLy8gVXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGdsb2JhbCB2YXJpYWJsZXMgdG8gZW5hYmxlIGNlcnRhaW4gdGhlbWUgZmVhdHVyZXMuXG5cbkBtaXhpbiBib3gtc2hhZG93KCRzaGFkb3cuLi4pIHtcbiAgQGlmICRlbmFibGUtc2hhZG93cyB7XG4gICAgYm94LXNoYWRvdzogJHNoYWRvdztcbiAgfVxufVxuXG5AbWl4aW4gdHJhbnNpdGlvbigkdHJhbnNpdGlvbi4uLikge1xuICBAaWYgJGVuYWJsZS10cmFuc2l0aW9ucyB7XG4gICAgdHJhbnNpdGlvbjogJHRyYW5zaXRpb247XG4gIH1cbn1cblxuLy8gVXRpbGl0aWVzXG5AaW1wb3J0IFwibWl4aW5zL2JyZWFrcG9pbnRzXCI7XG5AaW1wb3J0IFwibWl4aW5zL2hvdmVyXCI7XG5AaW1wb3J0IFwibWl4aW5zL2ltYWdlXCI7XG5AaW1wb3J0IFwibWl4aW5zL2xhYmVsXCI7XG5AaW1wb3J0IFwibWl4aW5zL3Jlc2V0LWZpbHRlclwiO1xuQGltcG9ydCBcIm1peGlucy9yZXNpemVcIjtcbkBpbXBvcnQgXCJtaXhpbnMvc2NyZWVuLXJlYWRlclwiO1xuQGltcG9ydCBcIm1peGlucy9zaXplXCI7XG5AaW1wb3J0IFwibWl4aW5zL3RhYi1mb2N1c1wiO1xuQGltcG9ydCBcIm1peGlucy9yZXNldC10ZXh0XCI7XG5AaW1wb3J0IFwibWl4aW5zL3RleHQtZW1waGFzaXNcIjtcbkBpbXBvcnQgXCJtaXhpbnMvdGV4dC1oaWRlXCI7XG5AaW1wb3J0IFwibWl4aW5zL3RleHQtdHJ1bmNhdGVcIjtcblxuLy8gLy8gQ29tcG9uZW50c1xuQGltcG9ydCBcIm1peGlucy9hbGVydFwiO1xuQGltcG9ydCBcIm1peGlucy9idXR0b25zXCI7XG5AaW1wb3J0IFwibWl4aW5zL2NhcmRzXCI7XG5AaW1wb3J0IFwibWl4aW5zL3BhZ2luYXRpb25cIjtcbkBpbXBvcnQgXCJtaXhpbnMvbGlzdHNcIjtcbkBpbXBvcnQgXCJtaXhpbnMvbGlzdC1ncm91cFwiO1xuQGltcG9ydCBcIm1peGlucy9uYXYtZGl2aWRlclwiO1xuQGltcG9ydCBcIm1peGlucy9mb3Jtc1wiO1xuQGltcG9ydCBcIm1peGlucy9wcm9ncmVzc1wiO1xuQGltcG9ydCBcIm1peGlucy90YWJsZS1yb3dcIjtcblxuLy8gLy8gU2tpbnNcbkBpbXBvcnQgXCJtaXhpbnMvYmFja2dyb3VuZC12YXJpYW50XCI7XG5AaW1wb3J0IFwibWl4aW5zL2JvcmRlci1yYWRpdXNcIjtcbkBpbXBvcnQgXCJtaXhpbnMvZ3JhZGllbnRzXCI7XG5cbi8vIC8vIExheW91dFxuQGltcG9ydCBcIm1peGlucy9jbGVhcmZpeFwiO1xuQGltcG9ydCBcIm1peGlucy9jZW50ZXItYmxvY2tcIjtcbi8vIEBpbXBvcnQgXCJtaXhpbnMvbmF2YmFyLWFsaWduXCI7XG5AaW1wb3J0IFwibWl4aW5zL2dyaWQtZnJhbWV3b3JrXCI7XG5AaW1wb3J0IFwibWl4aW5zL2dyaWRcIjtcbkBpbXBvcnQgXCJtaXhpbnMvcHVsbHNcIjtcbiIsIi8vIEJyZWFrcG9pbnQgdmlld3BvcnQgc2l6ZXMgYW5kIG1lZGlhIHF1ZXJpZXMuXG4vL1xuLy8gQnJlYWtwb2ludHMgYXJlIGRlZmluZWQgYXMgYSBtYXAgb2YgKG5hbWU6IG1pbmltdW0gd2lkdGgpLCBvcmRlciBmcm9tIHNtYWxsIHRvIGxhcmdlOlxuLy9cbi8vICAgICh4czogMCwgc206IDU0NHB4LCBtZDogNzY4cHgpXG4vL1xuLy8gVGhlIG1hcCBkZWZpbmVkIGluIHRoZSBgJGdyaWQtYnJlYWtwb2ludHNgIGdsb2JhbCB2YXJpYWJsZSBpcyB1c2VkIGFzIHRoZSBgJGJyZWFrcG9pbnRzYCBhcmd1bWVudCBieSBkZWZhdWx0LlxuXG4vLyBOYW1lIG9mIHRoZSBuZXh0IGJyZWFrcG9pbnQsIG9yIG51bGwgZm9yIHRoZSBsYXN0IGJyZWFrcG9pbnQuXG4vL1xuLy8gICAgPj4gYnJlYWtwb2ludC1uZXh0KHNtKVxuLy8gICAgbWRcbi8vICAgID4+IGJyZWFrcG9pbnQtbmV4dChzbSwgKHhzOiAwLCBzbTogNTQ0cHgsIG1kOiA3NjhweCkpXG4vLyAgICBtZFxuLy8gICAgPj4gYnJlYWtwb2ludC1uZXh0KHNtLCAkYnJlYWtwb2ludC1uYW1lczogKHhzIHNtIG1kKSlcbi8vICAgIG1kXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1uZXh0KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzLCAkYnJlYWtwb2ludC1uYW1lczogbWFwLWtleXMoJGJyZWFrcG9pbnRzKSkge1xuICAkbjogaW5kZXgoJGJyZWFrcG9pbnQtbmFtZXMsICRuYW1lKTtcbiAgQHJldHVybiBpZigkbiA8IGxlbmd0aCgkYnJlYWtwb2ludC1uYW1lcyksIG50aCgkYnJlYWtwb2ludC1uYW1lcywgJG4gKyAxKSwgbnVsbCk7XG59XG5cbi8vIE1pbmltdW0gYnJlYWtwb2ludCB3aWR0aC4gTnVsbCBmb3IgdGhlIHNtYWxsZXN0IChmaXJzdCkgYnJlYWtwb2ludC5cbi8vXG4vLyAgICA+PiBicmVha3BvaW50LW1pbihzbSwgKHhzOiAwLCBzbTogNTQ0cHgsIG1kOiA3NjhweCkpXG4vLyAgICA1NDRweFxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtaW46IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkbmFtZSk7XG4gIEByZXR1cm4gaWYoJG1pbiAhPSAwLCAkbWluLCBudWxsKTtcbn1cblxuLy8gTWF4aW11bSBicmVha3BvaW50IHdpZHRoLiBOdWxsIGZvciB0aGUgbGFyZ2VzdCAobGFzdCkgYnJlYWtwb2ludC5cbi8vIFRoZSBtYXhpbXVtIHZhbHVlIGlzIGNhbGN1bGF0ZWQgYXMgdGhlIG1pbmltdW0gb2YgdGhlIG5leHQgb25lIGxlc3MgMC4xLlxuLy9cbi8vICAgID4+IGJyZWFrcG9pbnQtbWF4KHNtLCAoeHM6IDAsIHNtOiA1NDRweCwgbWQ6IDc2OHB4KSlcbi8vICAgIDc2N3B4XG5AZnVuY3Rpb24gYnJlYWtwb2ludC1tYXgoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG5leHQ6IGJyZWFrcG9pbnQtbmV4dCgkbmFtZSwgJGJyZWFrcG9pbnRzKTtcbiAgQHJldHVybiBpZigkbmV4dCwgYnJlYWtwb2ludC1taW4oJG5leHQsICRicmVha3BvaW50cykgLSAxcHgsIG51bGwpO1xufVxuXG4vLyBNZWRpYSBvZiBhdCBsZWFzdCB0aGUgbWluaW11bSBicmVha3BvaW50IHdpZHRoLiBObyBxdWVyeSBmb3IgdGhlIHNtYWxsZXN0IGJyZWFrcG9pbnQuXG4vLyBNYWtlcyB0aGUgQGNvbnRlbnQgYXBwbHkgdG8gdGhlIGdpdmVuIGJyZWFrcG9pbnQgYW5kIHdpZGVyLlxuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtdXAoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1pbjogYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50cyk7XG4gIEBpZiAkbWluIHtcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1pbikge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLyBNZWRpYSBvZiBhdCBtb3N0IHRoZSBtYXhpbXVtIGJyZWFrcG9pbnQgd2lkdGguIE5vIHF1ZXJ5IGZvciB0aGUgbGFyZ2VzdCBicmVha3BvaW50LlxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IHRvIHRoZSBnaXZlbiBicmVha3BvaW50IGFuZCBuYXJyb3dlci5cbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LWRvd24oJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1heDogYnJlYWtwb2ludC1tYXgoJG5hbWUsICRicmVha3BvaW50cyk7XG4gIEBpZiAkbWF4IHtcbiAgICBAbWVkaWEgKG1heC13aWR0aDogJG1heCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLyBNZWRpYSBiZXR3ZWVuIHRoZSBicmVha3BvaW50J3MgbWluaW11bSBhbmQgbWF4aW11bSB3aWR0aHMuXG4vLyBObyBtaW5pbXVtIGZvciB0aGUgc21hbGxlc3QgYnJlYWtwb2ludCwgYW5kIG5vIG1heGltdW0gZm9yIHRoZSBsYXJnZXN0IG9uZS5cbi8vIE1ha2VzIHRoZSBAY29udGVudCBhcHBseSBvbmx5IHRvIHRoZSBnaXZlbiBicmVha3BvaW50LCBub3Qgdmlld3BvcnRzIGFueSB3aWRlciBvciBuYXJyb3dlci5cbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LW9ubHkoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgkbmFtZSwgJGJyZWFrcG9pbnRzKSB7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKCRuYW1lLCAkYnJlYWtwb2ludHMpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG4vLyBNZWRpYSB0aGF0IHNwYW5zIG11bHRpcGxlIGJyZWFrcG9pbnQgd2lkdGhzLlxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IGJldHdlZW4gdGhlIG1pbiBhbmQgbWF4IGJyZWFrcG9pbnRzXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC1iZXR3ZWVuKCRsb3dlciwgJHVwcGVyLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJGxvd2VyLCAkYnJlYWtwb2ludHMpIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oJHVwcGVyLCAkYnJlYWtwb2ludHMpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuIiwiQG1peGluIGhvdmVyIHtcbiAgQGlmICRlbmFibGUtaG92ZXItbWVkaWEtcXVlcnkge1xuICAgIC8vIFNlZSBNZWRpYSBRdWVyaWVzIExldmVsIDQ6IGh0dHA6Ly9kcmFmdHMuY3Nzd2cub3JnL21lZGlhcXVlcmllcy8jaG92ZXJcbiAgICAvLyBDdXJyZW50bHkgc2hpbW1lZCBieSBodHRwczovL2dpdGh1Yi5jb20vdHdicy9tcTQtaG92ZXItc2hpbVxuICAgIEBtZWRpYSAoaG92ZXI6IGhvdmVyKSB7XG4gICAgICAmOmhvdmVyIHsgQGNvbnRlbnQgfVxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgJjpob3ZlciB7IEBjb250ZW50IH1cbiAgfVxufVxuXG5AbWl4aW4gaG92ZXItZm9jdXMge1xuICBAaWYgJGVuYWJsZS1ob3Zlci1tZWRpYS1xdWVyeSB7XG4gICAgJjpmb2N1cyB7IEBjb250ZW50IH1cbiAgICBAaW5jbHVkZSBob3ZlciB7IEBjb250ZW50IH1cbiAgfVxuICBAZWxzZSB7XG4gICAgJjpmb2N1cyxcbiAgICAmOmhvdmVyIHtcbiAgICAgIEBjb250ZW50XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBwbGFpbi1ob3Zlci1mb2N1cyB7XG4gIEBpZiAkZW5hYmxlLWhvdmVyLW1lZGlhLXF1ZXJ5IHtcbiAgICAmLFxuICAgICY6Zm9jdXMge1xuICAgICAgQGNvbnRlbnRcbiAgICB9XG4gICAgQGluY2x1ZGUgaG92ZXIgeyBAY29udGVudCB9XG4gIH1cbiAgQGVsc2Uge1xuICAgICYsXG4gICAgJjpmb2N1cyxcbiAgICAmOmhvdmVyIHtcbiAgICAgIEBjb250ZW50XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBob3Zlci1mb2N1cy1hY3RpdmUge1xuICBAaWYgJGVuYWJsZS1ob3Zlci1tZWRpYS1xdWVyeSB7XG4gICAgJjpmb2N1cyxcbiAgICAmOmFjdGl2ZSB7XG4gICAgICBAY29udGVudFxuICAgIH1cbiAgICBAaW5jbHVkZSBob3ZlciB7IEBjb250ZW50IH1cbiAgfVxuICBAZWxzZSB7XG4gICAgJjpmb2N1cyxcbiAgICAmOmFjdGl2ZSxcbiAgICAmOmhvdmVyIHtcbiAgICAgIEBjb250ZW50XG4gICAgfVxuICB9XG59XG4iLCIvLyBJbWFnZSBNaXhpbnNcbi8vIC0gUmVzcG9uc2l2ZSBpbWFnZVxuLy8gLSBSZXRpbmEgaW1hZ2VcblxuXG4vLyBSZXNwb25zaXZlIGltYWdlXG4vL1xuLy8gS2VlcCBpbWFnZXMgZnJvbSBzY2FsaW5nIGJleW9uZCB0aGUgd2lkdGggb2YgdGhlaXIgcGFyZW50cy5cblxuQG1peGluIGltZy1mbHVpZCgkZGlzcGxheTogYmxvY2spIHtcbiAgZGlzcGxheTogJGRpc3BsYXk7XG4gIG1heC13aWR0aDogMTAwJTsgLy8gUGFydCAxOiBTZXQgYSBtYXhpbXVtIHJlbGF0aXZlIHRvIHRoZSBwYXJlbnRcbiAgaGVpZ2h0OiBhdXRvOyAvLyBQYXJ0IDI6IFNjYWxlIHRoZSBoZWlnaHQgYWNjb3JkaW5nIHRvIHRoZSB3aWR0aCwgb3RoZXJ3aXNlIHlvdSBnZXQgc3RyZXRjaGluZ1xufVxuXG5cbi8vIFJldGluYSBpbWFnZVxuLy9cbi8vIFNob3J0IHJldGluYSBtaXhpbiBmb3Igc2V0dGluZyBiYWNrZ3JvdW5kLWltYWdlIGFuZCAtc2l6ZS5cblxuQG1peGluIGltZy1yZXRpbmEoJGZpbGUtMXgsICRmaWxlLTJ4LCAkd2lkdGgtMXgsICRoZWlnaHQtMXgpIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCRmaWxlLTF4KTtcblxuICAvLyBBdXRvcHJlZml4ZXIgdGFrZXMgY2FyZSBvZiBhZGRpbmcgLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvIGFuZCAtby1taW4tZGV2aWNlLXBpeGVsLXJhdGlvLFxuICAvLyBidXQgZG9lc24ndCBjb252ZXJ0IGRwcHg9PmRwaS5cbiAgLy8gVGhlcmUncyBubyBzdWNoIHRoaW5nIGFzIHVucHJlZml4ZWQgbWluLWRldmljZS1waXhlbC1yYXRpbyBzaW5jZSBpdCdzIG5vbnN0YW5kYXJkLlxuICAvLyBDb21wYXRpYmlsaXR5IGluZm86IGh0dHA6Ly9jYW5pdXNlLmNvbS8jZmVhdD1jc3MtbWVkaWEtcmVzb2x1dGlvblxuICBAbWVkaWFcbiAgb25seSBzY3JlZW4gYW5kIChtaW4tcmVzb2x1dGlvbjogMTkyZHBpKSwgLy8gSUU5LTExIGRvbid0IHN1cHBvcnQgZHBweFxuICBvbmx5IHNjcmVlbiBhbmQgKG1pbi1yZXNvbHV0aW9uOiAyZHBweCkgeyAvLyBTdGFuZGFyZGl6ZWRcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJGZpbGUtMngpO1xuICAgIGJhY2tncm91bmQtc2l6ZTogJHdpZHRoLTF4ICRoZWlnaHQtMXg7XG4gIH1cbn1cbiIsIi8vIExhYmVsc1xuXG5AbWl4aW4gbGFiZWwtdmFyaWFudCgkY29sb3IpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yO1xuXG4gICZbaHJlZl0ge1xuICAgIEBpbmNsdWRlIGhvdmVyLWZvY3VzIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IGRhcmtlbigkY29sb3IsIDEwJSk7XG4gICAgfVxuICB9XG59XG4iLCIvLyBSZXNldCBmaWx0ZXJzIGZvciBJRVxuLy9cbi8vIFdoZW4geW91IG5lZWQgdG8gcmVtb3ZlIGEgZ3JhZGllbnQgYmFja2dyb3VuZCwgZG8gbm90IGZvcmdldCB0byB1c2UgdGhpcyB0byByZXNldFxuLy8gdGhlIElFIGZpbHRlciBmb3IgSUU5LlxuXG5AbWl4aW4gcmVzZXQtZmlsdGVyKCkge1xuICBmaWx0ZXI6IFwicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KGVuYWJsZWQgPSBmYWxzZSlcIjtcbn1cbiIsIi8vIFJlc2l6ZSBhbnl0aGluZ1xuXG5AbWl4aW4gcmVzaXphYmxlKCRkaXJlY3Rpb24pIHtcbiAgcmVzaXplOiAkZGlyZWN0aW9uOyAvLyBPcHRpb25zOiBob3Jpem9udGFsLCB2ZXJ0aWNhbCwgYm90aFxuICBvdmVyZmxvdzogYXV0bzsgLy8gUGVyIENTUzMgVUksIGByZXNpemVgIG9ubHkgYXBwbGllcyB3aGVuIGBvdmVyZmxvd2AgaXNuJ3QgYHZpc2libGVgXG59XG4iLCIvLyBPbmx5IGRpc3BsYXkgY29udGVudCB0byBzY3JlZW4gcmVhZGVyc1xuLy9cbi8vIFNlZTogaHR0cDovL2ExMXlwcm9qZWN0LmNvbS9wb3N0cy9ob3ctdG8taGlkZS1jb250ZW50L1xuXG5AbWl4aW4gc3Itb25seSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDFweDtcbiAgaGVpZ2h0OiAxcHg7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogLTFweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgY2xpcDogcmVjdCgwLDAsMCwwKTtcbiAgYm9yZGVyOiAwO1xufVxuXG4vLyBVc2UgaW4gY29uanVuY3Rpb24gd2l0aCAuc3Itb25seSB0byBvbmx5IGRpc3BsYXkgY29udGVudCB3aGVuIGl0J3MgZm9jdXNlZC5cbi8vXG4vLyBVc2VmdWwgZm9yIFwiU2tpcCB0byBtYWluIGNvbnRlbnRcIiBsaW5rczsgc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMTMvTk9URS1XQ0FHMjAtVEVDSFMtMjAxMzA5MDUvRzFcbi8vXG4vLyBDcmVkaXQ6IEhUTUw1IEJvaWxlcnBsYXRlXG5cbkBtaXhpbiBzci1vbmx5LWZvY3VzYWJsZSB7XG4gICY6YWN0aXZlLFxuICAmOmZvY3VzIHtcbiAgICBwb3NpdGlvbjogc3RhdGljO1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIGhlaWdodDogYXV0bztcbiAgICBtYXJnaW46IDA7XG4gICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gICAgY2xpcDogYXV0bztcbiAgfVxufVxuIiwiLy8gU2l6aW5nIHNob3J0Y3V0c1xuXG5AbWl4aW4gc2l6ZSgkd2lkdGgsICRoZWlnaHQ6ICR3aWR0aCkge1xuICB3aWR0aDogJHdpZHRoO1xuICBoZWlnaHQ6ICRoZWlnaHQ7XG59XG4iLCIvLyBXZWJLaXQtc3R5bGUgZm9jdXNcblxuQG1peGluIHRhYi1mb2N1cygpIHtcbiAgLy8gRGVmYXVsdFxuICBvdXRsaW5lOiB0aGluIGRvdHRlZDtcbiAgLy8gV2ViS2l0XG4gIG91dGxpbmU6IDVweCBhdXRvIC13ZWJraXQtZm9jdXMtcmluZy1jb2xvcjtcbiAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7XG59XG4iLCJAbWl4aW4gcmVzZXQtdGV4dCB7XG4gIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktYmFzZTtcbiAgLy8gV2UgZGVsaWJlcmF0ZWx5IGRvIE5PVCByZXNldCBmb250LXNpemUuXG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDtcbiAgbGluZS1icmVhazogYXV0bztcbiAgbGluZS1oZWlnaHQ6ICRsaW5lLWhlaWdodDtcbiAgdGV4dC1hbGlnbjogbGVmdDsgLy8gRmFsbGJhY2sgZm9yIHdoZXJlIGBzdGFydGAgaXMgbm90IHN1cHBvcnRlZFxuICB0ZXh0LWFsaWduOiBzdGFydDtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB0ZXh0LXNoYWRvdzogbm9uZTtcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gIHdoaXRlLXNwYWNlOiBub3JtYWw7XG4gIHdvcmQtYnJlYWs6IG5vcm1hbDtcbiAgd29yZC1zcGFjaW5nOiBub3JtYWw7XG4gIHdvcmQtd3JhcDogbm9ybWFsO1xufVxuIiwiLy8gVHlwb2dyYXBoeVxuXG5AbWl4aW4gdGV4dC1lbXBoYXNpcy12YXJpYW50KCRwYXJlbnQsICRjb2xvcikge1xuICAjeyRwYXJlbnR9IHtcbiAgICBjb2xvcjogJGNvbG9yICFpbXBvcnRhbnQ7XG4gIH1cbiAgYSN7JHBhcmVudH0ge1xuICAgIEBpbmNsdWRlIGhvdmVyLWZvY3VzIHtcbiAgICAgIGNvbG9yOiBkYXJrZW4oJGNvbG9yLCAxMCUpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gQ1NTIGltYWdlIHJlcGxhY2VtZW50XG5AbWl4aW4gdGV4dC1oaWRlKCkge1xuICBmb250OiBcIjAvMFwiIGE7XG4gIGNvbG9yOiB0cmFuc3BhcmVudDtcbiAgdGV4dC1zaGFkb3c6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IDA7XG59XG4iLCIvLyBUZXh0IHRydW5jYXRlXG4vLyBSZXF1aXJlcyBpbmxpbmUtYmxvY2sgb3IgYmxvY2sgZm9yIHByb3BlciBzdHlsaW5nXG5cbkBtaXhpbiB0ZXh0LXRydW5jYXRlKCkge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn0iLCIvLyBBbGVydHNcblxuQG1peGluIGFsZXJ0LXZhcmlhbnQoJGJhY2tncm91bmQsICRib3JkZXIsICRib2R5LWNvbG9yKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kO1xuICBib3JkZXItY29sb3I6ICRib3JkZXI7XG4gIGNvbG9yOiAkYm9keS1jb2xvcjtcblxuICBociB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogZGFya2VuKCRib3JkZXIsIDUlKTtcbiAgfVxuICAuYWxlcnQtbGluayB7XG4gICAgY29sb3I6IGRhcmtlbigkYm9keS1jb2xvciwgMTAlKTtcbiAgfVxufVxuIiwiLy8gQnV0dG9uIHZhcmlhbnRzXG4vL1xuLy8gRWFzaWx5IHB1bXAgb3V0IGRlZmF1bHQgc3R5bGVzLCBhcyB3ZWxsIGFzIDpob3ZlciwgOmZvY3VzLCA6YWN0aXZlLFxuLy8gYW5kIGRpc2FibGVkIG9wdGlvbnMgZm9yIGFsbCBidXR0b25zXG5cbkBtaXhpbiBidXR0b24tdmFyaWFudCgkY29sb3IsICRiYWNrZ3JvdW5kLCAkYm9yZGVyKSB7XG4gICRhY3RpdmUtYmFja2dyb3VuZDogZGFya2VuKCRiYWNrZ3JvdW5kLCAxMCUpO1xuICAkYWN0aXZlLWJvcmRlcjogZGFya2VuKCRib3JkZXIsIDEyJSk7XG5cbiAgY29sb3I6ICRjb2xvcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQ7XG4gIGJvcmRlci1jb2xvcjogJGJvcmRlcjtcbiAgQGluY2x1ZGUgYm94LXNoYWRvdyhpbnNldCAwIDFweCAwIHJnYmEoMjU1LDI1NSwyNTUsLjE1KSwgMCAxcHggMXB4IHJnYmEoMCwwLDAsLjA3NSkpO1xuXG4gIEBpbmNsdWRlIGhvdmVyIHtcbiAgICBjb2xvcjogJGNvbG9yO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRhY3RpdmUtYmFja2dyb3VuZDtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkYWN0aXZlLWJvcmRlcjtcbiAgfVxuXG4gICY6Zm9jdXMsXG4gICYuZm9jdXMge1xuICAgIGNvbG9yOiAkY29sb3I7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGFjdGl2ZS1iYWNrZ3JvdW5kO1xuICAgICAgICBib3JkZXItY29sb3I6ICRhY3RpdmUtYm9yZGVyO1xuICB9XG5cbiAgJjphY3RpdmUsXG4gICYuYWN0aXZlLFxuICAub3BlbiA+ICYuZHJvcGRvd24tdG9nZ2xlIHtcbiAgICBjb2xvcjogJGNvbG9yO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRhY3RpdmUtYmFja2dyb3VuZDtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkYWN0aXZlLWJvcmRlcjtcbiAgICAvLyBSZW1vdmUgdGhlIGdyYWRpZW50IGZvciB0aGUgcHJlc3NlZC9hY3RpdmUgc3RhdGVcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuICAgIEBpbmNsdWRlIGJveC1zaGFkb3coaW5zZXQgMCAzcHggNXB4IHJnYmEoMCwwLDAsLjEyNSkpO1xuXG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzLFxuICAgICYuZm9jdXMge1xuICAgICAgY29sb3I6ICRjb2xvcjtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IGRhcmtlbigkYmFja2dyb3VuZCwgMTclKTtcbiAgICAgICAgICBib3JkZXItY29sb3I6IGRhcmtlbigkYm9yZGVyLCAyNSUpO1xuICAgIH1cbiAgfVxuXG4gICYuZGlzYWJsZWQsXG4gICY6ZGlzYWJsZWQge1xuICAgICY6Zm9jdXMsXG4gICAgJi5mb2N1cyB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZDtcbiAgICAgICAgICBib3JkZXItY29sb3I6ICRib3JkZXI7XG4gICAgfVxuICAgIEBpbmNsdWRlIGhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kO1xuICAgICAgICAgIGJvcmRlci1jb2xvcjogJGJvcmRlcjtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGJ1dHRvbi1vdXRsaW5lLXZhcmlhbnQoJGNvbG9yKSB7XG4gIGNvbG9yOiAkY29sb3I7XG4gIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBib3JkZXItY29sb3I6ICRjb2xvcjtcblxuICAmOmZvY3VzLFxuICAmLmZvY3VzLFxuICAmOmFjdGl2ZSxcbiAgJi5hY3RpdmUsXG4gIC5vcGVuID4gJi5kcm9wZG93bi10b2dnbGUge1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkY29sb3I7XG4gIH1cbiAgQGluY2x1ZGUgaG92ZXIge1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkY29sb3I7XG4gIH1cblxuICAmLmRpc2FibGVkLFxuICAmOmRpc2FibGVkIHtcbiAgICAmOmZvY3VzLFxuICAgICYuZm9jdXMge1xuICAgICAgYm9yZGVyLWNvbG9yOiBsaWdodGVuKCRjb2xvciwgMjAlKTtcbiAgICB9XG4gICAgQGluY2x1ZGUgaG92ZXIge1xuICAgICAgYm9yZGVyLWNvbG9yOiBsaWdodGVuKCRjb2xvciwgMjAlKTtcbiAgICB9XG4gIH1cbn1cblxuLy8gQnV0dG9uIHNpemVzXG5AbWl4aW4gYnV0dG9uLXNpemUoJHBhZGRpbmcteSwgJHBhZGRpbmcteCwgJGZvbnQtc2l6ZSwgJGxpbmUtaGVpZ2h0LCAkYm9yZGVyLXJhZGl1cykge1xuICBwYWRkaW5nOiAkcGFkZGluZy15ICRwYWRkaW5nLXg7XG4gIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZTtcbiAgbGluZS1oZWlnaHQ6ICRsaW5lLWhlaWdodDtcbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkYm9yZGVyLXJhZGl1cyk7XG59XG4iLCIvLyBDYXJkIHZhcmlhbnRzXG5cbkBtaXhpbiBjYXJkLXZhcmlhbnQoJGJhY2tncm91bmQsICRib3JkZXIpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQ7XG4gIGJvcmRlci1jb2xvcjogJGJvcmRlcjtcbn1cblxuQG1peGluIGNhcmQtb3V0bGluZS12YXJpYW50KCRjb2xvcikge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLWNvbG9yOiAkY29sb3I7XG59XG5cbi8vXG4vLyBJbnZlcnNlIHRleHQgd2l0aGluIGEgY2FyZCBmb3IgdXNlIHdpdGggZGFyayBiYWNrZ3JvdW5kc1xuLy9cblxuQG1peGluIGNhcmQtaW52ZXJzZSB7XG4gIC5jYXJkLWhlYWRlcixcbiAgLmNhcmQtZm9vdGVyIHtcbiAgICBib3JkZXItYm90dG9tOiAkY2FyZC1ib3JkZXItd2lkdGggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwuMik7XG4gIH1cbiAgLmNhcmQtaGVhZGVyLFxuICAuY2FyZC1mb290ZXIsXG4gIC5jYXJkLXRpdGxlLFxuICAuY2FyZC1ibG9ja3F1b3RlIHtcbiAgICBjb2xvcjogI2ZmZjtcbiAgfVxuICAuY2FyZC1saW5rLFxuICAuY2FyZC10ZXh0LFxuICAuY2FyZC1ibG9ja3F1b3RlID4gZm9vdGVyIHtcbiAgICBjb2xvcjogcmdiYSgyNTUsMjU1LDI1NSwuNjUpO1xuICB9XG4gIC5jYXJkLWxpbmsge1xuICAgIEBpbmNsdWRlIGhvdmVyLWZvY3VzIHtcbiAgICAgIGNvbG9yOiAkY2FyZC1saW5rLWhvdmVyLWNvbG9yO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gUGFnaW5hdGlvblxuXG5AbWl4aW4gcGFnaW5hdGlvbi1zaXplKCRwYWRkaW5nLXZlcnRpY2FsLCAkcGFkZGluZy1ob3Jpem9udGFsLCAkZm9udC1zaXplLCAkbGluZS1oZWlnaHQsICRib3JkZXItcmFkaXVzKSB7XG4gIC5wYWdlLWxpbmsge1xuICAgIHBhZGRpbmc6ICRwYWRkaW5nLXZlcnRpY2FsICRwYWRkaW5nLWhvcml6b250YWw7XG4gICAgZm9udC1zaXplOiAkZm9udC1zaXplO1xuICAgIGxpbmUtaGVpZ2h0OiAkbGluZS1oZWlnaHQ7XG4gIH1cblxuICAucGFnZS1pdGVtIHtcbiAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgIC5wYWdlLWxpbmsge1xuICAgICAgICBAaW5jbHVkZSBib3JkZXItbGVmdC1yYWRpdXMoJGJvcmRlci1yYWRpdXMpO1xuICAgICAgfVxuICAgIH1cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgLnBhZ2UtbGluayB7XG4gICAgICAgIEBpbmNsdWRlIGJvcmRlci1yaWdodC1yYWRpdXMoJGJvcmRlci1yYWRpdXMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gTGlzdHNcblxuLy8gVW5zdHlsZWQga2VlcHMgbGlzdCBpdGVtcyBibG9jayBsZXZlbCwganVzdCByZW1vdmVzIGRlZmF1bHQgYnJvd3NlciBwYWRkaW5nIGFuZCBsaXN0LXN0eWxlXG5AbWl4aW4gbGlzdC11bnN0eWxlZCB7XG4gIHBhZGRpbmctbGVmdDogMDtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbn1cbiIsIi8vIExpc3QgR3JvdXBzXG5cbkBtaXhpbiBsaXN0LWdyb3VwLWl0ZW0tdmFyaWFudCgkc3RhdGUsICRiYWNrZ3JvdW5kLCAkY29sb3IpIHtcbiAgLmxpc3QtZ3JvdXAtaXRlbS0jeyRzdGF0ZX0ge1xuICAgIGNvbG9yOiAkY29sb3I7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQ7XG4gIH1cblxuICBhLmxpc3QtZ3JvdXAtaXRlbS0jeyRzdGF0ZX0sXG4gIGJ1dHRvbi5saXN0LWdyb3VwLWl0ZW0tI3skc3RhdGV9IHtcbiAgICBjb2xvcjogJGNvbG9yO1xuXG4gICAgLmxpc3QtZ3JvdXAtaXRlbS1oZWFkaW5nIHtcbiAgICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGhvdmVyLWZvY3VzIHtcbiAgICAgIGNvbG9yOiAkY29sb3I7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBkYXJrZW4oJGJhY2tncm91bmQsIDUlKTtcbiAgICB9XG5cbiAgICAmLmFjdGl2ZSB7XG4gICAgICBAaW5jbHVkZSBwbGFpbi1ob3Zlci1mb2N1cyB7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7XG4gICAgICAgIGJvcmRlci1jb2xvcjogJGNvbG9yO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gSG9yaXpvbnRhbCBkaXZpZGVyc1xuLy9cbi8vIERpdmlkZXJzIChiYXNpY2FsbHkgYW4gaHIpIHdpdGhpbiBkcm9wZG93bnMgYW5kIG5hdiBsaXN0c1xuXG5AbWl4aW4gbmF2LWRpdmlkZXIoJGNvbG9yOiAjZTVlNWU1KSB7XG4gIGhlaWdodDogMXB4O1xuICBtYXJnaW46ICgkc3BhY2VyLXkgLyAyKSAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7XG59XG4iLCIvLyBGb3JtIHZhbGlkYXRpb24gc3RhdGVzXG4vL1xuLy8gVXNlZCBpbiBfZm9ybXMuc2NzcyB0byBnZW5lcmF0ZSB0aGUgZm9ybSB2YWxpZGF0aW9uIENTUyBmb3Igd2FybmluZ3MsIGVycm9ycyxcbi8vIGFuZCBzdWNjZXNzZXMuXG5cbkBtaXhpbiBmb3JtLWNvbnRyb2wtdmFsaWRhdGlvbigkY29sb3IpIHtcbiAgLy8gQ29sb3IgdGhlIGxhYmVsIGFuZCBoZWxwIHRleHRcbiAgLnRleHQtaGVscCxcbiAgLmZvcm0tY29udHJvbC1sYWJlbCxcbiAgLnJhZGlvLFxuICAuY2hlY2tib3gsXG4gIC5yYWRpby1pbmxpbmUsXG4gIC5jaGVja2JveC1pbmxpbmUsXG4gICYucmFkaW8gbGFiZWwsXG4gICYuY2hlY2tib3ggbGFiZWwsXG4gICYucmFkaW8taW5saW5lIGxhYmVsLFxuICAmLmNoZWNrYm94LWlubGluZSBsYWJlbCAge1xuICAgIGNvbG9yOiAkY29sb3I7XG4gIH1cbiAgLy8gU2V0IHRoZSBib3JkZXIgYW5kIGJveCBzaGFkb3cgb24gc3BlY2lmaWMgaW5wdXRzIHRvIG1hdGNoXG4gIC5mb3JtLWNvbnRyb2wge1xuICAgIGJvcmRlci1jb2xvcjogJGNvbG9yO1xuICAgIC8vIEBpbmNsdWRlIGJveC1zaGFkb3coaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwwLDAsLjA3NSkpOyAvLyBSZWRlY2xhcmUgc28gdHJhbnNpdGlvbnMgd29ya1xuXG4gICAgJjpmb2N1cyB7XG4gICAgICAvLyBib3JkZXItY29sb3I6IGRhcmtlbigkYm9yZGVyLWNvbG9yLCAxMCUpO1xuICAgICAgLy8gJHNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwwLDAsLjA3NSksIDAgMCA2cHggbGlnaHRlbigkYm9yZGVyLWNvbG9yLCAyMCUpO1xuICAgICAgLy8gQGluY2x1ZGUgYm94LXNoYWRvdygkc2hhZG93KTtcbiAgICB9XG4gIH1cblxuICAvLyBTZXQgdmFsaWRhdGlvbiBzdGF0ZXMgYWxzbyBmb3IgYWRkb25zXG4gIC5pbnB1dC1ncm91cC1hZGRvbiB7XG4gICAgY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItY29sb3I6ICRjb2xvcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGVuKCRjb2xvciwgNDAlKTtcbiAgfVxuICAvLyBPcHRpb25hbCBmZWVkYmFjayBpY29uXG4gIC5mb3JtLWNvbnRyb2wtZmVlZGJhY2sge1xuICAgIGNvbG9yOiAkY29sb3I7XG4gIH1cbn1cblxuLy8gRm9ybSBjb250cm9sIGZvY3VzIHN0YXRlXG4vL1xuLy8gR2VuZXJhdGUgYSBjdXN0b21pemVkIGZvY3VzIHN0YXRlIGFuZCBmb3IgYW55IGlucHV0IHdpdGggdGhlIHNwZWNpZmllZCBjb2xvcixcbi8vIHdoaWNoIGRlZmF1bHRzIHRvIHRoZSBgQGlucHV0LWJvcmRlci1mb2N1c2AgdmFyaWFibGUuXG4vL1xuLy8gV2UgaGlnaGx5IGVuY291cmFnZSB5b3UgdG8gbm90IGN1c3RvbWl6ZSB0aGUgZGVmYXVsdCB2YWx1ZSwgYnV0IGluc3RlYWQgdXNlXG4vLyB0aGlzIHRvIHR3ZWFrIGNvbG9ycyBvbiBhbiBhcy1uZWVkZWQgYmFzaXMuIFRoaXMgYWVzdGhldGljIGNoYW5nZSBpcyBiYXNlZCBvblxuLy8gV2ViS2l0J3MgZGVmYXVsdCBzdHlsZXMsIGJ1dCBhcHBsaWNhYmxlIHRvIGEgd2lkZXIgcmFuZ2Ugb2YgYnJvd3NlcnMuIEl0c1xuLy8gdXNhYmlsaXR5IGFuZCBhY2Nlc3NpYmlsaXR5IHNob3VsZCBiZSB0YWtlbiBpbnRvIGFjY291bnQgd2l0aCBhbnkgY2hhbmdlLlxuLy9cbi8vIEV4YW1wbGUgdXNhZ2U6IGNoYW5nZSB0aGUgZGVmYXVsdCBibHVlIGJvcmRlciBhbmQgc2hhZG93IHRvIHdoaXRlIGZvciBiZXR0ZXJcbi8vIGNvbnRyYXN0IGFnYWluc3QgYSBkYXJrIGdyYXkgYmFja2dyb3VuZC5cbkBtaXhpbiBmb3JtLWNvbnRyb2wtZm9jdXMoKSB7XG4gICY6Zm9jdXMge1xuICAgIGJvcmRlci1jb2xvcjogJGlucHV0LWJvcmRlci1mb2N1cztcbiAgICBvdXRsaW5lOiBub25lO1xuICAgICRzaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsMCwwLC4wNzUpLCAwIDAgOHB4ICRpbnB1dC1ib3gtc2hhZG93LWZvY3VzO1xuICAgIEBpbmNsdWRlIGJveC1zaGFkb3coJHNoYWRvdyk7XG4gIH1cbn1cblxuLy8gRm9ybSBjb250cm9sIHNpemluZ1xuLy9cbi8vIFJlbGF0aXZlIHRleHQgc2l6ZSwgcGFkZGluZywgYW5kIGJvcmRlci1yYWRpaSBjaGFuZ2VzIGZvciBmb3JtIGNvbnRyb2xzLiBGb3Jcbi8vIGhvcml6b250YWwgc2l6aW5nLCB3cmFwIGNvbnRyb2xzIGluIHRoZSBwcmVkZWZpbmVkIGdyaWQgY2xhc3Nlcy4gYDxzZWxlY3Q+YFxuLy8gZWxlbWVudCBnZXRzIHNwZWNpYWwgbG92ZSBiZWNhdXNlIGl0J3Mgc3BlY2lhbCwgYW5kIHRoYXQncyBhIGZhY3QhXG5cbkBtaXhpbiBpbnB1dC1zaXplKCRwYXJlbnQsICRpbnB1dC1oZWlnaHQsICRwYWRkaW5nLXZlcnRpY2FsLCAkcGFkZGluZy1ob3Jpem9udGFsLCAkZm9udC1zaXplLCAkbGluZS1oZWlnaHQsICRib3JkZXItcmFkaXVzKSB7XG4gICN7JHBhcmVudH0ge1xuICAgIGhlaWdodDogJGlucHV0LWhlaWdodDtcbiAgICBwYWRkaW5nOiAkcGFkZGluZy12ZXJ0aWNhbCAkcGFkZGluZy1ob3Jpem9udGFsO1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZTtcbiAgICBsaW5lLWhlaWdodDogJGxpbmUtaGVpZ2h0O1xuICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGJvcmRlci1yYWRpdXMpO1xuICB9XG5cbiAgc2VsZWN0I3skcGFyZW50fSB7XG4gICAgaGVpZ2h0OiAkaW5wdXQtaGVpZ2h0O1xuICAgIGxpbmUtaGVpZ2h0OiAkaW5wdXQtaGVpZ2h0O1xuICB9XG5cbiAgdGV4dGFyZWEjeyRwYXJlbnR9LFxuICBzZWxlY3RbbXVsdGlwbGVdI3skcGFyZW50fSB7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICB9XG59XG4iLCIvLyBQcm9ncmVzcyBiYXJzXG5cbkBtaXhpbiBwcm9ncmVzcy12YXJpYW50KCRjb2xvcikge1xuICAmW3ZhbHVlXTo6LXdlYmtpdC1wcm9ncmVzcy12YWx1ZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yO1xuICB9XG5cbiAgJlt2YWx1ZV06Oi1tb3otcHJvZ3Jlc3MtYmFyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7XG4gIH1cblxuICAvLyBJRTlcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDowXFwwKSB7XG4gICAgLnByb2dyZXNzLWJhciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7XG4gICAgfVxuICB9XG59XG4iLCIvLyBUYWJsZXNcblxuQG1peGluIHRhYmxlLXJvdy12YXJpYW50KCRzdGF0ZSwgJGJhY2tncm91bmQpIHtcbiAgLy8gRXhhY3Qgc2VsZWN0b3JzIGJlbG93IHJlcXVpcmVkIHRvIG92ZXJyaWRlIGAudGFibGUtc3RyaXBlZGAgYW5kIHByZXZlbnRcbiAgLy8gaW5oZXJpdGFuY2UgdG8gbmVzdGVkIHRhYmxlcy5cbiAgLnRhYmxlLSN7JHN0YXRlfSB7XG4gICAgJixcbiAgICA+IHRoLFxuICAgID4gdGQge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQ7XG4gICAgfVxuICB9XG5cbiAgLy8gSG92ZXIgc3RhdGVzIGZvciBgLnRhYmxlLWhvdmVyYFxuICAvLyBOb3RlOiB0aGlzIGlzIG5vdCBhdmFpbGFibGUgZm9yIGNlbGxzIG9yIHJvd3Mgd2l0aGluIGB0aGVhZGAgb3IgYHRmb290YC5cbiAgLnRhYmxlLWhvdmVyIHtcbiAgICAkaG92ZXItYmFja2dyb3VuZDogZGFya2VuKCRiYWNrZ3JvdW5kLCA1JSk7XG5cbiAgICAudGFibGUtI3skc3RhdGV9IHtcbiAgICAgIEBpbmNsdWRlIGhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGhvdmVyLWJhY2tncm91bmQ7XG5cbiAgICAgICAgPiB0ZCxcbiAgICAgICAgPiB0aCB7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGhvdmVyLWJhY2tncm91bmQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIENvbnRleHR1YWwgYmFja2dyb3VuZHNcblxuQG1peGluIGJnLXZhcmlhbnQoJHBhcmVudCwgJGNvbG9yKSB7XG4gICN7JHBhcmVudH0ge1xuICAgIGNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yICFpbXBvcnRhbnQ7XG4gIH1cbiAgYSN7JHBhcmVudH0ge1xuICAgIEBpbmNsdWRlIGhvdmVyLWZvY3VzIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IGRhcmtlbigkY29sb3IsIDEwJSk7XG4gICAgfVxuICB9XG59XG4iLCIvLyBTaW5nbGUgc2lkZSBib3JkZXItcmFkaXVzXG5cbkBtaXhpbiBib3JkZXItcmFkaXVzKCRyYWRpdXM6ICRib3JkZXItcmFkaXVzKSB7XG4gIEBpZiAkZW5hYmxlLXJvdW5kZWQge1xuICAgIGJvcmRlci1yYWRpdXM6ICRyYWRpdXM7XG4gIH1cbn1cblxuQG1peGluIGJvcmRlci10b3AtcmFkaXVzKCRyYWRpdXMpIHtcbiAgQGlmICRlbmFibGUtcm91bmRlZCB7XG4gICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6ICRyYWRpdXM7XG4gICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogJHJhZGl1cztcbiAgfVxufVxuXG5AbWl4aW4gYm9yZGVyLXJpZ2h0LXJhZGl1cygkcmFkaXVzKSB7XG4gIEBpZiAkZW5hYmxlLXJvdW5kZWQge1xuICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAkcmFkaXVzO1xuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAkcmFkaXVzO1xuICB9XG59XG5cbkBtaXhpbiBib3JkZXItYm90dG9tLXJhZGl1cygkcmFkaXVzKSB7XG4gIEBpZiAkZW5hYmxlLXJvdW5kZWQge1xuICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAkcmFkaXVzO1xuICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6ICRyYWRpdXM7XG4gIH1cbn1cblxuQG1peGluIGJvcmRlci1sZWZ0LXJhZGl1cygkcmFkaXVzKSB7XG4gIEBpZiAkZW5hYmxlLXJvdW5kZWQge1xuICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6ICRyYWRpdXM7XG4gICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogJHJhZGl1cztcbiAgfVxufVxuIiwiLy8gR3JhZGllbnRzXG5cbi8vIEhvcml6b250YWwgZ3JhZGllbnQsIGZyb20gbGVmdCB0byByaWdodFxuLy9cbi8vIENyZWF0ZXMgdHdvIGNvbG9yIHN0b3BzLCBzdGFydCBhbmQgZW5kLCBieSBzcGVjaWZ5aW5nIGEgY29sb3IgYW5kIHBvc2l0aW9uIGZvciBlYWNoIGNvbG9yIHN0b3AuXG4vLyBDb2xvciBzdG9wcyBhcmUgbm90IGF2YWlsYWJsZSBpbiBJRTkuXG5AbWl4aW4gZ3JhZGllbnQtaG9yaXpvbnRhbCgkc3RhcnQtY29sb3I6ICM1NTUsICRlbmQtY29sb3I6ICMzMzMsICRzdGFydC1wZXJjZW50OiAwJSwgJGVuZC1wZXJjZW50OiAxMDAlKSB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgJHN0YXJ0LWNvbG9yICRzdGFydC1wZXJjZW50LCAkZW5kLWNvbG9yICRlbmQtcGVyY2VudCk7XG4gIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDtcbiAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nI3tpZS1oZXgtc3RyKCRzdGFydC1jb2xvcil9JywgZW5kQ29sb3JzdHI9JyN7aWUtaGV4LXN0cigkZW5kLWNvbG9yKX0nLCBHcmFkaWVudFR5cGU9MSk7IC8vIElFOVxufVxuXG4vLyBWZXJ0aWNhbCBncmFkaWVudCwgZnJvbSB0b3AgdG8gYm90dG9tXG4vL1xuLy8gQ3JlYXRlcyB0d28gY29sb3Igc3RvcHMsIHN0YXJ0IGFuZCBlbmQsIGJ5IHNwZWNpZnlpbmcgYSBjb2xvciBhbmQgcG9zaXRpb24gZm9yIGVhY2ggY29sb3Igc3RvcC5cbi8vIENvbG9yIHN0b3BzIGFyZSBub3QgYXZhaWxhYmxlIGluIElFOS5cbkBtaXhpbiBncmFkaWVudC12ZXJ0aWNhbCgkc3RhcnQtY29sb3I6ICM1NTUsICRlbmQtY29sb3I6ICMzMzMsICRzdGFydC1wZXJjZW50OiAwJSwgJGVuZC1wZXJjZW50OiAxMDAlKSB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICRzdGFydC1jb2xvciAkc3RhcnQtcGVyY2VudCwgJGVuZC1jb2xvciAkZW5kLXBlcmNlbnQpO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7XG4gIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyN7aWUtaGV4LXN0cigkc3RhcnQtY29sb3IpfScsIGVuZENvbG9yc3RyPScje2llLWhleC1zdHIoJGVuZC1jb2xvcil9JywgR3JhZGllbnRUeXBlPTApOyAvLyBJRTlcbn1cblxuQG1peGluIGdyYWRpZW50LWRpcmVjdGlvbmFsKCRzdGFydC1jb2xvcjogIzU1NSwgJGVuZC1jb2xvcjogIzMzMywgJGRlZzogNDVkZWcpIHtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14O1xuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoJGRlZywgJHN0YXJ0LWNvbG9yLCAkZW5kLWNvbG9yKTtcbn1cbkBtaXhpbiBncmFkaWVudC1ob3Jpem9udGFsLXRocmVlLWNvbG9ycygkc3RhcnQtY29sb3I6ICMwMGIzZWUsICRtaWQtY29sb3I6ICM3YTQzYjYsICRjb2xvci1zdG9wOiA1MCUsICRlbmQtY29sb3I6ICNjMzMyNWYpIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAkc3RhcnQtY29sb3IsICRtaWQtY29sb3IgJGNvbG9yLXN0b3AsICRlbmQtY29sb3IpO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScje2llLWhleC1zdHIoJHN0YXJ0LWNvbG9yKX0nLCBlbmRDb2xvcnN0cj0nI3tpZS1oZXgtc3RyKCRlbmQtY29sb3IpfScsIEdyYWRpZW50VHlwZT0xKTsgLy8gSUU5IGdldHMgbm8gY29sb3Itc3RvcCBhdCBhbGwgZm9yIHByb3BlciBmYWxsYmFja1xufVxuQG1peGluIGdyYWRpZW50LXZlcnRpY2FsLXRocmVlLWNvbG9ycygkc3RhcnQtY29sb3I6ICMwMGIzZWUsICRtaWQtY29sb3I6ICM3YTQzYjYsICRjb2xvci1zdG9wOiA1MCUsICRlbmQtY29sb3I6ICNjMzMyNWYpIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KCRzdGFydC1jb2xvciwgJG1pZC1jb2xvciAkY29sb3Itc3RvcCwgJGVuZC1jb2xvcik7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyN7aWUtaGV4LXN0cigkc3RhcnQtY29sb3IpfScsIGVuZENvbG9yc3RyPScje2llLWhleC1zdHIoJGVuZC1jb2xvcil9JywgR3JhZGllbnRUeXBlPTApOyAvLyBJRTkgZ2V0cyBubyBjb2xvci1zdG9wIGF0IGFsbCBmb3IgcHJvcGVyIGZhbGxiYWNrXG59XG5AbWl4aW4gZ3JhZGllbnQtcmFkaWFsKCRpbm5lci1jb2xvcjogIzU1NSwgJG91dGVyLWNvbG9yOiAjMzMzKSB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHJhZGlhbC1ncmFkaWVudChjaXJjbGUsICRpbm5lci1jb2xvciwgJG91dGVyLWNvbG9yKTtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbn1cbkBtaXhpbiBncmFkaWVudC1zdHJpcGVkKCRjb2xvcjogcmdiYSgyNTUsMjU1LDI1NSwuMTUpLCAkYW5nbGU6IDQ1ZGVnKSB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCgkYW5nbGUsICRjb2xvciAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCAkY29sb3IgNTAlLCAkY29sb3IgNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTtcbn0iLCJAbWl4aW4gY2xlYXJmaXgoKSB7XG4gICY6OmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIGNsZWFyOiBib3RoO1xuICB9XG59XG4iLCIvLyBDZW50ZXItYWxpZ24gYSBibG9jayBsZXZlbCBlbGVtZW50XG5cbkBtaXhpbiBjZW50ZXItYmxvY2soKSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW4tbGVmdDogYXV0bztcbiAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xufVxuIiwiLy8gRnJhbWV3b3JrIGdyaWQgZ2VuZXJhdGlvblxuLy9cbi8vIFVzZWQgb25seSBieSBCb290c3RyYXAgdG8gZ2VuZXJhdGUgdGhlIGNvcnJlY3QgbnVtYmVyIG9mIGdyaWQgY2xhc3NlcyBnaXZlblxuLy8gYW55IHZhbHVlIG9mIGAkZ3JpZC1jb2x1bW5zYC5cblxuQG1peGluIG1ha2UtZ3JpZC1jb2x1bW5zKCRjb2x1bW5zOiAkZ3JpZC1jb2x1bW5zLCAkZ3V0dGVyOiAkZ3JpZC1ndXR0ZXItd2lkdGgsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgLy8gQ29tbW9uIHByb3BlcnRpZXMgZm9yIGFsbCBicmVha3BvaW50c1xuICAlZ3JpZC1jb2x1bW4ge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAvLyBQcmV2ZW50IGNvbHVtbnMgZnJvbSBjb2xsYXBzaW5nIHdoZW4gZW1wdHlcbiAgICBtaW4taGVpZ2h0OiAxcHg7XG4gICAgLy8gSW5uZXIgZ3V0dGVyIHZpYSBwYWRkaW5nXG4gICAgcGFkZGluZy1sZWZ0OiAoJGd1dHRlciAvIDIpO1xuICAgIHBhZGRpbmctcmlnaHQ6ICgkZ3V0dGVyIC8gMik7XG4gIH1cbiAgQGVhY2ggJGJyZWFrcG9pbnQgaW4gbWFwLWtleXMoJGJyZWFrcG9pbnRzKSB7XG4gICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkY29sdW1ucyB7XG4gICAgICAuY29sLSN7JGJyZWFrcG9pbnR9LSN7JGl9IHtcbiAgICAgICAgQGV4dGVuZCAlZ3JpZC1jb2x1bW47XG4gICAgICB9XG4gICAgfVxuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJGJyZWFrcG9pbnQpIHtcbiAgICAgIC8vIFdvcmsgYXJvdW5kIGNyb3NzLW1lZGlhIEBleHRlbmQgKGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzL3Nhc3MvaXNzdWVzLzEwNTApXG4gICAgICAlZ3JpZC1jb2x1bW4tZmxvYXQtI3skYnJlYWtwb2ludH0ge1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgIH1cbiAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGNvbHVtbnMge1xuICAgICAgICAuY29sLSN7JGJyZWFrcG9pbnR9LSN7JGl9IHtcbiAgICAgICAgICBAaWYgbm90ICRlbmFibGUtZmxleCB7XG4gICAgICAgICAgICBAZXh0ZW5kICVncmlkLWNvbHVtbi1mbG9hdC0jeyRicmVha3BvaW50fTtcbiAgICAgICAgICB9XG4gICAgICAgICAgQGluY2x1ZGUgbWFrZS1jb2wtc3BhbigkaSwgJGNvbHVtbnMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWFjaCAkbW9kaWZpZXIgaW4gKHB1bGwsIHB1c2gsIG9mZnNldCkge1xuICAgICAgICBAZm9yICRpIGZyb20gMCB0aHJvdWdoICRjb2x1bW5zIHtcbiAgICAgICAgICAuY29sLSN7JGJyZWFrcG9pbnR9LSN7JG1vZGlmaWVyfS0jeyRpfSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBtYWtlLWNvbC1tb2RpZmllcigkbW9kaWZpZXIsICRpLCAkY29sdW1ucylcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vLyBHcmlkIHN5c3RlbVxuLy9cbi8vIEdlbmVyYXRlIHNlbWFudGljIGdyaWQgY29sdW1ucyB3aXRoIHRoZXNlIG1peGlucy5cblxuQG1peGluIG1ha2UtY29udGFpbmVyKCRndXR0ZXI6ICRncmlkLWd1dHRlci13aWR0aCkge1xuICBtYXJnaW4tbGVmdDogYXV0bztcbiAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICBwYWRkaW5nLWxlZnQ6ICAoJGd1dHRlciAvIDIpO1xuICBwYWRkaW5nLXJpZ2h0OiAoJGd1dHRlciAvIDIpO1xuICBAaWYgbm90ICRlbmFibGUtZmxleCB7XG4gICAgQGluY2x1ZGUgY2xlYXJmaXgoKTtcbiAgfVxufVxuXG5cbi8vIEZvciBlYWNoIGJyZWFrcG9pbnQsIGRlZmluZSB0aGUgbWF4aW11bSB3aWR0aCBvZiB0aGUgY29udGFpbmVyIGluIGEgbWVkaWEgcXVlcnlcbkBtaXhpbiBtYWtlLWNvbnRhaW5lci1tYXgtd2lkdGhzKCRtYXgtd2lkdGhzOiAkY29udGFpbmVyLW1heC13aWR0aHMpIHtcbiAgQGVhY2ggJGJyZWFrcG9pbnQsICRjb250YWluZXItbWF4LXdpZHRoIGluICRtYXgtd2lkdGhzIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRicmVha3BvaW50KSB7XG4gICAgICBtYXgtd2lkdGg6ICRjb250YWluZXItbWF4LXdpZHRoO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbWFrZS1yb3coJGd1dHRlcjogJGdyaWQtZ3V0dGVyLXdpZHRoKSB7XG4gIEBpZiAkZW5hYmxlLWZsZXgge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBjbGVhcmZpeCgpO1xuICB9XG4gIG1hcmdpbi1sZWZ0OiAgKCRndXR0ZXIgLyAtMik7XG4gIG1hcmdpbi1yaWdodDogKCRndXR0ZXIgLyAtMik7XG59XG5cbkBtaXhpbiBtYWtlLWNvbCgkZ3V0dGVyOiAkZ3JpZC1ndXR0ZXItd2lkdGgpIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBAaWYgbm90ICRlbmFibGUtZmxleCB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gIH1cbiAgbWluLWhlaWdodDogMXB4O1xuICBwYWRkaW5nLWxlZnQ6ICAoJGd1dHRlciAvIDIpO1xuICBwYWRkaW5nLXJpZ2h0OiAoJGd1dHRlciAvIDIpO1xufVxuXG5AbWl4aW4gbWFrZS1jb2wtc3Bhbigkc2l6ZSwgJGNvbHVtbnM6ICRncmlkLWNvbHVtbnMpIHtcbiAgQGlmICRlbmFibGUtZmxleCB7XG4gICAgZmxleDogMCAwIHBlcmNlbnRhZ2UoJHNpemUgLyAkY29sdW1ucyk7XG4gIH0gQGVsc2Uge1xuICAgIHdpZHRoOiBwZXJjZW50YWdlKCRzaXplIC8gJGNvbHVtbnMpO1xuICB9XG59XG5cbkBtaXhpbiBtYWtlLWNvbC1vZmZzZXQoJHNpemUsICRjb2x1bW5zOiAkZ3JpZC1jb2x1bW5zKSB7XG4gIG1hcmdpbi1sZWZ0OiBwZXJjZW50YWdlKCRzaXplIC8gJGNvbHVtbnMpO1xufVxuXG5AbWl4aW4gbWFrZS1jb2wtcHVzaCgkc2l6ZSwgJGNvbHVtbnM6ICRncmlkLWNvbHVtbnMpIHtcbiAgbGVmdDogaWYoJHNpemUgPiAwLCBwZXJjZW50YWdlKCRzaXplIC8gJGNvbHVtbnMpLCBhdXRvKTtcbn1cblxuQG1peGluIG1ha2UtY29sLXB1bGwoJHNpemUsICRjb2x1bW5zOiAkZ3JpZC1jb2x1bW5zKSB7XG4gIHJpZ2h0OiBpZigkc2l6ZSA+IDAsIHBlcmNlbnRhZ2UoJHNpemUgLyAkY29sdW1ucyksIGF1dG8pO1xufVxuXG5AbWl4aW4gbWFrZS1jb2wtbW9kaWZpZXIoJHR5cGUsICRzaXplLCAkY29sdW1ucykge1xuICAvLyBXb3JrIGFyb3VuZCB0aGUgbGFjayBvZiBkeW5hbWljIG1peGluIEBpbmNsdWRlIHN1cHBvcnQgKGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzL3Nhc3MvaXNzdWVzLzYyNilcbiAgQGlmICR0eXBlID09IHB1c2gge1xuICAgIEBpbmNsdWRlIG1ha2UtY29sLXB1c2goJHNpemUsICRjb2x1bW5zKTtcbiAgfSBAZWxzZSBpZiAkdHlwZSA9PSBwdWxsIHtcbiAgICBAaW5jbHVkZSBtYWtlLWNvbC1wdWxsKCRzaXplLCAkY29sdW1ucyk7XG4gIH0gQGVsc2UgaWYgJHR5cGUgPT0gb2Zmc2V0IHtcbiAgICBAaW5jbHVkZSBtYWtlLWNvbC1vZmZzZXQoJHNpemUsICRjb2x1bW5zKTtcbiAgfVxufVxuIiwiQG1peGluIHB1bGwtbGVmdCB7XG4gIGZsb2F0OiBsZWZ0ICFpbXBvcnRhbnQ7XG59XG5AbWl4aW4gcHVsbC1yaWdodCB7XG4gIGZsb2F0OiByaWdodCAhaW1wb3J0YW50O1xufVxuIiwiLyohIG5vcm1hbGl6ZS5jc3MgdjMuMC4zIHwgTUlUIExpY2Vuc2UgfCBnaXRodWIuY29tL25lY29sYXMvbm9ybWFsaXplLmNzcyAqL1xuXG4vL1xuLy8gMS4gU2V0IGRlZmF1bHQgZm9udCBmYW1pbHkgdG8gc2Fucy1zZXJpZi5cbi8vIDIuIFByZXZlbnQgaU9TIGFuZCBJRSB0ZXh0IHNpemUgYWRqdXN0IGFmdGVyIGRldmljZSBvcmllbnRhdGlvbiBjaGFuZ2UsXG4vLyAgICB3aXRob3V0IGRpc2FibGluZyB1c2VyIHpvb20uXG4vL1xuXG5odG1sIHtcbiAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7IC8vIDFcbiAgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC8vIDJcbiAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAvLyAyXG59XG5cbi8vXG4vLyBSZW1vdmUgZGVmYXVsdCBtYXJnaW4uXG4vL1xuXG5ib2R5IHtcbiAgbWFyZ2luOiAwO1xufVxuXG4vLyBIVE1MNSBkaXNwbGF5IGRlZmluaXRpb25zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vL1xuLy8gQ29ycmVjdCBgYmxvY2tgIGRpc3BsYXkgbm90IGRlZmluZWQgZm9yIGFueSBIVE1MNSBlbGVtZW50IGluIElFIDgvOS5cbi8vIENvcnJlY3QgYGJsb2NrYCBkaXNwbGF5IG5vdCBkZWZpbmVkIGZvciBgZGV0YWlsc2Agb3IgYHN1bW1hcnlgIGluIElFIDEwLzExXG4vLyBhbmQgRmlyZWZveC5cbi8vIENvcnJlY3QgYGJsb2NrYCBkaXNwbGF5IG5vdCBkZWZpbmVkIGZvciBgbWFpbmAgaW4gSUUgMTEuXG4vL1xuXG5hcnRpY2xlLFxuYXNpZGUsXG5kZXRhaWxzLFxuZmlnY2FwdGlvbixcbmZpZ3VyZSxcbmZvb3RlcixcbmhlYWRlcixcbmhncm91cCxcbm1haW4sXG5tZW51LFxubmF2LFxuc2VjdGlvbixcbnN1bW1hcnkge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLy9cbi8vIDEuIENvcnJlY3QgYGlubGluZS1ibG9ja2AgZGlzcGxheSBub3QgZGVmaW5lZCBpbiBJRSA4LzkuXG4vLyAyLiBOb3JtYWxpemUgdmVydGljYWwgYWxpZ25tZW50IG9mIGBwcm9ncmVzc2AgaW4gQ2hyb21lLCBGaXJlZm94LCBhbmQgT3BlcmEuXG4vL1xuXG5hdWRpbyxcbmNhbnZhcyxcbnByb2dyZXNzLFxudmlkZW8ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IC8vIDFcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOyAvLyAyXG59XG5cbi8vXG4vLyBQcmV2ZW50IG1vZGVybiBicm93c2VycyBmcm9tIGRpc3BsYXlpbmcgYGF1ZGlvYCB3aXRob3V0IGNvbnRyb2xzLlxuLy8gUmVtb3ZlIGV4Y2VzcyBoZWlnaHQgaW4gaU9TIDUgZGV2aWNlcy5cbi8vXG5cbmF1ZGlvOm5vdChbY29udHJvbHNdKSB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIGhlaWdodDogMDtcbn1cblxuLy9cbi8vIEFkZHJlc3MgYFtoaWRkZW5dYCBzdHlsaW5nIG5vdCBwcmVzZW50IGluIElFIDgvOS8xMC5cbi8vIEhpZGUgdGhlIGB0ZW1wbGF0ZWAgZWxlbWVudCBpbiBJRSA4LzkvMTAvMTEsIFNhZmFyaSwgYW5kIEZpcmVmb3ggPCAyMi5cbi8vXG5cbltoaWRkZW5dLFxudGVtcGxhdGUge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4vLyBMaW5rc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy9cbi8vIFJlbW92ZSB0aGUgZ3JheSBiYWNrZ3JvdW5kIGNvbG9yIGZyb20gYWN0aXZlIGxpbmtzIGluIElFIDEwLlxuLy9cblxuYSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4vL1xuLy8gSW1wcm92ZSByZWFkYWJpbGl0eSBvZiBmb2N1c2VkIGVsZW1lbnRzIHdoZW4gdGhleSBhcmUgYWxzbyBpbiBhblxuLy8gYWN0aXZlL2hvdmVyIHN0YXRlLlxuLy9cblxuYSB7XG4gICY6YWN0aXZlIHtcbiAgICBvdXRsaW5lOiAwO1xuICB9XG4gICY6aG92ZXIge1xuICAgIG91dGxpbmU6IDA7XG4gIH1cbn1cblxuLy8gVGV4dC1sZXZlbCBzZW1hbnRpY3Ncbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vXG4vLyBBZGRyZXNzIHN0eWxpbmcgbm90IHByZXNlbnQgaW4gSUUgOC85LzEwLzExLCBTYWZhcmksIGFuZCBDaHJvbWUuXG4vL1xuXG5hYmJyW3RpdGxlXSB7XG4gIGJvcmRlci1ib3R0b206IDFweCBkb3R0ZWQ7XG59XG5cbi8vXG4vLyBBZGRyZXNzIHN0eWxlIHNldCB0byBgYm9sZGVyYCBpbiBGaXJlZm94IDQrLCBTYWZhcmksIGFuZCBDaHJvbWUuXG4vL1xuXG5iLFxuc3Ryb25nIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi8vXG4vLyBBZGRyZXNzIHN0eWxpbmcgbm90IHByZXNlbnQgaW4gU2FmYXJpIGFuZCBDaHJvbWUuXG4vL1xuXG5kZm4ge1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG59XG5cbi8vXG4vLyBBZGRyZXNzIHZhcmlhYmxlIGBoMWAgZm9udC1zaXplIGFuZCBtYXJnaW4gd2l0aGluIGBzZWN0aW9uYCBhbmQgYGFydGljbGVgXG4vLyBjb250ZXh0cyBpbiBGaXJlZm94IDQrLCBTYWZhcmksIGFuZCBDaHJvbWUuXG4vL1xuXG5oMSB7XG4gIGZvbnQtc2l6ZTogMmVtO1xuICBtYXJnaW46IDAuNjdlbSAwO1xufVxuXG4vL1xuLy8gQWRkcmVzcyBzdHlsaW5nIG5vdCBwcmVzZW50IGluIElFIDgvOS5cbi8vXG5cbm1hcmsge1xuICBiYWNrZ3JvdW5kOiAjZmYwO1xuICBjb2xvcjogIzAwMDtcbn1cblxuLy9cbi8vIEFkZHJlc3MgaW5jb25zaXN0ZW50IGFuZCB2YXJpYWJsZSBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuLy9cblxuc21hbGwge1xuICBmb250LXNpemU6IDgwJTtcbn1cblxuLy9cbi8vIFByZXZlbnQgYHN1YmAgYW5kIGBzdXBgIGFmZmVjdGluZyBgbGluZS1oZWlnaHRgIGluIGFsbCBicm93c2Vycy5cbi8vXG5cbnN1YixcbnN1cCB7XG4gIGZvbnQtc2l6ZTogNzUlO1xuICBsaW5lLWhlaWdodDogMDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG59XG5cbnN1cCB7XG4gIHRvcDogLTAuNWVtO1xufVxuXG5zdWIge1xuICBib3R0b206IC0wLjI1ZW07XG59XG5cbi8vIEVtYmVkZGVkIGNvbnRlbnRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vXG4vLyBSZW1vdmUgYm9yZGVyIHdoZW4gaW5zaWRlIGBhYCBlbGVtZW50IGluIElFIDgvOS8xMC5cbi8vXG5cbmltZyB7XG4gIGJvcmRlcjogMDtcbn1cblxuLy9cbi8vIENvcnJlY3Qgb3ZlcmZsb3cgbm90IGhpZGRlbiBpbiBJRSA5LzEwLzExLlxuLy9cblxuc3ZnOm5vdCg6cm9vdCkge1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4vLyBHcm91cGluZyBjb250ZW50XG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vL1xuLy8gQWRkcmVzcyBtYXJnaW4gbm90IHByZXNlbnQgaW4gSUUgOC85IGFuZCBTYWZhcmkuXG4vL1xuXG5maWd1cmUge1xuICBtYXJnaW46IDFlbSA0MHB4O1xufVxuXG4vL1xuLy8gQWRkcmVzcyBkaWZmZXJlbmNlcyBiZXR3ZWVuIEZpcmVmb3ggYW5kIG90aGVyIGJyb3dzZXJzLlxuLy9cblxuaHIge1xuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbiAgaGVpZ2h0OiAwO1xufVxuXG4vL1xuLy8gQ29udGFpbiBvdmVyZmxvdyBpbiBhbGwgYnJvd3NlcnMuXG4vL1xuXG5wcmUge1xuICBvdmVyZmxvdzogYXV0bztcbn1cblxuLy9cbi8vIEFkZHJlc3Mgb2RkIGBlbWAtdW5pdCBmb250IHNpemUgcmVuZGVyaW5nIGluIGFsbCBicm93c2Vycy5cbi8vXG5cbmNvZGUsXG5rYmQsXG5wcmUsXG5zYW1wIHtcbiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSwgbW9ub3NwYWNlO1xuICBmb250LXNpemU6IDFlbTtcbn1cblxuLy8gRm9ybXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vXG4vLyBLbm93biBsaW1pdGF0aW9uOiBieSBkZWZhdWx0LCBDaHJvbWUgYW5kIFNhZmFyaSBvbiBPUyBYIGFsbG93IHZlcnkgbGltaXRlZFxuLy8gc3R5bGluZyBvZiBgc2VsZWN0YCwgdW5sZXNzIGEgYGJvcmRlcmAgcHJvcGVydHkgaXMgc2V0LlxuLy9cblxuLy9cbi8vIDEuIENvcnJlY3QgY29sb3Igbm90IGJlaW5nIGluaGVyaXRlZC5cbi8vICAgIEtub3duIGlzc3VlOiBhZmZlY3RzIGNvbG9yIG9mIGRpc2FibGVkIGVsZW1lbnRzLlxuLy8gMi4gQ29ycmVjdCBmb250IHByb3BlcnRpZXMgbm90IGJlaW5nIGluaGVyaXRlZC5cbi8vIDMuIEFkZHJlc3MgbWFyZ2lucyBzZXQgZGlmZmVyZW50bHkgaW4gRmlyZWZveCA0KywgU2FmYXJpLCBhbmQgQ2hyb21lLlxuLy9cblxuYnV0dG9uLFxuaW5wdXQsXG5vcHRncm91cCxcbnNlbGVjdCxcbnRleHRhcmVhIHtcbiAgY29sb3I6IGluaGVyaXQ7IC8vIDFcbiAgZm9udDogaW5oZXJpdDsgLy8gMlxuICBtYXJnaW46IDA7IC8vIDNcbn1cblxuLy9cbi8vIEFkZHJlc3MgYG92ZXJmbG93YCBzZXQgdG8gYGhpZGRlbmAgaW4gSUUgOC85LzEwLzExLlxuLy9cblxuYnV0dG9uIHtcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG59XG5cbi8vXG4vLyBBZGRyZXNzIGluY29uc2lzdGVudCBgdGV4dC10cmFuc2Zvcm1gIGluaGVyaXRhbmNlIGZvciBgYnV0dG9uYCBhbmQgYHNlbGVjdGAuXG4vLyBBbGwgb3RoZXIgZm9ybSBjb250cm9sIGVsZW1lbnRzIGRvIG5vdCBpbmhlcml0IGB0ZXh0LXRyYW5zZm9ybWAgdmFsdWVzLlxuLy8gQ29ycmVjdCBgYnV0dG9uYCBzdHlsZSBpbmhlcml0YW5jZSBpbiBGaXJlZm94LCBJRSA4LzkvMTAvMTEsIGFuZCBPcGVyYS5cbi8vIENvcnJlY3QgYHNlbGVjdGAgc3R5bGUgaW5oZXJpdGFuY2UgaW4gRmlyZWZveC5cbi8vXG5cbmJ1dHRvbixcbnNlbGVjdCB7XG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xufVxuXG4vL1xuLy8gMS4gQXZvaWQgdGhlIFdlYktpdCBidWcgaW4gQW5kcm9pZCA0LjAuKiB3aGVyZSAoMikgZGVzdHJveXMgbmF0aXZlIGBhdWRpb2Bcbi8vICAgIGFuZCBgdmlkZW9gIGNvbnRyb2xzLlxuLy8gMi4gQ29ycmVjdCBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIGBpbnB1dGAgdHlwZXMgaW4gaU9TLlxuLy8gMy4gSW1wcm92ZSB1c2FiaWxpdHkgYW5kIGNvbnNpc3RlbmN5IG9mIGN1cnNvciBzdHlsZSBiZXR3ZWVuIGltYWdlLXR5cGVcbi8vICAgIGBpbnB1dGAgYW5kIG90aGVycy5cbi8vXG5cbmJ1dHRvbixcbmh0bWwgaW5wdXRbdHlwZT1cImJ1dHRvblwiXSwgLy8gMVxuaW5wdXRbdHlwZT1cInJlc2V0XCJdLFxuaW5wdXRbdHlwZT1cInN1Ym1pdFwiXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOyAvLyAyXG4gIGN1cnNvcjogcG9pbnRlcjsgLy8gM1xufVxuXG4vL1xuLy8gUmUtc2V0IGRlZmF1bHQgY3Vyc29yIGZvciBkaXNhYmxlZCBlbGVtZW50cy5cbi8vXG5cbmJ1dHRvbltkaXNhYmxlZF0sXG5odG1sIGlucHV0W2Rpc2FibGVkXSB7XG4gIGN1cnNvcjogZGVmYXVsdDtcbn1cblxuLy9cbi8vIFJlbW92ZSBpbm5lciBwYWRkaW5nIGFuZCBib3JkZXIgaW4gRmlyZWZveCA0Ky5cbi8vXG5cbmJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcixcbmlucHV0OjotbW96LWZvY3VzLWlubmVyIHtcbiAgYm9yZGVyOiAwO1xuICBwYWRkaW5nOiAwO1xufVxuXG4vL1xuLy8gQWRkcmVzcyBGaXJlZm94IDQrIHNldHRpbmcgYGxpbmUtaGVpZ2h0YCBvbiBgaW5wdXRgIHVzaW5nIGAhaW1wb3J0YW50YCBpblxuLy8gdGhlIFVBIHN0eWxlc2hlZXQuXG4vL1xuXG5pbnB1dCB7XG4gIGxpbmUtaGVpZ2h0OiBub3JtYWw7XG59XG5cbi8vXG4vLyBJdCdzIHJlY29tbWVuZGVkIHRoYXQgeW91IGRvbid0IGF0dGVtcHQgdG8gc3R5bGUgdGhlc2UgZWxlbWVudHMuXG4vLyBGaXJlZm94J3MgaW1wbGVtZW50YXRpb24gZG9lc24ndCByZXNwZWN0IGJveC1zaXppbmcsIHBhZGRpbmcsIG9yIHdpZHRoLlxuLy9cbi8vIDEuIEFkZHJlc3MgYm94IHNpemluZyBzZXQgdG8gYGNvbnRlbnQtYm94YCBpbiBJRSA4LzkvMTAuXG4vLyAyLiBSZW1vdmUgZXhjZXNzIHBhZGRpbmcgaW4gSUUgOC85LzEwLlxuLy9cblxuaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdLFxuaW5wdXRbdHlwZT1cInJhZGlvXCJdIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDsgLy8gMVxuICBwYWRkaW5nOiAwOyAvLyAyXG59XG5cbi8vXG4vLyBGaXggdGhlIGN1cnNvciBzdHlsZSBmb3IgQ2hyb21lJ3MgaW5jcmVtZW50L2RlY3JlbWVudCBidXR0b25zLiBGb3IgY2VydGFpblxuLy8gYGZvbnQtc2l6ZWAgdmFsdWVzIG9mIHRoZSBgaW5wdXRgLCBpdCBjYXVzZXMgdGhlIGN1cnNvciBzdHlsZSBvZiB0aGVcbi8vIGRlY3JlbWVudCBidXR0b24gdG8gY2hhbmdlIGZyb20gYGRlZmF1bHRgIHRvIGB0ZXh0YC5cbi8vXG5cbmlucHV0W3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sXG5pbnB1dFt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHtcbiAgaGVpZ2h0OiBhdXRvO1xufVxuXG4vL1xuLy8gMS4gQWRkcmVzcyBgYXBwZWFyYW5jZWAgc2V0IHRvIGBzZWFyY2hmaWVsZGAgaW4gU2FmYXJpIGFuZCBDaHJvbWUuXG4vLyAyLiBBZGRyZXNzIGBib3gtc2l6aW5nYCBzZXQgdG8gYGJvcmRlci1ib3hgIGluIFNhZmFyaSBhbmQgQ2hyb21lLlxuLy9cblxuaW5wdXRbdHlwZT1cInNlYXJjaFwiXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogdGV4dGZpZWxkOyAvLyAxXG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94OyAvLzJcbn1cblxuLy9cbi8vIFJlbW92ZSBpbm5lciBwYWRkaW5nIGFuZCBzZWFyY2ggY2FuY2VsIGJ1dHRvbiBpbiBTYWZhcmkgYW5kIENocm9tZSBvbiBPUyBYLlxuLy8gU2FmYXJpIChidXQgbm90IENocm9tZSkgY2xpcHMgdGhlIGNhbmNlbCBidXR0b24gd2hlbiB0aGUgc2VhcmNoIGlucHV0IGhhc1xuLy8gcGFkZGluZyAoYW5kIGB0ZXh0ZmllbGRgIGFwcGVhcmFuY2UpLlxuLy9cblxuaW5wdXRbdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbixcbmlucHV0W3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG59XG5cbi8vXG4vLyBEZWZpbmUgY29uc2lzdGVudCBib3JkZXIsIG1hcmdpbiwgYW5kIHBhZGRpbmcuXG4vL1xuXG5maWVsZHNldCB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNjMGMwYzA7XG4gIG1hcmdpbjogMCAycHg7XG4gIHBhZGRpbmc6IDAuMzVlbSAwLjYyNWVtIDAuNzVlbTtcbn1cblxuLy9cbi8vIDEuIENvcnJlY3QgYGNvbG9yYCBub3QgYmVpbmcgaW5oZXJpdGVkIGluIElFIDgvOS8xMC8xMS5cbi8vIDIuIFJlbW92ZSBwYWRkaW5nIHNvIHBlb3BsZSBhcmVuJ3QgY2F1Z2h0IG91dCBpZiB0aGV5IHplcm8gb3V0IGZpZWxkc2V0cy5cbi8vXG5cbmxlZ2VuZCB7XG4gIGJvcmRlcjogMDsgLy8gMVxuICBwYWRkaW5nOiAwOyAvLyAyXG59XG5cbi8vXG4vLyBSZW1vdmUgZGVmYXVsdCB2ZXJ0aWNhbCBzY3JvbGxiYXIgaW4gSUUgOC85LzEwLzExLlxuLy9cblxudGV4dGFyZWEge1xuICBvdmVyZmxvdzogYXV0bztcbn1cblxuLy9cbi8vIERvbid0IGluaGVyaXQgdGhlIGBmb250LXdlaWdodGAgKGFwcGxpZWQgYnkgYSBydWxlIGFib3ZlKS5cbi8vIE5PVEU6IHRoZSBkZWZhdWx0IGNhbm5vdCBzYWZlbHkgYmUgY2hhbmdlZCBpbiBDaHJvbWUgYW5kIFNhZmFyaSBvbiBPUyBYLlxuLy9cblxub3B0Z3JvdXAge1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuLy8gVGFibGVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vL1xuLy8gUmVtb3ZlIG1vc3Qgc3BhY2luZyBiZXR3ZWVuIHRhYmxlIGNlbGxzLlxuLy9cblxudGFibGUge1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICBib3JkZXItc3BhY2luZzogMDtcbn1cblxudGQsXG50aCB7XG4gIHBhZGRpbmc6IDA7XG59XG4iLCIvLyBTb3VyY2U6IGh0dHBzOi8vZ2l0aHViLmNvbS9oNWJwL2h0bWw1LWJvaWxlcnBsYXRlL2Jsb2IvbWFzdGVyL3NyYy9jc3MvbWFpbi5jc3NcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFByaW50IHN0eWxlcy5cbi8vIElubGluZWQgdG8gYXZvaWQgdGhlIGFkZGl0aW9uYWwgSFRUUCByZXF1ZXN0OiBoNWJwLmNvbS9yXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5AbWVkaWEgcHJpbnQge1xuICAqLFxuICAqOjpiZWZvcmUsXG4gICo6OmFmdGVyIHtcbiAgICB0ZXh0LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xuICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxuXG4gIGEsXG4gIGE6dmlzaXRlZCB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gIH1cblxuICBhYmJyW3RpdGxlXTo6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiIChcIiBhdHRyKHRpdGxlKSBcIilcIjtcbiAgfVxuXG4gIHByZSxcbiAgYmxvY2txdW90ZSB7XG4gICAgYm9yZGVyOiAkYm9yZGVyLXdpZHRoIHNvbGlkICM5OTk7XG4gICAgcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkO1xuICB9XG5cbiAgdGhlYWQge1xuICAgIGRpc3BsYXk6IHRhYmxlLWhlYWRlci1ncm91cDsgLy8gaDVicC5jb20vdFxuICB9XG5cbiAgdHIsXG4gIGltZyB7XG4gICAgcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkO1xuICB9XG5cbiAgaW1nIHtcbiAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcbiAgfVxuXG4gIHAsXG4gIGgyLFxuICBoMyB7XG4gICAgb3JwaGFuczogMztcbiAgICB3aWRvd3M6IDM7XG4gIH1cblxuICBoMixcbiAgaDMge1xuICAgIHBhZ2UtYnJlYWstYWZ0ZXI6IGF2b2lkO1xuICB9XG5cbiAgLy8gQm9vdHN0cmFwIHNwZWNpZmljIGNoYW5nZXMgc3RhcnRcblxuICAvLyBCb290c3RyYXAgY29tcG9uZW50c1xuICAubmF2YmFyIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gIC5idG4sXG4gIC5kcm9wdXAgPiAuYnRuIHtcbiAgICA+IC5jYXJldCB7XG4gICAgICBib3JkZXItdG9wLWNvbG9yOiAjMDAwICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG4gIC5sYWJlbCB7XG4gICAgYm9yZGVyOiAkYm9yZGVyLXdpZHRoIHNvbGlkICMwMDA7XG4gIH1cblxuICAudGFibGUge1xuICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2UgIWltcG9ydGFudDtcblxuICAgIHRkLFxuICAgIHRoIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmYgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cbiAgLnRhYmxlLWJvcmRlcmVkIHtcbiAgICB0aCxcbiAgICB0ZCB7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG5cbiAgLy8gQm9vdHN0cmFwIHNwZWNpZmljIGNoYW5nZXMgZW5kXG59XG4iLCIvLyBSZWJvb3Rcbi8vXG4vLyBHbG9iYWwgcmVzZXRzIHRvIGNvbW1vbiBIVE1MIGVsZW1lbnRzIGFuZCBtb3JlIGZvciBlYXNpZXIgdXNhZ2UgYnkgQm9vdHN0cmFwLlxuLy8gQWRkcyBhZGRpdGlvbmFsIHJ1bGVzIG9uIHRvcCBvZiBOb3JtYWxpemUuY3NzLCBpbmNsdWRpbmcgc2V2ZXJhbCBvdmVycmlkZXMuXG5cblxuLy8gUmVzZXQgdGhlIGJveC1zaXppbmdcbi8vXG4vLyBDaGFuZ2UgZnJvbSBgYm94LXNpemluZzogY29udGVudC1ib3hgIHRvIGBib3JkZXItYm94YCBzbyB0aGF0IHdoZW4geW91IGFkZFxuLy8gYHBhZGRpbmdgIG9yIGBib3JkZXJgcyB0byBhbiBlbGVtZW50LCB0aGUgb3ZlcmFsbCBkZWNsYXJlZCBgd2lkdGhgIGRvZXMgbm90XG4vLyBjaGFuZ2UuIEZvciBleGFtcGxlLCBgd2lkdGg6IDEwMHB4O2Agd2lsbCBhbHdheXMgYmUgYDEwMHB4YCBkZXNwaXRlIHRoZVxuLy8gYGJvcmRlcjogMTBweCBzb2xpZCByZWQ7YCBhbmQgYHBhZGRpbmc6IDIwcHg7YC5cbi8vXG4vLyBIZWFkcyB1cCEgVGhpcyByZXNldCBtYXkgY2F1c2UgY29uZmxpY3RzIHdpdGggc29tZSB0aGlyZC1wYXJ0eSB3aWRnZXRzLiBGb3Jcbi8vIHJlY29tbWVuZGF0aW9ucyBvbiByZXNvbHZpbmcgc3VjaCBjb25mbGljdHMsIHNlZVxuLy8gaHR0cDovL2dldGJvb3RzdHJhcC5jb20vZ2V0dGluZy1zdGFydGVkLyN0aGlyZC1ib3gtc2l6aW5nLlxuLy9cbi8vIENyZWRpdDogaHR0cHM6Ly9jc3MtdHJpY2tzLmNvbS9pbmhlcml0aW5nLWJveC1zaXppbmctcHJvYmFibHktc2xpZ2h0bHktYmV0dGVyLWJlc3QtcHJhY3RpY2UvXG5cbmh0bWwge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuXG4qLFxuKjo6YmVmb3JlLFxuKjo6YWZ0ZXIge1xuICBib3gtc2l6aW5nOiBpbmhlcml0O1xufVxuXG5cbi8vIE1ha2Ugdmlld3BvcnQgcmVzcG9uc2l2ZVxuLy9cbi8vIEB2aWV3cG9ydCBpcyBuZWVkZWQgYmVjYXVzZSBJRSAxMCsgZG9lc24ndCBob25vciA8bWV0YSBuYW1lPVwidmlld3BvcnRcIj4gaW5cbi8vIHNvbWUgY2FzZXMuIFNlZSBodHRwOi8vdGlta2FkbGVjLmNvbS8yMDEyLzEwL2llMTAtc25hcC1tb2RlLWFuZC1yZXNwb25zaXZlLWRlc2lnbi8uXG4vLyBFdmVudHVhbGx5IEB2aWV3cG9ydCB3aWxsIHJlcGxhY2UgPG1ldGEgbmFtZT1cInZpZXdwb3J0XCI+LiBJdCdzIGJlZW4gbWFudWFsbHlcbi8vIHByZWZpeGVkIGZvciBmb3J3YXJkLWNvbXBhdGliaWxpdHkuXG4vL1xuLy8gSG93ZXZlciwgYGRldmljZS13aWR0aGAgaXMgYnJva2VuIG9uIElFIDEwIG9uIFdpbmRvd3MgKFBob25lKSA4LFxuLy8gKHNlZSBodHRwOi8vdGlta2FkbGVjLmNvbS8yMDEzLzAxL3dpbmRvd3MtcGhvbmUtOC1hbmQtZGV2aWNlLXdpZHRoLyBhbmQgaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8xMDQ5Nylcbi8vIGFuZCB0aGUgZml4IGZvciB0aGF0IGludm9sdmVzIGEgc25pcHBldCBvZiBKYXZhU2NyaXB0IHRvIHNuaWZmIHRoZSB1c2VyIGFnZW50XG4vLyBhbmQgYXBwbHkgc29tZSBjb25kaXRpb25hbCBDU1MuXG4vL1xuLy8gU2VlIGh0dHA6Ly9nZXRib290c3RyYXAuY29tL2dldHRpbmctc3RhcnRlZC8jc3VwcG9ydC1pZTEwLXdpZHRoIGZvciB0aGUgcmVsZXZhbnQgaGFjay5cbi8vXG4vLyBXcmFwIGBAdmlld3BvcnRgIHdpdGggYEBhdC1yb290YCBmb3Igd2hlbiBmb2xrcyBkbyBhIG5lc3RlZCBpbXBvcnQgKGUuZy4sXG4vLyBgLmNsYXNzLW5hbWUgeyBAaW1wb3J0IFwiYm9vdHN0cmFwXCI7IH1gKS5cbi8vXG4vLyBJbmNsdWRlcyBmdXR1cmUtcHJvb2ZlZCB2ZW5kb3IgcHJlZml4ZXMgYXMgd2VsbC5cbkBhdC1yb290IHtcbiAgQC1tb3otdmlld3BvcnQgICAgICB7IHdpZHRoOiBkZXZpY2Utd2lkdGg7IH1cbiAgQC1tcy12aWV3cG9ydCAgICAgICB7IHdpZHRoOiBkZXZpY2Utd2lkdGg7IH1cbiAgQC1vLXZpZXdwb3J0ICAgICAgICB7IHdpZHRoOiBkZXZpY2Utd2lkdGg7IH1cbiAgQC13ZWJraXQtdmlld3BvcnQgICB7IHdpZHRoOiBkZXZpY2Utd2lkdGg7IH1cbiAgQHZpZXdwb3J0ICAgICAgICAgICB7IHdpZHRoOiBkZXZpY2Utd2lkdGg7IH1cbn1cblxuXG4vL1xuLy8gUmVzZXQgSFRNTCwgYm9keSwgYW5kIG1vcmVcbi8vXG5cbmh0bWwge1xuICAvLyBTZXRzIGEgc3BlY2lmaWMgZGVmYXVsdCBgZm9udC1zaXplYCBmb3IgdXNlciB3aXRoIGByZW1gIHR5cGUgc2NhbGVzLlxuICBmb250LXNpemU6ICRmb250LXNpemUtcm9vdDtcbiAgLy8gQ2hhbmdlcyB0aGUgZGVmYXVsdCB0YXAgaGlnaGxpZ2h0IHRvIGJlIGNvbXBsZXRlbHkgdHJhbnNwYXJlbnQgaW4gaU9TLlxuICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHJnYmEoMCwwLDAsMCk7XG59XG5cbmJvZHkge1xuICAvLyBNYWtlIHRoZSBgYm9keWAgdXNlIHRoZSBgZm9udC1zaXplLXJvb3RgXG4gIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktYmFzZTtcbiAgZm9udC1zaXplOiAkZm9udC1zaXplLWJhc2U7XG4gIGxpbmUtaGVpZ2h0OiAkbGluZS1oZWlnaHQ7XG4gIC8vIEdvIGVhc3kgb24gdGhlIGV5ZXMgYW5kIHVzZSBzb21ldGhpbmcgb3RoZXIgdGhhbiBgIzAwMGAgZm9yIHRleHRcbiAgY29sb3I6ICRib2R5LWNvbG9yO1xuICAvLyBCeSBkZWZhdWx0LCBgPGJvZHk+YCBoYXMgbm8gYGJhY2tncm91bmQtY29sb3JgIHNvIHdlIHNldCBvbmUgYXMgYSBiZXN0IHByYWN0aWNlLlxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYm9keS1iZztcbn1cblxuLy8gU3VwcHJlc3MgdGhlIGZvY3VzIG91dGxpbmUgb24gZWxlbWVudHMgdGhhdCBjYW5ub3QgYmUgYWNjZXNzZWQgdmlhIGtleWJvYXJkLlxuLy8gVGhpcyBwcmV2ZW50cyBhbiB1bndhbnRlZCBmb2N1cyBvdXRsaW5lIGZyb20gYXBwZWFyaW5nIGFyb3VuZCBlbGVtZW50cyB0aGF0XG4vLyBtaWdodCBzdGlsbCByZXNwb25kIHRvIHBvaW50ZXIgZXZlbnRzLlxuLy9cbi8vIENyZWRpdDogaHR0cHM6Ly9naXRodWIuY29tL3N1aXRjc3MvYmFzZVxuW3RhYmluZGV4PVwiLTFcIl06Zm9jdXMge1xuICBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7XG59XG5cblxuLy9cbi8vIFR5cG9ncmFwaHlcbi8vXG5cbi8vIFJlbW92ZSB0b3AgbWFyZ2lucyBmcm9tIGhlYWRpbmdzXG4vL1xuLy8gQnkgZGVmYXVsdCwgYDxoMT5gLWA8aDY+YCBhbGwgcmVjZWl2ZSB0b3AgYW5kIGJvdHRvbSBtYXJnaW5zLiBXZSBudWtlIHRoZSB0b3Bcbi8vIG1hcmdpbiBmb3IgZWFzaWVyIGNvbnRyb2wgd2l0aGluIHR5cGUgc2NhbGVzIGFzIGl0IGF2b2lkcyBtYXJnaW4gY29sbGFwc2luZy5cbmgxLCBoMiwgaDMsIGg0LCBoNSwgaDYge1xuICBtYXJnaW4tdG9wOiAwO1xuICBtYXJnaW4tYm90dG9tOiAuNXJlbTtcbn1cblxuLy8gUmVzZXQgbWFyZ2lucyBvbiBwYXJhZ3JhcGhzXG4vL1xuLy8gU2ltaWxhcmx5LCB0aGUgdG9wIG1hcmdpbiBvbiBgPHA+YHMgZ2V0IHJlc2V0LiBIb3dldmVyLCB3ZSBhbHNvIHJlc2V0IHRoZVxuLy8gYm90dG9tIG1hcmdpbiB0byB1c2UgYHJlbWAgdW5pdHMgaW5zdGVhZCBvZiBgZW1gLlxucCB7XG4gIG1hcmdpbi10b3A6IDA7XG4gIG1hcmdpbi1ib3R0b206IDFyZW07XG59XG5cbi8vIEFiYnJldmlhdGlvbnMgYW5kIGFjcm9ueW1zXG5hYmJyW3RpdGxlXSxcbi8vIEFkZCBkYXRhLSogYXR0cmlidXRlIHRvIGhlbHAgb3V0IG91ciB0b29sdGlwIHBsdWdpbiwgcGVyIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9pc3N1ZXMvNTI1N1xuYWJicltkYXRhLW9yaWdpbmFsLXRpdGxlXSB7XG4gIGN1cnNvcjogaGVscDtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IGRvdHRlZCAkYWJici1ib3JkZXItY29sb3I7XG59XG5cbmFkZHJlc3Mge1xuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xufVxuXG5vbCxcbnVsLFxuZGwge1xuICBtYXJnaW4tdG9wOiAwO1xuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xufVxuXG5vbCBvbCxcbnVsIHVsLFxub2wgdWwsXG51bCBvbCB7XG4gIG1hcmdpbi1ib3R0b206IDA7XG59XG5cbmR0IHtcbiAgZm9udC13ZWlnaHQ6ICRkdC1mb250LXdlaWdodDtcbn1cblxuZGQge1xuICBtYXJnaW4tYm90dG9tOiAuNXJlbTtcbiAgbWFyZ2luLWxlZnQ6IDA7IC8vIFVuZG8gYnJvd3NlciBkZWZhdWx0XG59XG5cbmJsb2NrcXVvdGUge1xuICBtYXJnaW46IDAgMCAxcmVtO1xufVxuXG5cbi8vXG4vLyBMaW5rc1xuLy9cblxuYSB7XG4gIGNvbG9yOiAkbGluay1jb2xvcjtcbiAgdGV4dC1kZWNvcmF0aW9uOiAkbGluay1kZWNvcmF0aW9uO1xuXG4gIEBpbmNsdWRlIGhvdmVyLWZvY3VzIHtcbiAgICBjb2xvcjogJGxpbmstaG92ZXItY29sb3I7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiAkbGluay1ob3Zlci1kZWNvcmF0aW9uO1xuICB9XG5cbiAgJjpmb2N1cyB7XG4gICAgQGluY2x1ZGUgdGFiLWZvY3VzKCk7XG4gIH1cbn1cblxuXG4vL1xuLy8gQ29kZVxuLy9cblxucHJlIHtcbiAgLy8gUmVtb3ZlIGJyb3dzZXIgZGVmYXVsdCB0b3AgbWFyZ2luXG4gIG1hcmdpbi10b3A6IDA7XG4gIC8vIFJlc2V0IGJyb3dzZXIgZGVmYXVsdCBvZiBgMWVtYCB0byB1c2UgYHJlbWBzXG4gIG1hcmdpbi1ib3R0b206IDFyZW07XG59XG5cblxuLy9cbi8vIEZpZ3VyZXNcbi8vXG5cbmZpZ3VyZSB7XG4gIC8vIE5vcm1hbGl6ZSBhZGRzIGBtYXJnaW5gIHRvIGBmaWd1cmVgcyBhcyBicm93c2VycyBhcHBseSBpdCBpbmNvbnNpc3RlbnRseS5cbiAgLy8gV2UgcmVzZXQgdGhhdCB0byBjcmVhdGUgYSBiZXR0ZXIgZmxvdyBpbi1wYWdlLlxuICBtYXJnaW46IDAgMCAxcmVtO1xufVxuXG5cbi8vXG4vLyBJbWFnZXNcbi8vXG5cbmltZyB7XG4gIC8vIEJ5IGRlZmF1bHQsIGA8aW1nPmBzIGFyZSBgaW5saW5lLWJsb2NrYC4gVGhpcyBhc3N1bWVzIHRoYXQsIGFuZCB2ZXJ0aWNhbGx5XG4gIC8vIGNlbnRlcnMgdGhlbS4gVGhpcyB3b24ndCBhcHBseSBzaG91bGQgeW91IHJlc2V0IHRoZW0gdG8gYGJsb2NrYCBsZXZlbC5cbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgLy8gTm90ZTogYDxpbWc+YHMgYXJlIGRlbGliZXJhdGVseSBub3QgbWFkZSByZXNwb25zaXZlIGJ5IGRlZmF1bHQuXG4gIC8vIEZvciB0aGUgcmF0aW9uYWxlIGJlaGluZCB0aGlzLCBzZWUgdGhlIGNvbW1lbnRzIG9uIHRoZSBgLmltZy1mbHVpZGAgY2xhc3MuXG59XG5cblxuLy8gaU9TIFwiY2xpY2thYmxlIGVsZW1lbnRzXCIgZml4IGZvciByb2xlPVwiYnV0dG9uXCJcbi8vXG4vLyBGaXhlcyBcImNsaWNrYWJpbGl0eVwiIGlzc3VlIChhbmQgbW9yZSBnZW5lcmFsbHksIHRoZSBmaXJpbmcgb2YgZXZlbnRzIHN1Y2ggYXMgZm9jdXMgYXMgd2VsbClcbi8vIGZvciB0cmFkaXRpb25hbGx5IG5vbi1mb2N1c2FibGUgZWxlbWVudHMgd2l0aCByb2xlPVwiYnV0dG9uXCJcbi8vIHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9FdmVudHMvY2xpY2sjU2FmYXJpX01vYmlsZVxuXG5bcm9sZT1cImJ1dHRvblwiXSB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuXG4vLyBBdm9pZCAzMDBtcyBjbGljayBkZWxheSBvbiB0b3VjaCBkZXZpY2VzIHRoYXQgc3VwcG9ydCB0aGUgYHRvdWNoLWFjdGlvbmAgQ1NTIHByb3BlcnR5LlxuLy9cbi8vIEluIHBhcnRpY3VsYXIsIHVubGlrZSBtb3N0IG90aGVyIGJyb3dzZXJzLCBJRTExK0VkZ2Ugb24gV2luZG93cyAxMCBvbiB0b3VjaCBkZXZpY2VzIGFuZCBJRSBNb2JpbGUgMTAtMTFcbi8vIERPTidUIHJlbW92ZSB0aGUgY2xpY2sgZGVsYXkgd2hlbiBgPG1ldGEgbmFtZT1cInZpZXdwb3J0XCIgY29udGVudD1cIndpZHRoPWRldmljZS13aWR0aFwiPmAgaXMgcHJlc2VudC5cbi8vIEhvd2V2ZXIsIHRoZXkgRE8gc3VwcG9ydCByZW1vdmluZyB0aGUgY2xpY2sgZGVsYXkgdmlhIGB0b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbmAuXG4vLyBTZWU6XG4vLyAqIGh0dHA6Ly92NC1hbHBoYS5nZXRib290c3RyYXAuY29tL2NvbnRlbnQvcmVib290LyNjbGljay1kZWxheS1vcHRpbWl6YXRpb24tZm9yLXRvdWNoXG4vLyAqIGh0dHA6Ly9jYW5pdXNlLmNvbS8jZmVhdD1jc3MtdG91Y2gtYWN0aW9uXG4vLyAqIGh0dHA6Ly9wYXRyaWNraGxhdWtlLmdpdGh1Yi5pby90b3VjaC90ZXN0cy9yZXN1bHRzLyNzdXBwcmVzc2luZy0zMDBtcy1kZWxheVxuXG5hLFxuYXJlYSxcbmJ1dHRvbixcbltyb2xlPVwiYnV0dG9uXCJdLFxuaW5wdXQsXG5sYWJlbCxcbnNlbGVjdCxcbnN1bW1hcnksXG50ZXh0YXJlYSB7XG4gIHRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uO1xufVxuXG5cbi8vXG4vLyBUYWJsZXNcbi8vXG5cbnRhYmxlIHtcbiAgLy8gUmVzZXQgZm9yIG5lc3Rpbmcgd2l0aGluIHBhcmVudHMgd2l0aCBgYmFja2dyb3VuZC1jb2xvcmAuXG4gIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1iZztcbn1cblxuY2FwdGlvbiB7XG4gIHBhZGRpbmctdG9wOiAkdGFibGUtY2VsbC1wYWRkaW5nO1xuICBwYWRkaW5nLWJvdHRvbTogJHRhYmxlLWNlbGwtcGFkZGluZztcbiAgY29sb3I6ICR0ZXh0LW11dGVkO1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBjYXB0aW9uLXNpZGU6IGJvdHRvbTtcbn1cblxudGgge1xuICAvLyBDZW50ZXJlZCBieSBkZWZhdWx0LCBidXQgbGVmdC1hbGlnbi1lZCB0byBtYXRjaCB0aGUgYHRkYHMgYmVsb3cuXG4gIHRleHQtYWxpZ246IGxlZnQ7XG59XG5cblxuLy9cbi8vIEZvcm1zXG4vL1xuXG5sYWJlbCB7XG4gIC8vIEFsbG93IGxhYmVscyB0byB1c2UgYG1hcmdpbmAgZm9yIHNwYWNpbmcuXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luLWJvdHRvbTogLjVyZW07XG59XG5cbi8vIFdvcmsgYXJvdW5kIGEgRmlyZWZveC9JRSBidWcgd2hlcmUgdGhlIHRyYW5zcGFyZW50IGBidXR0b25gIGJhY2tncm91bmRcbi8vIHJlc3VsdHMgaW4gYSBsb3NzIG9mIHRoZSBkZWZhdWx0IGBidXR0b25gIGZvY3VzIHN0eWxlcy5cbi8vXG4vLyBDcmVkaXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9zdWl0Y3NzL2Jhc2UvXG5idXR0b246Zm9jdXMge1xuICBvdXRsaW5lOiAxcHggZG90dGVkO1xuICBvdXRsaW5lOiA1cHggYXV0byAtd2Via2l0LWZvY3VzLXJpbmctY29sb3I7XG59XG5cbmlucHV0LFxuYnV0dG9uLFxuc2VsZWN0LFxudGV4dGFyZWEge1xuICAvLyBSZW1vdmUgYWxsIGBtYXJnaW5gcyBzbyBvdXIgY2xhc3NlcyBkb24ndCBoYXZlIHRvIGRvIGl0IHRoZW1zZWx2ZXMuXG4gIG1hcmdpbjogMDtcbiAgLy8gTm9ybWFsaXplIGluY2x1ZGVzIGBmb250OiBpbmhlcml0O2AsIHNvIGBmb250LWZhbWlseWAuIGBmb250LXNpemVgLCBldGMgYXJlXG4gIC8vIHByb3Blcmx5IGluaGVyaXRlZC4gSG93ZXZlciwgYGxpbmUtaGVpZ2h0YCBpc24ndCBhZGRyZXNzZWQgdGhlcmUuIFVzaW5nIHRoaXNcbiAgLy8gZW5zdXJlcyB3ZSBkb24ndCBuZWVkIHRvIHVubmVjZXNzYXJpbHkgcmVkZWNsYXJlIHRoZSBnbG9iYWwgZm9udCBzdGFjay5cbiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gIC8vIGlPUyBhZGRzIHJvdW5kZWQgYm9yZGVycyBieSBkZWZhdWx0XG4gIGJvcmRlci1yYWRpdXM6IDA7XG59XG5cbnRleHRhcmVhIHtcbiAgLy8gVGV4dGFyZWFzIHNob3VsZCByZWFsbHkgb25seSByZXNpemUgdmVydGljYWxseSBzbyB0aGV5IGRvbid0IGJyZWFrIHRoZWlyIChob3Jpem9udGFsKSBjb250YWluZXJzLlxuICByZXNpemU6IHZlcnRpY2FsO1xufVxuXG5maWVsZHNldCB7XG4gIC8vIENocm9tZSBhbmQgRmlyZWZveCBzZXQgYSBgbWluLXdpZHRoOiBtaW4tY29udGVudDtgIG9uIGZpZWxkc2V0cyxcbiAgLy8gc28gd2UgcmVzZXQgdGhhdCB0byBlbnN1cmUgaXQgYmVoYXZlcyBtb3JlIGxpa2UgYSBzdGFuZGFyZCBibG9jayBlbGVtZW50LlxuICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8xMjM1OS5cbiAgbWluLXdpZHRoOiAwO1xuICAvLyBSZXNldCB0aGUgZGVmYXVsdCBvdXRsaW5lIGJlaGF2aW9yIG9mIGZpZWxkc2V0cyBzbyB0aGV5IGRvbid0IGFmZmVjdCBwYWdlIGxheW91dC5cbiAgcGFkZGluZzogMDtcbiAgbWFyZ2luOiAwO1xuICBib3JkZXI6IDA7XG59XG5cbmxlZ2VuZCB7XG4gIC8vIFJlc2V0IHRoZSBlbnRpcmUgbGVnZW5kIGVsZW1lbnQgdG8gbWF0Y2ggdGhlIGBmaWVsZHNldGBcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW4tYm90dG9tOiAuNXJlbTtcbiAgZm9udC1zaXplOiAxLjVyZW07XG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xuLy8gIGJvcmRlcjogMDtcbn1cblxuaW5wdXRbdHlwZT1cInNlYXJjaFwiXSB7XG4gIC8vIFVuZG8gTm9ybWFsaXplJ3MgZGVmYXVsdCBoZXJlIHRvIG1hdGNoIG91ciBnbG9iYWwgb3ZlcnJpZGVzLlxuICBib3gtc2l6aW5nOiBpbmhlcml0O1xuICAvLyBUaGlzIG92ZXJyaWRlcyB0aGUgZXh0cmEgcm91bmRlZCBjb3JuZXJzIG9uIHNlYXJjaCBpbnB1dHMgaW4gaU9TIHNvIHRoYXQgb3VyXG4gIC8vIGAuZm9ybS1jb250cm9sYCBjbGFzcyBjYW4gcHJvcGVybHkgc3R5bGUgdGhlbS4gTm90ZSB0aGF0IHRoaXMgY2Fubm90IHNpbXBseVxuICAvLyBiZSBhZGRlZCB0byBgLmZvcm0tY29udHJvbGAgYXMgaXQncyBub3Qgc3BlY2lmaWMgZW5vdWdoLiBGb3IgZGV0YWlscywgc2VlXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9pc3N1ZXMvMTE1ODYuXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbn1cblxuLy8gdG9kbzogbmVlZGVkP1xub3V0cHV0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuLy8gIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlO1xuLy8gIGxpbmUtaGVpZ2h0OiAkbGluZS1oZWlnaHQ7XG4vLyAgY29sb3I6ICRpbnB1dC1jb2xvcjtcbn1cblxuLy8gQWx3YXlzIGhpZGUgYW4gZWxlbWVudCB3aXRoIHRoZSBgaGlkZGVuYCBIVE1MIGF0dHJpYnV0ZSAoZnJvbSBQdXJlQ1NTKS5cbltoaWRkZW5dIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuIiwiLy8gQ29udGFpbmVyIHdpZHRoc1xuLy9cbi8vIFNldCB0aGUgY29udGFpbmVyIHdpZHRoLCBhbmQgb3ZlcnJpZGUgaXQgZm9yIGZpeGVkIG5hdmJhcnMgaW4gbWVkaWEgcXVlcmllcy5cblxuLmNvbnRhaW5lciB7XG4gIEBpbmNsdWRlIG1ha2UtY29udGFpbmVyKCk7XG4gIEBpbmNsdWRlIG1ha2UtY29udGFpbmVyLW1heC13aWR0aHMoKTtcblxufVxuXG5cbi8vIEZsdWlkIGNvbnRhaW5lclxuLy9cbi8vIFV0aWxpemVzIHRoZSBtaXhpbiBtZWFudCBmb3IgZml4ZWQgd2lkdGggY29udGFpbmVycywgYnV0IHdpdGhvdXQgYW55IGRlZmluZWRcbi8vIHdpZHRoIGZvciBmbHVpZCwgZnVsbCB3aWR0aCBsYXlvdXRzLlxuXG4uY29udGFpbmVyLWZsdWlkIHtcbiAgQGluY2x1ZGUgbWFrZS1jb250YWluZXIoKTtcbn1cblxuXG4vLyBSb3dcbi8vXG4vLyBSb3dzIGNvbnRhaW4gYW5kIGNsZWFyIHRoZSBmbG9hdHMgb2YgeW91ciBjb2x1bW5zLlxuXG5AaWYgJGVuYWJsZS1ncmlkLWNsYXNzZXMge1xuICAucm93IHtcbiAgICBAaW5jbHVkZSBtYWtlLXJvdygpO1xuICB9XG59XG5cblxuLy8gQ29sdW1uc1xuLy9cbi8vIENvbW1vbiBzdHlsZXMgZm9yIHNtYWxsIGFuZCBsYXJnZSBncmlkIGNvbHVtbnNcblxuQGlmICRlbmFibGUtZ3JpZC1jbGFzc2VzIHtcbiAgQGluY2x1ZGUgbWFrZS1ncmlkLWNvbHVtbnMoKTtcbn1cblxuXG4vLyBGbGV4IHZhcmlhdGlvblxuLy9cbi8vIEN1c3RvbSBzdHlsZXMgZm9yIGFkZGl0aW9uYWwgZmxleCBhbGlnbm1lbnQgb3B0aW9ucy5cblxuQGlmICRlbmFibGUtZmxleCBhbmQgJGVuYWJsZS1ncmlkLWNsYXNzZXMge1xuXG4gIC8vIEZsZXggY29sdW1uIHJlb3JkZXJpbmdcblxuICBAZWFjaCAkYnJlYWtwb2ludCBpbiBtYXAta2V5cygkZ3JpZC1icmVha3BvaW50cykge1xuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJGJyZWFrcG9pbnQpIHtcbiAgICAgIC5jb2wtI3skYnJlYWtwb2ludH0tZmlyc3QgeyBvcmRlcjogLTE7IH1cbiAgICAgIC5jb2wtI3skYnJlYWtwb2ludH0tbGFzdCAgeyBvcmRlcjogMTsgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEFsaWdubWVudCBmb3IgZXZlcnkgY29sdW1uIGluIHJvd1xuXG4gIEBlYWNoICRicmVha3BvaW50IGluIG1hcC1rZXlzKCRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgkYnJlYWtwb2ludCkge1xuICAgICAgLnJvdy0jeyRicmVha3BvaW50fS10b3AgICAgeyBhbGlnbi1pdGVtczogZmxleC1zdGFydDsgfVxuICAgICAgLnJvdy0jeyRicmVha3BvaW50fS1jZW50ZXIgeyBhbGlnbi1pdGVtczogY2VudGVyOyB9XG4gICAgICAucm93LSN7JGJyZWFrcG9pbnR9LWJvdHRvbSB7IGFsaWduLWl0ZW1zOiBmbGV4LWVuZDsgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEFsaWdubWVudCBwZXIgY29sdW1uXG5cbiAgQGVhY2ggJGJyZWFrcG9pbnQgaW4gbWFwLWtleXMoJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRicmVha3BvaW50KSB7XG4gICAgICAuY29sLSN7JGJyZWFrcG9pbnR9LXRvcCAgICB7IGFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7IH1cbiAgICAgIC5jb2wtI3skYnJlYWtwb2ludH0tY2VudGVyIHsgYWxpZ24tc2VsZjogY2VudGVyOyB9XG4gICAgICAuY29sLSN7JGJyZWFrcG9pbnR9LWJvdHRvbSB7IGFsaWduLXNlbGY6IGZsZXgtZW5kOyB9XG4gICAgfVxuICB9XG59XG4iLCIvL1xuLy8gQmFzaWMgQm9vdHN0cmFwIHRhYmxlXG4vL1xuXG4udGFibGUge1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBtYXJnaW4tYm90dG9tOiAkc3BhY2VyO1xuXG4gIHRoLFxuICB0ZCB7XG4gICAgcGFkZGluZzogJHRhYmxlLWNlbGwtcGFkZGluZztcbiAgICBsaW5lLWhlaWdodDogJGxpbmUtaGVpZ2h0O1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gICAgYm9yZGVyLXRvcDogJHRhYmxlLWJvcmRlci13aWR0aCBzb2xpZCAkdGFibGUtYm9yZGVyLWNvbG9yO1xuICB9XG5cbiAgdGhlYWQgdGgge1xuICAgIHZlcnRpY2FsLWFsaWduOiBib3R0b207XG4gICAgYm9yZGVyLWJvdHRvbTogKDIgKiAkdGFibGUtYm9yZGVyLXdpZHRoKSBzb2xpZCAkdGFibGUtYm9yZGVyLWNvbG9yO1xuICB9XG5cbiAgdGJvZHkgKyB0Ym9keSB7XG4gICAgYm9yZGVyLXRvcDogKDIgKiAkdGFibGUtYm9yZGVyLXdpZHRoKSBzb2xpZCAkdGFibGUtYm9yZGVyLWNvbG9yO1xuICB9XG5cbiAgLnRhYmxlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYm9keS1iZztcbiAgfVxufVxuXG5cbi8vXG4vLyBDb25kZW5zZWQgdGFibGUgdy8gaGFsZiBwYWRkaW5nXG4vL1xuXG4udGFibGUtc20ge1xuICB0aCxcbiAgdGQge1xuICAgIHBhZGRpbmc6ICR0YWJsZS1zbS1jZWxsLXBhZGRpbmc7XG4gIH1cbn1cblxuXG4vLyBCb3JkZXJlZCB2ZXJzaW9uXG4vL1xuLy8gQWRkIGJvcmRlcnMgYWxsIGFyb3VuZCB0aGUgdGFibGUgYW5kIGJldHdlZW4gYWxsIHRoZSBjb2x1bW5zLlxuXG4udGFibGUtYm9yZGVyZWQge1xuICBib3JkZXI6ICR0YWJsZS1ib3JkZXItd2lkdGggc29saWQgJHRhYmxlLWJvcmRlci1jb2xvcjtcblxuICB0aCxcbiAgdGQge1xuICAgIGJvcmRlcjogJHRhYmxlLWJvcmRlci13aWR0aCBzb2xpZCAkdGFibGUtYm9yZGVyLWNvbG9yO1xuICB9XG5cbiAgdGhlYWQge1xuICAgIHRoLFxuICAgIHRkIHtcbiAgICAgIGJvcmRlci1ib3R0b20td2lkdGg6ICgyICogJHRhYmxlLWJvcmRlci13aWR0aCk7XG4gICAgfVxuICB9XG59XG5cblxuLy8gWmVicmEtc3RyaXBpbmdcbi8vXG4vLyBEZWZhdWx0IHplYnJhLXN0cmlwZSBzdHlsZXMgKGFsdGVybmF0aW5nIGdyYXkgYW5kIHRyYW5zcGFyZW50IGJhY2tncm91bmRzKVxuXG4udGFibGUtc3RyaXBlZCB7XG4gIHRib2R5IHRyOm50aC1vZi10eXBlKG9kZCkge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1iZy1hY2NlbnQ7XG4gIH1cbn1cblxuXG4vLyBIb3ZlciBlZmZlY3Rcbi8vXG4vLyBQbGFjZWQgaGVyZSBzaW5jZSBpdCBoYXMgdG8gY29tZSBhZnRlciB0aGUgcG90ZW50aWFsIHplYnJhIHN0cmlwaW5nXG5cbi50YWJsZS1ob3ZlciB7XG4gIHRib2R5IHRyIHtcbiAgICBAaW5jbHVkZSBob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtYmctaG92ZXI7XG4gICAgfVxuICB9XG59XG5cblxuLy8gVGFibGUgYmFja2dyb3VuZHNcbi8vXG4vLyBFeGFjdCBzZWxlY3RvcnMgYmVsb3cgcmVxdWlyZWQgdG8gb3ZlcnJpZGUgYC50YWJsZS1zdHJpcGVkYCBhbmQgcHJldmVudFxuLy8gaW5oZXJpdGFuY2UgdG8gbmVzdGVkIHRhYmxlcy5cblxuLy8gR2VuZXJhdGUgdGhlIGNvbnRleHR1YWwgdmFyaWFudHNcbkBpbmNsdWRlIHRhYmxlLXJvdy12YXJpYW50KGFjdGl2ZSwgJHRhYmxlLWJnLWFjdGl2ZSk7XG5AaW5jbHVkZSB0YWJsZS1yb3ctdmFyaWFudChzdWNjZXNzLCAkc3RhdGUtc3VjY2Vzcy1iZyk7XG5AaW5jbHVkZSB0YWJsZS1yb3ctdmFyaWFudChpbmZvLCAkc3RhdGUtaW5mby1iZyk7XG5AaW5jbHVkZSB0YWJsZS1yb3ctdmFyaWFudCh3YXJuaW5nLCAkc3RhdGUtd2FybmluZy1iZyk7XG5AaW5jbHVkZSB0YWJsZS1yb3ctdmFyaWFudChkYW5nZXIsICRzdGF0ZS1kYW5nZXItYmcpO1xuXG5cbi8vIFJlc3BvbnNpdmUgdGFibGVzXG4vL1xuLy8gV3JhcCB5b3VyIHRhYmxlcyBpbiBgLnRhYmxlLXJlc3BvbnNpdmVgIGFuZCB3ZSdsbCBtYWtlIHRoZW0gbW9iaWxlIGZyaWVuZGx5XG4vLyBieSBlbmFibGluZyBob3Jpem9udGFsIHNjcm9sbGluZy4gT25seSBhcHBsaWVzIDw3NjhweC4gRXZlcnl0aGluZyBhYm92ZSB0aGF0XG4vLyB3aWxsIGRpc3BsYXkgbm9ybWFsbHkuXG5cbi50YWJsZS1yZXNwb25zaXZlIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAxMDAlO1xuICBtaW4taGVpZ2h0OiAwLjAxJTsgLy8gV29ya2Fyb3VuZCBmb3IgSUU5IGJ1ZyAoc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9pc3N1ZXMvMTQ4MzcpXG4gIG92ZXJmbG93LXg6IGF1dG87XG5cbiAgLy8gVE9ETzogZmluZCBvdXQgaWYgd2UgbmVlZCB0aGlzIHN0aWxsLlxuICAvL1xuICAvLyBib3JkZXI6ICR0YWJsZS1ib3JkZXItd2lkdGggc29saWQgJHRhYmxlLWJvcmRlci1jb2xvcjtcbiAgLy8gLW1zLW92ZXJmbG93LXN0eWxlOiAtbXMtYXV0b2hpZGluZy1zY3JvbGxiYXI7IC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvcHVsbC8xMDA1N1xufVxuXG5cbi50aGVhZC1pbnZlcnNlIHtcbiAgdGgge1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRncmF5LWRhcms7XG4gIH1cbn1cbi50aGVhZC1kZWZhdWx0IHtcbiAgdGgge1xuICAgIGNvbG9yOiAkZ3JheTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JheS1saWdodGVyO1xuICB9XG59XG5cbi50YWJsZS1pbnZlcnNlIHtcbiAgY29sb3I6ICRncmF5LWxpZ2h0ZXI7XG4gIGJhY2tncm91bmQtY29sb3I6ICRncmF5LWRhcms7XG5cbiAgJi50YWJsZS1ib3JkZXJlZCB7XG4gICAgYm9yZGVyOiAwO1xuICB9XG5cbiAgdGgsXG4gIHRkLFxuICB0aGVhZCB0aCB7XG4gICAgYm9yZGVyLWNvbG9yOiAkZ3JheTtcbiAgfVxufVxuXG5cbi50YWJsZS1yZWZsb3cge1xuICB0aGVhZCB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gIH1cblxuICB0Ym9keSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgfVxuXG4gIHRoLFxuICB0ZCB7XG4gICAgYm9yZGVyLXRvcDogJHRhYmxlLWJvcmRlci13aWR0aCBzb2xpZCAkdGFibGUtYm9yZGVyLWNvbG9yO1xuICAgIGJvcmRlci1sZWZ0OiAkdGFibGUtYm9yZGVyLXdpZHRoIHNvbGlkICR0YWJsZS1ib3JkZXItY29sb3I7XG5cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgYm9yZGVyLXJpZ2h0OiAkdGFibGUtYm9yZGVyLXdpZHRoIHNvbGlkICR0YWJsZS1ib3JkZXItY29sb3I7XG4gICAgfVxuICB9XG5cbiAgdGhlYWQsXG4gIHRib2R5LFxuICB0Zm9vdCB7XG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgIHRyOmxhc3QtY2hpbGQge1xuICAgICAgICB0aCxcbiAgICAgICAgdGQge1xuICAgICAgICAgIGJvcmRlci1ib3R0b206ICR0YWJsZS1ib3JkZXItd2lkdGggc29saWQgJHRhYmxlLWJvcmRlci1jb2xvcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHRyIHtcbiAgICBmbG9hdDogbGVmdDtcblxuICAgIHRoLFxuICAgIHRkIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gICAgICBib3JkZXI6ICR0YWJsZS1ib3JkZXItd2lkdGggc29saWQgJHRhYmxlLWJvcmRlci1jb2xvcjtcbiAgICB9XG4gIH1cbn1cbiIsIi8vXG4vLyBUZXh0dWFsIGZvcm0gY29udHJvbHNcbi8vXG5cbi5mb3JtLWNvbnRyb2wge1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDEwMCU7XG4gIC8vIC8vIE1ha2UgaW5wdXRzIGF0IGxlYXN0IHRoZSBoZWlnaHQgb2YgdGhlaXIgYnV0dG9uIGNvdW50ZXJwYXJ0IChiYXNlIGxpbmUtaGVpZ2h0ICsgcGFkZGluZyArIGJvcmRlcilcbiAgLy8gaGVpZ2h0OiAkaW5wdXQtaGVpZ2h0O1xuICBwYWRkaW5nOiAkaW5wdXQtcGFkZGluZy15ICRpbnB1dC1wYWRkaW5nLXg7XG4gIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlO1xuICBsaW5lLWhlaWdodDogJGxpbmUtaGVpZ2h0O1xuICBjb2xvcjogJGlucHV0LWNvbG9yO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkaW5wdXQtYmc7XG4gIC8vIFJlc2V0IHVudXN1YWwgRmlyZWZveC1vbi1BbmRyb2lkIGRlZmF1bHQgc3R5bGU7IHNlZSBodHRwczovL2dpdGh1Yi5jb20vbmVjb2xhcy9ub3JtYWxpemUuY3NzL2lzc3Vlcy8yMTQuXG4gIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG4gIGJvcmRlcjogJGlucHV0LWJ0bi1ib3JkZXItd2lkdGggc29saWQgJGlucHV0LWJvcmRlci1jb2xvcjtcbiAgLy8gTm90ZTogVGhpcyBoYXMgbm8gZWZmZWN0IG9uIDxzZWxlY3Q+cyBpbiBzb21lIGJyb3dzZXJzLCBkdWUgdG8gdGhlIGxpbWl0ZWQgc3R5bGFiaWxpdHkgb2YgYDxzZWxlY3Q+YHMgaW4gQ1NTLlxuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRpbnB1dC1ib3JkZXItcmFkaXVzKTtcbiAgQGluY2x1ZGUgYm94LXNoYWRvdygkaW5wdXQtYm94LXNoYWRvdyk7XG4gIEBpbmNsdWRlIHRyYW5zaXRpb24oYm9yZGVyLWNvbG9yIGVhc2UtaW4tb3V0IC4xNXMsIGJveC1zaGFkb3cgZWFzZS1pbi1vdXQgLjE1cyk7XG5cbiAgLy8gTWFrZSBpbnB1dHMgYXQgbGVhc3QgdGhlIGhlaWdodCBvZiB0aGVpciBidXR0b24gY291bnRlcnBhcnQgKGJhc2UgbGluZS1oZWlnaHQgKyBwYWRkaW5nICsgYm9yZGVyKS5cbiAgLy8gT25seSBhcHBseSB0aGUgaGVpZ2h0IHRvIHRleHR1YWwgaW5wdXRzIGFuZCBzb21lIHNlbGVjdHMuXG4gIC8vICY6bm90KHRleHRhcmVhKSxcbiAgLy8gJjpub3Qoc2VsZWN0W3NpemVdKSxcbiAgLy8gJjpub3Qoc2VsZWN0W211bHRpcGxlXSkge1xuICAvLyAgIGhlaWdodDogJGlucHV0LWhlaWdodDtcbiAgLy8gfVxuXG4gIC8vIFVuc3R5bGUgdGhlIGNhcmV0IG9uIGA8c2VsZWN0PmBzIGluIElFMTArLlxuICAmOjotbXMtZXhwYW5kIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXI6IDA7XG4gIH1cblxuICAvLyBDdXN0b21pemUgdGhlIGA6Zm9jdXNgIHN0YXRlIHRvIGltaXRhdGUgbmF0aXZlIFdlYktpdCBzdHlsZXMuXG4gIEBpbmNsdWRlIGZvcm0tY29udHJvbC1mb2N1cygpO1xuXG4gIC8vIFBsYWNlaG9sZGVyXG4gICY6OnBsYWNlaG9sZGVyIHtcbiAgICBjb2xvcjogJGlucHV0LWNvbG9yLXBsYWNlaG9sZGVyO1xuICAgIC8vIE92ZXJyaWRlIEZpcmVmb3gncyB1bnVzdWFsIGRlZmF1bHQgb3BhY2l0eTsgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9wdWxsLzExNTI2LlxuICAgIG9wYWNpdHk6IDE7XG4gIH1cblxuICAvLyBEaXNhYmxlZCBhbmQgcmVhZC1vbmx5IGlucHV0c1xuICAvL1xuICAvLyBIVE1MNSBzYXlzIHRoYXQgY29udHJvbHMgdW5kZXIgYSBmaWVsZHNldCA+IGxlZ2VuZDpmaXJzdC1jaGlsZCB3b24ndCBiZVxuICAvLyBkaXNhYmxlZCBpZiB0aGUgZmllbGRzZXQgaXMgZGlzYWJsZWQuIER1ZSB0byBpbXBsZW1lbnRhdGlvbiBkaWZmaWN1bHR5LCB3ZVxuICAvLyBkb24ndCBob25vciB0aGF0IGVkZ2UgY2FzZTsgd2Ugc3R5bGUgdGhlbSBhcyBkaXNhYmxlZCBhbnl3YXkuXG4gICY6ZGlzYWJsZWQsXG4gICZbcmVhZG9ubHldIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaW5wdXQtYmctZGlzYWJsZWQ7XG4gICAgLy8gaU9TIGZpeCBmb3IgdW5yZWFkYWJsZSBkaXNhYmxlZCBjb250ZW50OyBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8xMTY1NS5cbiAgICBvcGFjaXR5OiAxO1xuICB9XG5cbiAgJjpkaXNhYmxlZCB7XG4gICAgY3Vyc29yOiAkY3Vyc29yLWRpc2FibGVkO1xuICB9XG59XG5cblxuLy8gTWFrZSBmaWxlIGlucHV0cyBiZXR0ZXIgbWF0Y2ggdGV4dCBpbnB1dHMgYnkgZm9yY2luZyB0aGVtIHRvIG5ldyBsaW5lcy5cbi5mb3JtLWNvbnRyb2wtZmlsZSxcbi5mb3JtLWNvbnRyb2wtcmFuZ2Uge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuXG4vL1xuLy8gTGFiZWxzXG4vL1xuXG4vLyBGb3IgdXNlIHdpdGggaG9yaXpvbnRhbCBhbmQgaW5saW5lIGZvcm1zLCB3aGVuIHlvdSBuZWVkIHRoZSBsYWJlbCB0ZXh0IHRvXG4vLyBhbGlnbiB3aXRoIHRoZSBmb3JtIGNvbnRyb2xzLlxuLmZvcm0tY29udHJvbC1sYWJlbCB7XG4gIHBhZGRpbmc6ICRpbnB1dC1wYWRkaW5nLXkgJGlucHV0LXBhZGRpbmcteDtcbiAgbWFyZ2luLWJvdHRvbTogMDsgLy8gT3ZlcnJpZGUgdGhlIGA8bGFiZWw+YCBkZWZhdWx0XG59XG5cblxuLy8gVG9kbzogY2xlYXIgdGhpcyB1cFxuXG4vLyBTcGVjaWFsIHN0eWxlcyBmb3IgaU9TIHRlbXBvcmFsIGlucHV0c1xuLy9cbi8vIEluIE1vYmlsZSBTYWZhcmksIHNldHRpbmcgYGRpc3BsYXk6IGJsb2NrYCBvbiB0ZW1wb3JhbCBpbnB1dHMgY2F1c2VzIHRoZVxuLy8gdGV4dCB3aXRoaW4gdGhlIGlucHV0IHRvIGJlY29tZSB2ZXJ0aWNhbGx5IG1pc2FsaWduZWQuIEFzIGEgd29ya2Fyb3VuZCwgd2Vcbi8vIHNldCBhIHBpeGVsIGxpbmUtaGVpZ2h0IHRoYXQgbWF0Y2hlcyB0aGUgZ2l2ZW4gaGVpZ2h0IG9mIHRoZSBpbnB1dCwgYnV0IG9ubHlcbi8vIGZvciBTYWZhcmkuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM5ODQ4XG4vL1xuLy8gTm90ZSB0aGF0IGFzIG9mIDguMywgaU9TIGRvZXNuJ3Qgc3VwcG9ydCBgZGF0ZXRpbWVgIG9yIGB3ZWVrYC5cblxuQG1lZGlhIHNjcmVlbiBhbmQgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogMCkge1xuICBpbnB1dFt0eXBlPVwiZGF0ZVwiXSxcbiAgaW5wdXRbdHlwZT1cInRpbWVcIl0sXG4gIGlucHV0W3R5cGU9XCJkYXRldGltZS1sb2NhbFwiXSxcbiAgaW5wdXRbdHlwZT1cIm1vbnRoXCJdIHtcbiAgICAmLmZvcm0tY29udHJvbCB7XG4gICAgICBsaW5lLWhlaWdodDogJGlucHV0LWhlaWdodDtcbiAgICB9XG5cbiAgICAmLmlucHV0LXNtLFxuICAgIC5pbnB1dC1ncm91cC1zbSAmLmZvcm0tY29udHJvbCB7XG4gICAgICBsaW5lLWhlaWdodDogJGlucHV0LWhlaWdodC1zbTtcbiAgICB9XG5cbiAgICAmLmlucHV0LWxnLFxuICAgIC5pbnB1dC1ncm91cC1sZyAmLmZvcm0tY29udHJvbCB7XG4gICAgICBsaW5lLWhlaWdodDogJGlucHV0LWhlaWdodC1sZztcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBTdGF0aWMgZm9ybSBjb250cm9sIHRleHRcbi8vXG4vLyBBcHBseSBjbGFzcyB0byBhbiBlbGVtZW50IHRvIG1ha2UgYW55IHN0cmluZyBvZiB0ZXh0IGFsaWduIHdpdGggbGFiZWxzIGluIGFcbi8vIGhvcml6b250YWwgZm9ybSBsYXlvdXQuXG5cbi5mb3JtLWNvbnRyb2wtc3RhdGljIHtcbiAgbWluLWhlaWdodDogJGlucHV0LWhlaWdodDtcbiAgLy8gU2l6ZSBpdCBhcHByb3ByaWF0ZWx5IG5leHQgdG8gcmVhbCBmb3JtIGNvbnRyb2xzXG4gIHBhZGRpbmctdG9wOiAkaW5wdXQtcGFkZGluZy15O1xuICBwYWRkaW5nLWJvdHRvbTogJGlucHV0LXBhZGRpbmcteTtcbiAgLy8gUmVtb3ZlIGRlZmF1bHQgbWFyZ2luIGZyb20gYHBgXG4gIG1hcmdpbi1ib3R0b206IDA7XG5cbiAgJi5mb3JtLWNvbnRyb2wtc20sXG4gICYuZm9ybS1jb250cm9sLWxnIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgIHBhZGRpbmctbGVmdDogMDtcbiAgfVxufVxuXG5cbi8vIEZvcm0gY29udHJvbCBzaXppbmdcbi8vXG4vLyBCdWlsZCBvbiBgLmZvcm0tY29udHJvbGAgd2l0aCBtb2RpZmllciBjbGFzc2VzIHRvIGRlY3JlYXNlIG9yIGluY3JlYXNlIHRoZVxuLy8gaGVpZ2h0IGFuZCBmb250LXNpemUgb2YgZm9ybSBjb250cm9scy5cbi8vXG4vLyBUaGUgYC5mb3JtLWdyb3VwLSogZm9ybS1jb250cm9sYCB2YXJpYXRpb25zIGFyZSBzYWRseSBkdXBsaWNhdGVkIHRvIGF2b2lkIHRoZVxuLy8gaXNzdWUgZG9jdW1lbnRlZCBpbiBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvaXNzdWVzLzE1MDc0LlxuXG4uZm9ybS1jb250cm9sLXNtIHtcbiAgLy8gaGVpZ2h0OiAkaW5wdXQtaGVpZ2h0LXNtO1xuICBwYWRkaW5nOiAkaW5wdXQtcGFkZGluZy15LXNtICRpbnB1dC1wYWRkaW5nLXgtc207XG4gIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1zbTtcbiAgbGluZS1oZWlnaHQ6ICRsaW5lLWhlaWdodC1zbTtcbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkaW5wdXQtYm9yZGVyLXJhZGl1cy1zbSk7XG59XG5cbi5mb3JtLWNvbnRyb2wtbGcge1xuICAvLyBoZWlnaHQ6ICRpbnB1dC1oZWlnaHQtbGc7XG4gIHBhZGRpbmc6ICRpbnB1dC1wYWRkaW5nLXktbGcgJGlucHV0LXBhZGRpbmcteC1sZztcbiAgZm9udC1zaXplOiAkZm9udC1zaXplLWxnO1xuICBsaW5lLWhlaWdodDogJGxpbmUtaGVpZ2h0LWxnO1xuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRpbnB1dC1ib3JkZXItcmFkaXVzLWxnKTtcbn1cblxuXG4vLyBGb3JtIGdyb3Vwc1xuLy9cbi8vIERlc2lnbmVkIHRvIGhlbHAgd2l0aCB0aGUgb3JnYW5pemF0aW9uIGFuZCBzcGFjaW5nIG9mIHZlcnRpY2FsIGZvcm1zLiBGb3Jcbi8vIGhvcml6b250YWwgZm9ybXMsIHVzZSB0aGUgcHJlZGVmaW5lZCBncmlkIGNsYXNzZXMuXG5cbi5mb3JtLWdyb3VwIHtcbiAgbWFyZ2luLWJvdHRvbTogJGZvcm0tZ3JvdXAtbWFyZ2luLWJvdHRvbTtcbn1cblxuXG4vLyBDaGVja2JveGVzIGFuZCByYWRpb3Ncbi8vXG4vLyBJbmRlbnQgdGhlIGxhYmVscyB0byBwb3NpdGlvbiByYWRpb3MvY2hlY2tib3hlcyBhcyBoYW5naW5nIGNvbnRyb2xzLlxuXG4ucmFkaW8sXG4uY2hlY2tib3gge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICAvLyBtYXJnaW4tdG9wOiAgICAoJHNwYWNlciAqIC43NSk7XG4gIG1hcmdpbi1ib3R0b206ICgkc3BhY2VyICogLjc1KTtcblxuICBsYWJlbCB7XG4gICAgcGFkZGluZy1sZWZ0OiAxLjI1cmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAvLyBXaGVuIHRoZXJlJ3Mgbm8gbGFiZWxzLCBkb24ndCBwb3NpdGlvbiB0aGUgaW5wdXQuXG4gICAgaW5wdXQ6b25seS1jaGlsZCB7XG4gICAgICBwb3NpdGlvbjogc3RhdGljO1xuICAgIH1cbiAgfVxufVxuLnJhZGlvIGlucHV0W3R5cGU9XCJyYWRpb1wiXSxcbi5yYWRpby1pbmxpbmUgaW5wdXRbdHlwZT1cInJhZGlvXCJdLFxuLmNoZWNrYm94IGlucHV0W3R5cGU9XCJjaGVja2JveFwiXSxcbi5jaGVja2JveC1pbmxpbmUgaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBtYXJnaW4tdG9wOiAuMjVyZW07XG4gIC8vIG1hcmdpbi10b3A6IDRweCBcXDk7XG4gIG1hcmdpbi1sZWZ0OiAtMS4yNXJlbTtcbn1cblxuLnJhZGlvICsgLnJhZGlvLFxuLmNoZWNrYm94ICsgLmNoZWNrYm94IHtcbiAgLy8gTW92ZSB1cCBzaWJsaW5nIHJhZGlvcyBvciBjaGVja2JveGVzIGZvciB0aWdodGVyIHNwYWNpbmdcbiAgbWFyZ2luLXRvcDogLS4yNXJlbTtcbn1cblxuLy8gUmFkaW9zIGFuZCBjaGVja2JveGVzIG9uIHNhbWUgbGluZVxuLnJhZGlvLWlubGluZSxcbi5jaGVja2JveC1pbmxpbmUge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcGFkZGluZy1sZWZ0OiAxLjI1cmVtO1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG4ucmFkaW8taW5saW5lICsgLnJhZGlvLWlubGluZSxcbi5jaGVja2JveC1pbmxpbmUgKyAuY2hlY2tib3gtaW5saW5lIHtcbiAgbWFyZ2luLXRvcDogMDtcbiAgbWFyZ2luLWxlZnQ6IC43NXJlbTtcbn1cblxuLy8gQXBwbHkgc2FtZSBkaXNhYmxlZCBjdXJzb3IgdHdlYWsgYXMgZm9yIGlucHV0c1xuLy8gU29tZSBzcGVjaWFsIGNhcmUgaXMgbmVlZGVkIGJlY2F1c2UgPGxhYmVsPnMgZG9uJ3QgaW5oZXJpdCB0aGVpciBwYXJlbnQncyBgY3Vyc29yYC5cbi8vXG4vLyBOb3RlOiBOZWl0aGVyIHJhZGlvcyBub3IgY2hlY2tib3hlcyBjYW4gYmUgcmVhZG9ubHkuXG5pbnB1dFt0eXBlPVwicmFkaW9cIl0sXG5pbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0ge1xuICAmOmRpc2FibGVkLFxuICAmLmRpc2FibGVkIHtcbiAgICBjdXJzb3I6ICRjdXJzb3ItZGlzYWJsZWQ7XG4gIH1cbn1cbi8vIFRoZXNlIGNsYXNzZXMgYXJlIHVzZWQgZGlyZWN0bHkgb24gPGxhYmVsPnNcbi5yYWRpby1pbmxpbmUsXG4uY2hlY2tib3gtaW5saW5lIHtcbiAgJi5kaXNhYmxlZCB7XG4gICAgY3Vyc29yOiAkY3Vyc29yLWRpc2FibGVkO1xuICB9XG59XG4vLyBUaGVzZSBjbGFzc2VzIGFyZSB1c2VkIG9uIGVsZW1lbnRzIHdpdGggPGxhYmVsPiBkZXNjZW5kYW50c1xuLnJhZGlvLFxuLmNoZWNrYm94IHtcbiAgJi5kaXNhYmxlZCB7XG4gICAgbGFiZWwge1xuICAgICAgY3Vyc29yOiAkY3Vyc29yLWRpc2FibGVkO1xuICAgIH1cbiAgfVxufVxuXG5cbi8vIEZvcm0gY29udHJvbCBmZWVkYmFjayBzdGF0ZXNcbi8vXG4vLyBBcHBseSBjb250ZXh0dWFsIGFuZCBzZW1hbnRpYyBzdGF0ZXMgdG8gaW5kaXZpZHVhbCBmb3JtIGNvbnRyb2xzLlxuXG4uZm9ybS1jb250cm9sLXN1Y2Nlc3MsXG4uZm9ybS1jb250cm9sLXdhcm5pbmcsXG4uZm9ybS1jb250cm9sLWRhbmdlciB7XG4gIHBhZGRpbmctcmlnaHQ6ICgkaW5wdXQtcGFkZGluZy14ICogMyk7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciByaWdodCAoJGlucHV0LWhlaWdodCAqIC4yNSk7XG4gIGJhY2tncm91bmQtc2l6ZTogKCRpbnB1dC1oZWlnaHQgKiAuNjUpICgkaW5wdXQtaGVpZ2h0ICogLjY1KTtcbn1cblxuLy8gRm9ybSB2YWxpZGF0aW9uIHN0YXRlc1xuLmhhcy1zdWNjZXNzIHtcbiAgQGluY2x1ZGUgZm9ybS1jb250cm9sLXZhbGlkYXRpb24oJGJyYW5kLXN1Y2Nlc3MpO1xuXG4gIC5mb3JtLWNvbnRyb2wtc3VjY2VzcyB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCRmb3JtLWljb24tc3VjY2Vzcyk7XG4gIH1cbn1cblxuLmhhcy13YXJuaW5nIHtcbiAgQGluY2x1ZGUgZm9ybS1jb250cm9sLXZhbGlkYXRpb24oJGJyYW5kLXdhcm5pbmcpO1xuXG4gIC5mb3JtLWNvbnRyb2wtd2FybmluZyB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCRmb3JtLWljb24td2FybmluZyk7XG4gIH1cbn1cblxuLmhhcy1kYW5nZXIge1xuICBAaW5jbHVkZSBmb3JtLWNvbnRyb2wtdmFsaWRhdGlvbigkYnJhbmQtZGFuZ2VyKTtcblxuICAuZm9ybS1jb250cm9sLWRhbmdlciB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCRmb3JtLWljb24tZGFuZ2VyKTtcbiAgfVxufVxuXG5cblxuXG4vLyAuZm9ybS1jb250cm9sLXN1Y2Nlc3Mge1xuLy8gICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIjeyRmb3JtLWljb24tc3VjY2Vzc31cIik7XG4vLyAgIGJvcmRlci1jb2xvcjogJGJyYW5kLXN1Y2Nlc3M7XG4vLyB9XG4vL1xuLy8gLmZvcm0tY29udHJvbC13YXJuaW5nIHtcbi8vICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiI3skZm9ybS1pY29uLXdhcm5pbmd9XCIpO1xuLy8gICBib3JkZXItY29sb3I6ICRicmFuZC13YXJuaW5nO1xuLy8gfVxuLy9cbi8vIC5mb3JtLWNvbnRyb2wtZXJyb3Ige1xuLy8gICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIjeyRmb3JtLWljb24tZGFuZ2VyfVwiKTtcbi8vICAgYm9yZGVyLWNvbG9yOiAkYnJhbmQtZGFuZ2VyO1xuLy8gfVxuXG5cbi8vIC5oYXMtZmVlZGJhY2sge1xuLy8gICAvLyBFbmFibGUgYWJzb2x1dGUgcG9zaXRpb25pbmdcbi8vICAgcG9zaXRpb246IHJlbGF0aXZlO1xuLy9cbi8vICAgLy8gRW5zdXJlIGljb25zIGRvbid0IG92ZXJsYXAgdGV4dFxuLy8gICAuZm9ybS1jb250cm9sIHtcbi8vICAgICBwYWRkaW5nLXJpZ2h0OiAoJGlucHV0LWhlaWdodCAqIDEuMjUpO1xuLy8gICB9XG4vLyB9XG4vLyAvLyBGZWVkYmFjayBpY29uXG4vLyAuZm9ybS1jb250cm9sLWZlZWRiYWNrIHtcbi8vICAgcG9zaXRpb246IGFic29sdXRlO1xuLy8gICB0b3A6IDA7XG4vLyAgIHJpZ2h0OiAwO1xuLy8gICB6LWluZGV4OiAyOyAvLyBFbnN1cmUgaWNvbiBpcyBhYm92ZSBpbnB1dCBncm91cHNcbi8vICAgZGlzcGxheTogYmxvY2s7XG4vLyAgIHdpZHRoOiAkaW5wdXQtaGVpZ2h0O1xuLy8gICBoZWlnaHQ6ICRpbnB1dC1oZWlnaHQ7XG4vLyAgIGxpbmUtaGVpZ2h0OiAkaW5wdXQtaGVpZ2h0O1xuLy8gICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4vLyAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuLy8gfVxuLy8gLmlucHV0LWxnICsgLmZvcm0tY29udHJvbC1mZWVkYmFjayxcbi8vIC5pbnB1dC1ncm91cC1sZyArIC5mb3JtLWNvbnRyb2wtZmVlZGJhY2sge1xuLy8gICB3aWR0aDogJGlucHV0LWhlaWdodC1sZztcbi8vICAgaGVpZ2h0OiAkaW5wdXQtaGVpZ2h0LWxnO1xuLy8gICBsaW5lLWhlaWdodDogJGlucHV0LWhlaWdodC1sZztcbi8vIH1cbi8vIC5pbnB1dC1zbSArIC5mb3JtLWNvbnRyb2wtZmVlZGJhY2ssXG4vLyAuaW5wdXQtZ3JvdXAtc20gKyAuZm9ybS1jb250cm9sLWZlZWRiYWNrIHtcbi8vICAgd2lkdGg6ICRpbnB1dC1oZWlnaHQtc207XG4vLyAgIGhlaWdodDogJGlucHV0LWhlaWdodC1zbTtcbi8vICAgbGluZS1oZWlnaHQ6ICRpbnB1dC1oZWlnaHQtc207XG4vLyB9XG4vL1xuLy8gLy8gRm9ybSB2YWxpZGF0aW9uIHN0YXRlc1xuLy8gLmhhcy1zdWNjZXNzIHtcbi8vICAgQGluY2x1ZGUgZm9ybS1jb250cm9sLXZhbGlkYXRpb24oJHN0YXRlLXN1Y2Nlc3MtdGV4dCwgJHN0YXRlLXN1Y2Nlc3MtdGV4dCwgJHN0YXRlLXN1Y2Nlc3MtYmcpO1xuLy8gfVxuLy8gLmhhcy13YXJuaW5nIHtcbi8vICAgQGluY2x1ZGUgZm9ybS1jb250cm9sLXZhbGlkYXRpb24oJHN0YXRlLXdhcm5pbmctdGV4dCwgJHN0YXRlLXdhcm5pbmctdGV4dCwgJHN0YXRlLXdhcm5pbmctYmcpO1xuLy8gfVxuLy8gLmhhcy1kYW5nZXIge1xuLy8gICBAaW5jbHVkZSBmb3JtLWNvbnRyb2wtdmFsaWRhdGlvbigkc3RhdGUtZGFuZ2VyLXRleHQsICRzdGF0ZS1kYW5nZXItdGV4dCwgJHN0YXRlLWRhbmdlci1iZyk7XG4vLyB9XG4vL1xuLy8gLy8gUmVwb3NpdGlvbiBmZWVkYmFjayBpY29uIGlmIGlucHV0IGhhcyB2aXNpYmxlIGxhYmVsIGFib3ZlXG4vLyAuaGFzLWZlZWRiYWNrIGxhYmVsIHtcbi8vXG4vLyAgIH4gLmZvcm0tY29udHJvbC1mZWVkYmFjayB7XG4vLyAgICAgLy8gVE9ETzogcmVkbyB0aGlzIHNpbmNlIHdlIG51a2VkIHRoZSBgJGxpbmUtaGVpZ2h0LWNvbXB1dGVkYFxuLy8gICAgIHRvcDogMDsgLy8gSGVpZ2h0IG9mIHRoZSBgbGFiZWxgIGFuZCBpdHMgbWFyZ2luXG4vLyAgIH1cbi8vXG4vLyAgICYuc3Itb25seSB+IC5mb3JtLWNvbnRyb2wtZmVlZGJhY2sge1xuLy8gICAgIHRvcDogMDtcbi8vICAgfVxuLy8gfVxuXG5cbi8vIElubGluZSBmb3Jtc1xuLy9cbi8vIE1ha2UgZm9ybXMgYXBwZWFyIGlubGluZSgtYmxvY2spIGJ5IGFkZGluZyB0aGUgYC5mb3JtLWlubGluZWAgY2xhc3MuIElubGluZVxuLy8gZm9ybXMgYmVnaW4gc3RhY2tlZCBvbiBleHRyYSBzbWFsbCAobW9iaWxlKSBkZXZpY2VzIGFuZCB0aGVuIGdvIGlubGluZSB3aGVuXG4vLyB2aWV3cG9ydHMgcmVhY2ggPDc2OHB4LlxuLy9cbi8vIFJlcXVpcmVzIHdyYXBwaW5nIGlucHV0cyBhbmQgbGFiZWxzIHdpdGggYC5mb3JtLWdyb3VwYCBmb3IgcHJvcGVyIGRpc3BsYXkgb2Zcbi8vIGRlZmF1bHQgSFRNTCBmb3JtIGNvbnRyb2xzIGFuZCBvdXIgY3VzdG9tIGZvcm0gY29udHJvbHMgKGUuZy4sIGlucHV0IGdyb3VwcykuXG5cbi5mb3JtLWlubGluZSB7XG5cbiAgLy8gS2ljayBpbiB0aGUgaW5saW5lXG4gIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoc20pIHtcbiAgICAvLyBJbmxpbmUtYmxvY2sgYWxsIHRoZSB0aGluZ3MgZm9yIFwiaW5saW5lXCJcbiAgICAuZm9ybS1ncm91cCB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB9XG5cbiAgICAvLyBBbGxvdyBmb2xrcyB0byAqbm90KiB1c2UgYC5mb3JtLWdyb3VwYFxuICAgIC5mb3JtLWNvbnRyb2wge1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgd2lkdGg6IGF1dG87IC8vIFByZXZlbnQgbGFiZWxzIGZyb20gc3RhY2tpbmcgYWJvdmUgaW5wdXRzIGluIGAuZm9ybS1ncm91cGBcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgfVxuXG4gICAgLy8gTWFrZSBzdGF0aWMgY29udHJvbHMgYmVoYXZlIGxpa2UgcmVndWxhciBvbmVzXG4gICAgLmZvcm0tY29udHJvbC1zdGF0aWMge1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIH1cblxuICAgIC5pbnB1dC1ncm91cCB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtdGFibGU7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuXG4gICAgICAuaW5wdXQtZ3JvdXAtYWRkb24sXG4gICAgICAuaW5wdXQtZ3JvdXAtYnRuLFxuICAgICAgLmZvcm0tY29udHJvbCB7XG4gICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIElucHV0IGdyb3VwcyBuZWVkIHRoYXQgMTAwJSB3aWR0aCB0aG91Z2hcbiAgICAuaW5wdXQtZ3JvdXAgPiAuZm9ybS1jb250cm9sIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgIC5mb3JtLWNvbnRyb2wtbGFiZWwge1xuICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgfVxuXG4gICAgLy8gUmVtb3ZlIGRlZmF1bHQgbWFyZ2luIG9uIHJhZGlvcy9jaGVja2JveGVzIHRoYXQgd2VyZSB1c2VkIGZvciBzdGFja2luZywgYW5kXG4gICAgLy8gdGhlbiB1bmRvIHRoZSBmbG9hdGluZyBvZiByYWRpb3MgYW5kIGNoZWNrYm94ZXMgdG8gbWF0Y2guXG4gICAgLnJhZGlvLFxuICAgIC5jaGVja2JveCB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG5cbiAgICAgIGxhYmVsIHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgfVxuICAgIH1cbiAgICAucmFkaW8gaW5wdXRbdHlwZT1cInJhZGlvXCJdLFxuICAgIC5jaGVja2JveCBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0ge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgfVxuXG4gICAgLy8gUmUtb3ZlcnJpZGUgdGhlIGZlZWRiYWNrIGljb24uXG4gICAgLmhhcy1mZWVkYmFjayAuZm9ybS1jb250cm9sLWZlZWRiYWNrIHtcbiAgICAgIHRvcDogMDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIFRoZSBkcm9wZG93biB3cmFwcGVyIChgPGRpdj5gKVxuLmRyb3B1cCxcbi5kcm9wZG93biB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLmRyb3Bkb3duLXRvZ2dsZSB7XG4gIC8vIEdlbmVyYXRlIHRoZSBjYXJldCBhdXRvbWF0aWNhbGx5XG4gICY6OmFmdGVyIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgd2lkdGg6IDA7XG4gICAgaGVpZ2h0OiAwO1xuICAgIG1hcmdpbi1yaWdodDogLjI1cmVtO1xuICAgIG1hcmdpbi1sZWZ0OiAuMjVyZW07XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGJvcmRlci10b3A6ICRjYXJldC13aWR0aCBzb2xpZDtcbiAgICBib3JkZXItcmlnaHQ6ICRjYXJldC13aWR0aCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICBib3JkZXItbGVmdDogJGNhcmV0LXdpZHRoIHNvbGlkIHRyYW5zcGFyZW50O1xuICB9XG5cbiAgLy8gUHJldmVudCB0aGUgZm9jdXMgb24gdGhlIGRyb3Bkb3duIHRvZ2dsZSB3aGVuIGNsb3NpbmcgZHJvcGRvd25zXG4gICY6Zm9jdXMge1xuICAgIG91dGxpbmU6IDA7XG4gIH1cbn1cblxuLmRyb3B1cCB7XG4gIC5kcm9wZG93bi10b2dnbGUge1xuICAgICY6OmFmdGVyIHtcbiAgICAgIGJvcmRlci10b3A6IDA7XG4gICAgICBib3JkZXItYm90dG9tOiAkY2FyZXQtd2lkdGggc29saWQ7XG4gICAgfVxuICB9XG59XG5cbi8vIFRoZSBkcm9wZG93biBtZW51XG4uZHJvcGRvd24tbWVudSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAxMDAlO1xuICBsZWZ0OiAwO1xuICB6LWluZGV4OiAkemluZGV4LWRyb3Bkb3duO1xuICBkaXNwbGF5OiBub25lOyAvLyBub25lIGJ5IGRlZmF1bHQsIGJ1dCBibG9jayBvbiBcIm9wZW5cIiBvZiB0aGUgbWVudVxuICBmbG9hdDogbGVmdDtcbiAgbWluLXdpZHRoOiAxNjBweDtcbiAgcGFkZGluZzogNXB4IDA7XG4gIG1hcmdpbjogMnB4IDAgMDsgLy8gb3ZlcnJpZGUgZGVmYXVsdCB1bFxuICBmb250LXNpemU6ICRmb250LXNpemUtYmFzZTtcbiAgY29sb3I6ICRib2R5LWNvbG9yO1xuICB0ZXh0LWFsaWduOiBsZWZ0OyAvLyBFbnN1cmVzIHByb3BlciBhbGlnbm1lbnQgaWYgcGFyZW50IGhhcyBpdCBjaGFuZ2VkIChlLmcuLCBtb2RhbCBmb290ZXIpXG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICRkcm9wZG93bi1iZztcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcbiAgYm9yZGVyOiAkZHJvcGRvd24tYm9yZGVyLXdpZHRoIHNvbGlkICRkcm9wZG93bi1ib3JkZXItY29sb3I7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGJvcmRlci1yYWRpdXMpO1xuICBAaW5jbHVkZSBib3gtc2hhZG93KDAgNnB4IDEycHggcmdiYSgwLDAsMCwuMTc1KSk7XG59XG5cbi8vIERpdmlkZXJzIChiYXNpY2FsbHkgYW4gYDxocj5gKSB3aXRoaW4gdGhlIGRyb3Bkb3duXG4uZHJvcGRvd24tZGl2aWRlciB7XG4gIEBpbmNsdWRlIG5hdi1kaXZpZGVyKCRkcm9wZG93bi1kaXZpZGVyLWJnKTtcbn1cblxuLy8gTGlua3MsIGJ1dHRvbnMsIGFuZCBtb3JlIHdpdGhpbiB0aGUgZHJvcGRvd24gbWVudVxuLy9cbi8vIGA8YnV0dG9uPmAtc3BlY2lmaWMgc3R5bGVzIGFyZSBkZW5vdGVkIHdpdGggYC8vIEZvciA8YnV0dG9uPnNgXG4uZHJvcGRvd24taXRlbSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMTAwJTsgLy8gRm9yIGA8YnV0dG9uPmBzXG4gIHBhZGRpbmc6IDNweCAyMHB4O1xuICBjbGVhcjogYm90aDtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgbGluZS1oZWlnaHQ6ICRsaW5lLWhlaWdodDtcbiAgY29sb3I6ICRkcm9wZG93bi1saW5rLWNvbG9yO1xuICB0ZXh0LWFsaWduOiBpbmhlcml0OyAvLyBGb3IgYDxidXR0b24+YHNcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsgLy8gcHJldmVudCBsaW5rcyBmcm9tIHJhbmRvbWx5IGJyZWFraW5nIG9udG8gbmV3IGxpbmVzXG4gIGJhY2tncm91bmQ6IG5vbmU7IC8vIEZvciBgPGJ1dHRvbj5gc1xuICBib3JkZXI6IDA7IC8vIEZvciBgPGJ1dHRvbj5gc1xuXG4gIEBpbmNsdWRlIGhvdmVyLWZvY3VzIHtcbiAgICBjb2xvcjogJGRyb3Bkb3duLWxpbmstaG92ZXItY29sb3I7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRkcm9wZG93bi1saW5rLWhvdmVyLWJnO1xuICB9XG5cbiAgLy8gQWN0aXZlIHN0YXRlXG4gICYuYWN0aXZlIHtcbiAgICBAaW5jbHVkZSBwbGFpbi1ob3Zlci1mb2N1cyB7XG4gICAgICBjb2xvcjogJGRyb3Bkb3duLWxpbmstYWN0aXZlLWNvbG9yO1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGRyb3Bkb3duLWxpbmstYWN0aXZlLWJnO1xuICAgICAgb3V0bGluZTogMDtcbiAgICB9XG4gIH1cblxuICAvLyBEaXNhYmxlZCBzdGF0ZVxuICAvL1xuICAvLyBHcmF5IG91dCB0ZXh0IGFuZCBlbnN1cmUgdGhlIGhvdmVyL2ZvY3VzIHN0YXRlIHJlbWFpbnMgZ3JheVxuICAmLmRpc2FibGVkIHtcbiAgICBAaW5jbHVkZSBwbGFpbi1ob3Zlci1mb2N1cyB7XG4gICAgICBjb2xvcjogJGRyb3Bkb3duLWxpbmstZGlzYWJsZWQtY29sb3I7XG4gICAgfVxuXG4gICAgLy8gTnVrZSBob3Zlci9mb2N1cyBlZmZlY3RzXG4gICAgQGluY2x1ZGUgaG92ZXItZm9jdXMge1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgY3Vyc29yOiAkY3Vyc29yLWRpc2FibGVkO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOyAvLyBSZW1vdmUgQ1NTIGdyYWRpZW50XG4gICAgICBAaW5jbHVkZSByZXNldC1maWx0ZXIoKTtcbiAgICB9XG4gIH1cbn1cblxuLy8gT3BlbiBzdGF0ZSBmb3IgdGhlIGRyb3Bkb3duXG4ub3BlbiB7XG4gIC8vIFNob3cgdGhlIG1lbnVcbiAgPiAuZHJvcGRvd24tbWVudSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cblxuICAvLyBSZW1vdmUgdGhlIG91dGxpbmUgd2hlbiA6Zm9jdXMgaXMgdHJpZ2dlcmVkXG4gID4gYSB7XG4gICAgb3V0bGluZTogMDtcbiAgfVxufVxuXG4vLyBNZW51IHBvc2l0aW9uaW5nXG4vL1xuLy8gQWRkIGV4dHJhIGNsYXNzIHRvIGAuZHJvcGRvd24tbWVudWAgdG8gZmxpcCB0aGUgYWxpZ25tZW50IG9mIHRoZSBkcm9wZG93blxuLy8gbWVudSB3aXRoIHRoZSBwYXJlbnQuXG4uZHJvcGRvd24tbWVudS1yaWdodCB7XG4gIHJpZ2h0OiAwO1xuICBsZWZ0OiBhdXRvOyAvLyBSZXNldCB0aGUgZGVmYXVsdCBmcm9tIGAuZHJvcGRvd24tbWVudWBcbn1cbi8vIFdpdGggdjMsIHdlIGVuYWJsZWQgYXV0by1mbGlwcGluZyBpZiB5b3UgaGF2ZSBhIGRyb3Bkb3duIHdpdGhpbiBhIHJpZ2h0XG4vLyBhbGlnbmVkIG5hdiBjb21wb25lbnQuIFRvIGVuYWJsZSB0aGUgdW5kb2luZyBvZiB0aGF0LCB3ZSBwcm92aWRlIGFuIG92ZXJyaWRlXG4vLyB0byByZXN0b3JlIHRoZSBkZWZhdWx0IGRyb3Bkb3duIG1lbnUgYWxpZ25tZW50LlxuLy9cbi8vIFRoaXMgaXMgb25seSBmb3IgbGVmdC1hbGlnbmluZyBhIGRyb3Bkb3duIG1lbnUgd2l0aGluIGEgYC5uYXZiYXItcmlnaHRgIG9yXG4vLyBgLnB1bGwtcmlnaHRgIG5hdiBjb21wb25lbnQuXG4uZHJvcGRvd24tbWVudS1sZWZ0IHtcbiAgcmlnaHQ6IGF1dG87XG4gIGxlZnQ6IDA7XG59XG5cbi8vIERyb3Bkb3duIHNlY3Rpb24gaGVhZGVyc1xuLmRyb3Bkb3duLWhlYWRlciB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiAzcHggMjBweDtcbiAgZm9udC1zaXplOiAkZm9udC1zaXplLXNtO1xuICBsaW5lLWhlaWdodDogJGxpbmUtaGVpZ2h0O1xuICBjb2xvcjogJGRyb3Bkb3duLWhlYWRlci1jb2xvcjtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsgLy8gYXMgd2l0aCA+IGxpID4gYVxufVxuXG4vLyBCYWNrZHJvcCB0byBjYXRjaCBib2R5IGNsaWNrcyBvbiBtb2JpbGUsIGV0Yy5cbi5kcm9wZG93bi1iYWNrZHJvcCB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwO1xuICByaWdodDogMDtcbiAgYm90dG9tOiAwO1xuICBsZWZ0OiAwO1xuICB6LWluZGV4OiAoJHppbmRleC1kcm9wZG93biAtIDEwKTtcbn1cblxuLy8gUmlnaHQgYWxpZ25lZCBkcm9wZG93bnNcbi5wdWxsLXJpZ2h0ID4gLmRyb3Bkb3duLW1lbnUge1xuICByaWdodDogMDtcbiAgbGVmdDogYXV0bztcbn1cblxuLy8gQWxsb3cgZm9yIGRyb3Bkb3ducyB0byBnbyBib3R0b20gdXAgKGFrYSwgZHJvcHVwLW1lbnUpXG4vL1xuLy8gSnVzdCBhZGQgLmRyb3B1cCBhZnRlciB0aGUgc3RhbmRhcmQgLmRyb3Bkb3duIGNsYXNzIGFuZCB5b3UncmUgc2V0LlxuLy8gVE9ETzogYWJzdHJhY3QgdGhpcyBzbyB0aGF0IHRoZSBuYXZiYXIgZml4ZWQgc3R5bGVzIGFyZSBub3QgcGxhY2VkIGhlcmU/XG5cbi5kcm9wdXAsXG4ubmF2YmFyLWZpeGVkLWJvdHRvbSAuZHJvcGRvd24ge1xuICAvLyBSZXZlcnNlIHRoZSBjYXJldFxuICAuY2FyZXQge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgYm9yZGVyLXRvcDogMDtcbiAgICBib3JkZXItYm90dG9tOiAkY2FyZXQtd2lkdGggc29saWQ7XG4gIH1cblxuICAvLyBEaWZmZXJlbnQgcG9zaXRpb25pbmcgZm9yIGJvdHRvbSB1cCBtZW51XG4gIC5kcm9wZG93bi1tZW51IHtcbiAgICB0b3A6IGF1dG87XG4gICAgYm90dG9tOiAxMDAlO1xuICAgIG1hcmdpbi1ib3R0b206IDJweDtcbiAgfVxufVxuIiwiLy8gQmFzZSBjbGFzc1xuLy9cbi8vIEtpY2tzdGFydCBhbnkgbmF2aWdhdGlvbiBjb21wb25lbnQgd2l0aCBhIHNldCBvZiBzdHlsZSByZXNldHMuIFdvcmtzIHdpdGhcbi8vIGA8bmF2PmBzIG9yIGA8dWw+YHMuXG5cbi5uYXYge1xuICBwYWRkaW5nLWxlZnQ6IDA7XG4gIG1hcmdpbi1ib3R0b206IDA7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG59XG5cbi5uYXYtbGluayB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxuICBAaW5jbHVkZSBob3Zlci1mb2N1cyB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB9XG5cbiAgLy8gRGlzYWJsZWQgc3RhdGUgbGlnaHRlbnMgdGV4dCBhbmQgcmVtb3ZlcyBob3Zlci90YWIgZWZmZWN0c1xuICAmLmRpc2FibGVkIHtcbiAgICBjb2xvcjogJG5hdi1kaXNhYmxlZC1saW5rLWNvbG9yO1xuXG4gICAgQGluY2x1ZGUgcGxhaW4taG92ZXItZm9jdXMge1xuICAgICAgY29sb3I6ICRuYXYtZGlzYWJsZWQtbGluay1ob3Zlci1jb2xvcjtcbiAgICAgIGN1cnNvcjogJGN1cnNvci1kaXNhYmxlZDtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIH1cbiAgfVxufVxuXG5cbi8vIE5hdiBpbmxpbmVcblxuLm5hdi1pbmxpbmUge1xuICAubmF2LWl0ZW0ge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgfVxuXG4gIC5uYXYtaXRlbSArIC5uYXYtaXRlbSxcbiAgLm5hdi1saW5rICsgLm5hdi1saW5rIHtcbiAgICBtYXJnaW4tbGVmdDogMXJlbTtcbiAgfVxufVxuXG5cbi8vXG4vLyBUYWJzXG4vL1xuXG4ubmF2LXRhYnMge1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJG5hdi10YWJzLWJvcmRlci1jb2xvcjtcbiAgQGluY2x1ZGUgY2xlYXJmaXgoKTtcblxuICAubmF2LWl0ZW0ge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIC8vIE1ha2UgdGhlIGxpc3QtaXRlbXMgb3ZlcmxheSB0aGUgYm90dG9tIGJvcmRlclxuICAgIG1hcmdpbi1ib3R0b206IC0xcHg7XG5cbiAgICArIC5uYXYtaXRlbSB7XG4gICAgICBtYXJnaW4tbGVmdDogLjJyZW07XG4gICAgfVxuICB9XG5cbiAgLm5hdi1saW5rIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwYWRkaW5nOiAkbmF2LWxpbmstcGFkZGluZztcbiAgICBib3JkZXI6ICRuYXYtdGFicy1saW5rLWJvcmRlci13aWR0aCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRib3JkZXItcmFkaXVzICRib3JkZXItcmFkaXVzIDAgMCk7XG5cbiAgICBAaW5jbHVkZSBob3Zlci1mb2N1cyB7XG4gICAgICBib3JkZXItY29sb3I6ICRuYXYtdGFicy1saW5rLWhvdmVyLWJvcmRlci1jb2xvciAkbmF2LXRhYnMtbGluay1ob3Zlci1ib3JkZXItY29sb3IgJG5hdi10YWJzLWJvcmRlci1jb2xvcjtcbiAgICB9XG5cbiAgICAmLmRpc2FibGVkIHtcbiAgICAgIEBpbmNsdWRlIHBsYWluLWhvdmVyLWZvY3VzIHtcbiAgICAgICAgY29sb3I6ICRuYXYtZGlzYWJsZWQtbGluay1jb2xvcjtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLm5hdi1saW5rLmFjdGl2ZSxcbiAgLm5hdi1pdGVtLm9wZW4gLm5hdi1saW5rIHtcbiAgICBAaW5jbHVkZSBwbGFpbi1ob3Zlci1mb2N1cyB7XG4gICAgICBjb2xvcjogJG5hdi10YWJzLWFjdGl2ZS1saW5rLWhvdmVyLWNvbG9yO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG5hdi10YWJzLWFjdGl2ZS1saW5rLWhvdmVyLWJnO1xuICAgICAgYm9yZGVyLWNvbG9yOiAkbmF2LXRhYnMtYWN0aXZlLWxpbmstaG92ZXItYm9yZGVyLWNvbG9yICRuYXYtdGFicy1hY3RpdmUtbGluay1ob3Zlci1ib3JkZXItY29sb3IgdHJhbnNwYXJlbnQ7XG4gICAgfVxuICB9XG59XG5cblxuLy9cbi8vIFBpbGxzXG4vL1xuXG4ubmF2LXBpbGxzIHtcbiAgQGluY2x1ZGUgY2xlYXJmaXgoKTtcblxuICAubmF2LWl0ZW0ge1xuICAgIGZsb2F0OiBsZWZ0O1xuXG4gICAgKyAubmF2LWl0ZW0ge1xuICAgICAgbWFyZ2luLWxlZnQ6IC4ycmVtO1xuICAgIH1cbiAgfVxuXG4gIC5uYXYtbGluayB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcGFkZGluZzogJG5hdi1saW5rLXBhZGRpbmc7XG4gICAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkbmF2LXBpbGxzLWJvcmRlci1yYWRpdXMpO1xuICB9XG5cbiAgLm5hdi1saW5rLmFjdGl2ZSxcbiAgLm5hdi1pdGVtLm9wZW4gLm5hdi1saW5rIHtcbiAgICBAaW5jbHVkZSBwbGFpbi1ob3Zlci1mb2N1cyB7XG4gICAgICBjb2xvcjogJGNvbXBvbmVudC1hY3RpdmUtY29sb3I7XG4gICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29tcG9uZW50LWFjdGl2ZS1iZztcbiAgICB9XG4gIH1cbn1cblxuLm5hdi1zdGFja2VkIHtcbiAgLm5hdi1pdGVtIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBmbG9hdDogbm9uZTtcblxuICAgICsgLm5hdi1pdGVtIHtcbiAgICAgIG1hcmdpbi10b3A6IC4ycmVtO1xuICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgfVxuICB9XG59XG5cblxuLy9cbi8vIFRhYmJhYmxlIHRhYnNcbi8vXG5cbi8vIEhpZGUgdGFiYmFibGUgcGFuZXMgdG8gc3RhcnQsIHNob3cgdGhlbSB3aGVuIGAuYWN0aXZlYFxuLnRhYi1jb250ZW50IHtcbiAgPiAudGFiLXBhbmUge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbiAgPiAuYWN0aXZlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxufVxuXG5cbi8vXG4vLyBEcm9wZG93bnNcbi8vXG5cbi5uYXYtdGFicyAuZHJvcGRvd24tbWVudSB7XG4gIC8vIE1ha2UgZHJvcGRvd24gYm9yZGVyIG92ZXJsYXAgdGFiIGJvcmRlclxuICBtYXJnaW4tdG9wOiAtMXB4O1xuICAvLyBSZW1vdmUgdGhlIHRvcCByb3VuZGVkIGNvcm5lcnMgaGVyZSBzaW5jZSB0aGVyZSBpcyBhIGhhcmQgZWRnZSBhYm92ZSB0aGUgbWVudVxuICBAaW5jbHVkZSBib3JkZXItdG9wLXJhZGl1cygwKTtcbn1cbiIsIi8vXG4vLyBCYXNlIHN0eWxlc1xuLy9cblxuLmNhcmQge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW4tYm90dG9tOiAkY2FyZC1zcGFjZXIteTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGNhcmQtYmc7XG4gIGJvcmRlcjogJGNhcmQtYm9yZGVyLXdpZHRoIHNvbGlkICRjYXJkLWJvcmRlci1jb2xvcjtcbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkY2FyZC1ib3JkZXItcmFkaXVzKTtcbn1cblxuLmNhcmQtYmxvY2sge1xuICBwYWRkaW5nOiAkY2FyZC1zcGFjZXIteDtcbn1cblxuLmNhcmQtdGl0bGUge1xuICBtYXJnaW4tYm90dG9tOiAkY2FyZC1zcGFjZXIteTtcbn1cblxuLmNhcmQtc3VidGl0bGUge1xuICBtYXJnaW4tdG9wOiAtKCRjYXJkLXNwYWNlci15IC8gMik7XG4gIG1hcmdpbi1ib3R0b206IDA7XG59XG5cbi5jYXJkLXRleHQ6bGFzdC1jaGlsZCB7XG4gIG1hcmdpbi1ib3R0b206IDA7XG59XG5cbi8vIC5jYXJkLWFjdGlvbnMge1xuLy8gICBwYWRkaW5nOiAkY2FyZC1zcGFjZXIteSAkY2FyZC1zcGFjZXIteDtcblxuLy8gICAuY2FyZC1saW5rICsgLmNhcmQtbGluayB7XG4vLyAgICAgbWFyZ2luLWxlZnQ6ICRjYXJkLXNwYWNlci14O1xuLy8gICB9XG4vLyB9XG5cbi5jYXJkLWxpbmsge1xuICBAaW5jbHVkZSBob3ZlciB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB9XG5cbiAgKyAuY2FyZC1saW5rIHtcbiAgICBtYXJnaW4tbGVmdDogJGNhcmQtc3BhY2VyLXg7XG4gIH1cbn1cblxuQGlmICRlbmFibGUtcm91bmRlZCB7XG4gIC5jYXJkIHtcbiAgICA+IC5saXN0LWdyb3VwOmZpcnN0LWNoaWxkIHtcbiAgICAgIC5saXN0LWdyb3VwLWl0ZW06Zmlyc3QtY2hpbGQge1xuICAgICAgICBib3JkZXItcmFkaXVzOiAkY2FyZC1ib3JkZXItcmFkaXVzICRjYXJkLWJvcmRlci1yYWRpdXMgMCAwO1xuICAgICAgfVxuICAgIH1cblxuICAgID4gLmxpc3QtZ3JvdXA6bGFzdC1jaGlsZCB7XG4gICAgICAubGlzdC1ncm91cC1pdGVtOmxhc3QtY2hpbGQge1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwIDAgJGNhcmQtYm9yZGVyLXJhZGl1cyAkY2FyZC1ib3JkZXItcmFkaXVzO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5cbi8vXG4vLyBPcHRpb25hbCB0ZXh0dWFsIGNhcHNcbi8vXG5cbi5jYXJkLWhlYWRlciB7XG4gIHBhZGRpbmc6ICRjYXJkLXNwYWNlci15ICRjYXJkLXNwYWNlci14O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkY2FyZC1jYXAtYmc7XG4gIGJvcmRlci1ib3R0b206ICRjYXJkLWJvcmRlci13aWR0aCBzb2xpZCAkY2FyZC1ib3JkZXItY29sb3I7XG5cbiAgJjpmaXJzdC1jaGlsZCB7XG4gICAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkY2FyZC1ib3JkZXItcmFkaXVzLWlubmVyICRjYXJkLWJvcmRlci1yYWRpdXMtaW5uZXIgMCAwKTtcbiAgfVxufVxuXG4uY2FyZC1mb290ZXIge1xuICBwYWRkaW5nOiAkY2FyZC1zcGFjZXIteSAkY2FyZC1zcGFjZXIteDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGNhcmQtY2FwLWJnO1xuICBib3JkZXItdG9wOiAkY2FyZC1ib3JkZXItd2lkdGggc29saWQgJGNhcmQtYm9yZGVyLWNvbG9yO1xuXG4gICY6bGFzdC1jaGlsZCB7XG4gICAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygwIDAgJGNhcmQtYm9yZGVyLXJhZGl1cy1pbm5lciAkY2FyZC1ib3JkZXItcmFkaXVzLWlubmVyKTtcbiAgfVxufVxuXG5cbi8vXG4vLyBCYWNrZ3JvdW5kIHZhcmlhdGlvbnNcbi8vXG5cbi5jYXJkLXByaW1hcnkge1xuICBAaW5jbHVkZSBjYXJkLXZhcmlhbnQoJGJyYW5kLXByaW1hcnksICRicmFuZC1wcmltYXJ5KTtcbn1cbi5jYXJkLXN1Y2Nlc3Mge1xuICBAaW5jbHVkZSBjYXJkLXZhcmlhbnQoJGJyYW5kLXN1Y2Nlc3MsICRicmFuZC1zdWNjZXNzKTtcbn1cbi5jYXJkLWluZm8ge1xuICBAaW5jbHVkZSBjYXJkLXZhcmlhbnQoJGJyYW5kLWluZm8sICRicmFuZC1pbmZvKTtcbn1cbi5jYXJkLXdhcm5pbmcge1xuICBAaW5jbHVkZSBjYXJkLXZhcmlhbnQoJGJyYW5kLXdhcm5pbmcsICRicmFuZC13YXJuaW5nKTtcbn1cbi5jYXJkLWRhbmdlciB7XG4gIEBpbmNsdWRlIGNhcmQtdmFyaWFudCgkYnJhbmQtZGFuZ2VyLCAkYnJhbmQtZGFuZ2VyKTtcbn1cblxuLy8gUmVtb3ZlIGFsbCBiYWNrZ3JvdW5kc1xuLmNhcmQtcHJpbWFyeS1vdXRsaW5lIHtcbiAgQGluY2x1ZGUgY2FyZC1vdXRsaW5lLXZhcmlhbnQoJGJ0bi1wcmltYXJ5LWJnKTtcbn1cbi5jYXJkLXNlY29uZGFyeS1vdXRsaW5lIHtcbiAgQGluY2x1ZGUgY2FyZC1vdXRsaW5lLXZhcmlhbnQoJGJ0bi1zZWNvbmRhcnktYm9yZGVyKTtcbn1cbi5jYXJkLWluZm8tb3V0bGluZSB7XG4gIEBpbmNsdWRlIGNhcmQtb3V0bGluZS12YXJpYW50KCRidG4taW5mby1iZyk7XG59XG4uY2FyZC1zdWNjZXNzLW91dGxpbmUge1xuICBAaW5jbHVkZSBjYXJkLW91dGxpbmUtdmFyaWFudCgkYnRuLXN1Y2Nlc3MtYmcpO1xufVxuLmNhcmQtd2FybmluZy1vdXRsaW5lIHtcbiAgQGluY2x1ZGUgY2FyZC1vdXRsaW5lLXZhcmlhbnQoJGJ0bi13YXJuaW5nLWJnKTtcbn1cbi5jYXJkLWRhbmdlci1vdXRsaW5lIHtcbiAgQGluY2x1ZGUgY2FyZC1vdXRsaW5lLXZhcmlhbnQoJGJ0bi1kYW5nZXItYmcpO1xufVxuXG4vL1xuLy8gSW52ZXJzZSB0ZXh0IHdpdGhpbiBhIGNhcmQgZm9yIHVzZSB3aXRoIGRhcmsgYmFja2dyb3VuZHNcbi8vXG5cbi5jYXJkLWludmVyc2Uge1xuICBAaW5jbHVkZSBjYXJkLWludmVyc2U7XG59XG5cbi8vXG4vLyBCbG9ja3F1b3RlXG4vL1xuXG4uY2FyZC1ibG9ja3F1b3RlIHtcbiAgcGFkZGluZzogMDtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbiAgYm9yZGVyLWxlZnQ6IDA7XG59XG5cbi8vIENhcmQgaW1hZ2Vcbi5jYXJkLWltZyB7XG4gIC8vIG1hcmdpbjogLTEuMzI1cmVtO1xuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKC4yNXJlbSk7XG59XG4uY2FyZC1pbWctb3ZlcmxheSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICByaWdodDogMDtcbiAgYm90dG9tOiAwO1xuICBsZWZ0OiAwO1xuICBwYWRkaW5nOiAxLjI1cmVtO1xufVxuXG5cblxuLy8gQ2FyZCBpbWFnZSBjYXBzXG4uY2FyZC1pbWctdG9wIHtcbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkY2FyZC1ib3JkZXItcmFkaXVzLWlubmVyICRjYXJkLWJvcmRlci1yYWRpdXMtaW5uZXIgMCAwKTtcbn1cbi5jYXJkLWltZy1ib3R0b20ge1xuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKDAgMCAkY2FyZC1ib3JkZXItcmFkaXVzLWlubmVyICRjYXJkLWJvcmRlci1yYWRpdXMtaW5uZXIpO1xufVxuXG5cbi8vXG4vLyBDYXJkIHNldFxuLy9cblxuQGlmICRlbmFibGUtZmxleCB7XG4gIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoc20pIHtcbiAgICAuY2FyZC1kZWNrIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuICAgICAgbWFyZ2luLXJpZ2h0OiAtLjYyNXJlbTtcbiAgICAgIG1hcmdpbi1sZWZ0OiAtLjYyNXJlbTtcblxuICAgICAgLmNhcmQge1xuICAgICAgICBmbGV4OiAxIDAgMDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAuNjI1cmVtO1xuICAgICAgICBtYXJnaW4tbGVmdDogLjYyNXJlbTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn0gQGVsc2Uge1xuICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKHNtKSB7XG4gICAgLmNhcmQtZGVjayB7XG4gICAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICAgIHRhYmxlLWxheW91dDogZml4ZWQ7XG4gICAgICBib3JkZXItc3BhY2luZzogMS4yNXJlbSAwO1xuXG4gICAgICAuY2FyZCB7XG4gICAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgICAgIHdpZHRoOiAxJTtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgICAgIH1cbiAgICB9XG4gICAgLmNhcmQtZGVjay13cmFwcGVyIHtcbiAgICAgIG1hcmdpbi1yaWdodDogLTEuMjVyZW07XG4gICAgICBtYXJnaW4tbGVmdDogLTEuMjVyZW07XG4gICAgfVxuICB9XG59XG5cbi8vXG4vLyBDYXJkIGdyb3Vwc1xuLy9cblxuQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cChzbSkge1xuICAuY2FyZC1ncm91cCB7XG4gICAgQGlmICRlbmFibGUtZmxleCB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC1mbG93OiByb3cgd3JhcDtcbiAgICB9IEBlbHNlIHtcbiAgICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB0YWJsZS1sYXlvdXQ6IGZpeGVkO1xuICAgIH1cblxuICAgIC5jYXJkIHtcbiAgICAgIEBpZiAkZW5hYmxlLWZsZXgge1xuICAgICAgICBmbGV4OiAxIDAgMDtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICAgICAgfVxuXG4gICAgICArIC5jYXJkIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgIGJvcmRlci1sZWZ0OiAwO1xuICAgICAgfVxuXG4gICAgICAvLyBIYW5kbGUgcm91bmRlZCBjb3JuZXJzXG4gICAgICBAaWYgJGVuYWJsZS1yb3VuZGVkIHtcbiAgICAgICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgQGluY2x1ZGUgYm9yZGVyLXJpZ2h0LXJhZGl1cygwKTtcblxuICAgICAgICAgIC5jYXJkLWltZy10b3Age1xuICAgICAgICAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7XG4gICAgICAgICAgfVxuICAgICAgICAgIC5jYXJkLWltZy1ib3R0b20ge1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgQGluY2x1ZGUgYm9yZGVyLWxlZnQtcmFkaXVzKDApO1xuXG4gICAgICAgICAgLmNhcmQtaW1nLXRvcCB7XG4gICAgICAgICAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwO1xuICAgICAgICAgIH1cbiAgICAgICAgICAuY2FyZC1pbWctYm90dG9tIHtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJjpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpIHtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiAwO1xuXG4gICAgICAgICAgLmNhcmQtaW1nLXRvcCxcbiAgICAgICAgICAuY2FyZC1pbWctYm90dG9tIHtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cblxuLy9cbi8vIENhcmRcbi8vXG5cbkBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoc20pIHtcbiAgLmNhcmQtY29sdW1ucyB7XG4gICAgY29sdW1uLWNvdW50OiAzO1xuICAgIGNvbHVtbi1nYXA6IDEuMjVyZW07XG5cbiAgICAuY2FyZCB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB3aWR0aDogMTAwJTsgLy8gRG9uJ3QgbGV0IHRoZW0gZXhjZWVkIHRoZSBjb2x1bW4gd2lkdGhcbiAgICB9XG4gIH1cbn1cbiIsIi5wYWdpbmF0aW9uIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwYWRkaW5nLWxlZnQ6IDA7XG4gIG1hcmdpbi10b3A6ICRzcGFjZXIteTtcbiAgbWFyZ2luLWJvdHRvbTogJHNwYWNlci15O1xuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCk7XG59XG5cbi5wYWdlLWl0ZW0ge1xuICBkaXNwbGF5OiBpbmxpbmU7IC8vIFJlbW92ZSBsaXN0LXN0eWxlIGFuZCBibG9jay1sZXZlbCBkZWZhdWx0c1xuXG4gICY6Zmlyc3QtY2hpbGQge1xuICAgIC5wYWdlLWxpbmsge1xuICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICBAaW5jbHVkZSBib3JkZXItbGVmdC1yYWRpdXMoJGJvcmRlci1yYWRpdXMpO1xuICAgIH1cbiAgfVxuICAmOmxhc3QtY2hpbGQge1xuICAgIC5wYWdlLWxpbmsge1xuICAgICAgQGluY2x1ZGUgYm9yZGVyLXJpZ2h0LXJhZGl1cygkYm9yZGVyLXJhZGl1cyk7XG4gICAgfVxuICB9XG5cbiAgJi5hY3RpdmUgLnBhZ2UtbGluayB7XG4gICAgQGluY2x1ZGUgcGxhaW4taG92ZXItZm9jdXMge1xuICAgICAgei1pbmRleDogMjtcbiAgICAgIGNvbG9yOiAkcGFnaW5hdGlvbi1hY3RpdmUtY29sb3I7XG4gICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcGFnaW5hdGlvbi1hY3RpdmUtYmc7XG4gICAgICBib3JkZXItY29sb3I6ICRwYWdpbmF0aW9uLWFjdGl2ZS1ib3JkZXI7XG4gICAgfVxuICB9XG5cbiAgJi5kaXNhYmxlZCAucGFnZS1saW5rIHtcbiAgICBAaW5jbHVkZSBwbGFpbi1ob3Zlci1mb2N1cyB7XG4gICAgICBjb2xvcjogJHBhZ2luYXRpb24tZGlzYWJsZWQtY29sb3I7XG4gICAgICBjdXJzb3I6ICRjdXJzb3ItZGlzYWJsZWQ7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcGFnaW5hdGlvbi1kaXNhYmxlZC1iZztcbiAgICAgIGJvcmRlci1jb2xvcjogJHBhZ2luYXRpb24tZGlzYWJsZWQtYm9yZGVyO1xuICAgIH1cbiAgfVxufVxuXG4ucGFnZS1saW5rIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBmbG9hdDogbGVmdDsgLy8gQ29sbGFwc2Ugd2hpdGUtc3BhY2VcbiAgcGFkZGluZzogJHBhZ2luYXRpb24tcGFkZGluZy15ICRwYWdpbmF0aW9uLXBhZGRpbmcteDtcbiAgbWFyZ2luLWxlZnQ6IC0xcHg7XG4gIGxpbmUtaGVpZ2h0OiAkbGluZS1oZWlnaHQ7XG4gIGNvbG9yOiAkcGFnaW5hdGlvbi1jb2xvcjtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkcGFnaW5hdGlvbi1iZztcbiAgYm9yZGVyOiAkcGFnaW5hdGlvbi1ib3JkZXItd2lkdGggc29saWQgJHBhZ2luYXRpb24tYm9yZGVyLWNvbG9yO1xuXG4gIEBpbmNsdWRlIGhvdmVyLWZvY3VzIHtcbiAgICBjb2xvcjogJHBhZ2luYXRpb24taG92ZXItY29sb3I7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHBhZ2luYXRpb24taG92ZXItYmc7XG4gICAgYm9yZGVyLWNvbG9yOiAkcGFnaW5hdGlvbi1ob3Zlci1ib3JkZXI7XG4gIH1cbn1cblxuXG4vL1xuLy8gU2l6aW5nXG4vL1xuXG4ucGFnaW5hdGlvbi1sZyB7XG4gIEBpbmNsdWRlIHBhZ2luYXRpb24tc2l6ZSgkcGFnaW5hdGlvbi1wYWRkaW5nLXktbGcsICRwYWdpbmF0aW9uLXBhZGRpbmcteC1sZywgJGZvbnQtc2l6ZS1sZywgJGxpbmUtaGVpZ2h0LWxnLCAkYm9yZGVyLXJhZGl1cy1sZyk7XG59XG5cbi5wYWdpbmF0aW9uLXNtIHtcbiAgQGluY2x1ZGUgcGFnaW5hdGlvbi1zaXplKCRwYWdpbmF0aW9uLXBhZGRpbmcteS1zbSwgJHBhZ2luYXRpb24tcGFkZGluZy14LXNtLCAkZm9udC1zaXplLXNtLCAkbGluZS1oZWlnaHQtc20sICRib3JkZXItcmFkaXVzLXNtKTtcbn1cbiIsIi8vXG4vLyBCYXNlIHN0eWxlc1xuLy9cblxuLmFsZXJ0IHtcbiAgcGFkZGluZzogJGFsZXJ0LXBhZGRpbmc7XG4gIG1hcmdpbi1ib3R0b206ICRzcGFjZXIteTtcbiAgYm9yZGVyOiAkYWxlcnQtYm9yZGVyLXdpZHRoIHNvbGlkIHRyYW5zcGFyZW50O1xuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRhbGVydC1ib3JkZXItcmFkaXVzKTtcblxuICAvLyBJbXByb3ZlIGFsaWdubWVudCBhbmQgc3BhY2luZyBvZiBpbm5lciBjb250ZW50XG4gID4gcCxcbiAgPiB1bCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxuICA+IHAgKyBwIHtcbiAgICBtYXJnaW4tdG9wOiA1cHg7XG4gIH1cbn1cblxuLy8gSGVhZGluZ3MgZm9yIGxhcmdlciBhbGVydHNcbi5hbGVydC1oZWFkaW5nIHtcbiAgLy8gU3BlY2lmaWVkIHRvIHByZXZlbnQgY29uZmxpY3RzIG9mIGNoYW5naW5nICRoZWFkaW5ncy1jb2xvclxuICBjb2xvcjogaW5oZXJpdDtcbn1cblxuLy8gUHJvdmlkZSBjbGFzcyBmb3IgbGlua3MgdGhhdCBtYXRjaCBhbGVydHNcbi5hbGVydC1saW5rIHtcbiAgZm9udC13ZWlnaHQ6ICRhbGVydC1saW5rLWZvbnQtd2VpZ2h0O1xufVxuXG5cbi8vIERpc21pc3NpYmxlIGFsZXJ0c1xuLy9cbi8vIEV4cGFuZCB0aGUgcmlnaHQgcGFkZGluZyBhbmQgYWNjb3VudCBmb3IgdGhlIGNsb3NlIGJ1dHRvbidzIHBvc2l0aW9uaW5nLlxuXG4uYWxlcnQtZGlzbWlzc2libGUge1xuICBwYWRkaW5nLXJpZ2h0OiAoJGFsZXJ0LXBhZGRpbmcgKyAyMCk7XG5cbiAgLy8gQWRqdXN0IGNsb3NlIGxpbmsgcG9zaXRpb25cbiAgLmNsb3NlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgdG9wOiAtMnB4O1xuICAgIHJpZ2h0OiAtMjFweDtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgfVxufVxuXG5cbi8vIEFsdGVybmF0ZSBzdHlsZXNcbi8vXG4vLyBHZW5lcmF0ZSBjb250ZXh0dWFsIG1vZGlmaWVyIGNsYXNzZXMgZm9yIGNvbG9yaXppbmcgdGhlIGFsZXJ0LlxuXG4uYWxlcnQtc3VjY2VzcyB7XG4gIEBpbmNsdWRlIGFsZXJ0LXZhcmlhbnQoJGFsZXJ0LXN1Y2Nlc3MtYmcsICRhbGVydC1zdWNjZXNzLWJvcmRlciwgJGFsZXJ0LXN1Y2Nlc3MtdGV4dCk7XG59XG4uYWxlcnQtaW5mbyB7XG4gIEBpbmNsdWRlIGFsZXJ0LXZhcmlhbnQoJGFsZXJ0LWluZm8tYmcsICRhbGVydC1pbmZvLWJvcmRlciwgJGFsZXJ0LWluZm8tdGV4dCk7XG59XG4uYWxlcnQtd2FybmluZyB7XG4gIEBpbmNsdWRlIGFsZXJ0LXZhcmlhbnQoJGFsZXJ0LXdhcm5pbmctYmcsICRhbGVydC13YXJuaW5nLWJvcmRlciwgJGFsZXJ0LXdhcm5pbmctdGV4dCk7XG59XG4uYWxlcnQtZGFuZ2VyIHtcbiAgQGluY2x1ZGUgYWxlcnQtdmFyaWFudCgkYWxlcnQtZGFuZ2VyLWJnLCAkYWxlcnQtZGFuZ2VyLWJvcmRlciwgJGFsZXJ0LWRhbmdlci10ZXh0KTtcbn1cbiIsIi5jbG9zZSB7XG4gIGZsb2F0OiByaWdodDtcbiAgZm9udC1zaXplOiAoJGZvbnQtc2l6ZS1iYXNlICogMS41KTtcbiAgZm9udC13ZWlnaHQ6ICRjbG9zZS1mb250LXdlaWdodDtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIGNvbG9yOiAkY2xvc2UtY29sb3I7XG4gIHRleHQtc2hhZG93OiAkY2xvc2UtdGV4dC1zaGFkb3c7XG4gIG9wYWNpdHk6IC4yO1xuXG4gIEBpbmNsdWRlIGhvdmVyLWZvY3VzIHtcbiAgICBjb2xvcjogJGNsb3NlLWNvbG9yO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgb3BhY2l0eTogLjU7XG4gIH1cbn1cblxuLy8gQWRkaXRpb25hbCBwcm9wZXJ0aWVzIGZvciBidXR0b24gdmVyc2lvblxuLy8gaU9TIHJlcXVpcmVzIHRoZSBidXR0b24gZWxlbWVudCBpbnN0ZWFkIG9mIGFuIGFuY2hvciB0YWcuXG4vLyBJZiB5b3Ugd2FudCB0aGUgYW5jaG9yIHZlcnNpb24sIGl0IHJlcXVpcmVzIGBocmVmPVwiI1wiYC5cbi8vIFNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9FdmVudHMvY2xpY2sjU2FmYXJpX01vYmlsZVxuYnV0dG9uLmNsb3NlIHtcbiAgcGFkZGluZzogMDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyOiAwO1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG59XG4iLCIvLyAubW9kYWwtb3BlbiAgICAgIC0gYm9keSBjbGFzcyBmb3Iga2lsbGluZyB0aGUgc2Nyb2xsXG4vLyAubW9kYWwgICAgICAgICAgIC0gY29udGFpbmVyIHRvIHNjcm9sbCB3aXRoaW5cbi8vIC5tb2RhbC1kaWFsb2cgICAgLSBwb3NpdGlvbmluZyBzaGVsbCBmb3IgdGhlIGFjdHVhbCBtb2RhbFxuLy8gLm1vZGFsLWNvbnRlbnQgICAtIGFjdHVhbCBtb2RhbCB3LyBiZyBhbmQgY29ybmVycyBhbmQgc2hpdFxuXG5cbi8vIEtpbGwgdGhlIHNjcm9sbCBvbiB0aGUgYm9keVxuLm1vZGFsLW9wZW4ge1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4vLyBDb250YWluZXIgdGhhdCB0aGUgbW9kYWwgc2Nyb2xscyB3aXRoaW5cbi5tb2RhbCB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwO1xuICByaWdodDogMDtcbiAgYm90dG9tOiAwO1xuICBsZWZ0OiAwO1xuICB6LWluZGV4OiAkemluZGV4LW1vZGFsO1xuICBkaXNwbGF5OiBub25lO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICAvLyBQcmV2ZW50IENocm9tZSBvbiBXaW5kb3dzIGZyb20gYWRkaW5nIGEgZm9jdXMgb3V0bGluZS4gRm9yIGRldGFpbHMsIHNlZVxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvcHVsbC8xMDk1MS5cbiAgb3V0bGluZTogMDtcbiAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuXG4gIC8vIFdoZW4gZmFkaW5nIGluIHRoZSBtb2RhbCwgYW5pbWF0ZSBpdCB0byBzbGlkZSBkb3duXG4gICYuZmFkZSAubW9kYWwtZGlhbG9nIHtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gLjNzIGVhc2Utb3V0O1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC0yNSUpO1xuICB9XG4gICYuaW4gLm1vZGFsLWRpYWxvZyB7IHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApOyB9XG59XG4ubW9kYWwtb3BlbiAubW9kYWwge1xuICBvdmVyZmxvdy14OiBoaWRkZW47XG4gIG92ZXJmbG93LXk6IGF1dG87XG59XG5cbi8vIFNoZWxsIGRpdiB0byBwb3NpdGlvbiB0aGUgbW9kYWwgd2l0aCBib3R0b20gcGFkZGluZ1xuLm1vZGFsLWRpYWxvZyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2lkdGg6IGF1dG87XG4gIG1hcmdpbjogMTBweDtcbn1cblxuLy8gQWN0dWFsIG1vZGFsXG4ubW9kYWwtY29udGVudCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJG1vZGFsLWNvbnRlbnQtYmc7XG4gIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XG4gIGJvcmRlcjogMXB4IHNvbGlkICRtb2RhbC1jb250ZW50LWJvcmRlci1jb2xvcjtcbiAgYm9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbGc7XG4gIEBpbmNsdWRlIGJveC1zaGFkb3coMCAzcHggOXB4IHJnYmEoMCwwLDAsLjUpKTtcbiAgLy8gUmVtb3ZlIGZvY3VzIG91dGxpbmUgZnJvbSBvcGVuZWQgbW9kYWxcbiAgb3V0bGluZTogMDtcbn1cblxuLy8gTW9kYWwgYmFja2dyb3VuZFxuLm1vZGFsLWJhY2tkcm9wIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDA7XG4gIHJpZ2h0OiAwO1xuICBib3R0b206IDA7XG4gIGxlZnQ6IDA7XG4gIHotaW5kZXg6ICR6aW5kZXgtbW9kYWwtYmc7XG4gIGJhY2tncm91bmQtY29sb3I6ICRtb2RhbC1iYWNrZHJvcC1iZztcblxuICAvLyBGYWRlIGZvciBiYWNrZHJvcFxuICAmLmZhZGUgeyBvcGFjaXR5OiAwOyB9XG4gICYuaW4geyBvcGFjaXR5OiAkbW9kYWwtYmFja2Ryb3Atb3BhY2l0eTsgfVxufVxuXG4vLyBNb2RhbCBoZWFkZXJcbi8vIFRvcCBzZWN0aW9uIG9mIHRoZSBtb2RhbCB3LyB0aXRsZSBhbmQgZGlzbWlzc1xuLm1vZGFsLWhlYWRlciB7XG4gIHBhZGRpbmc6ICRtb2RhbC10aXRsZS1wYWRkaW5nO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJG1vZGFsLWhlYWRlci1ib3JkZXItY29sb3I7XG4gIEBpbmNsdWRlIGNsZWFyZml4O1xufVxuLy8gQ2xvc2UgaWNvblxuLm1vZGFsLWhlYWRlciAuY2xvc2Uge1xuICBtYXJnaW4tdG9wOiAtMnB4O1xufVxuXG4vLyBUaXRsZSB0ZXh0IHdpdGhpbiBoZWFkZXJcbi5tb2RhbC10aXRsZSB7XG4gIG1hcmdpbjogMDtcbiAgbGluZS1oZWlnaHQ6ICRtb2RhbC10aXRsZS1saW5lLWhlaWdodDtcbn1cblxuLy8gTW9kYWwgYm9keVxuLy8gV2hlcmUgYWxsIG1vZGFsIGNvbnRlbnQgcmVzaWRlcyAoc2libGluZyBvZiAubW9kYWwtaGVhZGVyIGFuZCAubW9kYWwtZm9vdGVyKVxuLm1vZGFsLWJvZHkge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHBhZGRpbmc6ICRtb2RhbC1pbm5lci1wYWRkaW5nO1xufVxuXG4vLyBGb290ZXIgKGZvciBhY3Rpb25zKVxuLm1vZGFsLWZvb3RlciB7XG4gIHBhZGRpbmc6ICRtb2RhbC1pbm5lci1wYWRkaW5nO1xuICB0ZXh0LWFsaWduOiByaWdodDsgLy8gcmlnaHQgYWxpZ24gYnV0dG9uc1xuICBib3JkZXItdG9wOiAxcHggc29saWQgJG1vZGFsLWZvb3Rlci1ib3JkZXItY29sb3I7XG4gIEBpbmNsdWRlIGNsZWFyZml4KCk7IC8vIGNsZWFyIGl0IGluIGNhc2UgZm9sa3MgdXNlIC5wdWxsLSogY2xhc3NlcyBvbiBidXR0b25zXG5cbiAgLy8gUHJvcGVybHkgc3BhY2Ugb3V0IGJ1dHRvbnNcbiAgLmJ0biArIC5idG4ge1xuICAgIG1hcmdpbi1ib3R0b206IDA7IC8vIGFjY291bnQgZm9yIGlucHV0W3R5cGU9XCJzdWJtaXRcIl0gd2hpY2ggZ2V0cyB0aGUgYm90dG9tIG1hcmdpbiBsaWtlIGFsbCBvdGhlciBpbnB1dHNcbiAgICBtYXJnaW4tbGVmdDogNXB4O1xuICB9XG4gIC8vIGJ1dCBvdmVycmlkZSB0aGF0IGZvciBidXR0b24gZ3JvdXBzXG4gIC5idG4tZ3JvdXAgLmJ0biArIC5idG4ge1xuICAgIG1hcmdpbi1sZWZ0OiAtMXB4O1xuICB9XG4gIC8vIGFuZCBvdmVycmlkZSBpdCBmb3IgYmxvY2sgYnV0dG9ucyBhcyB3ZWxsXG4gIC5idG4tYmxvY2sgKyAuYnRuLWJsb2NrIHtcbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgfVxufVxuXG4vLyBNZWFzdXJlIHNjcm9sbGJhciB3aWR0aCBmb3IgcGFkZGluZyBib2R5IGR1cmluZyBtb2RhbCBzaG93L2hpZGVcbi5tb2RhbC1zY3JvbGxiYXItbWVhc3VyZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAtOTk5OXB4O1xuICB3aWR0aDogNTBweDtcbiAgaGVpZ2h0OiA1MHB4O1xuICBvdmVyZmxvdzogc2Nyb2xsO1xufVxuXG4vLyBTY2FsZSB1cCB0aGUgbW9kYWxcbkBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoc20pIHtcbiAgLy8gQXV0b21hdGljYWxseSBzZXQgbW9kYWwncyB3aWR0aCBmb3IgbGFyZ2VyIHZpZXdwb3J0c1xuICAubW9kYWwtZGlhbG9nIHtcbiAgICB3aWR0aDogJG1vZGFsLW1kO1xuICAgIG1hcmdpbjogMzBweCBhdXRvO1xuICB9XG4gIC5tb2RhbC1jb250ZW50IHtcbiAgICBAaW5jbHVkZSBib3gtc2hhZG93KDAgNXB4IDE1cHggcmdiYSgwLDAsMCwuNSkpO1xuICB9XG5cbiAgLy8gTW9kYWwgc2l6ZXNcbiAgLm1vZGFsLXNtIHsgd2lkdGg6ICRtb2RhbC1zbTsgfVxufVxuXG5AaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKG1kKSB7XG4gIC5tb2RhbC1sZyB7IHdpZHRoOiAkbW9kYWwtbGc7IH1cbn1cbiIsIi8vXG4vLyBSZXNwb25zaXZlIHV0aWxpdGllc1xuLy9cblxuQGVhY2ggJGJwIGluIG1hcC1rZXlzKCRncmlkLWJyZWFrcG9pbnRzKSB7XG4gIC5oaWRkZW4tI3skYnB9LXVwIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRicCkge1xuICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxuICAuaGlkZGVuLSN7JGJwfS1kb3duIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oJGJwKSB7XG4gICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG59XG5cblxuLy8gUHJpbnQgdXRpbGl0aWVzXG4vL1xuLy8gTWVkaWEgcXVlcmllcyBhcmUgcGxhY2VkIG9uIHRoZSBpbnNpZGUgdG8gYmUgbWl4aW4tZnJpZW5kbHkuXG5cbi52aXNpYmxlLXByaW50LWJsb2NrIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuXG4gIEBtZWRpYSBwcmludCB7XG4gICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbiAgfVxufVxuLnZpc2libGUtcHJpbnQtaW5saW5lIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuXG4gIEBtZWRpYSBwcmludCB7XG4gICAgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7XG4gIH1cbn1cbi52aXNpYmxlLXByaW50LWlubGluZS1ibG9jayB7XG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcblxuICBAbWVkaWEgcHJpbnQge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50O1xuICB9XG59XG5cbi5oaWRkZW4tcHJpbnQge1xuICBAbWVkaWEgcHJpbnQge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxufVxuIiwiLyohIEhpbnQuY3NzIC0gdjIuNS4wIC0gMjAxNy0wNC0yM1xuKiBodHRwOi8va3VzaGFncmFnb3VyLmluL2xhYi9oaW50L1xuKiBDb3B5cmlnaHQgKGMpIDIwMTcgS3VzaGFncmEgR291ciAqL1xuXG5bY2xhc3MqPWhpbnQtLV17cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTppbmxpbmUtYmxvY2t9W2NsYXNzKj1oaW50LS1dOmFmdGVyLFtjbGFzcyo9aGludC0tXTpiZWZvcmV7cG9zaXRpb246YWJzb2x1dGU7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwwLDApOy1tb3otdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMCwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwwLDApO3Zpc2liaWxpdHk6aGlkZGVuO29wYWNpdHk6MDt6LWluZGV4OjEwMDAwMDA7cG9pbnRlci1ldmVudHM6bm9uZTstd2Via2l0LXRyYW5zaXRpb246LjNzIGVhc2U7LW1vei10cmFuc2l0aW9uOi4zcyBlYXNlO3RyYW5zaXRpb246LjNzIGVhc2U7LXdlYmtpdC10cmFuc2l0aW9uLWRlbGF5OjBzOy1tb3otdHJhbnNpdGlvbi1kZWxheTowczt0cmFuc2l0aW9uLWRlbGF5OjBzfVtjbGFzcyo9aGludC0tXTpob3ZlcjphZnRlcixbY2xhc3MqPWhpbnQtLV06aG92ZXI6YmVmb3Jle3Zpc2liaWxpdHk6dmlzaWJsZTtvcGFjaXR5OjE7LXdlYmtpdC10cmFuc2l0aW9uLWRlbGF5Oi4xczstbW96LXRyYW5zaXRpb24tZGVsYXk6LjFzO3RyYW5zaXRpb24tZGVsYXk6LjFzfVtjbGFzcyo9aGludC0tXTpiZWZvcmV7Y29udGVudDonJztwb3NpdGlvbjphYnNvbHV0ZTtiYWNrZ3JvdW5kOjAgMDtib3JkZXI6NnB4IHNvbGlkIHRyYW5zcGFyZW50O3otaW5kZXg6MTAwMDAwMX1bY2xhc3MqPWhpbnQtLV06YWZ0ZXJ7YmFja2dyb3VuZDojMzgzODM4O2NvbG9yOiNmZmY7cGFkZGluZzo4cHggMTBweDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpcIkhlbHZldGljYSBOZXVlXCIsSGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWY7bGluZS1oZWlnaHQ6MTJweDt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1zaGFkb3c6MCAtMXB4IDAgIzAwMDtib3gtc2hhZG93OjRweCA0cHggOHB4IHJnYmEoMCwwLDAsLjMpfVtjbGFzcyo9aGludC0tXVthcmlhLWxhYmVsXTphZnRlcntjb250ZW50OmF0dHIoYXJpYS1sYWJlbCl9W2NsYXNzKj1oaW50LS1dW2RhdGEtaGludF06YWZ0ZXJ7Y29udGVudDphdHRyKGRhdGEtaGludCl9W2FyaWEtbGFiZWw9JyddOmFmdGVyLFthcmlhLWxhYmVsPScnXTpiZWZvcmUsW2RhdGEtaGludD0nJ106YWZ0ZXIsW2RhdGEtaGludD0nJ106YmVmb3Jle2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9LmhpbnQtLXRvcC1sZWZ0OmJlZm9yZSwuaGludC0tdG9wLXJpZ2h0OmJlZm9yZSwuaGludC0tdG9wOmJlZm9yZXtib3JkZXItdG9wLWNvbG9yOiMzODM4Mzh9LmhpbnQtLWJvdHRvbS1sZWZ0OmJlZm9yZSwuaGludC0tYm90dG9tLXJpZ2h0OmJlZm9yZSwuaGludC0tYm90dG9tOmJlZm9yZXtib3JkZXItYm90dG9tLWNvbG9yOiMzODM4Mzh9LmhpbnQtLXRvcDphZnRlciwuaGludC0tdG9wOmJlZm9yZXtib3R0b206MTAwJTtsZWZ0OjUwJX0uaGludC0tdG9wOmJlZm9yZXttYXJnaW4tYm90dG9tOi0xMXB4O2xlZnQ6Y2FsYyg1MCUgLSA2cHgpfS5oaW50LS10b3A6YWZ0ZXJ7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKTstbW96LXRyYW5zZm9ybTp0cmFuc2xhdGVYKC01MCUpO3RyYW5zZm9ybTp0cmFuc2xhdGVYKC01MCUpfS5oaW50LS10b3A6aG92ZXI6YmVmb3Jley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLThweCk7LW1vei10cmFuc2Zvcm06dHJhbnNsYXRlWSgtOHB4KTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtOHB4KX0uaGludC0tdG9wOmhvdmVyOmFmdGVyey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgtOHB4KTstbW96LXRyYW5zZm9ybTp0cmFuc2xhdGVYKC01MCUpIHRyYW5zbGF0ZVkoLThweCk7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgtOHB4KX0uaGludC0tYm90dG9tOmFmdGVyLC5oaW50LS1ib3R0b206YmVmb3Jle3RvcDoxMDAlO2xlZnQ6NTAlfS5oaW50LS1ib3R0b206YmVmb3Jle21hcmdpbi10b3A6LTExcHg7bGVmdDpjYWxjKDUwJSAtIDZweCl9LmhpbnQtLWJvdHRvbTphZnRlcnstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVYKC01MCUpOy1tb3otdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSk7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSl9LmhpbnQtLWJvdHRvbTpob3ZlcjpiZWZvcmV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWSg4cHgpOy1tb3otdHJhbnNmb3JtOnRyYW5zbGF0ZVkoOHB4KTt0cmFuc2Zvcm06dHJhbnNsYXRlWSg4cHgpfS5oaW50LS1ib3R0b206aG92ZXI6YWZ0ZXJ7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKSB0cmFuc2xhdGVZKDhweCk7LW1vei10cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKSB0cmFuc2xhdGVZKDhweCk7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSg4cHgpfS5oaW50LS1yaWdodDpiZWZvcmV7Ym9yZGVyLXJpZ2h0LWNvbG9yOiMzODM4Mzg7bWFyZ2luLWxlZnQ6LTExcHg7bWFyZ2luLWJvdHRvbTotNnB4fS5oaW50LS1yaWdodDphZnRlcnttYXJnaW4tYm90dG9tOi0xNHB4fS5oaW50LS1yaWdodDphZnRlciwuaGludC0tcmlnaHQ6YmVmb3Jle2xlZnQ6MTAwJTtib3R0b206NTAlfS5oaW50LS1yaWdodDpob3ZlcjphZnRlciwuaGludC0tcmlnaHQ6aG92ZXI6YmVmb3Jley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVgoOHB4KTstbW96LXRyYW5zZm9ybTp0cmFuc2xhdGVYKDhweCk7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoOHB4KX0uaGludC0tbGVmdDpiZWZvcmV7Ym9yZGVyLWxlZnQtY29sb3I6IzM4MzgzODttYXJnaW4tcmlnaHQ6LTExcHg7bWFyZ2luLWJvdHRvbTotNnB4fS5oaW50LS1sZWZ0OmFmdGVye21hcmdpbi1ib3R0b206LTE0cHh9LmhpbnQtLWxlZnQ6YWZ0ZXIsLmhpbnQtLWxlZnQ6YmVmb3Jle3JpZ2h0OjEwMCU7Ym90dG9tOjUwJX0uaGludC0tbGVmdDpob3ZlcjphZnRlciwuaGludC0tbGVmdDpob3ZlcjpiZWZvcmV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWCgtOHB4KTstbW96LXRyYW5zZm9ybTp0cmFuc2xhdGVYKC04cHgpO3RyYW5zZm9ybTp0cmFuc2xhdGVYKC04cHgpfS5oaW50LS10b3AtbGVmdDphZnRlciwuaGludC0tdG9wLWxlZnQ6YmVmb3Jle2JvdHRvbToxMDAlO2xlZnQ6NTAlfS5oaW50LS10b3AtbGVmdDpiZWZvcmV7bWFyZ2luLWJvdHRvbTotMTFweDtsZWZ0OmNhbGMoNTAlIC0gNnB4KX0uaGludC0tdG9wLWxlZnQ6YWZ0ZXJ7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWCgtMTAwJSk7LW1vei10cmFuc2Zvcm06dHJhbnNsYXRlWCgtMTAwJSk7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTEwMCUpO21hcmdpbi1sZWZ0OjEycHh9LmhpbnQtLXRvcC1sZWZ0OmhvdmVyOmJlZm9yZXstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVZKC04cHgpOy1tb3otdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLThweCk7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLThweCl9LmhpbnQtLXRvcC1sZWZ0OmhvdmVyOmFmdGVyey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTEwMCUpIHRyYW5zbGF0ZVkoLThweCk7LW1vei10cmFuc2Zvcm06dHJhbnNsYXRlWCgtMTAwJSkgdHJhbnNsYXRlWSgtOHB4KTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtMTAwJSkgdHJhbnNsYXRlWSgtOHB4KX0uaGludC0tdG9wLXJpZ2h0OmFmdGVyLC5oaW50LS10b3AtcmlnaHQ6YmVmb3Jle2JvdHRvbToxMDAlO2xlZnQ6NTAlfS5oaW50LS10b3AtcmlnaHQ6YmVmb3Jle21hcmdpbi1ib3R0b206LTExcHg7bGVmdDpjYWxjKDUwJSAtIDZweCl9LmhpbnQtLXRvcC1yaWdodDphZnRlcnstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVYKDApOy1tb3otdHJhbnNmb3JtOnRyYW5zbGF0ZVgoMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMCk7bWFyZ2luLWxlZnQ6LTEycHh9LmhpbnQtLXRvcC1yaWdodDpob3ZlcjphZnRlciwuaGludC0tdG9wLXJpZ2h0OmhvdmVyOmJlZm9yZXstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVZKC04cHgpOy1tb3otdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLThweCk7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLThweCl9LmhpbnQtLWJvdHRvbS1sZWZ0OmFmdGVyLC5oaW50LS1ib3R0b20tbGVmdDpiZWZvcmV7dG9wOjEwMCU7bGVmdDo1MCV9LmhpbnQtLWJvdHRvbS1sZWZ0OmJlZm9yZXttYXJnaW4tdG9wOi0xMXB4O2xlZnQ6Y2FsYyg1MCUgLSA2cHgpfS5oaW50LS1ib3R0b20tbGVmdDphZnRlcnstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVYKC0xMDAlKTstbW96LXRyYW5zZm9ybTp0cmFuc2xhdGVYKC0xMDAlKTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtMTAwJSk7bWFyZ2luLWxlZnQ6MTJweH0uaGludC0tYm90dG9tLWxlZnQ6aG92ZXI6YmVmb3Jley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoOHB4KTstbW96LXRyYW5zZm9ybTp0cmFuc2xhdGVZKDhweCk7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoOHB4KX0uaGludC0tYm90dG9tLWxlZnQ6aG92ZXI6YWZ0ZXJ7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWCgtMTAwJSkgdHJhbnNsYXRlWSg4cHgpOy1tb3otdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTEwMCUpIHRyYW5zbGF0ZVkoOHB4KTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtMTAwJSkgdHJhbnNsYXRlWSg4cHgpfS5oaW50LS1ib3R0b20tcmlnaHQ6YWZ0ZXIsLmhpbnQtLWJvdHRvbS1yaWdodDpiZWZvcmV7dG9wOjEwMCU7bGVmdDo1MCV9LmhpbnQtLWJvdHRvbS1yaWdodDpiZWZvcmV7bWFyZ2luLXRvcDotMTFweDtsZWZ0OmNhbGMoNTAlIC0gNnB4KX0uaGludC0tYm90dG9tLXJpZ2h0OmFmdGVyey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVgoMCk7LW1vei10cmFuc2Zvcm06dHJhbnNsYXRlWCgwKTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgwKTttYXJnaW4tbGVmdDotMTJweH0uaGludC0tYm90dG9tLXJpZ2h0OmhvdmVyOmFmdGVyLC5oaW50LS1ib3R0b20tcmlnaHQ6aG92ZXI6YmVmb3Jley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoOHB4KTstbW96LXRyYW5zZm9ybTp0cmFuc2xhdGVZKDhweCk7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoOHB4KX0uaGludC0tbGFyZ2U6YWZ0ZXIsLmhpbnQtLW1lZGl1bTphZnRlciwuaGludC0tc21hbGw6YWZ0ZXJ7d2hpdGUtc3BhY2U6bm9ybWFsO2xpbmUtaGVpZ2h0OjEuNGVtO3dvcmQtd3JhcDpicmVhay13b3JkfS5oaW50LS1zbWFsbDphZnRlcnt3aWR0aDo4MHB4fS5oaW50LS1tZWRpdW06YWZ0ZXJ7d2lkdGg6MTUwcHh9LmhpbnQtLWxhcmdlOmFmdGVye3dpZHRoOjMwMHB4fS5oaW50LS1lcnJvcjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNiMzRlNGQ7dGV4dC1zaGFkb3c6MCAtMXB4IDAgIzU5MjcyNn0uaGludC0tZXJyb3IuaGludC0tdG9wLWxlZnQ6YmVmb3JlLC5oaW50LS1lcnJvci5oaW50LS10b3AtcmlnaHQ6YmVmb3JlLC5oaW50LS1lcnJvci5oaW50LS10b3A6YmVmb3Jle2JvcmRlci10b3AtY29sb3I6I2IzNGU0ZH0uaGludC0tZXJyb3IuaGludC0tYm90dG9tLWxlZnQ6YmVmb3JlLC5oaW50LS1lcnJvci5oaW50LS1ib3R0b20tcmlnaHQ6YmVmb3JlLC5oaW50LS1lcnJvci5oaW50LS1ib3R0b206YmVmb3Jle2JvcmRlci1ib3R0b20tY29sb3I6I2IzNGU0ZH0uaGludC0tZXJyb3IuaGludC0tbGVmdDpiZWZvcmV7Ym9yZGVyLWxlZnQtY29sb3I6I2IzNGU0ZH0uaGludC0tZXJyb3IuaGludC0tcmlnaHQ6YmVmb3Jle2JvcmRlci1yaWdodC1jb2xvcjojYjM0ZTRkfS5oaW50LS13YXJuaW5nOmFmdGVye2JhY2tncm91bmQtY29sb3I6I2MwOTg1NDt0ZXh0LXNoYWRvdzowIC0xcHggMCAjNmM1MzI4fS5oaW50LS13YXJuaW5nLmhpbnQtLXRvcC1sZWZ0OmJlZm9yZSwuaGludC0td2FybmluZy5oaW50LS10b3AtcmlnaHQ6YmVmb3JlLC5oaW50LS13YXJuaW5nLmhpbnQtLXRvcDpiZWZvcmV7Ym9yZGVyLXRvcC1jb2xvcjojYzA5ODU0fS5oaW50LS13YXJuaW5nLmhpbnQtLWJvdHRvbS1sZWZ0OmJlZm9yZSwuaGludC0td2FybmluZy5oaW50LS1ib3R0b20tcmlnaHQ6YmVmb3JlLC5oaW50LS13YXJuaW5nLmhpbnQtLWJvdHRvbTpiZWZvcmV7Ym9yZGVyLWJvdHRvbS1jb2xvcjojYzA5ODU0fS5oaW50LS13YXJuaW5nLmhpbnQtLWxlZnQ6YmVmb3Jle2JvcmRlci1sZWZ0LWNvbG9yOiNjMDk4NTR9LmhpbnQtLXdhcm5pbmcuaGludC0tcmlnaHQ6YmVmb3Jle2JvcmRlci1yaWdodC1jb2xvcjojYzA5ODU0fS5oaW50LS1pbmZvOmFmdGVye2JhY2tncm91bmQtY29sb3I6IzM5ODZhYzt0ZXh0LXNoYWRvdzowIC0xcHggMCAjMWEzYzRkfS5oaW50LS1pbmZvLmhpbnQtLXRvcC1sZWZ0OmJlZm9yZSwuaGludC0taW5mby5oaW50LS10b3AtcmlnaHQ6YmVmb3JlLC5oaW50LS1pbmZvLmhpbnQtLXRvcDpiZWZvcmV7Ym9yZGVyLXRvcC1jb2xvcjojMzk4NmFjfS5oaW50LS1pbmZvLmhpbnQtLWJvdHRvbS1sZWZ0OmJlZm9yZSwuaGludC0taW5mby5oaW50LS1ib3R0b20tcmlnaHQ6YmVmb3JlLC5oaW50LS1pbmZvLmhpbnQtLWJvdHRvbTpiZWZvcmV7Ym9yZGVyLWJvdHRvbS1jb2xvcjojMzk4NmFjfS5oaW50LS1pbmZvLmhpbnQtLWxlZnQ6YmVmb3Jle2JvcmRlci1sZWZ0LWNvbG9yOiMzOTg2YWN9LmhpbnQtLWluZm8uaGludC0tcmlnaHQ6YmVmb3Jle2JvcmRlci1yaWdodC1jb2xvcjojMzk4NmFjfS5oaW50LS1zdWNjZXNzOmFmdGVye2JhY2tncm91bmQtY29sb3I6IzQ1ODc0Njt0ZXh0LXNoYWRvdzowIC0xcHggMCAjMWEzMjFhfS5oaW50LS1zdWNjZXNzLmhpbnQtLXRvcC1sZWZ0OmJlZm9yZSwuaGludC0tc3VjY2Vzcy5oaW50LS10b3AtcmlnaHQ6YmVmb3JlLC5oaW50LS1zdWNjZXNzLmhpbnQtLXRvcDpiZWZvcmV7Ym9yZGVyLXRvcC1jb2xvcjojNDU4NzQ2fS5oaW50LS1zdWNjZXNzLmhpbnQtLWJvdHRvbS1sZWZ0OmJlZm9yZSwuaGludC0tc3VjY2Vzcy5oaW50LS1ib3R0b20tcmlnaHQ6YmVmb3JlLC5oaW50LS1zdWNjZXNzLmhpbnQtLWJvdHRvbTpiZWZvcmV7Ym9yZGVyLWJvdHRvbS1jb2xvcjojNDU4NzQ2fS5oaW50LS1zdWNjZXNzLmhpbnQtLWxlZnQ6YmVmb3Jle2JvcmRlci1sZWZ0LWNvbG9yOiM0NTg3NDZ9LmhpbnQtLXN1Y2Nlc3MuaGludC0tcmlnaHQ6YmVmb3Jle2JvcmRlci1yaWdodC1jb2xvcjojNDU4NzQ2fS5oaW50LS1hbHdheXM6YWZ0ZXIsLmhpbnQtLWFsd2F5czpiZWZvcmV7b3BhY2l0eToxO3Zpc2liaWxpdHk6dmlzaWJsZX0uaGludC0tYWx3YXlzLmhpbnQtLXRvcDpiZWZvcmV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWSgtOHB4KTstbW96LXRyYW5zZm9ybTp0cmFuc2xhdGVZKC04cHgpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC04cHgpfS5oaW50LS1hbHdheXMuaGludC0tdG9wOmFmdGVyey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgtOHB4KTstbW96LXRyYW5zZm9ybTp0cmFuc2xhdGVYKC01MCUpIHRyYW5zbGF0ZVkoLThweCk7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgtOHB4KX0uaGludC0tYWx3YXlzLmhpbnQtLXRvcC1sZWZ0OmJlZm9yZXstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVZKC04cHgpOy1tb3otdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLThweCk7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLThweCl9LmhpbnQtLWFsd2F5cy5oaW50LS10b3AtbGVmdDphZnRlcnstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVYKC0xMDAlKSB0cmFuc2xhdGVZKC04cHgpOy1tb3otdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTEwMCUpIHRyYW5zbGF0ZVkoLThweCk7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTEwMCUpIHRyYW5zbGF0ZVkoLThweCl9LmhpbnQtLWFsd2F5cy5oaW50LS10b3AtcmlnaHQ6YWZ0ZXIsLmhpbnQtLWFsd2F5cy5oaW50LS10b3AtcmlnaHQ6YmVmb3Jley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLThweCk7LW1vei10cmFuc2Zvcm06dHJhbnNsYXRlWSgtOHB4KTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtOHB4KX0uaGludC0tYWx3YXlzLmhpbnQtLWJvdHRvbTpiZWZvcmV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWSg4cHgpOy1tb3otdHJhbnNmb3JtOnRyYW5zbGF0ZVkoOHB4KTt0cmFuc2Zvcm06dHJhbnNsYXRlWSg4cHgpfS5oaW50LS1hbHdheXMuaGludC0tYm90dG9tOmFmdGVyey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSg4cHgpOy1tb3otdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSg4cHgpO3RyYW5zZm9ybTp0cmFuc2xhdGVYKC01MCUpIHRyYW5zbGF0ZVkoOHB4KX0uaGludC0tYWx3YXlzLmhpbnQtLWJvdHRvbS1sZWZ0OmJlZm9yZXstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVZKDhweCk7LW1vei10cmFuc2Zvcm06dHJhbnNsYXRlWSg4cHgpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDhweCl9LmhpbnQtLWFsd2F5cy5oaW50LS1ib3R0b20tbGVmdDphZnRlcnstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVYKC0xMDAlKSB0cmFuc2xhdGVZKDhweCk7LW1vei10cmFuc2Zvcm06dHJhbnNsYXRlWCgtMTAwJSkgdHJhbnNsYXRlWSg4cHgpO3RyYW5zZm9ybTp0cmFuc2xhdGVYKC0xMDAlKSB0cmFuc2xhdGVZKDhweCl9LmhpbnQtLWFsd2F5cy5oaW50LS1ib3R0b20tcmlnaHQ6YWZ0ZXIsLmhpbnQtLWFsd2F5cy5oaW50LS1ib3R0b20tcmlnaHQ6YmVmb3Jley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoOHB4KTstbW96LXRyYW5zZm9ybTp0cmFuc2xhdGVZKDhweCk7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoOHB4KX0uaGludC0tYWx3YXlzLmhpbnQtLWxlZnQ6YWZ0ZXIsLmhpbnQtLWFsd2F5cy5oaW50LS1sZWZ0OmJlZm9yZXstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVYKC04cHgpOy1tb3otdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLThweCk7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLThweCl9LmhpbnQtLWFsd2F5cy5oaW50LS1yaWdodDphZnRlciwuaGludC0tYWx3YXlzLmhpbnQtLXJpZ2h0OmJlZm9yZXstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVYKDhweCk7LW1vei10cmFuc2Zvcm06dHJhbnNsYXRlWCg4cHgpO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDhweCl9LmhpbnQtLXJvdW5kZWQ6YWZ0ZXJ7Ym9yZGVyLXJhZGl1czo0cHh9LmhpbnQtLW5vLWFuaW1hdGU6YWZ0ZXIsLmhpbnQtLW5vLWFuaW1hdGU6YmVmb3Jley13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjowczstbW96LXRyYW5zaXRpb24tZHVyYXRpb246MHM7dHJhbnNpdGlvbi1kdXJhdGlvbjowc30uaGludC0tYm91bmNlOmFmdGVyLC5oaW50LS1ib3VuY2U6YmVmb3Jley13ZWJraXQtdHJhbnNpdGlvbjpvcGFjaXR5IC4zcyBlYXNlLHZpc2liaWxpdHkgLjNzIGVhc2UsLXdlYmtpdC10cmFuc2Zvcm0gLjNzIGN1YmljLWJlemllciguNzEsMS43LC43NywxLjI0KTstbW96LXRyYW5zaXRpb246b3BhY2l0eSAuM3MgZWFzZSx2aXNpYmlsaXR5IC4zcyBlYXNlLC1tb3otdHJhbnNmb3JtIC4zcyBjdWJpYy1iZXppZXIoLjcxLDEuNywuNzcsMS4yNCk7dHJhbnNpdGlvbjpvcGFjaXR5IC4zcyBlYXNlLHZpc2liaWxpdHkgLjNzIGVhc2UsdHJhbnNmb3JtIC4zcyBjdWJpYy1iZXppZXIoLjcxLDEuNywuNzcsMS4yNCl9IiwiLyohIFRBQ0hZT05TIHY0LjkuMCB8IGh0dHA6Ly90YWNoeW9ucy5pbyAqL1xuLyohIG5vcm1hbGl6ZS5jc3MgdjcuMC4wIHwgTUlUIExpY2Vuc2UgfCBnaXRodWIuY29tL25lY29sYXMvbm9ybWFsaXplLmNzcyAqL2h0bWx7bGluZS1oZWlnaHQ6MS4xNTstbXMtdGV4dC1zaXplLWFkanVzdDoxMDAlOy13ZWJraXQtdGV4dC1zaXplLWFkanVzdDoxMDAlfWJvZHl7bWFyZ2luOjB9YXJ0aWNsZSxhc2lkZSxmb290ZXIsaGVhZGVyLG5hdixzZWN0aW9ue2Rpc3BsYXk6YmxvY2t9aDF7Zm9udC1zaXplOjJlbTttYXJnaW46LjY3ZW0gMH1maWdjYXB0aW9uLGZpZ3VyZSxtYWlue2Rpc3BsYXk6YmxvY2t9ZmlndXJle21hcmdpbjoxZW0gNDBweH1ocntib3gtc2l6aW5nOmNvbnRlbnQtYm94O2hlaWdodDowO292ZXJmbG93OnZpc2libGV9cHJle2ZvbnQtZmFtaWx5Om1vbm9zcGFjZSxtb25vc3BhY2U7Zm9udC1zaXplOjFlbX1he2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7LXdlYmtpdC10ZXh0LWRlY29yYXRpb24tc2tpcDpvYmplY3RzfWFiYnJbdGl0bGVde2JvcmRlci1ib3R0b206bm9uZTt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUgZG90dGVkfWIsc3Ryb25ne2ZvbnQtd2VpZ2h0OmluaGVyaXQ7Zm9udC13ZWlnaHQ6Ym9sZGVyfWNvZGUsa2JkLHNhbXB7Zm9udC1mYW1pbHk6bW9ub3NwYWNlLG1vbm9zcGFjZTtmb250LXNpemU6MWVtfWRmbntmb250LXN0eWxlOml0YWxpY31tYXJre2JhY2tncm91bmQtY29sb3I6I2ZmMDtjb2xvcjojMDAwfXNtYWxse2ZvbnQtc2l6ZTo4MCV9c3ViLHN1cHtmb250LXNpemU6NzUlO2xpbmUtaGVpZ2h0OjA7cG9zaXRpb246cmVsYXRpdmU7dmVydGljYWwtYWxpZ246YmFzZWxpbmV9c3Vie2JvdHRvbTotLjI1ZW19c3Vwe3RvcDotLjVlbX1hdWRpbyx2aWRlb3tkaXNwbGF5OmlubGluZS1ibG9ja31hdWRpbzpub3QoW2NvbnRyb2xzXSl7ZGlzcGxheTpub25lO2hlaWdodDowfWltZ3tib3JkZXItc3R5bGU6bm9uZX1zdmc6bm90KDpyb290KXtvdmVyZmxvdzpoaWRkZW59YnV0dG9uLGlucHV0LG9wdGdyb3VwLHNlbGVjdCx0ZXh0YXJlYXtmb250LWZhbWlseTpzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMDAlO2xpbmUtaGVpZ2h0OjEuMTU7bWFyZ2luOjB9YnV0dG9uLGlucHV0e292ZXJmbG93OnZpc2libGV9YnV0dG9uLHNlbGVjdHt0ZXh0LXRyYW5zZm9ybTpub25lfS8qIDEgKi8gW3R5cGU9cmVzZXRdLFt0eXBlPXN1Ym1pdF0sYnV0dG9uLGh0bWwgW3R5cGU9YnV0dG9uXXstd2Via2l0LWFwcGVhcmFuY2U6YnV0dG9ufVt0eXBlPWJ1dHRvbl06Oi1tb3otZm9jdXMtaW5uZXIsW3R5cGU9cmVzZXRdOjotbW96LWZvY3VzLWlubmVyLFt0eXBlPXN1Ym1pdF06Oi1tb3otZm9jdXMtaW5uZXIsYnV0dG9uOjotbW96LWZvY3VzLWlubmVye2JvcmRlci1zdHlsZTpub25lO3BhZGRpbmc6MH1bdHlwZT1idXR0b25dOi1tb3otZm9jdXNyaW5nLFt0eXBlPXJlc2V0XTotbW96LWZvY3VzcmluZyxbdHlwZT1zdWJtaXRdOi1tb3otZm9jdXNyaW5nLGJ1dHRvbjotbW96LWZvY3VzcmluZ3tvdXRsaW5lOjFweCBkb3R0ZWQgQnV0dG9uVGV4dH1maWVsZHNldHtwYWRkaW5nOi4zNWVtIC43NWVtIC42MjVlbX1sZWdlbmR7Ym94LXNpemluZzpib3JkZXItYm94O2NvbG9yOmluaGVyaXQ7ZGlzcGxheTp0YWJsZTttYXgtd2lkdGg6MTAwJTtwYWRkaW5nOjA7d2hpdGUtc3BhY2U6bm9ybWFsfXByb2dyZXNze2Rpc3BsYXk6aW5saW5lLWJsb2NrO3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lfXRleHRhcmVhe292ZXJmbG93OmF1dG99W3R5cGU9Y2hlY2tib3hdLFt0eXBlPXJhZGlvXXtib3gtc2l6aW5nOmJvcmRlci1ib3g7cGFkZGluZzowfVt0eXBlPW51bWJlcl06Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sW3R5cGU9bnVtYmVyXTo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbntoZWlnaHQ6YXV0b31bdHlwZT1zZWFyY2hdey13ZWJraXQtYXBwZWFyYW5jZTp0ZXh0ZmllbGQ7b3V0bGluZS1vZmZzZXQ6LTJweH1bdHlwZT1zZWFyY2hdOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uLFt0eXBlPXNlYXJjaF06Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb257LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmV9Ojotd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbnstd2Via2l0LWFwcGVhcmFuY2U6YnV0dG9uO2ZvbnQ6aW5oZXJpdH0vKiAxICovIG1lbnUsZGV0YWlsc3tkaXNwbGF5OmJsb2NrfXN1bW1hcnl7ZGlzcGxheTpsaXN0LWl0ZW19Y2FudmFze2Rpc3BsYXk6aW5saW5lLWJsb2NrfVtoaWRkZW5dLHRlbXBsYXRle2Rpc3BsYXk6bm9uZX0uYm9yZGVyLWJveCxhLGFydGljbGUsYXNpZGUsYmxvY2txdW90ZSxib2R5LGNvZGUsZGQsZGl2LGRsLGR0LGZpZWxkc2V0LGZpZ2NhcHRpb24sZmlndXJlLGZvb3Rlcixmb3JtLGgxLGgyLGgzLGg0LGg1LGg2LGhlYWRlcixodG1sLGlucHV0W3R5cGU9ZW1haWxdLGlucHV0W3R5cGU9bnVtYmVyXSxpbnB1dFt0eXBlPXBhc3N3b3JkXSxpbnB1dFt0eXBlPXRlbF0saW5wdXRbdHlwZT10ZXh0XSxpbnB1dFt0eXBlPXVybF0sbGVnZW5kLGxpLG1haW4sbmF2LG9sLHAscHJlLHNlY3Rpb24sdGFibGUsdGQsdGV4dGFyZWEsdGgsdHIsdWx7Ym94LXNpemluZzpib3JkZXItYm94fS5hc3BlY3QtcmF0aW97aGVpZ2h0OjA7cG9zaXRpb246cmVsYXRpdmV9LmFzcGVjdC1yYXRpby0tMTZ4OXtwYWRkaW5nLWJvdHRvbTo1Ni4yNSV9LmFzcGVjdC1yYXRpby0tOXgxNntwYWRkaW5nLWJvdHRvbToxNzcuNzclfS5hc3BlY3QtcmF0aW8tLTR4M3twYWRkaW5nLWJvdHRvbTo3NSV9LmFzcGVjdC1yYXRpby0tM3g0e3BhZGRpbmctYm90dG9tOjEzMy4zMyV9LmFzcGVjdC1yYXRpby0tNng0e3BhZGRpbmctYm90dG9tOjY2LjYlfS5hc3BlY3QtcmF0aW8tLTR4NntwYWRkaW5nLWJvdHRvbToxNTAlfS5hc3BlY3QtcmF0aW8tLTh4NXtwYWRkaW5nLWJvdHRvbTo2Mi41JX0uYXNwZWN0LXJhdGlvLS01eDh7cGFkZGluZy1ib3R0b206MTYwJX0uYXNwZWN0LXJhdGlvLS03eDV7cGFkZGluZy1ib3R0b206NzEuNDIlfS5hc3BlY3QtcmF0aW8tLTV4N3twYWRkaW5nLWJvdHRvbToxNDAlfS5hc3BlY3QtcmF0aW8tLTF4MXtwYWRkaW5nLWJvdHRvbToxMDAlfS5hc3BlY3QtcmF0aW8tLW9iamVjdHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtyaWdodDowO2JvdHRvbTowO2xlZnQ6MDt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO3otaW5kZXg6MTAwfWltZ3ttYXgtd2lkdGg6MTAwJX0uY292ZXJ7YmFja2dyb3VuZC1zaXplOmNvdmVyIWltcG9ydGFudH0uY29udGFpbntiYWNrZ3JvdW5kLXNpemU6Y29udGFpbiFpbXBvcnRhbnR9LmJnLWNlbnRlcntiYWNrZ3JvdW5kLXBvc2l0aW9uOjUwJX0uYmctY2VudGVyLC5iZy10b3B7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0fS5iZy10b3B7YmFja2dyb3VuZC1wb3NpdGlvbjp0b3B9LmJnLXJpZ2h0e2JhY2tncm91bmQtcG9zaXRpb246MTAwJX0uYmctYm90dG9tLC5iZy1yaWdodHtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXR9LmJnLWJvdHRvbXtiYWNrZ3JvdW5kLXBvc2l0aW9uOmJvdHRvbX0uYmctbGVmdHtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1wb3NpdGlvbjowfS5vdXRsaW5le291dGxpbmU6MXB4IHNvbGlkfS5vdXRsaW5lLXRyYW5zcGFyZW50e291dGxpbmU6MXB4IHNvbGlkIHRyYW5zcGFyZW50fS5vdXRsaW5lLTB7b3V0bGluZTowfS5iYXtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXdpZHRoOjFweH0uYnR7Ym9yZGVyLXRvcC1zdHlsZTpzb2xpZDtib3JkZXItdG9wLXdpZHRoOjFweH0uYnJ7Ym9yZGVyLXJpZ2h0LXN0eWxlOnNvbGlkO2JvcmRlci1yaWdodC13aWR0aDoxcHh9LmJie2JvcmRlci1ib3R0b20tc3R5bGU6c29saWQ7Ym9yZGVyLWJvdHRvbS13aWR0aDoxcHh9LmJse2JvcmRlci1sZWZ0LXN0eWxlOnNvbGlkO2JvcmRlci1sZWZ0LXdpZHRoOjFweH0uYm57Ym9yZGVyLXN0eWxlOm5vbmU7Ym9yZGVyLXdpZHRoOjB9LmItLWJsYWNre2JvcmRlci1jb2xvcjojMDAwfS5iLS1uZWFyLWJsYWNre2JvcmRlci1jb2xvcjojMTExfS5iLS1kYXJrLWdyYXl7Ym9yZGVyLWNvbG9yOiMzMzN9LmItLW1pZC1ncmF5e2JvcmRlci1jb2xvcjojNTU1fS5iLS1ncmF5e2JvcmRlci1jb2xvcjojNzc3fS5iLS1zaWx2ZXJ7Ym9yZGVyLWNvbG9yOiM5OTl9LmItLWxpZ2h0LXNpbHZlcntib3JkZXItY29sb3I6I2FhYX0uYi0tbW9vbi1ncmF5e2JvcmRlci1jb2xvcjojY2NjfS5iLS1saWdodC1ncmF5e2JvcmRlci1jb2xvcjojZWVlfS5iLS1uZWFyLXdoaXRle2JvcmRlci1jb2xvcjojZjRmNGY0fS5iLS13aGl0ZXtib3JkZXItY29sb3I6I2ZmZn0uYi0td2hpdGUtOTB7Ym9yZGVyLWNvbG9yOmhzbGEoMCwwJSwxMDAlLC45KX0uYi0td2hpdGUtODB7Ym9yZGVyLWNvbG9yOmhzbGEoMCwwJSwxMDAlLC44KX0uYi0td2hpdGUtNzB7Ym9yZGVyLWNvbG9yOmhzbGEoMCwwJSwxMDAlLC43KX0uYi0td2hpdGUtNjB7Ym9yZGVyLWNvbG9yOmhzbGEoMCwwJSwxMDAlLC42KX0uYi0td2hpdGUtNTB7Ym9yZGVyLWNvbG9yOmhzbGEoMCwwJSwxMDAlLC41KX0uYi0td2hpdGUtNDB7Ym9yZGVyLWNvbG9yOmhzbGEoMCwwJSwxMDAlLC40KX0uYi0td2hpdGUtMzB7Ym9yZGVyLWNvbG9yOmhzbGEoMCwwJSwxMDAlLC4zKX0uYi0td2hpdGUtMjB7Ym9yZGVyLWNvbG9yOmhzbGEoMCwwJSwxMDAlLC4yKX0uYi0td2hpdGUtMTB7Ym9yZGVyLWNvbG9yOmhzbGEoMCwwJSwxMDAlLC4xKX0uYi0td2hpdGUtMDV7Ym9yZGVyLWNvbG9yOmhzbGEoMCwwJSwxMDAlLC4wNSl9LmItLXdoaXRlLTAyNXtib3JkZXItY29sb3I6aHNsYSgwLDAlLDEwMCUsLjAyNSl9LmItLXdoaXRlLTAxMjV7Ym9yZGVyLWNvbG9yOmhzbGEoMCwwJSwxMDAlLC4wMTI1KX0uYi0tYmxhY2stOTB7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjkpfS5iLS1ibGFjay04MHtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuOCl9LmItLWJsYWNrLTcwe2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC43KX0uYi0tYmxhY2stNjB7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjYpfS5iLS1ibGFjay01MHtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuNSl9LmItLWJsYWNrLTQwe2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC40KX0uYi0tYmxhY2stMzB7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjMpfS5iLS1ibGFjay0yMHtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMil9LmItLWJsYWNrLTEwe2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4xKX0uYi0tYmxhY2stMDV7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjA1KX0uYi0tYmxhY2stMDI1e2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4wMjUpfS5iLS1ibGFjay0wMTI1e2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4wMTI1KX0uYi0tZGFyay1yZWR7Ym9yZGVyLWNvbG9yOiNlNzA0MGZ9LmItLXJlZHtib3JkZXItY29sb3I6I2ZmNDEzNn0uYi0tbGlnaHQtcmVke2JvcmRlci1jb2xvcjojZmY3MjVjfS5iLS1vcmFuZ2V7Ym9yZGVyLWNvbG9yOiNmZjYzMDB9LmItLWdvbGR7Ym9yZGVyLWNvbG9yOiNmZmI3MDB9LmItLXllbGxvd3tib3JkZXItY29sb3I6Z29sZH0uYi0tbGlnaHQteWVsbG93e2JvcmRlci1jb2xvcjojZmJmMWE5fS5iLS1wdXJwbGV7Ym9yZGVyLWNvbG9yOiM1ZTJjYTV9LmItLWxpZ2h0LXB1cnBsZXtib3JkZXItY29sb3I6I2E0NjNmMn0uYi0tZGFyay1waW5re2JvcmRlci1jb2xvcjojZDUwMDhmfS5iLS1ob3QtcGlua3tib3JkZXItY29sb3I6I2ZmNDFiNH0uYi0tcGlua3tib3JkZXItY29sb3I6I2ZmODBjY30uYi0tbGlnaHQtcGlua3tib3JkZXItY29sb3I6I2ZmYTNkN30uYi0tZGFyay1ncmVlbntib3JkZXItY29sb3I6IzEzNzc1Mn0uYi0tZ3JlZW57Ym9yZGVyLWNvbG9yOiMxOWE5NzR9LmItLWxpZ2h0LWdyZWVue2JvcmRlci1jb2xvcjojOWVlYmNmfS5iLS1uYXZ5e2JvcmRlci1jb2xvcjojMDAxYjQ0fS5iLS1kYXJrLWJsdWV7Ym9yZGVyLWNvbG9yOiMwMDQ0OWV9LmItLWJsdWV7Ym9yZGVyLWNvbG9yOiMzNTdlZGR9LmItLWxpZ2h0LWJsdWV7Ym9yZGVyLWNvbG9yOiM5NmNjZmZ9LmItLWxpZ2h0ZXN0LWJsdWV7Ym9yZGVyLWNvbG9yOiNjZGVjZmZ9LmItLXdhc2hlZC1ibHVle2JvcmRlci1jb2xvcjojZjZmZmZlfS5iLS13YXNoZWQtZ3JlZW57Ym9yZGVyLWNvbG9yOiNlOGZkZjV9LmItLXdhc2hlZC15ZWxsb3d7Ym9yZGVyLWNvbG9yOiNmZmZjZWJ9LmItLXdhc2hlZC1yZWR7Ym9yZGVyLWNvbG9yOiNmZmRmZGZ9LmItLXRyYW5zcGFyZW50e2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudH0uYi0taW5oZXJpdHtib3JkZXItY29sb3I6aW5oZXJpdH0uYnIwe2JvcmRlci1yYWRpdXM6MH0uYnIxe2JvcmRlci1yYWRpdXM6LjEyNXJlbX0uYnIye2JvcmRlci1yYWRpdXM6LjI1cmVtfS5icjN7Ym9yZGVyLXJhZGl1czouNXJlbX0uYnI0e2JvcmRlci1yYWRpdXM6MXJlbX0uYnItMTAwe2JvcmRlci1yYWRpdXM6MTAwJX0uYnItcGlsbHtib3JkZXItcmFkaXVzOjk5OTlweH0uYnItLWJvdHRvbXtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjA7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MH0uYnItLXRvcHtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowfS5ici0tcmlnaHQsLmJyLS10b3B7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowfS5ici0tcmlnaHR7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowfS5ici0tbGVmdHtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjB9LmItLWRvdHRlZHtib3JkZXItc3R5bGU6ZG90dGVkfS5iLS1kYXNoZWR7Ym9yZGVyLXN0eWxlOmRhc2hlZH0uYi0tc29saWR7Ym9yZGVyLXN0eWxlOnNvbGlkfS5iLS1ub25le2JvcmRlci1zdHlsZTpub25lfS5idzB7Ym9yZGVyLXdpZHRoOjB9LmJ3MXtib3JkZXItd2lkdGg6LjEyNXJlbX0uYncye2JvcmRlci13aWR0aDouMjVyZW19LmJ3M3tib3JkZXItd2lkdGg6LjVyZW19LmJ3NHtib3JkZXItd2lkdGg6MXJlbX0uYnc1e2JvcmRlci13aWR0aDoycmVtfS5idC0we2JvcmRlci10b3Atd2lkdGg6MH0uYnItMHtib3JkZXItcmlnaHQtd2lkdGg6MH0uYmItMHtib3JkZXItYm90dG9tLXdpZHRoOjB9LmJsLTB7Ym9yZGVyLWxlZnQtd2lkdGg6MH0uc2hhZG93LTF7Ym94LXNoYWRvdzowIDAgNHB4IDJweCByZ2JhKDAsMCwwLC4yKX0uc2hhZG93LTJ7Ym94LXNoYWRvdzowIDAgOHB4IDJweCByZ2JhKDAsMCwwLC4yKX0uc2hhZG93LTN7Ym94LXNoYWRvdzoycHggMnB4IDRweCAycHggcmdiYSgwLDAsMCwuMil9LnNoYWRvdy00e2JveC1zaGFkb3c6MnB4IDJweCA4cHggMCByZ2JhKDAsMCwwLC4yKX0uc2hhZG93LTV7Ym94LXNoYWRvdzo0cHggNHB4IDhweCAwIHJnYmEoMCwwLDAsLjIpfS5wcmV7b3ZlcmZsb3cteDphdXRvO292ZXJmbG93LXk6aGlkZGVuO292ZXJmbG93OnNjcm9sbH0udG9wLTB7dG9wOjB9LnJpZ2h0LTB7cmlnaHQ6MH0uYm90dG9tLTB7Ym90dG9tOjB9LmxlZnQtMHtsZWZ0OjB9LnRvcC0xe3RvcDoxcmVtfS5yaWdodC0xe3JpZ2h0OjFyZW19LmJvdHRvbS0xe2JvdHRvbToxcmVtfS5sZWZ0LTF7bGVmdDoxcmVtfS50b3AtMnt0b3A6MnJlbX0ucmlnaHQtMntyaWdodDoycmVtfS5ib3R0b20tMntib3R0b206MnJlbX0ubGVmdC0ye2xlZnQ6MnJlbX0udG9wLS0xe3RvcDotMXJlbX0ucmlnaHQtLTF7cmlnaHQ6LTFyZW19LmJvdHRvbS0tMXtib3R0b206LTFyZW19LmxlZnQtLTF7bGVmdDotMXJlbX0udG9wLS0ye3RvcDotMnJlbX0ucmlnaHQtLTJ7cmlnaHQ6LTJyZW19LmJvdHRvbS0tMntib3R0b206LTJyZW19LmxlZnQtLTJ7bGVmdDotMnJlbX0uYWJzb2x1dGUtLWZpbGx7dG9wOjA7cmlnaHQ6MDtib3R0b206MDtsZWZ0OjB9LmNmOmFmdGVyLC5jZjpiZWZvcmV7Y29udGVudDpcIiBcIjtkaXNwbGF5OnRhYmxlfS5jZjphZnRlcntjbGVhcjpib3RofS5jZnsqem9vbToxfS5jbHtjbGVhcjpsZWZ0fS5jcntjbGVhcjpyaWdodH0uY2J7Y2xlYXI6Ym90aH0uY257Y2xlYXI6bm9uZX0uZG57ZGlzcGxheTpub25lfS5kaXtkaXNwbGF5OmlubGluZX0uZGJ7ZGlzcGxheTpibG9ja30uZGlie2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5kaXR7ZGlzcGxheTppbmxpbmUtdGFibGV9LmR0e2Rpc3BsYXk6dGFibGV9LmR0Y3tkaXNwbGF5OnRhYmxlLWNlbGx9LmR0LXJvd3tkaXNwbGF5OnRhYmxlLXJvd30uZHQtcm93LWdyb3Vwe2Rpc3BsYXk6dGFibGUtcm93LWdyb3VwfS5kdC1jb2x1bW57ZGlzcGxheTp0YWJsZS1jb2x1bW59LmR0LWNvbHVtbi1ncm91cHtkaXNwbGF5OnRhYmxlLWNvbHVtbi1ncm91cH0uZHQtLWZpeGVke3RhYmxlLWxheW91dDpmaXhlZDt3aWR0aDoxMDAlfS5mbGV4e2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXh9LmlubGluZS1mbGV4e2Rpc3BsYXk6LXdlYmtpdC1pbmxpbmUtYm94O2Rpc3BsYXk6LW1zLWlubGluZS1mbGV4Ym94O2Rpc3BsYXk6aW5saW5lLWZsZXh9LmZsZXgtYXV0b3std2Via2l0LWJveC1mbGV4OjE7LW1zLWZsZXg6MSAxIGF1dG87ZmxleDoxIDEgYXV0bzttaW4td2lkdGg6MDttaW4taGVpZ2h0OjB9LmZsZXgtbm9uZXstd2Via2l0LWJveC1mbGV4OjA7LW1zLWZsZXg6bm9uZTtmbGV4Om5vbmV9LmZsZXgtY29sdW1uey13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbDstbXMtZmxleC1kaXJlY3Rpb246Y29sdW1uO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0uZmxleC1jb2x1bW4sLmZsZXgtcm93ey13ZWJraXQtYm94LWRpcmVjdGlvbjpub3JtYWx9LmZsZXgtcm93ey13ZWJraXQtYm94LW9yaWVudDpob3Jpem9udGFsOy1tcy1mbGV4LWRpcmVjdGlvbjpyb3c7ZmxleC1kaXJlY3Rpb246cm93fS5mbGV4LXdyYXB7LW1zLWZsZXgtd3JhcDp3cmFwO2ZsZXgtd3JhcDp3cmFwfS5mbGV4LW5vd3JhcHstbXMtZmxleC13cmFwOm5vd3JhcDtmbGV4LXdyYXA6bm93cmFwfS5mbGV4LXdyYXAtcmV2ZXJzZXstbXMtZmxleC13cmFwOndyYXAtcmV2ZXJzZTtmbGV4LXdyYXA6d3JhcC1yZXZlcnNlfS5mbGV4LWNvbHVtbi1yZXZlcnNley13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbDstd2Via2l0LWJveC1kaXJlY3Rpb246cmV2ZXJzZTstbXMtZmxleC1kaXJlY3Rpb246Y29sdW1uLXJldmVyc2U7ZmxleC1kaXJlY3Rpb246Y29sdW1uLXJldmVyc2V9LmZsZXgtcm93LXJldmVyc2V7LXdlYmtpdC1ib3gtb3JpZW50Omhvcml6b250YWw7LXdlYmtpdC1ib3gtZGlyZWN0aW9uOnJldmVyc2U7LW1zLWZsZXgtZGlyZWN0aW9uOnJvdy1yZXZlcnNlO2ZsZXgtZGlyZWN0aW9uOnJvdy1yZXZlcnNlfS5pdGVtcy1zdGFydHstd2Via2l0LWJveC1hbGlnbjpzdGFydDstbXMtZmxleC1hbGlnbjpzdGFydDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0fS5pdGVtcy1lbmR7LXdlYmtpdC1ib3gtYWxpZ246ZW5kOy1tcy1mbGV4LWFsaWduOmVuZDthbGlnbi1pdGVtczpmbGV4LWVuZH0uaXRlbXMtY2VudGVyey13ZWJraXQtYm94LWFsaWduOmNlbnRlcjstbXMtZmxleC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyfS5pdGVtcy1iYXNlbGluZXstd2Via2l0LWJveC1hbGlnbjpiYXNlbGluZTstbXMtZmxleC1hbGlnbjpiYXNlbGluZTthbGlnbi1pdGVtczpiYXNlbGluZX0uaXRlbXMtc3RyZXRjaHstd2Via2l0LWJveC1hbGlnbjpzdHJldGNoOy1tcy1mbGV4LWFsaWduOnN0cmV0Y2g7YWxpZ24taXRlbXM6c3RyZXRjaH0uc2VsZi1zdGFydHstbXMtZmxleC1pdGVtLWFsaWduOnN0YXJ0O2FsaWduLXNlbGY6ZmxleC1zdGFydH0uc2VsZi1lbmR7LW1zLWZsZXgtaXRlbS1hbGlnbjplbmQ7YWxpZ24tc2VsZjpmbGV4LWVuZH0uc2VsZi1jZW50ZXJ7LW1zLWZsZXgtaXRlbS1hbGlnbjpjZW50ZXI7LW1zLWdyaWQtcm93LWFsaWduOmNlbnRlcjthbGlnbi1zZWxmOmNlbnRlcn0uc2VsZi1iYXNlbGluZXstbXMtZmxleC1pdGVtLWFsaWduOmJhc2VsaW5lO2FsaWduLXNlbGY6YmFzZWxpbmV9LnNlbGYtc3RyZXRjaHstbXMtZmxleC1pdGVtLWFsaWduOnN0cmV0Y2g7LW1zLWdyaWQtcm93LWFsaWduOnN0cmV0Y2g7YWxpZ24tc2VsZjpzdHJldGNofS5qdXN0aWZ5LXN0YXJ0ey13ZWJraXQtYm94LXBhY2s6c3RhcnQ7LW1zLWZsZXgtcGFjazpzdGFydDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydH0uanVzdGlmeS1lbmR7LXdlYmtpdC1ib3gtcGFjazplbmQ7LW1zLWZsZXgtcGFjazplbmQ7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS5qdXN0aWZ5LWNlbnRlcnstd2Via2l0LWJveC1wYWNrOmNlbnRlcjstbXMtZmxleC1wYWNrOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5qdXN0aWZ5LWJldHdlZW57LXdlYmtpdC1ib3gtcGFjazpqdXN0aWZ5Oy1tcy1mbGV4LXBhY2s6anVzdGlmeTtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbn0uanVzdGlmeS1hcm91bmR7LW1zLWZsZXgtcGFjazpkaXN0cmlidXRlO2p1c3RpZnktY29udGVudDpzcGFjZS1hcm91bmR9LmNvbnRlbnQtc3RhcnR7LW1zLWZsZXgtbGluZS1wYWNrOnN0YXJ0O2FsaWduLWNvbnRlbnQ6ZmxleC1zdGFydH0uY29udGVudC1lbmR7LW1zLWZsZXgtbGluZS1wYWNrOmVuZDthbGlnbi1jb250ZW50OmZsZXgtZW5kfS5jb250ZW50LWNlbnRlcnstbXMtZmxleC1saW5lLXBhY2s6Y2VudGVyO2FsaWduLWNvbnRlbnQ6Y2VudGVyfS5jb250ZW50LWJldHdlZW57LW1zLWZsZXgtbGluZS1wYWNrOmp1c3RpZnk7YWxpZ24tY29udGVudDpzcGFjZS1iZXR3ZWVufS5jb250ZW50LWFyb3VuZHstbXMtZmxleC1saW5lLXBhY2s6ZGlzdHJpYnV0ZTthbGlnbi1jb250ZW50OnNwYWNlLWFyb3VuZH0uY29udGVudC1zdHJldGNoey1tcy1mbGV4LWxpbmUtcGFjazpzdHJldGNoO2FsaWduLWNvbnRlbnQ6c3RyZXRjaH0ub3JkZXItMHstd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjE7LW1zLWZsZXgtb3JkZXI6MDtvcmRlcjowfS5vcmRlci0xey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6MjstbXMtZmxleC1vcmRlcjoxO29yZGVyOjF9Lm9yZGVyLTJ7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDozOy1tcy1mbGV4LW9yZGVyOjI7b3JkZXI6Mn0ub3JkZXItM3std2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjQ7LW1zLWZsZXgtb3JkZXI6MztvcmRlcjozfS5vcmRlci00ey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6NTstbXMtZmxleC1vcmRlcjo0O29yZGVyOjR9Lm9yZGVyLTV7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDo2Oy1tcy1mbGV4LW9yZGVyOjU7b3JkZXI6NX0ub3JkZXItNnstd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjc7LW1zLWZsZXgtb3JkZXI6NjtvcmRlcjo2fS5vcmRlci03ey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6ODstbXMtZmxleC1vcmRlcjo3O29yZGVyOjd9Lm9yZGVyLTh7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDo5Oy1tcy1mbGV4LW9yZGVyOjg7b3JkZXI6OH0ub3JkZXItbGFzdHstd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjEwMDAwMDstbXMtZmxleC1vcmRlcjo5OTk5OTtvcmRlcjo5OTk5OX0uZmxleC1ncm93LTB7LXdlYmtpdC1ib3gtZmxleDowOy1tcy1mbGV4LXBvc2l0aXZlOjA7ZmxleC1ncm93OjB9LmZsZXgtZ3Jvdy0xey13ZWJraXQtYm94LWZsZXg6MTstbXMtZmxleC1wb3NpdGl2ZToxO2ZsZXgtZ3JvdzoxfS5mbGV4LXNocmluay0wey1tcy1mbGV4LW5lZ2F0aXZlOjA7ZmxleC1zaHJpbms6MH0uZmxleC1zaHJpbmstMXstbXMtZmxleC1uZWdhdGl2ZToxO2ZsZXgtc2hyaW5rOjF9LmZse2Zsb2F0OmxlZnR9LmZsLC5mcntfZGlzcGxheTppbmxpbmV9LmZye2Zsb2F0OnJpZ2h0fS5mbntmbG9hdDpub25lfS5zYW5zLXNlcmlme2ZvbnQtZmFtaWx5Oi1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LGF2ZW5pciBuZXh0LGF2ZW5pcixoZWx2ZXRpY2EgbmV1ZSxoZWx2ZXRpY2EsdWJ1bnR1LHJvYm90byxub3RvLHNlZ29lIHVpLGFyaWFsLHNhbnMtc2VyaWZ9LnNlcmlme2ZvbnQtZmFtaWx5Omdlb3JnaWEsdGltZXMsc2VyaWZ9LnN5c3RlbS1zYW5zLXNlcmlme2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWZ9LnN5c3RlbS1zZXJpZntmb250LWZhbWlseTpzZXJpZn0uY29kZSxjb2Rle2ZvbnQtZmFtaWx5OkNvbnNvbGFzLG1vbmFjbyxtb25vc3BhY2V9LmNvdXJpZXJ7Zm9udC1mYW1pbHk6Q291cmllciBOZXh0LGNvdXJpZXIsbW9ub3NwYWNlfS5oZWx2ZXRpY2F7Zm9udC1mYW1pbHk6aGVsdmV0aWNhIG5ldWUsaGVsdmV0aWNhLHNhbnMtc2VyaWZ9LmF2ZW5pcntmb250LWZhbWlseTphdmVuaXIgbmV4dCxhdmVuaXIsc2Fucy1zZXJpZn0uYXRoZWxhc3tmb250LWZhbWlseTphdGhlbGFzLGdlb3JnaWEsc2VyaWZ9Lmdlb3JnaWF7Zm9udC1mYW1pbHk6Z2VvcmdpYSxzZXJpZn0udGltZXN7Zm9udC1mYW1pbHk6dGltZXMsc2VyaWZ9LmJvZG9uaXtmb250LWZhbWlseTpCb2RvbmkgTVQsc2VyaWZ9LmNhbGlzdG97Zm9udC1mYW1pbHk6Q2FsaXN0byBNVCxzZXJpZn0uZ2FyYW1vbmR7Zm9udC1mYW1pbHk6Z2FyYW1vbmQsc2VyaWZ9LmJhc2tlcnZpbGxle2ZvbnQtZmFtaWx5OmJhc2tlcnZpbGxlLHNlcmlmfS5pe2ZvbnQtc3R5bGU6aXRhbGljfS5mcy1ub3JtYWx7Zm9udC1zdHlsZTpub3JtYWx9Lm5vcm1hbHtmb250LXdlaWdodDo0MDB9LmJ7Zm9udC13ZWlnaHQ6NzAwfS5mdzF7Zm9udC13ZWlnaHQ6MTAwfS5mdzJ7Zm9udC13ZWlnaHQ6MjAwfS5mdzN7Zm9udC13ZWlnaHQ6MzAwfS5mdzR7Zm9udC13ZWlnaHQ6NDAwfS5mdzV7Zm9udC13ZWlnaHQ6NTAwfS5mdzZ7Zm9udC13ZWlnaHQ6NjAwfS5mdzd7Zm9udC13ZWlnaHQ6NzAwfS5mdzh7Zm9udC13ZWlnaHQ6ODAwfS5mdzl7Zm9udC13ZWlnaHQ6OTAwfS5pbnB1dC1yZXNldHstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uYnV0dG9uLXJlc2V0OjotbW96LWZvY3VzLWlubmVyLC5pbnB1dC1yZXNldDo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MDtwYWRkaW5nOjB9Lmgxe2hlaWdodDoxcmVtfS5oMntoZWlnaHQ6MnJlbX0uaDN7aGVpZ2h0OjRyZW19Lmg0e2hlaWdodDo4cmVtfS5oNXtoZWlnaHQ6MTZyZW19LmgtMjV7aGVpZ2h0OjI1JX0uaC01MHtoZWlnaHQ6NTAlfS5oLTc1e2hlaWdodDo3NSV9LmgtMTAwe2hlaWdodDoxMDAlfS5taW4taC0xMDB7bWluLWhlaWdodDoxMDAlfS52aC0yNXtoZWlnaHQ6MjV2aH0udmgtNTB7aGVpZ2h0OjUwdmh9LnZoLTc1e2hlaWdodDo3NXZofS52aC0xMDB7aGVpZ2h0OjEwMHZofS5taW4tdmgtMTAwe21pbi1oZWlnaHQ6MTAwdmh9LmgtYXV0b3toZWlnaHQ6YXV0b30uaC1pbmhlcml0e2hlaWdodDppbmhlcml0fS50cmFja2Vke2xldHRlci1zcGFjaW5nOi4xZW19LnRyYWNrZWQtdGlnaHR7bGV0dGVyLXNwYWNpbmc6LS4wNWVtfS50cmFja2VkLW1lZ2F7bGV0dGVyLXNwYWNpbmc6LjI1ZW19LmxoLXNvbGlke2xpbmUtaGVpZ2h0OjF9LmxoLXRpdGxle2xpbmUtaGVpZ2h0OjEuMjV9LmxoLWNvcHl7bGluZS1oZWlnaHQ6MS41fS5saW5re3RleHQtZGVjb3JhdGlvbjpub25lfS5saW5rLC5saW5rOmFjdGl2ZSwubGluazpmb2N1cywubGluazpob3ZlciwubGluazpsaW5rLC5saW5rOnZpc2l0ZWR7dHJhbnNpdGlvbjpjb2xvciAuMTVzIGVhc2UtaW59Lmxpbms6Zm9jdXN7b3V0bGluZToxcHggZG90dGVkIGN1cnJlbnRDb2xvcn0ubGlzdHtsaXN0LXN0eWxlLXR5cGU6bm9uZX0ubXctMTAwe21heC13aWR0aDoxMDAlfS5tdzF7bWF4LXdpZHRoOjFyZW19Lm13MnttYXgtd2lkdGg6MnJlbX0ubXcze21heC13aWR0aDo0cmVtfS5tdzR7bWF4LXdpZHRoOjhyZW19Lm13NXttYXgtd2lkdGg6MTZyZW19Lm13NnttYXgtd2lkdGg6MzJyZW19Lm13N3ttYXgtd2lkdGg6NDhyZW19Lm13OHttYXgtd2lkdGg6NjRyZW19Lm13OXttYXgtd2lkdGg6OTZyZW19Lm13LW5vbmV7bWF4LXdpZHRoOm5vbmV9Lncxe3dpZHRoOjFyZW19Lncye3dpZHRoOjJyZW19Lncze3dpZHRoOjRyZW19Lnc0e3dpZHRoOjhyZW19Lnc1e3dpZHRoOjE2cmVtfS53LTEwe3dpZHRoOjEwJX0udy0yMHt3aWR0aDoyMCV9LnctMjV7d2lkdGg6MjUlfS53LTMwe3dpZHRoOjMwJX0udy0zM3t3aWR0aDozMyV9LnctMzR7d2lkdGg6MzQlfS53LTQwe3dpZHRoOjQwJX0udy01MHt3aWR0aDo1MCV9LnctNjB7d2lkdGg6NjAlfS53LTcwe3dpZHRoOjcwJX0udy03NXt3aWR0aDo3NSV9LnctODB7d2lkdGg6ODAlfS53LTkwe3dpZHRoOjkwJX0udy0xMDB7d2lkdGg6MTAwJX0udy10aGlyZHt3aWR0aDozMy4zMzMzMyV9LnctdHdvLXRoaXJkc3t3aWR0aDo2Ni42NjY2NyV9LnctYXV0b3t3aWR0aDphdXRvfS5vdmVyZmxvdy12aXNpYmxle292ZXJmbG93OnZpc2libGV9Lm92ZXJmbG93LWhpZGRlbntvdmVyZmxvdzpoaWRkZW59Lm92ZXJmbG93LXNjcm9sbHtvdmVyZmxvdzpzY3JvbGx9Lm92ZXJmbG93LWF1dG97b3ZlcmZsb3c6YXV0b30ub3ZlcmZsb3cteC12aXNpYmxle292ZXJmbG93LXg6dmlzaWJsZX0ub3ZlcmZsb3cteC1oaWRkZW57b3ZlcmZsb3cteDpoaWRkZW59Lm92ZXJmbG93LXgtc2Nyb2xse292ZXJmbG93LXg6c2Nyb2xsfS5vdmVyZmxvdy14LWF1dG97b3ZlcmZsb3cteDphdXRvfS5vdmVyZmxvdy15LXZpc2libGV7b3ZlcmZsb3cteTp2aXNpYmxlfS5vdmVyZmxvdy15LWhpZGRlbntvdmVyZmxvdy15OmhpZGRlbn0ub3ZlcmZsb3cteS1zY3JvbGx7b3ZlcmZsb3cteTpzY3JvbGx9Lm92ZXJmbG93LXktYXV0b3tvdmVyZmxvdy15OmF1dG99LnN0YXRpY3twb3NpdGlvbjpzdGF0aWN9LnJlbGF0aXZle3Bvc2l0aW9uOnJlbGF0aXZlfS5hYnNvbHV0ZXtwb3NpdGlvbjphYnNvbHV0ZX0uZml4ZWR7cG9zaXRpb246Zml4ZWR9Lm8tMTAwe29wYWNpdHk6MX0uby05MHtvcGFjaXR5Oi45fS5vLTgwe29wYWNpdHk6Ljh9Lm8tNzB7b3BhY2l0eTouN30uby02MHtvcGFjaXR5Oi42fS5vLTUwe29wYWNpdHk6LjV9Lm8tNDB7b3BhY2l0eTouNH0uby0zMHtvcGFjaXR5Oi4zfS5vLTIwe29wYWNpdHk6LjJ9Lm8tMTB7b3BhY2l0eTouMX0uby0wNXtvcGFjaXR5Oi4wNX0uby0wMjV7b3BhY2l0eTouMDI1fS5vLTB7b3BhY2l0eTowfS5yb3RhdGUtNDV7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKTt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKX0ucm90YXRlLTkwey13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSg5MGRlZyk7dHJhbnNmb3JtOnJvdGF0ZSg5MGRlZyl9LnJvdGF0ZS0xMzV7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDEzNWRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgxMzVkZWcpfS5yb3RhdGUtMTgwey13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgxODBkZWcpO3RyYW5zZm9ybTpyb3RhdGUoMTgwZGVnKX0ucm90YXRlLTIyNXstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMjI1ZGVnKTt0cmFuc2Zvcm06cm90YXRlKDIyNWRlZyl9LnJvdGF0ZS0yNzB7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDI3MGRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgyNzBkZWcpfS5yb3RhdGUtMzE1ey13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgzMTVkZWcpO3RyYW5zZm9ybTpyb3RhdGUoMzE1ZGVnKX0uYmxhY2stOTB7Y29sb3I6cmdiYSgwLDAsMCwuOSl9LmJsYWNrLTgwe2NvbG9yOnJnYmEoMCwwLDAsLjgpfS5ibGFjay03MHtjb2xvcjpyZ2JhKDAsMCwwLC43KX0uYmxhY2stNjB7Y29sb3I6cmdiYSgwLDAsMCwuNil9LmJsYWNrLTUwe2NvbG9yOnJnYmEoMCwwLDAsLjUpfS5ibGFjay00MHtjb2xvcjpyZ2JhKDAsMCwwLC40KX0uYmxhY2stMzB7Y29sb3I6cmdiYSgwLDAsMCwuMyl9LmJsYWNrLTIwe2NvbG9yOnJnYmEoMCwwLDAsLjIpfS5ibGFjay0xMHtjb2xvcjpyZ2JhKDAsMCwwLC4xKX0uYmxhY2stMDV7Y29sb3I6cmdiYSgwLDAsMCwuMDUpfS53aGl0ZS05MHtjb2xvcjpoc2xhKDAsMCUsMTAwJSwuOSl9LndoaXRlLTgwe2NvbG9yOmhzbGEoMCwwJSwxMDAlLC44KX0ud2hpdGUtNzB7Y29sb3I6aHNsYSgwLDAlLDEwMCUsLjcpfS53aGl0ZS02MHtjb2xvcjpoc2xhKDAsMCUsMTAwJSwuNil9LndoaXRlLTUwe2NvbG9yOmhzbGEoMCwwJSwxMDAlLC41KX0ud2hpdGUtNDB7Y29sb3I6aHNsYSgwLDAlLDEwMCUsLjQpfS53aGl0ZS0zMHtjb2xvcjpoc2xhKDAsMCUsMTAwJSwuMyl9LndoaXRlLTIwe2NvbG9yOmhzbGEoMCwwJSwxMDAlLC4yKX0ud2hpdGUtMTB7Y29sb3I6aHNsYSgwLDAlLDEwMCUsLjEpfS5ibGFja3tjb2xvcjojMDAwfS5uZWFyLWJsYWNre2NvbG9yOiMxMTF9LmRhcmstZ3JheXtjb2xvcjojMzMzfS5taWQtZ3JheXtjb2xvcjojNTU1fS5ncmF5e2NvbG9yOiM3Nzd9LnNpbHZlcntjb2xvcjojOTk5fS5saWdodC1zaWx2ZXJ7Y29sb3I6I2FhYX0ubW9vbi1ncmF5e2NvbG9yOiNjY2N9LmxpZ2h0LWdyYXl7Y29sb3I6I2VlZX0ubmVhci13aGl0ZXtjb2xvcjojZjRmNGY0fS53aGl0ZXtjb2xvcjojZmZmfS5kYXJrLXJlZHtjb2xvcjojZTcwNDBmfS5yZWR7Y29sb3I6I2ZmNDEzNn0ubGlnaHQtcmVke2NvbG9yOiNmZjcyNWN9Lm9yYW5nZXtjb2xvcjojZmY2MzAwfS5nb2xke2NvbG9yOiNmZmI3MDB9LnllbGxvd3tjb2xvcjpnb2xkfS5saWdodC15ZWxsb3d7Y29sb3I6I2ZiZjFhOX0ucHVycGxle2NvbG9yOiM1ZTJjYTV9LmxpZ2h0LXB1cnBsZXtjb2xvcjojYTQ2M2YyfS5kYXJrLXBpbmt7Y29sb3I6I2Q1MDA4Zn0uaG90LXBpbmt7Y29sb3I6I2ZmNDFiNH0ucGlua3tjb2xvcjojZmY4MGNjfS5saWdodC1waW5re2NvbG9yOiNmZmEzZDd9LmRhcmstZ3JlZW57Y29sb3I6IzEzNzc1Mn0uZ3JlZW57Y29sb3I6IzE5YTk3NH0ubGlnaHQtZ3JlZW57Y29sb3I6IzllZWJjZn0ubmF2eXtjb2xvcjojMDAxYjQ0fS5kYXJrLWJsdWV7Y29sb3I6IzAwNDQ5ZX0uYmx1ZXtjb2xvcjojMzU3ZWRkfS5saWdodC1ibHVle2NvbG9yOiM5NmNjZmZ9LmxpZ2h0ZXN0LWJsdWV7Y29sb3I6I2NkZWNmZn0ud2FzaGVkLWJsdWV7Y29sb3I6I2Y2ZmZmZX0ud2FzaGVkLWdyZWVue2NvbG9yOiNlOGZkZjV9Lndhc2hlZC15ZWxsb3d7Y29sb3I6I2ZmZmNlYn0ud2FzaGVkLXJlZHtjb2xvcjojZmZkZmRmfS5jb2xvci1pbmhlcml0e2NvbG9yOmluaGVyaXR9LmJnLWJsYWNrLTkwe2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuOSl9LmJnLWJsYWNrLTgwe2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuOCl9LmJnLWJsYWNrLTcwe2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNyl9LmJnLWJsYWNrLTYwe2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNil9LmJnLWJsYWNrLTUwe2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNSl9LmJnLWJsYWNrLTQwe2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNCl9LmJnLWJsYWNrLTMwe2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMyl9LmJnLWJsYWNrLTIwe2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMil9LmJnLWJsYWNrLTEwe2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMSl9LmJnLWJsYWNrLTA1e2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDUpfS5iZy13aGl0ZS05MHtiYWNrZ3JvdW5kLWNvbG9yOmhzbGEoMCwwJSwxMDAlLC45KX0uYmctd2hpdGUtODB7YmFja2dyb3VuZC1jb2xvcjpoc2xhKDAsMCUsMTAwJSwuOCl9LmJnLXdoaXRlLTcwe2JhY2tncm91bmQtY29sb3I6aHNsYSgwLDAlLDEwMCUsLjcpfS5iZy13aGl0ZS02MHtiYWNrZ3JvdW5kLWNvbG9yOmhzbGEoMCwwJSwxMDAlLC42KX0uYmctd2hpdGUtNTB7YmFja2dyb3VuZC1jb2xvcjpoc2xhKDAsMCUsMTAwJSwuNSl9LmJnLXdoaXRlLTQwe2JhY2tncm91bmQtY29sb3I6aHNsYSgwLDAlLDEwMCUsLjQpfS5iZy13aGl0ZS0zMHtiYWNrZ3JvdW5kLWNvbG9yOmhzbGEoMCwwJSwxMDAlLC4zKX0uYmctd2hpdGUtMjB7YmFja2dyb3VuZC1jb2xvcjpoc2xhKDAsMCUsMTAwJSwuMil9LmJnLXdoaXRlLTEwe2JhY2tncm91bmQtY29sb3I6aHNsYSgwLDAlLDEwMCUsLjEpfS5iZy1ibGFja3tiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9LmJnLW5lYXItYmxhY2t7YmFja2dyb3VuZC1jb2xvcjojMTExfS5iZy1kYXJrLWdyYXl7YmFja2dyb3VuZC1jb2xvcjojMzMzfS5iZy1taWQtZ3JheXtiYWNrZ3JvdW5kLWNvbG9yOiM1NTV9LmJnLWdyYXl7YmFja2dyb3VuZC1jb2xvcjojNzc3fS5iZy1zaWx2ZXJ7YmFja2dyb3VuZC1jb2xvcjojOTk5fS5iZy1saWdodC1zaWx2ZXJ7YmFja2dyb3VuZC1jb2xvcjojYWFhfS5iZy1tb29uLWdyYXl7YmFja2dyb3VuZC1jb2xvcjojY2NjfS5iZy1saWdodC1ncmF5e2JhY2tncm91bmQtY29sb3I6I2VlZX0uYmctbmVhci13aGl0ZXtiYWNrZ3JvdW5kLWNvbG9yOiNmNGY0ZjR9LmJnLXdoaXRle2JhY2tncm91bmQtY29sb3I6I2ZmZn0uYmctdHJhbnNwYXJlbnR7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0uYmctZGFyay1yZWR7YmFja2dyb3VuZC1jb2xvcjojZTcwNDBmfS5iZy1yZWR7YmFja2dyb3VuZC1jb2xvcjojZmY0MTM2fS5iZy1saWdodC1yZWR7YmFja2dyb3VuZC1jb2xvcjojZmY3MjVjfS5iZy1vcmFuZ2V7YmFja2dyb3VuZC1jb2xvcjojZmY2MzAwfS5iZy1nb2xke2JhY2tncm91bmQtY29sb3I6I2ZmYjcwMH0uYmcteWVsbG93e2JhY2tncm91bmQtY29sb3I6Z29sZH0uYmctbGlnaHQteWVsbG93e2JhY2tncm91bmQtY29sb3I6I2ZiZjFhOX0uYmctcHVycGxle2JhY2tncm91bmQtY29sb3I6IzVlMmNhNX0uYmctbGlnaHQtcHVycGxle2JhY2tncm91bmQtY29sb3I6I2E0NjNmMn0uYmctZGFyay1waW5re2JhY2tncm91bmQtY29sb3I6I2Q1MDA4Zn0uYmctaG90LXBpbmt7YmFja2dyb3VuZC1jb2xvcjojZmY0MWI0fS5iZy1waW5re2JhY2tncm91bmQtY29sb3I6I2ZmODBjY30uYmctbGlnaHQtcGlua3tiYWNrZ3JvdW5kLWNvbG9yOiNmZmEzZDd9LmJnLWRhcmstZ3JlZW57YmFja2dyb3VuZC1jb2xvcjojMTM3NzUyfS5iZy1ncmVlbntiYWNrZ3JvdW5kLWNvbG9yOiMxOWE5NzR9LmJnLWxpZ2h0LWdyZWVue2JhY2tncm91bmQtY29sb3I6IzllZWJjZn0uYmctbmF2eXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDFiNDR9LmJnLWRhcmstYmx1ZXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDQ0OWV9LmJnLWJsdWV7YmFja2dyb3VuZC1jb2xvcjojMzU3ZWRkfS5iZy1saWdodC1ibHVle2JhY2tncm91bmQtY29sb3I6Izk2Y2NmZn0uYmctbGlnaHRlc3QtYmx1ZXtiYWNrZ3JvdW5kLWNvbG9yOiNjZGVjZmZ9LmJnLXdhc2hlZC1ibHVle2JhY2tncm91bmQtY29sb3I6I2Y2ZmZmZX0uYmctd2FzaGVkLWdyZWVue2JhY2tncm91bmQtY29sb3I6I2U4ZmRmNX0uYmctd2FzaGVkLXllbGxvd3tiYWNrZ3JvdW5kLWNvbG9yOiNmZmZjZWJ9LmJnLXdhc2hlZC1yZWR7YmFja2dyb3VuZC1jb2xvcjojZmZkZmRmfS5iZy1pbmhlcml0e2JhY2tncm91bmQtY29sb3I6aW5oZXJpdH0uaG92ZXItYmxhY2s6Zm9jdXMsLmhvdmVyLWJsYWNrOmhvdmVye2NvbG9yOiMwMDB9LmhvdmVyLW5lYXItYmxhY2s6Zm9jdXMsLmhvdmVyLW5lYXItYmxhY2s6aG92ZXJ7Y29sb3I6IzExMX0uaG92ZXItZGFyay1ncmF5OmZvY3VzLC5ob3Zlci1kYXJrLWdyYXk6aG92ZXJ7Y29sb3I6IzMzM30uaG92ZXItbWlkLWdyYXk6Zm9jdXMsLmhvdmVyLW1pZC1ncmF5OmhvdmVye2NvbG9yOiM1NTV9LmhvdmVyLWdyYXk6Zm9jdXMsLmhvdmVyLWdyYXk6aG92ZXJ7Y29sb3I6Izc3N30uaG92ZXItc2lsdmVyOmZvY3VzLC5ob3Zlci1zaWx2ZXI6aG92ZXJ7Y29sb3I6Izk5OX0uaG92ZXItbGlnaHQtc2lsdmVyOmZvY3VzLC5ob3Zlci1saWdodC1zaWx2ZXI6aG92ZXJ7Y29sb3I6I2FhYX0uaG92ZXItbW9vbi1ncmF5OmZvY3VzLC5ob3Zlci1tb29uLWdyYXk6aG92ZXJ7Y29sb3I6I2NjY30uaG92ZXItbGlnaHQtZ3JheTpmb2N1cywuaG92ZXItbGlnaHQtZ3JheTpob3Zlcntjb2xvcjojZWVlfS5ob3Zlci1uZWFyLXdoaXRlOmZvY3VzLC5ob3Zlci1uZWFyLXdoaXRlOmhvdmVye2NvbG9yOiNmNGY0ZjR9LmhvdmVyLXdoaXRlOmZvY3VzLC5ob3Zlci13aGl0ZTpob3Zlcntjb2xvcjojZmZmfS5ob3Zlci1ibGFjay05MDpmb2N1cywuaG92ZXItYmxhY2stOTA6aG92ZXJ7Y29sb3I6cmdiYSgwLDAsMCwuOSl9LmhvdmVyLWJsYWNrLTgwOmZvY3VzLC5ob3Zlci1ibGFjay04MDpob3Zlcntjb2xvcjpyZ2JhKDAsMCwwLC44KX0uaG92ZXItYmxhY2stNzA6Zm9jdXMsLmhvdmVyLWJsYWNrLTcwOmhvdmVye2NvbG9yOnJnYmEoMCwwLDAsLjcpfS5ob3Zlci1ibGFjay02MDpmb2N1cywuaG92ZXItYmxhY2stNjA6aG92ZXJ7Y29sb3I6cmdiYSgwLDAsMCwuNil9LmhvdmVyLWJsYWNrLTUwOmZvY3VzLC5ob3Zlci1ibGFjay01MDpob3Zlcntjb2xvcjpyZ2JhKDAsMCwwLC41KX0uaG92ZXItYmxhY2stNDA6Zm9jdXMsLmhvdmVyLWJsYWNrLTQwOmhvdmVye2NvbG9yOnJnYmEoMCwwLDAsLjQpfS5ob3Zlci1ibGFjay0zMDpmb2N1cywuaG92ZXItYmxhY2stMzA6aG92ZXJ7Y29sb3I6cmdiYSgwLDAsMCwuMyl9LmhvdmVyLWJsYWNrLTIwOmZvY3VzLC5ob3Zlci1ibGFjay0yMDpob3Zlcntjb2xvcjpyZ2JhKDAsMCwwLC4yKX0uaG92ZXItYmxhY2stMTA6Zm9jdXMsLmhvdmVyLWJsYWNrLTEwOmhvdmVye2NvbG9yOnJnYmEoMCwwLDAsLjEpfS5ob3Zlci13aGl0ZS05MDpmb2N1cywuaG92ZXItd2hpdGUtOTA6aG92ZXJ7Y29sb3I6aHNsYSgwLDAlLDEwMCUsLjkpfS5ob3Zlci13aGl0ZS04MDpmb2N1cywuaG92ZXItd2hpdGUtODA6aG92ZXJ7Y29sb3I6aHNsYSgwLDAlLDEwMCUsLjgpfS5ob3Zlci13aGl0ZS03MDpmb2N1cywuaG92ZXItd2hpdGUtNzA6aG92ZXJ7Y29sb3I6aHNsYSgwLDAlLDEwMCUsLjcpfS5ob3Zlci13aGl0ZS02MDpmb2N1cywuaG92ZXItd2hpdGUtNjA6aG92ZXJ7Y29sb3I6aHNsYSgwLDAlLDEwMCUsLjYpfS5ob3Zlci13aGl0ZS01MDpmb2N1cywuaG92ZXItd2hpdGUtNTA6aG92ZXJ7Y29sb3I6aHNsYSgwLDAlLDEwMCUsLjUpfS5ob3Zlci13aGl0ZS00MDpmb2N1cywuaG92ZXItd2hpdGUtNDA6aG92ZXJ7Y29sb3I6aHNsYSgwLDAlLDEwMCUsLjQpfS5ob3Zlci13aGl0ZS0zMDpmb2N1cywuaG92ZXItd2hpdGUtMzA6aG92ZXJ7Y29sb3I6aHNsYSgwLDAlLDEwMCUsLjMpfS5ob3Zlci13aGl0ZS0yMDpmb2N1cywuaG92ZXItd2hpdGUtMjA6aG92ZXJ7Y29sb3I6aHNsYSgwLDAlLDEwMCUsLjIpfS5ob3Zlci13aGl0ZS0xMDpmb2N1cywuaG92ZXItd2hpdGUtMTA6aG92ZXJ7Y29sb3I6aHNsYSgwLDAlLDEwMCUsLjEpfS5ob3Zlci1pbmhlcml0OmZvY3VzLC5ob3Zlci1pbmhlcml0OmhvdmVye2NvbG9yOmluaGVyaXR9LmhvdmVyLWJnLWJsYWNrOmZvY3VzLC5ob3Zlci1iZy1ibGFjazpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9LmhvdmVyLWJnLW5lYXItYmxhY2s6Zm9jdXMsLmhvdmVyLWJnLW5lYXItYmxhY2s6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojMTExfS5ob3Zlci1iZy1kYXJrLWdyYXk6Zm9jdXMsLmhvdmVyLWJnLWRhcmstZ3JheTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiMzMzN9LmhvdmVyLWJnLW1pZC1ncmF5OmZvY3VzLC5ob3Zlci1iZy1taWQtZ3JheTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiM1NTV9LmhvdmVyLWJnLWdyYXk6Zm9jdXMsLmhvdmVyLWJnLWdyYXk6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojNzc3fS5ob3Zlci1iZy1zaWx2ZXI6Zm9jdXMsLmhvdmVyLWJnLXNpbHZlcjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiM5OTl9LmhvdmVyLWJnLWxpZ2h0LXNpbHZlcjpmb2N1cywuaG92ZXItYmctbGlnaHQtc2lsdmVyOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2FhYX0uaG92ZXItYmctbW9vbi1ncmF5OmZvY3VzLC5ob3Zlci1iZy1tb29uLWdyYXk6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojY2NjfS5ob3Zlci1iZy1saWdodC1ncmF5OmZvY3VzLC5ob3Zlci1iZy1saWdodC1ncmF5OmhvdmVye2JhY2tncm91bmQtY29sb3I6I2VlZX0uaG92ZXItYmctbmVhci13aGl0ZTpmb2N1cywuaG92ZXItYmctbmVhci13aGl0ZTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNmNGY0ZjR9LmhvdmVyLWJnLXdoaXRlOmZvY3VzLC5ob3Zlci1iZy13aGl0ZTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9LmhvdmVyLWJnLXRyYW5zcGFyZW50OmZvY3VzLC5ob3Zlci1iZy10cmFuc3BhcmVudDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5ob3Zlci1iZy1ibGFjay05MDpmb2N1cywuaG92ZXItYmctYmxhY2stOTA6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC45KX0uaG92ZXItYmctYmxhY2stODA6Zm9jdXMsLmhvdmVyLWJnLWJsYWNrLTgwOmhvdmVye2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuOCl9LmhvdmVyLWJnLWJsYWNrLTcwOmZvY3VzLC5ob3Zlci1iZy1ibGFjay03MDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjcpfS5ob3Zlci1iZy1ibGFjay02MDpmb2N1cywuaG92ZXItYmctYmxhY2stNjA6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC42KX0uaG92ZXItYmctYmxhY2stNTA6Zm9jdXMsLmhvdmVyLWJnLWJsYWNrLTUwOmhvdmVye2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNSl9LmhvdmVyLWJnLWJsYWNrLTQwOmZvY3VzLC5ob3Zlci1iZy1ibGFjay00MDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjQpfS5ob3Zlci1iZy1ibGFjay0zMDpmb2N1cywuaG92ZXItYmctYmxhY2stMzA6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4zKX0uaG92ZXItYmctYmxhY2stMjA6Zm9jdXMsLmhvdmVyLWJnLWJsYWNrLTIwOmhvdmVye2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMil9LmhvdmVyLWJnLWJsYWNrLTEwOmZvY3VzLC5ob3Zlci1iZy1ibGFjay0xMDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEpfS5ob3Zlci1iZy13aGl0ZS05MDpmb2N1cywuaG92ZXItYmctd2hpdGUtOTA6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpoc2xhKDAsMCUsMTAwJSwuOSl9LmhvdmVyLWJnLXdoaXRlLTgwOmZvY3VzLC5ob3Zlci1iZy13aGl0ZS04MDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmhzbGEoMCwwJSwxMDAlLC44KX0uaG92ZXItYmctd2hpdGUtNzA6Zm9jdXMsLmhvdmVyLWJnLXdoaXRlLTcwOmhvdmVye2JhY2tncm91bmQtY29sb3I6aHNsYSgwLDAlLDEwMCUsLjcpfS5ob3Zlci1iZy13aGl0ZS02MDpmb2N1cywuaG92ZXItYmctd2hpdGUtNjA6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpoc2xhKDAsMCUsMTAwJSwuNil9LmhvdmVyLWJnLXdoaXRlLTUwOmZvY3VzLC5ob3Zlci1iZy13aGl0ZS01MDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmhzbGEoMCwwJSwxMDAlLC41KX0uaG92ZXItYmctd2hpdGUtNDA6Zm9jdXMsLmhvdmVyLWJnLXdoaXRlLTQwOmhvdmVye2JhY2tncm91bmQtY29sb3I6aHNsYSgwLDAlLDEwMCUsLjQpfS5ob3Zlci1iZy13aGl0ZS0zMDpmb2N1cywuaG92ZXItYmctd2hpdGUtMzA6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpoc2xhKDAsMCUsMTAwJSwuMyl9LmhvdmVyLWJnLXdoaXRlLTIwOmZvY3VzLC5ob3Zlci1iZy13aGl0ZS0yMDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmhzbGEoMCwwJSwxMDAlLC4yKX0uaG92ZXItYmctd2hpdGUtMTA6Zm9jdXMsLmhvdmVyLWJnLXdoaXRlLTEwOmhvdmVye2JhY2tncm91bmQtY29sb3I6aHNsYSgwLDAlLDEwMCUsLjEpfS5ob3Zlci1kYXJrLXJlZDpmb2N1cywuaG92ZXItZGFyay1yZWQ6aG92ZXJ7Y29sb3I6I2U3MDQwZn0uaG92ZXItcmVkOmZvY3VzLC5ob3Zlci1yZWQ6aG92ZXJ7Y29sb3I6I2ZmNDEzNn0uaG92ZXItbGlnaHQtcmVkOmZvY3VzLC5ob3Zlci1saWdodC1yZWQ6aG92ZXJ7Y29sb3I6I2ZmNzI1Y30uaG92ZXItb3JhbmdlOmZvY3VzLC5ob3Zlci1vcmFuZ2U6aG92ZXJ7Y29sb3I6I2ZmNjMwMH0uaG92ZXItZ29sZDpmb2N1cywuaG92ZXItZ29sZDpob3Zlcntjb2xvcjojZmZiNzAwfS5ob3Zlci15ZWxsb3c6Zm9jdXMsLmhvdmVyLXllbGxvdzpob3Zlcntjb2xvcjpnb2xkfS5ob3Zlci1saWdodC15ZWxsb3c6Zm9jdXMsLmhvdmVyLWxpZ2h0LXllbGxvdzpob3Zlcntjb2xvcjojZmJmMWE5fS5ob3Zlci1wdXJwbGU6Zm9jdXMsLmhvdmVyLXB1cnBsZTpob3Zlcntjb2xvcjojNWUyY2E1fS5ob3Zlci1saWdodC1wdXJwbGU6Zm9jdXMsLmhvdmVyLWxpZ2h0LXB1cnBsZTpob3Zlcntjb2xvcjojYTQ2M2YyfS5ob3Zlci1kYXJrLXBpbms6Zm9jdXMsLmhvdmVyLWRhcmstcGluazpob3Zlcntjb2xvcjojZDUwMDhmfS5ob3Zlci1ob3QtcGluazpmb2N1cywuaG92ZXItaG90LXBpbms6aG92ZXJ7Y29sb3I6I2ZmNDFiNH0uaG92ZXItcGluazpmb2N1cywuaG92ZXItcGluazpob3Zlcntjb2xvcjojZmY4MGNjfS5ob3Zlci1saWdodC1waW5rOmZvY3VzLC5ob3Zlci1saWdodC1waW5rOmhvdmVye2NvbG9yOiNmZmEzZDd9LmhvdmVyLWRhcmstZ3JlZW46Zm9jdXMsLmhvdmVyLWRhcmstZ3JlZW46aG92ZXJ7Y29sb3I6IzEzNzc1Mn0uaG92ZXItZ3JlZW46Zm9jdXMsLmhvdmVyLWdyZWVuOmhvdmVye2NvbG9yOiMxOWE5NzR9LmhvdmVyLWxpZ2h0LWdyZWVuOmZvY3VzLC5ob3Zlci1saWdodC1ncmVlbjpob3Zlcntjb2xvcjojOWVlYmNmfS5ob3Zlci1uYXZ5OmZvY3VzLC5ob3Zlci1uYXZ5OmhvdmVye2NvbG9yOiMwMDFiNDR9LmhvdmVyLWRhcmstYmx1ZTpmb2N1cywuaG92ZXItZGFyay1ibHVlOmhvdmVye2NvbG9yOiMwMDQ0OWV9LmhvdmVyLWJsdWU6Zm9jdXMsLmhvdmVyLWJsdWU6aG92ZXJ7Y29sb3I6IzM1N2VkZH0uaG92ZXItbGlnaHQtYmx1ZTpmb2N1cywuaG92ZXItbGlnaHQtYmx1ZTpob3Zlcntjb2xvcjojOTZjY2ZmfS5ob3Zlci1saWdodGVzdC1ibHVlOmZvY3VzLC5ob3Zlci1saWdodGVzdC1ibHVlOmhvdmVye2NvbG9yOiNjZGVjZmZ9LmhvdmVyLXdhc2hlZC1ibHVlOmZvY3VzLC5ob3Zlci13YXNoZWQtYmx1ZTpob3Zlcntjb2xvcjojZjZmZmZlfS5ob3Zlci13YXNoZWQtZ3JlZW46Zm9jdXMsLmhvdmVyLXdhc2hlZC1ncmVlbjpob3Zlcntjb2xvcjojZThmZGY1fS5ob3Zlci13YXNoZWQteWVsbG93OmZvY3VzLC5ob3Zlci13YXNoZWQteWVsbG93OmhvdmVye2NvbG9yOiNmZmZjZWJ9LmhvdmVyLXdhc2hlZC1yZWQ6Zm9jdXMsLmhvdmVyLXdhc2hlZC1yZWQ6aG92ZXJ7Y29sb3I6I2ZmZGZkZn0uaG92ZXItYmctZGFyay1yZWQ6Zm9jdXMsLmhvdmVyLWJnLWRhcmstcmVkOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2U3MDQwZn0uaG92ZXItYmctcmVkOmZvY3VzLC5ob3Zlci1iZy1yZWQ6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZmY0MTM2fS5ob3Zlci1iZy1saWdodC1yZWQ6Zm9jdXMsLmhvdmVyLWJnLWxpZ2h0LXJlZDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZjcyNWN9LmhvdmVyLWJnLW9yYW5nZTpmb2N1cywuaG92ZXItYmctb3JhbmdlOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2ZmNjMwMH0uaG92ZXItYmctZ29sZDpmb2N1cywuaG92ZXItYmctZ29sZDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmI3MDB9LmhvdmVyLWJnLXllbGxvdzpmb2N1cywuaG92ZXItYmcteWVsbG93OmhvdmVye2JhY2tncm91bmQtY29sb3I6Z29sZH0uaG92ZXItYmctbGlnaHQteWVsbG93OmZvY3VzLC5ob3Zlci1iZy1saWdodC15ZWxsb3c6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZmJmMWE5fS5ob3Zlci1iZy1wdXJwbGU6Zm9jdXMsLmhvdmVyLWJnLXB1cnBsZTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiM1ZTJjYTV9LmhvdmVyLWJnLWxpZ2h0LXB1cnBsZTpmb2N1cywuaG92ZXItYmctbGlnaHQtcHVycGxlOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2E0NjNmMn0uaG92ZXItYmctZGFyay1waW5rOmZvY3VzLC5ob3Zlci1iZy1kYXJrLXBpbms6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZDUwMDhmfS5ob3Zlci1iZy1ob3QtcGluazpmb2N1cywuaG92ZXItYmctaG90LXBpbms6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZmY0MWI0fS5ob3Zlci1iZy1waW5rOmZvY3VzLC5ob3Zlci1iZy1waW5rOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2ZmODBjY30uaG92ZXItYmctbGlnaHQtcGluazpmb2N1cywuaG92ZXItYmctbGlnaHQtcGluazpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmEzZDd9LmhvdmVyLWJnLWRhcmstZ3JlZW46Zm9jdXMsLmhvdmVyLWJnLWRhcmstZ3JlZW46aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojMTM3NzUyfS5ob3Zlci1iZy1ncmVlbjpmb2N1cywuaG92ZXItYmctZ3JlZW46aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojMTlhOTc0fS5ob3Zlci1iZy1saWdodC1ncmVlbjpmb2N1cywuaG92ZXItYmctbGlnaHQtZ3JlZW46aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojOWVlYmNmfS5ob3Zlci1iZy1uYXZ5OmZvY3VzLC5ob3Zlci1iZy1uYXZ5OmhvdmVye2JhY2tncm91bmQtY29sb3I6IzAwMWI0NH0uaG92ZXItYmctZGFyay1ibHVlOmZvY3VzLC5ob3Zlci1iZy1kYXJrLWJsdWU6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojMDA0NDllfS5ob3Zlci1iZy1ibHVlOmZvY3VzLC5ob3Zlci1iZy1ibHVlOmhvdmVye2JhY2tncm91bmQtY29sb3I6IzM1N2VkZH0uaG92ZXItYmctbGlnaHQtYmx1ZTpmb2N1cywuaG92ZXItYmctbGlnaHQtYmx1ZTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiM5NmNjZmZ9LmhvdmVyLWJnLWxpZ2h0ZXN0LWJsdWU6Zm9jdXMsLmhvdmVyLWJnLWxpZ2h0ZXN0LWJsdWU6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojY2RlY2ZmfS5ob3Zlci1iZy13YXNoZWQtYmx1ZTpmb2N1cywuaG92ZXItYmctd2FzaGVkLWJsdWU6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZjZmZmZlfS5ob3Zlci1iZy13YXNoZWQtZ3JlZW46Zm9jdXMsLmhvdmVyLWJnLXdhc2hlZC1ncmVlbjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNlOGZkZjV9LmhvdmVyLWJnLXdhc2hlZC15ZWxsb3c6Zm9jdXMsLmhvdmVyLWJnLXdhc2hlZC15ZWxsb3c6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmY2VifS5ob3Zlci1iZy13YXNoZWQtcmVkOmZvY3VzLC5ob3Zlci1iZy13YXNoZWQtcmVkOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2ZmZGZkZn0uaG92ZXItYmctaW5oZXJpdDpmb2N1cywuaG92ZXItYmctaW5oZXJpdDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmluaGVyaXR9LnBhMHtwYWRkaW5nOjB9LnBhMXtwYWRkaW5nOi4yNXJlbX0ucGEye3BhZGRpbmc6LjVyZW19LnBhM3twYWRkaW5nOjFyZW19LnBhNHtwYWRkaW5nOjJyZW19LnBhNXtwYWRkaW5nOjRyZW19LnBhNntwYWRkaW5nOjhyZW19LnBhN3twYWRkaW5nOjE2cmVtfS5wbDB7cGFkZGluZy1sZWZ0OjB9LnBsMXtwYWRkaW5nLWxlZnQ6LjI1cmVtfS5wbDJ7cGFkZGluZy1sZWZ0Oi41cmVtfS5wbDN7cGFkZGluZy1sZWZ0OjFyZW19LnBsNHtwYWRkaW5nLWxlZnQ6MnJlbX0ucGw1e3BhZGRpbmctbGVmdDo0cmVtfS5wbDZ7cGFkZGluZy1sZWZ0OjhyZW19LnBsN3twYWRkaW5nLWxlZnQ6MTZyZW19LnByMHtwYWRkaW5nLXJpZ2h0OjB9LnByMXtwYWRkaW5nLXJpZ2h0Oi4yNXJlbX0ucHIye3BhZGRpbmctcmlnaHQ6LjVyZW19LnByM3twYWRkaW5nLXJpZ2h0OjFyZW19LnByNHtwYWRkaW5nLXJpZ2h0OjJyZW19LnByNXtwYWRkaW5nLXJpZ2h0OjRyZW19LnByNntwYWRkaW5nLXJpZ2h0OjhyZW19LnByN3twYWRkaW5nLXJpZ2h0OjE2cmVtfS5wYjB7cGFkZGluZy1ib3R0b206MH0ucGIxe3BhZGRpbmctYm90dG9tOi4yNXJlbX0ucGIye3BhZGRpbmctYm90dG9tOi41cmVtfS5wYjN7cGFkZGluZy1ib3R0b206MXJlbX0ucGI0e3BhZGRpbmctYm90dG9tOjJyZW19LnBiNXtwYWRkaW5nLWJvdHRvbTo0cmVtfS5wYjZ7cGFkZGluZy1ib3R0b206OHJlbX0ucGI3e3BhZGRpbmctYm90dG9tOjE2cmVtfS5wdDB7cGFkZGluZy10b3A6MH0ucHQxe3BhZGRpbmctdG9wOi4yNXJlbX0ucHQye3BhZGRpbmctdG9wOi41cmVtfS5wdDN7cGFkZGluZy10b3A6MXJlbX0ucHQ0e3BhZGRpbmctdG9wOjJyZW19LnB0NXtwYWRkaW5nLXRvcDo0cmVtfS5wdDZ7cGFkZGluZy10b3A6OHJlbX0ucHQ3e3BhZGRpbmctdG9wOjE2cmVtfS5wdjB7cGFkZGluZy10b3A6MDtwYWRkaW5nLWJvdHRvbTowfS5wdjF7cGFkZGluZy10b3A6LjI1cmVtO3BhZGRpbmctYm90dG9tOi4yNXJlbX0ucHYye3BhZGRpbmctdG9wOi41cmVtO3BhZGRpbmctYm90dG9tOi41cmVtfS5wdjN7cGFkZGluZy10b3A6MXJlbTtwYWRkaW5nLWJvdHRvbToxcmVtfS5wdjR7cGFkZGluZy10b3A6MnJlbTtwYWRkaW5nLWJvdHRvbToycmVtfS5wdjV7cGFkZGluZy10b3A6NHJlbTtwYWRkaW5nLWJvdHRvbTo0cmVtfS5wdjZ7cGFkZGluZy10b3A6OHJlbTtwYWRkaW5nLWJvdHRvbTo4cmVtfS5wdjd7cGFkZGluZy10b3A6MTZyZW07cGFkZGluZy1ib3R0b206MTZyZW19LnBoMHtwYWRkaW5nLWxlZnQ6MDtwYWRkaW5nLXJpZ2h0OjB9LnBoMXtwYWRkaW5nLWxlZnQ6LjI1cmVtO3BhZGRpbmctcmlnaHQ6LjI1cmVtfS5waDJ7cGFkZGluZy1sZWZ0Oi41cmVtO3BhZGRpbmctcmlnaHQ6LjVyZW19LnBoM3twYWRkaW5nLWxlZnQ6MXJlbTtwYWRkaW5nLXJpZ2h0OjFyZW19LnBoNHtwYWRkaW5nLWxlZnQ6MnJlbTtwYWRkaW5nLXJpZ2h0OjJyZW19LnBoNXtwYWRkaW5nLWxlZnQ6NHJlbTtwYWRkaW5nLXJpZ2h0OjRyZW19LnBoNntwYWRkaW5nLWxlZnQ6OHJlbTtwYWRkaW5nLXJpZ2h0OjhyZW19LnBoN3twYWRkaW5nLWxlZnQ6MTZyZW07cGFkZGluZy1yaWdodDoxNnJlbX0ubWEwe21hcmdpbjowfS5tYTF7bWFyZ2luOi4yNXJlbX0ubWEye21hcmdpbjouNXJlbX0ubWEze21hcmdpbjoxcmVtfS5tYTR7bWFyZ2luOjJyZW19Lm1hNXttYXJnaW46NHJlbX0ubWE2e21hcmdpbjo4cmVtfS5tYTd7bWFyZ2luOjE2cmVtfS5tbDB7bWFyZ2luLWxlZnQ6MH0ubWwxe21hcmdpbi1sZWZ0Oi4yNXJlbX0ubWwye21hcmdpbi1sZWZ0Oi41cmVtfS5tbDN7bWFyZ2luLWxlZnQ6MXJlbX0ubWw0e21hcmdpbi1sZWZ0OjJyZW19Lm1sNXttYXJnaW4tbGVmdDo0cmVtfS5tbDZ7bWFyZ2luLWxlZnQ6OHJlbX0ubWw3e21hcmdpbi1sZWZ0OjE2cmVtfS5tcjB7bWFyZ2luLXJpZ2h0OjB9Lm1yMXttYXJnaW4tcmlnaHQ6LjI1cmVtfS5tcjJ7bWFyZ2luLXJpZ2h0Oi41cmVtfS5tcjN7bWFyZ2luLXJpZ2h0OjFyZW19Lm1yNHttYXJnaW4tcmlnaHQ6MnJlbX0ubXI1e21hcmdpbi1yaWdodDo0cmVtfS5tcjZ7bWFyZ2luLXJpZ2h0OjhyZW19Lm1yN3ttYXJnaW4tcmlnaHQ6MTZyZW19Lm1iMHttYXJnaW4tYm90dG9tOjB9Lm1iMXttYXJnaW4tYm90dG9tOi4yNXJlbX0ubWIye21hcmdpbi1ib3R0b206LjVyZW19Lm1iM3ttYXJnaW4tYm90dG9tOjFyZW19Lm1iNHttYXJnaW4tYm90dG9tOjJyZW19Lm1iNXttYXJnaW4tYm90dG9tOjRyZW19Lm1iNnttYXJnaW4tYm90dG9tOjhyZW19Lm1iN3ttYXJnaW4tYm90dG9tOjE2cmVtfS5tdDB7bWFyZ2luLXRvcDowfS5tdDF7bWFyZ2luLXRvcDouMjVyZW19Lm10MnttYXJnaW4tdG9wOi41cmVtfS5tdDN7bWFyZ2luLXRvcDoxcmVtfS5tdDR7bWFyZ2luLXRvcDoycmVtfS5tdDV7bWFyZ2luLXRvcDo0cmVtfS5tdDZ7bWFyZ2luLXRvcDo4cmVtfS5tdDd7bWFyZ2luLXRvcDoxNnJlbX0ubXYwe21hcmdpbi10b3A6MDttYXJnaW4tYm90dG9tOjB9Lm12MXttYXJnaW4tdG9wOi4yNXJlbTttYXJnaW4tYm90dG9tOi4yNXJlbX0ubXYye21hcmdpbi10b3A6LjVyZW07bWFyZ2luLWJvdHRvbTouNXJlbX0ubXYze21hcmdpbi10b3A6MXJlbTttYXJnaW4tYm90dG9tOjFyZW19Lm12NHttYXJnaW4tdG9wOjJyZW07bWFyZ2luLWJvdHRvbToycmVtfS5tdjV7bWFyZ2luLXRvcDo0cmVtO21hcmdpbi1ib3R0b206NHJlbX0ubXY2e21hcmdpbi10b3A6OHJlbTttYXJnaW4tYm90dG9tOjhyZW19Lm12N3ttYXJnaW4tdG9wOjE2cmVtO21hcmdpbi1ib3R0b206MTZyZW19Lm1oMHttYXJnaW4tbGVmdDowO21hcmdpbi1yaWdodDowfS5taDF7bWFyZ2luLWxlZnQ6LjI1cmVtO21hcmdpbi1yaWdodDouMjVyZW19Lm1oMnttYXJnaW4tbGVmdDouNXJlbTttYXJnaW4tcmlnaHQ6LjVyZW19Lm1oM3ttYXJnaW4tbGVmdDoxcmVtO21hcmdpbi1yaWdodDoxcmVtfS5taDR7bWFyZ2luLWxlZnQ6MnJlbTttYXJnaW4tcmlnaHQ6MnJlbX0ubWg1e21hcmdpbi1sZWZ0OjRyZW07bWFyZ2luLXJpZ2h0OjRyZW19Lm1oNnttYXJnaW4tbGVmdDo4cmVtO21hcmdpbi1yaWdodDo4cmVtfS5taDd7bWFyZ2luLWxlZnQ6MTZyZW07bWFyZ2luLXJpZ2h0OjE2cmVtfS5uYTF7bWFyZ2luOi0uMjVyZW19Lm5hMnttYXJnaW46LS41cmVtfS5uYTN7bWFyZ2luOi0xcmVtfS5uYTR7bWFyZ2luOi0ycmVtfS5uYTV7bWFyZ2luOi00cmVtfS5uYTZ7bWFyZ2luOi04cmVtfS5uYTd7bWFyZ2luOi0xNnJlbX0ubmwxe21hcmdpbi1sZWZ0Oi0uMjVyZW19Lm5sMnttYXJnaW4tbGVmdDotLjVyZW19Lm5sM3ttYXJnaW4tbGVmdDotMXJlbX0ubmw0e21hcmdpbi1sZWZ0Oi0ycmVtfS5ubDV7bWFyZ2luLWxlZnQ6LTRyZW19Lm5sNnttYXJnaW4tbGVmdDotOHJlbX0ubmw3e21hcmdpbi1sZWZ0Oi0xNnJlbX0ubnIxe21hcmdpbi1yaWdodDotLjI1cmVtfS5ucjJ7bWFyZ2luLXJpZ2h0Oi0uNXJlbX0ubnIze21hcmdpbi1yaWdodDotMXJlbX0ubnI0e21hcmdpbi1yaWdodDotMnJlbX0ubnI1e21hcmdpbi1yaWdodDotNHJlbX0ubnI2e21hcmdpbi1yaWdodDotOHJlbX0ubnI3e21hcmdpbi1yaWdodDotMTZyZW19Lm5iMXttYXJnaW4tYm90dG9tOi0uMjVyZW19Lm5iMnttYXJnaW4tYm90dG9tOi0uNXJlbX0ubmIze21hcmdpbi1ib3R0b206LTFyZW19Lm5iNHttYXJnaW4tYm90dG9tOi0ycmVtfS5uYjV7bWFyZ2luLWJvdHRvbTotNHJlbX0ubmI2e21hcmdpbi1ib3R0b206LThyZW19Lm5iN3ttYXJnaW4tYm90dG9tOi0xNnJlbX0ubnQxe21hcmdpbi10b3A6LS4yNXJlbX0ubnQye21hcmdpbi10b3A6LS41cmVtfS5udDN7bWFyZ2luLXRvcDotMXJlbX0ubnQ0e21hcmdpbi10b3A6LTJyZW19Lm50NXttYXJnaW4tdG9wOi00cmVtfS5udDZ7bWFyZ2luLXRvcDotOHJlbX0ubnQ3e21hcmdpbi10b3A6LTE2cmVtfS5jb2xsYXBzZXtib3JkZXItY29sbGFwc2U6Y29sbGFwc2U7Ym9yZGVyLXNwYWNpbmc6MH0uc3RyaXBlZC0tbGlnaHQtc2lsdmVyOm50aC1jaGlsZChvZGQpe2JhY2tncm91bmQtY29sb3I6I2FhYX0uc3RyaXBlZC0tbW9vbi1ncmF5Om50aC1jaGlsZChvZGQpe2JhY2tncm91bmQtY29sb3I6I2NjY30uc3RyaXBlZC0tbGlnaHQtZ3JheTpudGgtY2hpbGQob2RkKXtiYWNrZ3JvdW5kLWNvbG9yOiNlZWV9LnN0cmlwZWQtLW5lYXItd2hpdGU6bnRoLWNoaWxkKG9kZCl7YmFja2dyb3VuZC1jb2xvcjojZjRmNGY0fS5zdHJpcGUtbGlnaHQ6bnRoLWNoaWxkKG9kZCl7YmFja2dyb3VuZC1jb2xvcjpoc2xhKDAsMCUsMTAwJSwuMSl9LnN0cmlwZS1kYXJrOm50aC1jaGlsZChvZGQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMSl9LnN0cmlrZXt0ZXh0LWRlY29yYXRpb246bGluZS10aHJvdWdofS51bmRlcmxpbmV7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX0ubm8tdW5kZXJsaW5le3RleHQtZGVjb3JhdGlvbjpub25lfS50bHt0ZXh0LWFsaWduOmxlZnR9LnRye3RleHQtYWxpZ246cmlnaHR9LnRje3RleHQtYWxpZ246Y2VudGVyfS50ant0ZXh0LWFsaWduOmp1c3RpZnl9LnR0Y3t0ZXh0LXRyYW5zZm9ybTpjYXBpdGFsaXplfS50dGx7dGV4dC10cmFuc2Zvcm06bG93ZXJjYXNlfS50dHV7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfS50dG57dGV4dC10cmFuc2Zvcm06bm9uZX0uZi02LC5mLWhlYWRsaW5le2ZvbnQtc2l6ZTo2cmVtfS5mLTUsLmYtc3ViaGVhZGxpbmV7Zm9udC1zaXplOjVyZW19LmYxe2ZvbnQtc2l6ZTozcmVtfS5mMntmb250LXNpemU6Mi4yNXJlbX0uZjN7Zm9udC1zaXplOjEuNXJlbX0uZjR7Zm9udC1zaXplOjEuMjVyZW19LmY1e2ZvbnQtc2l6ZToxcmVtfS5mNntmb250LXNpemU6Ljg3NXJlbX0uZjd7Zm9udC1zaXplOi43NXJlbX0ubWVhc3VyZXttYXgtd2lkdGg6MzBlbX0ubWVhc3VyZS13aWRle21heC13aWR0aDozNGVtfS5tZWFzdXJlLW5hcnJvd3ttYXgtd2lkdGg6MjBlbX0uaW5kZW50e3RleHQtaW5kZW50OjFlbTttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTowfS5zbWFsbC1jYXBze2ZvbnQtdmFyaWFudDpzbWFsbC1jYXBzfS50cnVuY2F0ZXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9Lm92ZXJmbG93LWNvbnRhaW5lcntvdmVyZmxvdy15OnNjcm9sbH0uY2VudGVye21hcmdpbi1sZWZ0OmF1dG99LmNlbnRlciwubXItYXV0b3ttYXJnaW4tcmlnaHQ6YXV0b30ubWwtYXV0b3ttYXJnaW4tbGVmdDphdXRvfS5jbGlwe3Bvc2l0aW9uOmZpeGVkIWltcG9ydGFudDtfcG9zaXRpb246YWJzb2x1dGUhaW1wb3J0YW50O2NsaXA6cmVjdCgxcHggMXB4IDFweCAxcHgpO2NsaXA6cmVjdCgxcHgsMXB4LDFweCwxcHgpfS53cy1ub3JtYWx7d2hpdGUtc3BhY2U6bm9ybWFsfS5ub3dyYXB7d2hpdGUtc3BhY2U6bm93cmFwfS5wcmV7d2hpdGUtc3BhY2U6cHJlfS52LWJhc2V7dmVydGljYWwtYWxpZ246YmFzZWxpbmV9LnYtbWlke3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0udi10b3B7dmVydGljYWwtYWxpZ246dG9wfS52LWJ0bXt2ZXJ0aWNhbC1hbGlnbjpib3R0b219LmRpbXtvcGFjaXR5OjF9LmRpbSwuZGltOmZvY3VzLC5kaW06aG92ZXJ7dHJhbnNpdGlvbjpvcGFjaXR5IC4xNXMgZWFzZS1pbn0uZGltOmZvY3VzLC5kaW06aG92ZXJ7b3BhY2l0eTouNX0uZGltOmFjdGl2ZXtvcGFjaXR5Oi44O3RyYW5zaXRpb246b3BhY2l0eSAuMTVzIGVhc2Utb3V0fS5nbG93LC5nbG93OmZvY3VzLC5nbG93OmhvdmVye3RyYW5zaXRpb246b3BhY2l0eSAuMTVzIGVhc2UtaW59Lmdsb3c6Zm9jdXMsLmdsb3c6aG92ZXJ7b3BhY2l0eToxfS5oaWRlLWNoaWxkIC5jaGlsZHtvcGFjaXR5OjA7dHJhbnNpdGlvbjpvcGFjaXR5IC4xNXMgZWFzZS1pbn0uaGlkZS1jaGlsZDphY3RpdmUgLmNoaWxkLC5oaWRlLWNoaWxkOmZvY3VzIC5jaGlsZCwuaGlkZS1jaGlsZDpob3ZlciAuY2hpbGR7b3BhY2l0eToxO3RyYW5zaXRpb246b3BhY2l0eSAuMTVzIGVhc2UtaW59LnVuZGVybGluZS1ob3Zlcjpmb2N1cywudW5kZXJsaW5lLWhvdmVyOmhvdmVye3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9Lmdyb3d7LW1vei1vc3gtZm9udC1zbW9vdGhpbmc6Z3JheXNjYWxlOy13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTpoaWRkZW47YmFja2ZhY2UtdmlzaWJpbGl0eTpoaWRkZW47LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWigwKTt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKTt0cmFuc2l0aW9uOi13ZWJraXQtdHJhbnNmb3JtIC4yNXMgZWFzZS1vdXQ7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjI1cyBlYXNlLW91dDt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMjVzIGVhc2Utb3V0LC13ZWJraXQtdHJhbnNmb3JtIC4yNXMgZWFzZS1vdXR9Lmdyb3c6Zm9jdXMsLmdyb3c6aG92ZXJ7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMS4wNSk7dHJhbnNmb3JtOnNjYWxlKDEuMDUpfS5ncm93OmFjdGl2ZXstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSguOSk7dHJhbnNmb3JtOnNjYWxlKC45KX0uZ3Jvdy1sYXJnZXstbW96LW9zeC1mb250LXNtb290aGluZzpncmF5c2NhbGU7LXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OmhpZGRlbjtiYWNrZmFjZS12aXNpYmlsaXR5OmhpZGRlbjstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVaKDApO3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApO3RyYW5zaXRpb246LXdlYmtpdC10cmFuc2Zvcm0gLjI1cyBlYXNlLWluLW91dDt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMjVzIGVhc2UtaW4tb3V0O3RyYW5zaXRpb246dHJhbnNmb3JtIC4yNXMgZWFzZS1pbi1vdXQsLXdlYmtpdC10cmFuc2Zvcm0gLjI1cyBlYXNlLWluLW91dH0uZ3Jvdy1sYXJnZTpmb2N1cywuZ3Jvdy1sYXJnZTpob3Zlcnstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxLjIpO3RyYW5zZm9ybTpzY2FsZSgxLjIpfS5ncm93LWxhcmdlOmFjdGl2ZXstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSguOTUpO3RyYW5zZm9ybTpzY2FsZSguOTUpfS5wb2ludGVyOmhvdmVyLC5zaGFkb3ctaG92ZXJ7Y3Vyc29yOnBvaW50ZXJ9LnNoYWRvdy1ob3Zlcntwb3NpdGlvbjpyZWxhdGl2ZTt0cmFuc2l0aW9uOmFsbCAuNXMgY3ViaWMtYmV6aWVyKC4xNjUsLjg0LC40NCwxKX0uc2hhZG93LWhvdmVyOmFmdGVye2NvbnRlbnQ6XCJcIjtib3gtc2hhZG93OjAgMCAxNnB4IDJweCByZ2JhKDAsMCwwLC4yKTtib3JkZXItcmFkaXVzOmluaGVyaXQ7b3BhY2l0eTowO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO3otaW5kZXg6LTE7dHJhbnNpdGlvbjpvcGFjaXR5IC41cyBjdWJpYy1iZXppZXIoLjE2NSwuODQsLjQ0LDEpfS5zaGFkb3ctaG92ZXI6Zm9jdXM6YWZ0ZXIsLnNoYWRvdy1ob3Zlcjpob3ZlcjphZnRlcntvcGFjaXR5OjF9LmJnLWFuaW1hdGUsLmJnLWFuaW1hdGU6Zm9jdXMsLmJnLWFuaW1hdGU6aG92ZXJ7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXR9LnotMHt6LWluZGV4OjB9LnotMXt6LWluZGV4OjF9LnotMnt6LWluZGV4OjJ9LnotM3t6LWluZGV4OjN9LnotNHt6LWluZGV4OjR9LnotNXt6LWluZGV4OjV9LnotOTk5e3otaW5kZXg6OTk5fS56LTk5OTl7ei1pbmRleDo5OTk5fS56LW1heHt6LWluZGV4OjIxNDc0ODM2NDd9LnotaW5oZXJpdHt6LWluZGV4OmluaGVyaXR9LnotaW5pdGlhbHt6LWluZGV4OmF1dG99LnotdW5zZXR7ei1pbmRleDp1bnNldH0ubmVzdGVkLWNvcHktbGluZS1oZWlnaHQgb2wsLm5lc3RlZC1jb3B5LWxpbmUtaGVpZ2h0IHAsLm5lc3RlZC1jb3B5LWxpbmUtaGVpZ2h0IHVse2xpbmUtaGVpZ2h0OjEuNX0ubmVzdGVkLWhlYWRsaW5lLWxpbmUtaGVpZ2h0IGgxLC5uZXN0ZWQtaGVhZGxpbmUtbGluZS1oZWlnaHQgaDIsLm5lc3RlZC1oZWFkbGluZS1saW5lLWhlaWdodCBoMywubmVzdGVkLWhlYWRsaW5lLWxpbmUtaGVpZ2h0IGg0LC5uZXN0ZWQtaGVhZGxpbmUtbGluZS1oZWlnaHQgaDUsLm5lc3RlZC1oZWFkbGluZS1saW5lLWhlaWdodCBoNntsaW5lLWhlaWdodDoxLjI1fS5uZXN0ZWQtbGlzdC1yZXNldCBvbCwubmVzdGVkLWxpc3QtcmVzZXQgdWx7cGFkZGluZy1sZWZ0OjA7bWFyZ2luLWxlZnQ6MDtsaXN0LXN0eWxlLXR5cGU6bm9uZX0ubmVzdGVkLWNvcHktaW5kZW50IHArcHt0ZXh0LWluZGVudDoxZW07bWFyZ2luLXRvcDowO21hcmdpbi1ib3R0b206MH0ubmVzdGVkLWNvcHktc2VwYXJhdG9yIHArcHttYXJnaW4tdG9wOjEuNWVtfS5uZXN0ZWQtaW1nIGltZ3t3aWR0aDoxMDAlO21heC13aWR0aDoxMDAlO2Rpc3BsYXk6YmxvY2t9Lm5lc3RlZC1saW5rcyBhe2NvbG9yOiMzNTdlZGQ7dHJhbnNpdGlvbjpjb2xvciAuMTVzIGVhc2UtaW59Lm5lc3RlZC1saW5rcyBhOmZvY3VzLC5uZXN0ZWQtbGlua3MgYTpob3Zlcntjb2xvcjojOTZjY2ZmO3RyYW5zaXRpb246Y29sb3IgLjE1cyBlYXNlLWlufS5kZWJ1ZyAqe291dGxpbmU6MXB4IHNvbGlkIGdvbGR9LmRlYnVnLXdoaXRlICp7b3V0bGluZToxcHggc29saWQgI2ZmZn0uZGVidWctYmxhY2sgKntvdXRsaW5lOjFweCBzb2xpZCAjMDAwfS5kZWJ1Zy1ncmlke2JhY2tncm91bmQ6dHJhbnNwYXJlbnQgdXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQWdBQUFBSUNBWUFBQURFRDc2TEFBQUFGRWxFUVZSNEFXUEFDOTcvOXgwZUNzQUVQZ3dBVkxzaGRwRU5JeGNBQUFBQVNVVk9SSzVDWUlJPSkgcmVwZWF0IDAgMH0uZGVidWctZ3JpZC0xNntiYWNrZ3JvdW5kOnRyYW5zcGFyZW50IHVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQVlBQUFBZjgvOWhBQUFBTWtsRVFWUjRBV09nQ0x6L2IwZXBBYTZVR3VCT3FRSE9RSExVZ0ZFRG5BYmNCWjRVR3dET2tpQ25rSWhkZ05nTnhBWUFpWWxEKzhzRXVvOEFBQUFBU1VWT1JLNUNZSUk9KSByZXBlYXQgMCAwfS5kZWJ1Zy1ncmlkLTgtc29saWR7YmFja2dyb3VuZDojZmZmIHVybChkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EZGhDQUFJQVBFQUFBRHcvd0R4Ly8vLy93QUFBQ3dBQUFBQUNBQUlBQUFDRFpRdmdhZWIvbHhiQUlLQTh5MEFPdz09KSByZXBlYXQgMCAwfS5kZWJ1Zy1ncmlkLTE2LXNvbGlke2JhY2tncm91bmQ6I2ZmZiB1cmwoZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGRoRUFBUUFQRUFBQUR3L3dEeC94WHkvLy8vL3l3QUFBQUFFQUFRQUFBQ0laeVBLY2tZRFFGc2I2WnFEODVqWjIrQmt3aVJGS2VoaHFRQ1FnREhjZ3dFQlFBNykgcmVwZWF0IDAgMH1AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOjMwZW0pey5hc3BlY3QtcmF0aW8tbnN7aGVpZ2h0OjA7cG9zaXRpb246cmVsYXRpdmV9LmFzcGVjdC1yYXRpby0tMTZ4OS1uc3twYWRkaW5nLWJvdHRvbTo1Ni4yNSV9LmFzcGVjdC1yYXRpby0tOXgxNi1uc3twYWRkaW5nLWJvdHRvbToxNzcuNzclfS5hc3BlY3QtcmF0aW8tLTR4My1uc3twYWRkaW5nLWJvdHRvbTo3NSV9LmFzcGVjdC1yYXRpby0tM3g0LW5ze3BhZGRpbmctYm90dG9tOjEzMy4zMyV9LmFzcGVjdC1yYXRpby0tNng0LW5ze3BhZGRpbmctYm90dG9tOjY2LjYlfS5hc3BlY3QtcmF0aW8tLTR4Ni1uc3twYWRkaW5nLWJvdHRvbToxNTAlfS5hc3BlY3QtcmF0aW8tLTh4NS1uc3twYWRkaW5nLWJvdHRvbTo2Mi41JX0uYXNwZWN0LXJhdGlvLS01eDgtbnN7cGFkZGluZy1ib3R0b206MTYwJX0uYXNwZWN0LXJhdGlvLS03eDUtbnN7cGFkZGluZy1ib3R0b206NzEuNDIlfS5hc3BlY3QtcmF0aW8tLTV4Ny1uc3twYWRkaW5nLWJvdHRvbToxNDAlfS5hc3BlY3QtcmF0aW8tLTF4MS1uc3twYWRkaW5nLWJvdHRvbToxMDAlfS5hc3BlY3QtcmF0aW8tLW9iamVjdC1uc3twb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtyaWdodDowO2JvdHRvbTowO2xlZnQ6MDt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO3otaW5kZXg6MTAwfS5jb3Zlci1uc3tiYWNrZ3JvdW5kLXNpemU6Y292ZXIhaW1wb3J0YW50fS5jb250YWluLW5ze2JhY2tncm91bmQtc2l6ZTpjb250YWluIWltcG9ydGFudH0uYmctY2VudGVyLW5ze2JhY2tncm91bmQtcG9zaXRpb246NTAlfS5iZy1jZW50ZXItbnMsLmJnLXRvcC1uc3tiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXR9LmJnLXRvcC1uc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOnRvcH0uYmctcmlnaHQtbnN7YmFja2dyb3VuZC1wb3NpdGlvbjoxMDAlfS5iZy1ib3R0b20tbnMsLmJnLXJpZ2h0LW5ze2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdH0uYmctYm90dG9tLW5ze2JhY2tncm91bmQtcG9zaXRpb246Ym90dG9tfS5iZy1sZWZ0LW5ze2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtiYWNrZ3JvdW5kLXBvc2l0aW9uOjB9Lm91dGxpbmUtbnN7b3V0bGluZToxcHggc29saWR9Lm91dGxpbmUtdHJhbnNwYXJlbnQtbnN7b3V0bGluZToxcHggc29saWQgdHJhbnNwYXJlbnR9Lm91dGxpbmUtMC1uc3tvdXRsaW5lOjB9LmJhLW5ze2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItd2lkdGg6MXB4fS5idC1uc3tib3JkZXItdG9wLXN0eWxlOnNvbGlkO2JvcmRlci10b3Atd2lkdGg6MXB4fS5ici1uc3tib3JkZXItcmlnaHQtc3R5bGU6c29saWQ7Ym9yZGVyLXJpZ2h0LXdpZHRoOjFweH0uYmItbnN7Ym9yZGVyLWJvdHRvbS1zdHlsZTpzb2xpZDtib3JkZXItYm90dG9tLXdpZHRoOjFweH0uYmwtbnN7Ym9yZGVyLWxlZnQtc3R5bGU6c29saWQ7Ym9yZGVyLWxlZnQtd2lkdGg6MXB4fS5ibi1uc3tib3JkZXItc3R5bGU6bm9uZTtib3JkZXItd2lkdGg6MH0uYnIwLW5ze2JvcmRlci1yYWRpdXM6MH0uYnIxLW5ze2JvcmRlci1yYWRpdXM6LjEyNXJlbX0uYnIyLW5ze2JvcmRlci1yYWRpdXM6LjI1cmVtfS5icjMtbnN7Ym9yZGVyLXJhZGl1czouNXJlbX0uYnI0LW5ze2JvcmRlci1yYWRpdXM6MXJlbX0uYnItMTAwLW5ze2JvcmRlci1yYWRpdXM6MTAwJX0uYnItcGlsbC1uc3tib3JkZXItcmFkaXVzOjk5OTlweH0uYnItLWJvdHRvbS1uc3tib3JkZXItdG9wLWxlZnQtcmFkaXVzOjA7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MH0uYnItLXRvcC1uc3tib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowfS5ici0tcmlnaHQtbnMsLmJyLS10b3AtbnN7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowfS5ici0tcmlnaHQtbnN7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowfS5ici0tbGVmdC1uc3tib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjB9LmItLWRvdHRlZC1uc3tib3JkZXItc3R5bGU6ZG90dGVkfS5iLS1kYXNoZWQtbnN7Ym9yZGVyLXN0eWxlOmRhc2hlZH0uYi0tc29saWQtbnN7Ym9yZGVyLXN0eWxlOnNvbGlkfS5iLS1ub25lLW5ze2JvcmRlci1zdHlsZTpub25lfS5idzAtbnN7Ym9yZGVyLXdpZHRoOjB9LmJ3MS1uc3tib3JkZXItd2lkdGg6LjEyNXJlbX0uYncyLW5ze2JvcmRlci13aWR0aDouMjVyZW19LmJ3My1uc3tib3JkZXItd2lkdGg6LjVyZW19LmJ3NC1uc3tib3JkZXItd2lkdGg6MXJlbX0uYnc1LW5ze2JvcmRlci13aWR0aDoycmVtfS5idC0wLW5ze2JvcmRlci10b3Atd2lkdGg6MH0uYnItMC1uc3tib3JkZXItcmlnaHQtd2lkdGg6MH0uYmItMC1uc3tib3JkZXItYm90dG9tLXdpZHRoOjB9LmJsLTAtbnN7Ym9yZGVyLWxlZnQtd2lkdGg6MH0uc2hhZG93LTEtbnN7Ym94LXNoYWRvdzowIDAgNHB4IDJweCByZ2JhKDAsMCwwLC4yKX0uc2hhZG93LTItbnN7Ym94LXNoYWRvdzowIDAgOHB4IDJweCByZ2JhKDAsMCwwLC4yKX0uc2hhZG93LTMtbnN7Ym94LXNoYWRvdzoycHggMnB4IDRweCAycHggcmdiYSgwLDAsMCwuMil9LnNoYWRvdy00LW5ze2JveC1zaGFkb3c6MnB4IDJweCA4cHggMCByZ2JhKDAsMCwwLC4yKX0uc2hhZG93LTUtbnN7Ym94LXNoYWRvdzo0cHggNHB4IDhweCAwIHJnYmEoMCwwLDAsLjIpfS50b3AtMC1uc3t0b3A6MH0ubGVmdC0wLW5ze2xlZnQ6MH0ucmlnaHQtMC1uc3tyaWdodDowfS5ib3R0b20tMC1uc3tib3R0b206MH0udG9wLTEtbnN7dG9wOjFyZW19LmxlZnQtMS1uc3tsZWZ0OjFyZW19LnJpZ2h0LTEtbnN7cmlnaHQ6MXJlbX0uYm90dG9tLTEtbnN7Ym90dG9tOjFyZW19LnRvcC0yLW5ze3RvcDoycmVtfS5sZWZ0LTItbnN7bGVmdDoycmVtfS5yaWdodC0yLW5ze3JpZ2h0OjJyZW19LmJvdHRvbS0yLW5ze2JvdHRvbToycmVtfS50b3AtLTEtbnN7dG9wOi0xcmVtfS5yaWdodC0tMS1uc3tyaWdodDotMXJlbX0uYm90dG9tLS0xLW5ze2JvdHRvbTotMXJlbX0ubGVmdC0tMS1uc3tsZWZ0Oi0xcmVtfS50b3AtLTItbnN7dG9wOi0ycmVtfS5yaWdodC0tMi1uc3tyaWdodDotMnJlbX0uYm90dG9tLS0yLW5ze2JvdHRvbTotMnJlbX0ubGVmdC0tMi1uc3tsZWZ0Oi0ycmVtfS5hYnNvbHV0ZS0tZmlsbC1uc3t0b3A6MDtyaWdodDowO2JvdHRvbTowO2xlZnQ6MH0uY2wtbnN7Y2xlYXI6bGVmdH0uY3ItbnN7Y2xlYXI6cmlnaHR9LmNiLW5ze2NsZWFyOmJvdGh9LmNuLW5ze2NsZWFyOm5vbmV9LmRuLW5ze2Rpc3BsYXk6bm9uZX0uZGktbnN7ZGlzcGxheTppbmxpbmV9LmRiLW5ze2Rpc3BsYXk6YmxvY2t9LmRpYi1uc3tkaXNwbGF5OmlubGluZS1ibG9ja30uZGl0LW5ze2Rpc3BsYXk6aW5saW5lLXRhYmxlfS5kdC1uc3tkaXNwbGF5OnRhYmxlfS5kdGMtbnN7ZGlzcGxheTp0YWJsZS1jZWxsfS5kdC1yb3ctbnN7ZGlzcGxheTp0YWJsZS1yb3d9LmR0LXJvdy1ncm91cC1uc3tkaXNwbGF5OnRhYmxlLXJvdy1ncm91cH0uZHQtY29sdW1uLW5ze2Rpc3BsYXk6dGFibGUtY29sdW1ufS5kdC1jb2x1bW4tZ3JvdXAtbnN7ZGlzcGxheTp0YWJsZS1jb2x1bW4tZ3JvdXB9LmR0LS1maXhlZC1uc3t0YWJsZS1sYXlvdXQ6Zml4ZWQ7d2lkdGg6MTAwJX0uZmxleC1uc3tkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4fS5pbmxpbmUtZmxleC1uc3tkaXNwbGF5Oi13ZWJraXQtaW5saW5lLWJveDtkaXNwbGF5Oi1tcy1pbmxpbmUtZmxleGJveDtkaXNwbGF5OmlubGluZS1mbGV4fS5mbGV4LWF1dG8tbnN7LXdlYmtpdC1ib3gtZmxleDoxOy1tcy1mbGV4OjEgMSBhdXRvO2ZsZXg6MSAxIGF1dG87bWluLXdpZHRoOjA7bWluLWhlaWdodDowfS5mbGV4LW5vbmUtbnN7LXdlYmtpdC1ib3gtZmxleDowOy1tcy1mbGV4Om5vbmU7ZmxleDpub25lfS5mbGV4LWNvbHVtbi1uc3std2Via2l0LWJveC1vcmllbnQ6dmVydGljYWw7LXdlYmtpdC1ib3gtZGlyZWN0aW9uOm5vcm1hbDstbXMtZmxleC1kaXJlY3Rpb246Y29sdW1uO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0uZmxleC1yb3ctbnN7LXdlYmtpdC1ib3gtb3JpZW50Omhvcml6b250YWw7LXdlYmtpdC1ib3gtZGlyZWN0aW9uOm5vcm1hbDstbXMtZmxleC1kaXJlY3Rpb246cm93O2ZsZXgtZGlyZWN0aW9uOnJvd30uZmxleC13cmFwLW5zey1tcy1mbGV4LXdyYXA6d3JhcDtmbGV4LXdyYXA6d3JhcH0uZmxleC1ub3dyYXAtbnN7LW1zLWZsZXgtd3JhcDpub3dyYXA7ZmxleC13cmFwOm5vd3JhcH0uZmxleC13cmFwLXJldmVyc2UtbnN7LW1zLWZsZXgtd3JhcDp3cmFwLXJldmVyc2U7ZmxleC13cmFwOndyYXAtcmV2ZXJzZX0uZmxleC1jb2x1bW4tcmV2ZXJzZS1uc3std2Via2l0LWJveC1vcmllbnQ6dmVydGljYWw7LXdlYmtpdC1ib3gtZGlyZWN0aW9uOnJldmVyc2U7LW1zLWZsZXgtZGlyZWN0aW9uOmNvbHVtbi1yZXZlcnNlO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbi1yZXZlcnNlfS5mbGV4LXJvdy1yZXZlcnNlLW5zey13ZWJraXQtYm94LW9yaWVudDpob3Jpem9udGFsOy13ZWJraXQtYm94LWRpcmVjdGlvbjpyZXZlcnNlOy1tcy1mbGV4LWRpcmVjdGlvbjpyb3ctcmV2ZXJzZTtmbGV4LWRpcmVjdGlvbjpyb3ctcmV2ZXJzZX0uaXRlbXMtc3RhcnQtbnN7LXdlYmtpdC1ib3gtYWxpZ246c3RhcnQ7LW1zLWZsZXgtYWxpZ246c3RhcnQ7YWxpZ24taXRlbXM6ZmxleC1zdGFydH0uaXRlbXMtZW5kLW5zey13ZWJraXQtYm94LWFsaWduOmVuZDstbXMtZmxleC1hbGlnbjplbmQ7YWxpZ24taXRlbXM6ZmxleC1lbmR9Lml0ZW1zLWNlbnRlci1uc3std2Via2l0LWJveC1hbGlnbjpjZW50ZXI7LW1zLWZsZXgtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcn0uaXRlbXMtYmFzZWxpbmUtbnN7LXdlYmtpdC1ib3gtYWxpZ246YmFzZWxpbmU7LW1zLWZsZXgtYWxpZ246YmFzZWxpbmU7YWxpZ24taXRlbXM6YmFzZWxpbmV9Lml0ZW1zLXN0cmV0Y2gtbnN7LXdlYmtpdC1ib3gtYWxpZ246c3RyZXRjaDstbXMtZmxleC1hbGlnbjpzdHJldGNoO2FsaWduLWl0ZW1zOnN0cmV0Y2h9LnNlbGYtc3RhcnQtbnN7LW1zLWZsZXgtaXRlbS1hbGlnbjpzdGFydDthbGlnbi1zZWxmOmZsZXgtc3RhcnR9LnNlbGYtZW5kLW5zey1tcy1mbGV4LWl0ZW0tYWxpZ246ZW5kO2FsaWduLXNlbGY6ZmxleC1lbmR9LnNlbGYtY2VudGVyLW5zey1tcy1mbGV4LWl0ZW0tYWxpZ246Y2VudGVyOy1tcy1ncmlkLXJvdy1hbGlnbjpjZW50ZXI7YWxpZ24tc2VsZjpjZW50ZXJ9LnNlbGYtYmFzZWxpbmUtbnN7LW1zLWZsZXgtaXRlbS1hbGlnbjpiYXNlbGluZTthbGlnbi1zZWxmOmJhc2VsaW5lfS5zZWxmLXN0cmV0Y2gtbnN7LW1zLWZsZXgtaXRlbS1hbGlnbjpzdHJldGNoOy1tcy1ncmlkLXJvdy1hbGlnbjpzdHJldGNoO2FsaWduLXNlbGY6c3RyZXRjaH0uanVzdGlmeS1zdGFydC1uc3std2Via2l0LWJveC1wYWNrOnN0YXJ0Oy1tcy1mbGV4LXBhY2s6c3RhcnQ7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9Lmp1c3RpZnktZW5kLW5zey13ZWJraXQtYm94LXBhY2s6ZW5kOy1tcy1mbGV4LXBhY2s6ZW5kO2p1c3RpZnktY29udGVudDpmbGV4LWVuZH0uanVzdGlmeS1jZW50ZXItbnN7LXdlYmtpdC1ib3gtcGFjazpjZW50ZXI7LW1zLWZsZXgtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcn0uanVzdGlmeS1iZXR3ZWVuLW5zey13ZWJraXQtYm94LXBhY2s6anVzdGlmeTstbXMtZmxleC1wYWNrOmp1c3RpZnk7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW59Lmp1c3RpZnktYXJvdW5kLW5zey1tcy1mbGV4LXBhY2s6ZGlzdHJpYnV0ZTtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYXJvdW5kfS5jb250ZW50LXN0YXJ0LW5zey1tcy1mbGV4LWxpbmUtcGFjazpzdGFydDthbGlnbi1jb250ZW50OmZsZXgtc3RhcnR9LmNvbnRlbnQtZW5kLW5zey1tcy1mbGV4LWxpbmUtcGFjazplbmQ7YWxpZ24tY29udGVudDpmbGV4LWVuZH0uY29udGVudC1jZW50ZXItbnN7LW1zLWZsZXgtbGluZS1wYWNrOmNlbnRlcjthbGlnbi1jb250ZW50OmNlbnRlcn0uY29udGVudC1iZXR3ZWVuLW5zey1tcy1mbGV4LWxpbmUtcGFjazpqdXN0aWZ5O2FsaWduLWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbn0uY29udGVudC1hcm91bmQtbnN7LW1zLWZsZXgtbGluZS1wYWNrOmRpc3RyaWJ1dGU7YWxpZ24tY29udGVudDpzcGFjZS1hcm91bmR9LmNvbnRlbnQtc3RyZXRjaC1uc3stbXMtZmxleC1saW5lLXBhY2s6c3RyZXRjaDthbGlnbi1jb250ZW50OnN0cmV0Y2h9Lm9yZGVyLTAtbnN7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDoxOy1tcy1mbGV4LW9yZGVyOjA7b3JkZXI6MH0ub3JkZXItMS1uc3std2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjI7LW1zLWZsZXgtb3JkZXI6MTtvcmRlcjoxfS5vcmRlci0yLW5zey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6MzstbXMtZmxleC1vcmRlcjoyO29yZGVyOjJ9Lm9yZGVyLTMtbnN7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDo0Oy1tcy1mbGV4LW9yZGVyOjM7b3JkZXI6M30ub3JkZXItNC1uc3std2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjU7LW1zLWZsZXgtb3JkZXI6NDtvcmRlcjo0fS5vcmRlci01LW5zey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6NjstbXMtZmxleC1vcmRlcjo1O29yZGVyOjV9Lm9yZGVyLTYtbnN7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDo3Oy1tcy1mbGV4LW9yZGVyOjY7b3JkZXI6Nn0ub3JkZXItNy1uc3std2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjg7LW1zLWZsZXgtb3JkZXI6NztvcmRlcjo3fS5vcmRlci04LW5zey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6OTstbXMtZmxleC1vcmRlcjo4O29yZGVyOjh9Lm9yZGVyLWxhc3QtbnN7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDoxMDAwMDA7LW1zLWZsZXgtb3JkZXI6OTk5OTk7b3JkZXI6OTk5OTl9LmZsZXgtZ3Jvdy0wLW5zey13ZWJraXQtYm94LWZsZXg6MDstbXMtZmxleC1wb3NpdGl2ZTowO2ZsZXgtZ3JvdzowfS5mbGV4LWdyb3ctMS1uc3std2Via2l0LWJveC1mbGV4OjE7LW1zLWZsZXgtcG9zaXRpdmU6MTtmbGV4LWdyb3c6MX0uZmxleC1zaHJpbmstMC1uc3stbXMtZmxleC1uZWdhdGl2ZTowO2ZsZXgtc2hyaW5rOjB9LmZsZXgtc2hyaW5rLTEtbnN7LW1zLWZsZXgtbmVnYXRpdmU6MTtmbGV4LXNocmluazoxfS5mbC1uc3tmbG9hdDpsZWZ0fS5mbC1ucywuZnItbnN7ZGlzcGxheTppbmxpbmV9LmZyLW5ze2Zsb2F0OnJpZ2h0fS5mbi1uc3tmbG9hdDpub25lfS5pLW5ze2ZvbnQtc3R5bGU6aXRhbGljfS5mcy1ub3JtYWwtbnN7Zm9udC1zdHlsZTpub3JtYWx9Lm5vcm1hbC1uc3tmb250LXdlaWdodDo0MDB9LmItbnN7Zm9udC13ZWlnaHQ6NzAwfS5mdzEtbnN7Zm9udC13ZWlnaHQ6MTAwfS5mdzItbnN7Zm9udC13ZWlnaHQ6MjAwfS5mdzMtbnN7Zm9udC13ZWlnaHQ6MzAwfS5mdzQtbnN7Zm9udC13ZWlnaHQ6NDAwfS5mdzUtbnN7Zm9udC13ZWlnaHQ6NTAwfS5mdzYtbnN7Zm9udC13ZWlnaHQ6NjAwfS5mdzctbnN7Zm9udC13ZWlnaHQ6NzAwfS5mdzgtbnN7Zm9udC13ZWlnaHQ6ODAwfS5mdzktbnN7Zm9udC13ZWlnaHQ6OTAwfS5oMS1uc3toZWlnaHQ6MXJlbX0uaDItbnN7aGVpZ2h0OjJyZW19LmgzLW5ze2hlaWdodDo0cmVtfS5oNC1uc3toZWlnaHQ6OHJlbX0uaDUtbnN7aGVpZ2h0OjE2cmVtfS5oLTI1LW5ze2hlaWdodDoyNSV9LmgtNTAtbnN7aGVpZ2h0OjUwJX0uaC03NS1uc3toZWlnaHQ6NzUlfS5oLTEwMC1uc3toZWlnaHQ6MTAwJX0ubWluLWgtMTAwLW5ze21pbi1oZWlnaHQ6MTAwJX0udmgtMjUtbnN7aGVpZ2h0OjI1dmh9LnZoLTUwLW5ze2hlaWdodDo1MHZofS52aC03NS1uc3toZWlnaHQ6NzV2aH0udmgtMTAwLW5ze2hlaWdodDoxMDB2aH0ubWluLXZoLTEwMC1uc3ttaW4taGVpZ2h0OjEwMHZofS5oLWF1dG8tbnN7aGVpZ2h0OmF1dG99LmgtaW5oZXJpdC1uc3toZWlnaHQ6aW5oZXJpdH0udHJhY2tlZC1uc3tsZXR0ZXItc3BhY2luZzouMWVtfS50cmFja2VkLXRpZ2h0LW5ze2xldHRlci1zcGFjaW5nOi0uMDVlbX0udHJhY2tlZC1tZWdhLW5ze2xldHRlci1zcGFjaW5nOi4yNWVtfS5saC1zb2xpZC1uc3tsaW5lLWhlaWdodDoxfS5saC10aXRsZS1uc3tsaW5lLWhlaWdodDoxLjI1fS5saC1jb3B5LW5ze2xpbmUtaGVpZ2h0OjEuNX0ubXctMTAwLW5ze21heC13aWR0aDoxMDAlfS5tdzEtbnN7bWF4LXdpZHRoOjFyZW19Lm13Mi1uc3ttYXgtd2lkdGg6MnJlbX0ubXczLW5ze21heC13aWR0aDo0cmVtfS5tdzQtbnN7bWF4LXdpZHRoOjhyZW19Lm13NS1uc3ttYXgtd2lkdGg6MTZyZW19Lm13Ni1uc3ttYXgtd2lkdGg6MzJyZW19Lm13Ny1uc3ttYXgtd2lkdGg6NDhyZW19Lm13OC1uc3ttYXgtd2lkdGg6NjRyZW19Lm13OS1uc3ttYXgtd2lkdGg6OTZyZW19Lm13LW5vbmUtbnN7bWF4LXdpZHRoOm5vbmV9LncxLW5ze3dpZHRoOjFyZW19LncyLW5ze3dpZHRoOjJyZW19LnczLW5ze3dpZHRoOjRyZW19Lnc0LW5ze3dpZHRoOjhyZW19Lnc1LW5ze3dpZHRoOjE2cmVtfS53LTEwLW5ze3dpZHRoOjEwJX0udy0yMC1uc3t3aWR0aDoyMCV9LnctMjUtbnN7d2lkdGg6MjUlfS53LTMwLW5ze3dpZHRoOjMwJX0udy0zMy1uc3t3aWR0aDozMyV9LnctMzQtbnN7d2lkdGg6MzQlfS53LTQwLW5ze3dpZHRoOjQwJX0udy01MC1uc3t3aWR0aDo1MCV9LnctNjAtbnN7d2lkdGg6NjAlfS53LTcwLW5ze3dpZHRoOjcwJX0udy03NS1uc3t3aWR0aDo3NSV9LnctODAtbnN7d2lkdGg6ODAlfS53LTkwLW5ze3dpZHRoOjkwJX0udy0xMDAtbnN7d2lkdGg6MTAwJX0udy10aGlyZC1uc3t3aWR0aDozMy4zMzMzMyV9LnctdHdvLXRoaXJkcy1uc3t3aWR0aDo2Ni42NjY2NyV9LnctYXV0by1uc3t3aWR0aDphdXRvfS5vdmVyZmxvdy12aXNpYmxlLW5ze292ZXJmbG93OnZpc2libGV9Lm92ZXJmbG93LWhpZGRlbi1uc3tvdmVyZmxvdzpoaWRkZW59Lm92ZXJmbG93LXNjcm9sbC1uc3tvdmVyZmxvdzpzY3JvbGx9Lm92ZXJmbG93LWF1dG8tbnN7b3ZlcmZsb3c6YXV0b30ub3ZlcmZsb3cteC12aXNpYmxlLW5ze292ZXJmbG93LXg6dmlzaWJsZX0ub3ZlcmZsb3cteC1oaWRkZW4tbnN7b3ZlcmZsb3cteDpoaWRkZW59Lm92ZXJmbG93LXgtc2Nyb2xsLW5ze292ZXJmbG93LXg6c2Nyb2xsfS5vdmVyZmxvdy14LWF1dG8tbnN7b3ZlcmZsb3cteDphdXRvfS5vdmVyZmxvdy15LXZpc2libGUtbnN7b3ZlcmZsb3cteTp2aXNpYmxlfS5vdmVyZmxvdy15LWhpZGRlbi1uc3tvdmVyZmxvdy15OmhpZGRlbn0ub3ZlcmZsb3cteS1zY3JvbGwtbnN7b3ZlcmZsb3cteTpzY3JvbGx9Lm92ZXJmbG93LXktYXV0by1uc3tvdmVyZmxvdy15OmF1dG99LnN0YXRpYy1uc3twb3NpdGlvbjpzdGF0aWN9LnJlbGF0aXZlLW5ze3Bvc2l0aW9uOnJlbGF0aXZlfS5hYnNvbHV0ZS1uc3twb3NpdGlvbjphYnNvbHV0ZX0uZml4ZWQtbnN7cG9zaXRpb246Zml4ZWR9LnJvdGF0ZS00NS1uc3std2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoNDVkZWcpO3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpfS5yb3RhdGUtOTAtbnN7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDkwZGVnKTt0cmFuc2Zvcm06cm90YXRlKDkwZGVnKX0ucm90YXRlLTEzNS1uc3std2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMTM1ZGVnKTt0cmFuc2Zvcm06cm90YXRlKDEzNWRlZyl9LnJvdGF0ZS0xODAtbnN7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDE4MGRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgxODBkZWcpfS5yb3RhdGUtMjI1LW5zey13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgyMjVkZWcpO3RyYW5zZm9ybTpyb3RhdGUoMjI1ZGVnKX0ucm90YXRlLTI3MC1uc3std2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMjcwZGVnKTt0cmFuc2Zvcm06cm90YXRlKDI3MGRlZyl9LnJvdGF0ZS0zMTUtbnN7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDMxNWRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgzMTVkZWcpfS5wYTAtbnN7cGFkZGluZzowfS5wYTEtbnN7cGFkZGluZzouMjVyZW19LnBhMi1uc3twYWRkaW5nOi41cmVtfS5wYTMtbnN7cGFkZGluZzoxcmVtfS5wYTQtbnN7cGFkZGluZzoycmVtfS5wYTUtbnN7cGFkZGluZzo0cmVtfS5wYTYtbnN7cGFkZGluZzo4cmVtfS5wYTctbnN7cGFkZGluZzoxNnJlbX0ucGwwLW5ze3BhZGRpbmctbGVmdDowfS5wbDEtbnN7cGFkZGluZy1sZWZ0Oi4yNXJlbX0ucGwyLW5ze3BhZGRpbmctbGVmdDouNXJlbX0ucGwzLW5ze3BhZGRpbmctbGVmdDoxcmVtfS5wbDQtbnN7cGFkZGluZy1sZWZ0OjJyZW19LnBsNS1uc3twYWRkaW5nLWxlZnQ6NHJlbX0ucGw2LW5ze3BhZGRpbmctbGVmdDo4cmVtfS5wbDctbnN7cGFkZGluZy1sZWZ0OjE2cmVtfS5wcjAtbnN7cGFkZGluZy1yaWdodDowfS5wcjEtbnN7cGFkZGluZy1yaWdodDouMjVyZW19LnByMi1uc3twYWRkaW5nLXJpZ2h0Oi41cmVtfS5wcjMtbnN7cGFkZGluZy1yaWdodDoxcmVtfS5wcjQtbnN7cGFkZGluZy1yaWdodDoycmVtfS5wcjUtbnN7cGFkZGluZy1yaWdodDo0cmVtfS5wcjYtbnN7cGFkZGluZy1yaWdodDo4cmVtfS5wcjctbnN7cGFkZGluZy1yaWdodDoxNnJlbX0ucGIwLW5ze3BhZGRpbmctYm90dG9tOjB9LnBiMS1uc3twYWRkaW5nLWJvdHRvbTouMjVyZW19LnBiMi1uc3twYWRkaW5nLWJvdHRvbTouNXJlbX0ucGIzLW5ze3BhZGRpbmctYm90dG9tOjFyZW19LnBiNC1uc3twYWRkaW5nLWJvdHRvbToycmVtfS5wYjUtbnN7cGFkZGluZy1ib3R0b206NHJlbX0ucGI2LW5ze3BhZGRpbmctYm90dG9tOjhyZW19LnBiNy1uc3twYWRkaW5nLWJvdHRvbToxNnJlbX0ucHQwLW5ze3BhZGRpbmctdG9wOjB9LnB0MS1uc3twYWRkaW5nLXRvcDouMjVyZW19LnB0Mi1uc3twYWRkaW5nLXRvcDouNXJlbX0ucHQzLW5ze3BhZGRpbmctdG9wOjFyZW19LnB0NC1uc3twYWRkaW5nLXRvcDoycmVtfS5wdDUtbnN7cGFkZGluZy10b3A6NHJlbX0ucHQ2LW5ze3BhZGRpbmctdG9wOjhyZW19LnB0Ny1uc3twYWRkaW5nLXRvcDoxNnJlbX0ucHYwLW5ze3BhZGRpbmctdG9wOjA7cGFkZGluZy1ib3R0b206MH0ucHYxLW5ze3BhZGRpbmctdG9wOi4yNXJlbTtwYWRkaW5nLWJvdHRvbTouMjVyZW19LnB2Mi1uc3twYWRkaW5nLXRvcDouNXJlbTtwYWRkaW5nLWJvdHRvbTouNXJlbX0ucHYzLW5ze3BhZGRpbmctdG9wOjFyZW07cGFkZGluZy1ib3R0b206MXJlbX0ucHY0LW5ze3BhZGRpbmctdG9wOjJyZW07cGFkZGluZy1ib3R0b206MnJlbX0ucHY1LW5ze3BhZGRpbmctdG9wOjRyZW07cGFkZGluZy1ib3R0b206NHJlbX0ucHY2LW5ze3BhZGRpbmctdG9wOjhyZW07cGFkZGluZy1ib3R0b206OHJlbX0ucHY3LW5ze3BhZGRpbmctdG9wOjE2cmVtO3BhZGRpbmctYm90dG9tOjE2cmVtfS5waDAtbnN7cGFkZGluZy1sZWZ0OjA7cGFkZGluZy1yaWdodDowfS5waDEtbnN7cGFkZGluZy1sZWZ0Oi4yNXJlbTtwYWRkaW5nLXJpZ2h0Oi4yNXJlbX0ucGgyLW5ze3BhZGRpbmctbGVmdDouNXJlbTtwYWRkaW5nLXJpZ2h0Oi41cmVtfS5waDMtbnN7cGFkZGluZy1sZWZ0OjFyZW07cGFkZGluZy1yaWdodDoxcmVtfS5waDQtbnN7cGFkZGluZy1sZWZ0OjJyZW07cGFkZGluZy1yaWdodDoycmVtfS5waDUtbnN7cGFkZGluZy1sZWZ0OjRyZW07cGFkZGluZy1yaWdodDo0cmVtfS5waDYtbnN7cGFkZGluZy1sZWZ0OjhyZW07cGFkZGluZy1yaWdodDo4cmVtfS5waDctbnN7cGFkZGluZy1sZWZ0OjE2cmVtO3BhZGRpbmctcmlnaHQ6MTZyZW19Lm1hMC1uc3ttYXJnaW46MH0ubWExLW5ze21hcmdpbjouMjVyZW19Lm1hMi1uc3ttYXJnaW46LjVyZW19Lm1hMy1uc3ttYXJnaW46MXJlbX0ubWE0LW5ze21hcmdpbjoycmVtfS5tYTUtbnN7bWFyZ2luOjRyZW19Lm1hNi1uc3ttYXJnaW46OHJlbX0ubWE3LW5ze21hcmdpbjoxNnJlbX0ubWwwLW5ze21hcmdpbi1sZWZ0OjB9Lm1sMS1uc3ttYXJnaW4tbGVmdDouMjVyZW19Lm1sMi1uc3ttYXJnaW4tbGVmdDouNXJlbX0ubWwzLW5ze21hcmdpbi1sZWZ0OjFyZW19Lm1sNC1uc3ttYXJnaW4tbGVmdDoycmVtfS5tbDUtbnN7bWFyZ2luLWxlZnQ6NHJlbX0ubWw2LW5ze21hcmdpbi1sZWZ0OjhyZW19Lm1sNy1uc3ttYXJnaW4tbGVmdDoxNnJlbX0ubXIwLW5ze21hcmdpbi1yaWdodDowfS5tcjEtbnN7bWFyZ2luLXJpZ2h0Oi4yNXJlbX0ubXIyLW5ze21hcmdpbi1yaWdodDouNXJlbX0ubXIzLW5ze21hcmdpbi1yaWdodDoxcmVtfS5tcjQtbnN7bWFyZ2luLXJpZ2h0OjJyZW19Lm1yNS1uc3ttYXJnaW4tcmlnaHQ6NHJlbX0ubXI2LW5ze21hcmdpbi1yaWdodDo4cmVtfS5tcjctbnN7bWFyZ2luLXJpZ2h0OjE2cmVtfS5tYjAtbnN7bWFyZ2luLWJvdHRvbTowfS5tYjEtbnN7bWFyZ2luLWJvdHRvbTouMjVyZW19Lm1iMi1uc3ttYXJnaW4tYm90dG9tOi41cmVtfS5tYjMtbnN7bWFyZ2luLWJvdHRvbToxcmVtfS5tYjQtbnN7bWFyZ2luLWJvdHRvbToycmVtfS5tYjUtbnN7bWFyZ2luLWJvdHRvbTo0cmVtfS5tYjYtbnN7bWFyZ2luLWJvdHRvbTo4cmVtfS5tYjctbnN7bWFyZ2luLWJvdHRvbToxNnJlbX0ubXQwLW5ze21hcmdpbi10b3A6MH0ubXQxLW5ze21hcmdpbi10b3A6LjI1cmVtfS5tdDItbnN7bWFyZ2luLXRvcDouNXJlbX0ubXQzLW5ze21hcmdpbi10b3A6MXJlbX0ubXQ0LW5ze21hcmdpbi10b3A6MnJlbX0ubXQ1LW5ze21hcmdpbi10b3A6NHJlbX0ubXQ2LW5ze21hcmdpbi10b3A6OHJlbX0ubXQ3LW5ze21hcmdpbi10b3A6MTZyZW19Lm12MC1uc3ttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTowfS5tdjEtbnN7bWFyZ2luLXRvcDouMjVyZW07bWFyZ2luLWJvdHRvbTouMjVyZW19Lm12Mi1uc3ttYXJnaW4tdG9wOi41cmVtO21hcmdpbi1ib3R0b206LjVyZW19Lm12My1uc3ttYXJnaW4tdG9wOjFyZW07bWFyZ2luLWJvdHRvbToxcmVtfS5tdjQtbnN7bWFyZ2luLXRvcDoycmVtO21hcmdpbi1ib3R0b206MnJlbX0ubXY1LW5ze21hcmdpbi10b3A6NHJlbTttYXJnaW4tYm90dG9tOjRyZW19Lm12Ni1uc3ttYXJnaW4tdG9wOjhyZW07bWFyZ2luLWJvdHRvbTo4cmVtfS5tdjctbnN7bWFyZ2luLXRvcDoxNnJlbTttYXJnaW4tYm90dG9tOjE2cmVtfS5taDAtbnN7bWFyZ2luLWxlZnQ6MDttYXJnaW4tcmlnaHQ6MH0ubWgxLW5ze21hcmdpbi1sZWZ0Oi4yNXJlbTttYXJnaW4tcmlnaHQ6LjI1cmVtfS5taDItbnN7bWFyZ2luLWxlZnQ6LjVyZW07bWFyZ2luLXJpZ2h0Oi41cmVtfS5taDMtbnN7bWFyZ2luLWxlZnQ6MXJlbTttYXJnaW4tcmlnaHQ6MXJlbX0ubWg0LW5ze21hcmdpbi1sZWZ0OjJyZW07bWFyZ2luLXJpZ2h0OjJyZW19Lm1oNS1uc3ttYXJnaW4tbGVmdDo0cmVtO21hcmdpbi1yaWdodDo0cmVtfS5taDYtbnN7bWFyZ2luLWxlZnQ6OHJlbTttYXJnaW4tcmlnaHQ6OHJlbX0ubWg3LW5ze21hcmdpbi1sZWZ0OjE2cmVtO21hcmdpbi1yaWdodDoxNnJlbX0ubmExLW5ze21hcmdpbjotLjI1cmVtfS5uYTItbnN7bWFyZ2luOi0uNXJlbX0ubmEzLW5ze21hcmdpbjotMXJlbX0ubmE0LW5ze21hcmdpbjotMnJlbX0ubmE1LW5ze21hcmdpbjotNHJlbX0ubmE2LW5ze21hcmdpbjotOHJlbX0ubmE3LW5ze21hcmdpbjotMTZyZW19Lm5sMS1uc3ttYXJnaW4tbGVmdDotLjI1cmVtfS5ubDItbnN7bWFyZ2luLWxlZnQ6LS41cmVtfS5ubDMtbnN7bWFyZ2luLWxlZnQ6LTFyZW19Lm5sNC1uc3ttYXJnaW4tbGVmdDotMnJlbX0ubmw1LW5ze21hcmdpbi1sZWZ0Oi00cmVtfS5ubDYtbnN7bWFyZ2luLWxlZnQ6LThyZW19Lm5sNy1uc3ttYXJnaW4tbGVmdDotMTZyZW19Lm5yMS1uc3ttYXJnaW4tcmlnaHQ6LS4yNXJlbX0ubnIyLW5ze21hcmdpbi1yaWdodDotLjVyZW19Lm5yMy1uc3ttYXJnaW4tcmlnaHQ6LTFyZW19Lm5yNC1uc3ttYXJnaW4tcmlnaHQ6LTJyZW19Lm5yNS1uc3ttYXJnaW4tcmlnaHQ6LTRyZW19Lm5yNi1uc3ttYXJnaW4tcmlnaHQ6LThyZW19Lm5yNy1uc3ttYXJnaW4tcmlnaHQ6LTE2cmVtfS5uYjEtbnN7bWFyZ2luLWJvdHRvbTotLjI1cmVtfS5uYjItbnN7bWFyZ2luLWJvdHRvbTotLjVyZW19Lm5iMy1uc3ttYXJnaW4tYm90dG9tOi0xcmVtfS5uYjQtbnN7bWFyZ2luLWJvdHRvbTotMnJlbX0ubmI1LW5ze21hcmdpbi1ib3R0b206LTRyZW19Lm5iNi1uc3ttYXJnaW4tYm90dG9tOi04cmVtfS5uYjctbnN7bWFyZ2luLWJvdHRvbTotMTZyZW19Lm50MS1uc3ttYXJnaW4tdG9wOi0uMjVyZW19Lm50Mi1uc3ttYXJnaW4tdG9wOi0uNXJlbX0ubnQzLW5ze21hcmdpbi10b3A6LTFyZW19Lm50NC1uc3ttYXJnaW4tdG9wOi0ycmVtfS5udDUtbnN7bWFyZ2luLXRvcDotNHJlbX0ubnQ2LW5ze21hcmdpbi10b3A6LThyZW19Lm50Ny1uc3ttYXJnaW4tdG9wOi0xNnJlbX0uc3RyaWtlLW5ze3RleHQtZGVjb3JhdGlvbjpsaW5lLXRocm91Z2h9LnVuZGVybGluZS1uc3t0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfS5uby11bmRlcmxpbmUtbnN7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LnRsLW5ze3RleHQtYWxpZ246bGVmdH0udHItbnN7dGV4dC1hbGlnbjpyaWdodH0udGMtbnN7dGV4dC1hbGlnbjpjZW50ZXJ9LnRqLW5ze3RleHQtYWxpZ246anVzdGlmeX0udHRjLW5ze3RleHQtdHJhbnNmb3JtOmNhcGl0YWxpemV9LnR0bC1uc3t0ZXh0LXRyYW5zZm9ybTpsb3dlcmNhc2V9LnR0dS1uc3t0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9LnR0bi1uc3t0ZXh0LXRyYW5zZm9ybTpub25lfS5mLTYtbnMsLmYtaGVhZGxpbmUtbnN7Zm9udC1zaXplOjZyZW19LmYtNS1ucywuZi1zdWJoZWFkbGluZS1uc3tmb250LXNpemU6NXJlbX0uZjEtbnN7Zm9udC1zaXplOjNyZW19LmYyLW5ze2ZvbnQtc2l6ZToyLjI1cmVtfS5mMy1uc3tmb250LXNpemU6MS41cmVtfS5mNC1uc3tmb250LXNpemU6MS4yNXJlbX0uZjUtbnN7Zm9udC1zaXplOjFyZW19LmY2LW5ze2ZvbnQtc2l6ZTouODc1cmVtfS5mNy1uc3tmb250LXNpemU6Ljc1cmVtfS5tZWFzdXJlLW5ze21heC13aWR0aDozMGVtfS5tZWFzdXJlLXdpZGUtbnN7bWF4LXdpZHRoOjM0ZW19Lm1lYXN1cmUtbmFycm93LW5ze21heC13aWR0aDoyMGVtfS5pbmRlbnQtbnN7dGV4dC1pbmRlbnQ6MWVtO21hcmdpbi10b3A6MDttYXJnaW4tYm90dG9tOjB9LnNtYWxsLWNhcHMtbnN7Zm9udC12YXJpYW50OnNtYWxsLWNhcHN9LnRydW5jYXRlLW5ze3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpc30uY2VudGVyLW5ze21hcmdpbi1sZWZ0OmF1dG99LmNlbnRlci1ucywubXItYXV0by1uc3ttYXJnaW4tcmlnaHQ6YXV0b30ubWwtYXV0by1uc3ttYXJnaW4tbGVmdDphdXRvfS5jbGlwLW5ze3Bvc2l0aW9uOmZpeGVkIWltcG9ydGFudDtwb3NpdGlvbjphYnNvbHV0ZSFpbXBvcnRhbnQ7Y2xpcDpyZWN0KDFweCAxcHggMXB4IDFweCk7Y2xpcDpyZWN0KDFweCwxcHgsMXB4LDFweCl9LndzLW5vcm1hbC1uc3t3aGl0ZS1zcGFjZTpub3JtYWx9Lm5vd3JhcC1uc3t3aGl0ZS1zcGFjZTpub3dyYXB9LnByZS1uc3t3aGl0ZS1zcGFjZTpwcmV9LnYtYmFzZS1uc3t2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZX0udi1taWQtbnN7dmVydGljYWwtYWxpZ246bWlkZGxlfS52LXRvcC1uc3t2ZXJ0aWNhbC1hbGlnbjp0b3B9LnYtYnRtLW5ze3ZlcnRpY2FsLWFsaWduOmJvdHRvbX19QG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDozMGVtKSBhbmQgKG1heC13aWR0aDo2MGVtKXsuYXNwZWN0LXJhdGlvLW17aGVpZ2h0OjA7cG9zaXRpb246cmVsYXRpdmV9LmFzcGVjdC1yYXRpby0tMTZ4OS1te3BhZGRpbmctYm90dG9tOjU2LjI1JX0uYXNwZWN0LXJhdGlvLS05eDE2LW17cGFkZGluZy1ib3R0b206MTc3Ljc3JX0uYXNwZWN0LXJhdGlvLS00eDMtbXtwYWRkaW5nLWJvdHRvbTo3NSV9LmFzcGVjdC1yYXRpby0tM3g0LW17cGFkZGluZy1ib3R0b206MTMzLjMzJX0uYXNwZWN0LXJhdGlvLS02eDQtbXtwYWRkaW5nLWJvdHRvbTo2Ni42JX0uYXNwZWN0LXJhdGlvLS00eDYtbXtwYWRkaW5nLWJvdHRvbToxNTAlfS5hc3BlY3QtcmF0aW8tLTh4NS1te3BhZGRpbmctYm90dG9tOjYyLjUlfS5hc3BlY3QtcmF0aW8tLTV4OC1te3BhZGRpbmctYm90dG9tOjE2MCV9LmFzcGVjdC1yYXRpby0tN3g1LW17cGFkZGluZy1ib3R0b206NzEuNDIlfS5hc3BlY3QtcmF0aW8tLTV4Ny1te3BhZGRpbmctYm90dG9tOjE0MCV9LmFzcGVjdC1yYXRpby0tMXgxLW17cGFkZGluZy1ib3R0b206MTAwJX0uYXNwZWN0LXJhdGlvLS1vYmplY3QtbXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtyaWdodDowO2JvdHRvbTowO2xlZnQ6MDt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO3otaW5kZXg6MTAwfS5jb3Zlci1te2JhY2tncm91bmQtc2l6ZTpjb3ZlciFpbXBvcnRhbnR9LmNvbnRhaW4tbXtiYWNrZ3JvdW5kLXNpemU6Y29udGFpbiFpbXBvcnRhbnR9LmJnLWNlbnRlci1te2JhY2tncm91bmQtcG9zaXRpb246NTAlfS5iZy1jZW50ZXItbSwuYmctdG9wLW17YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0fS5iZy10b3AtbXtiYWNrZ3JvdW5kLXBvc2l0aW9uOnRvcH0uYmctcmlnaHQtbXtiYWNrZ3JvdW5kLXBvc2l0aW9uOjEwMCV9LmJnLWJvdHRvbS1tLC5iZy1yaWdodC1te2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdH0uYmctYm90dG9tLW17YmFja2dyb3VuZC1wb3NpdGlvbjpib3R0b219LmJnLWxlZnQtbXtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1wb3NpdGlvbjowfS5vdXRsaW5lLW17b3V0bGluZToxcHggc29saWR9Lm91dGxpbmUtdHJhbnNwYXJlbnQtbXtvdXRsaW5lOjFweCBzb2xpZCB0cmFuc3BhcmVudH0ub3V0bGluZS0wLW17b3V0bGluZTowfS5iYS1te2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItd2lkdGg6MXB4fS5idC1te2JvcmRlci10b3Atc3R5bGU6c29saWQ7Ym9yZGVyLXRvcC13aWR0aDoxcHh9LmJyLW17Ym9yZGVyLXJpZ2h0LXN0eWxlOnNvbGlkO2JvcmRlci1yaWdodC13aWR0aDoxcHh9LmJiLW17Ym9yZGVyLWJvdHRvbS1zdHlsZTpzb2xpZDtib3JkZXItYm90dG9tLXdpZHRoOjFweH0uYmwtbXtib3JkZXItbGVmdC1zdHlsZTpzb2xpZDtib3JkZXItbGVmdC13aWR0aDoxcHh9LmJuLW17Ym9yZGVyLXN0eWxlOm5vbmU7Ym9yZGVyLXdpZHRoOjB9LmJyMC1te2JvcmRlci1yYWRpdXM6MH0uYnIxLW17Ym9yZGVyLXJhZGl1czouMTI1cmVtfS5icjItbXtib3JkZXItcmFkaXVzOi4yNXJlbX0uYnIzLW17Ym9yZGVyLXJhZGl1czouNXJlbX0uYnI0LW17Ym9yZGVyLXJhZGl1czoxcmVtfS5ici0xMDAtbXtib3JkZXItcmFkaXVzOjEwMCV9LmJyLXBpbGwtbXtib3JkZXItcmFkaXVzOjk5OTlweH0uYnItLWJvdHRvbS1te2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MDtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowfS5ici0tdG9wLW17Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MH0uYnItLXJpZ2h0LW0sLmJyLS10b3AtbXtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjB9LmJyLS1yaWdodC1te2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MH0uYnItLWxlZnQtbXtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjB9LmItLWRvdHRlZC1te2JvcmRlci1zdHlsZTpkb3R0ZWR9LmItLWRhc2hlZC1te2JvcmRlci1zdHlsZTpkYXNoZWR9LmItLXNvbGlkLW17Ym9yZGVyLXN0eWxlOnNvbGlkfS5iLS1ub25lLW17Ym9yZGVyLXN0eWxlOm5vbmV9LmJ3MC1te2JvcmRlci13aWR0aDowfS5idzEtbXtib3JkZXItd2lkdGg6LjEyNXJlbX0uYncyLW17Ym9yZGVyLXdpZHRoOi4yNXJlbX0uYnczLW17Ym9yZGVyLXdpZHRoOi41cmVtfS5idzQtbXtib3JkZXItd2lkdGg6MXJlbX0uYnc1LW17Ym9yZGVyLXdpZHRoOjJyZW19LmJ0LTAtbXtib3JkZXItdG9wLXdpZHRoOjB9LmJyLTAtbXtib3JkZXItcmlnaHQtd2lkdGg6MH0uYmItMC1te2JvcmRlci1ib3R0b20td2lkdGg6MH0uYmwtMC1te2JvcmRlci1sZWZ0LXdpZHRoOjB9LnNoYWRvdy0xLW17Ym94LXNoYWRvdzowIDAgNHB4IDJweCByZ2JhKDAsMCwwLC4yKX0uc2hhZG93LTItbXtib3gtc2hhZG93OjAgMCA4cHggMnB4IHJnYmEoMCwwLDAsLjIpfS5zaGFkb3ctMy1te2JveC1zaGFkb3c6MnB4IDJweCA0cHggMnB4IHJnYmEoMCwwLDAsLjIpfS5zaGFkb3ctNC1te2JveC1zaGFkb3c6MnB4IDJweCA4cHggMCByZ2JhKDAsMCwwLC4yKX0uc2hhZG93LTUtbXtib3gtc2hhZG93OjRweCA0cHggOHB4IDAgcmdiYSgwLDAsMCwuMil9LnRvcC0wLW17dG9wOjB9LmxlZnQtMC1te2xlZnQ6MH0ucmlnaHQtMC1te3JpZ2h0OjB9LmJvdHRvbS0wLW17Ym90dG9tOjB9LnRvcC0xLW17dG9wOjFyZW19LmxlZnQtMS1te2xlZnQ6MXJlbX0ucmlnaHQtMS1te3JpZ2h0OjFyZW19LmJvdHRvbS0xLW17Ym90dG9tOjFyZW19LnRvcC0yLW17dG9wOjJyZW19LmxlZnQtMi1te2xlZnQ6MnJlbX0ucmlnaHQtMi1te3JpZ2h0OjJyZW19LmJvdHRvbS0yLW17Ym90dG9tOjJyZW19LnRvcC0tMS1te3RvcDotMXJlbX0ucmlnaHQtLTEtbXtyaWdodDotMXJlbX0uYm90dG9tLS0xLW17Ym90dG9tOi0xcmVtfS5sZWZ0LS0xLW17bGVmdDotMXJlbX0udG9wLS0yLW17dG9wOi0ycmVtfS5yaWdodC0tMi1te3JpZ2h0Oi0ycmVtfS5ib3R0b20tLTItbXtib3R0b206LTJyZW19LmxlZnQtLTItbXtsZWZ0Oi0ycmVtfS5hYnNvbHV0ZS0tZmlsbC1te3RvcDowO3JpZ2h0OjA7Ym90dG9tOjA7bGVmdDowfS5jbC1te2NsZWFyOmxlZnR9LmNyLW17Y2xlYXI6cmlnaHR9LmNiLW17Y2xlYXI6Ym90aH0uY24tbXtjbGVhcjpub25lfS5kbi1te2Rpc3BsYXk6bm9uZX0uZGktbXtkaXNwbGF5OmlubGluZX0uZGItbXtkaXNwbGF5OmJsb2NrfS5kaWItbXtkaXNwbGF5OmlubGluZS1ibG9ja30uZGl0LW17ZGlzcGxheTppbmxpbmUtdGFibGV9LmR0LW17ZGlzcGxheTp0YWJsZX0uZHRjLW17ZGlzcGxheTp0YWJsZS1jZWxsfS5kdC1yb3ctbXtkaXNwbGF5OnRhYmxlLXJvd30uZHQtcm93LWdyb3VwLW17ZGlzcGxheTp0YWJsZS1yb3ctZ3JvdXB9LmR0LWNvbHVtbi1te2Rpc3BsYXk6dGFibGUtY29sdW1ufS5kdC1jb2x1bW4tZ3JvdXAtbXtkaXNwbGF5OnRhYmxlLWNvbHVtbi1ncm91cH0uZHQtLWZpeGVkLW17dGFibGUtbGF5b3V0OmZpeGVkO3dpZHRoOjEwMCV9LmZsZXgtbXtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4fS5pbmxpbmUtZmxleC1te2Rpc3BsYXk6LXdlYmtpdC1pbmxpbmUtYm94O2Rpc3BsYXk6LW1zLWlubGluZS1mbGV4Ym94O2Rpc3BsYXk6aW5saW5lLWZsZXh9LmZsZXgtYXV0by1tey13ZWJraXQtYm94LWZsZXg6MTstbXMtZmxleDoxIDEgYXV0bztmbGV4OjEgMSBhdXRvO21pbi13aWR0aDowO21pbi1oZWlnaHQ6MH0uZmxleC1ub25lLW17LXdlYmtpdC1ib3gtZmxleDowOy1tcy1mbGV4Om5vbmU7ZmxleDpub25lfS5mbGV4LWNvbHVtbi1tey13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbDstbXMtZmxleC1kaXJlY3Rpb246Y29sdW1uO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0uZmxleC1jb2x1bW4tbSwuZmxleC1yb3ctbXstd2Via2l0LWJveC1kaXJlY3Rpb246bm9ybWFsfS5mbGV4LXJvdy1tey13ZWJraXQtYm94LW9yaWVudDpob3Jpem9udGFsOy1tcy1mbGV4LWRpcmVjdGlvbjpyb3c7ZmxleC1kaXJlY3Rpb246cm93fS5mbGV4LXdyYXAtbXstbXMtZmxleC13cmFwOndyYXA7ZmxleC13cmFwOndyYXB9LmZsZXgtbm93cmFwLW17LW1zLWZsZXgtd3JhcDpub3dyYXA7ZmxleC13cmFwOm5vd3JhcH0uZmxleC13cmFwLXJldmVyc2UtbXstbXMtZmxleC13cmFwOndyYXAtcmV2ZXJzZTtmbGV4LXdyYXA6d3JhcC1yZXZlcnNlfS5mbGV4LWNvbHVtbi1yZXZlcnNlLW17LXdlYmtpdC1ib3gtb3JpZW50OnZlcnRpY2FsOy13ZWJraXQtYm94LWRpcmVjdGlvbjpyZXZlcnNlOy1tcy1mbGV4LWRpcmVjdGlvbjpjb2x1bW4tcmV2ZXJzZTtmbGV4LWRpcmVjdGlvbjpjb2x1bW4tcmV2ZXJzZX0uZmxleC1yb3ctcmV2ZXJzZS1tey13ZWJraXQtYm94LW9yaWVudDpob3Jpem9udGFsOy13ZWJraXQtYm94LWRpcmVjdGlvbjpyZXZlcnNlOy1tcy1mbGV4LWRpcmVjdGlvbjpyb3ctcmV2ZXJzZTtmbGV4LWRpcmVjdGlvbjpyb3ctcmV2ZXJzZX0uaXRlbXMtc3RhcnQtbXstd2Via2l0LWJveC1hbGlnbjpzdGFydDstbXMtZmxleC1hbGlnbjpzdGFydDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0fS5pdGVtcy1lbmQtbXstd2Via2l0LWJveC1hbGlnbjplbmQ7LW1zLWZsZXgtYWxpZ246ZW5kO2FsaWduLWl0ZW1zOmZsZXgtZW5kfS5pdGVtcy1jZW50ZXItbXstd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7LW1zLWZsZXgtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcn0uaXRlbXMtYmFzZWxpbmUtbXstd2Via2l0LWJveC1hbGlnbjpiYXNlbGluZTstbXMtZmxleC1hbGlnbjpiYXNlbGluZTthbGlnbi1pdGVtczpiYXNlbGluZX0uaXRlbXMtc3RyZXRjaC1tey13ZWJraXQtYm94LWFsaWduOnN0cmV0Y2g7LW1zLWZsZXgtYWxpZ246c3RyZXRjaDthbGlnbi1pdGVtczpzdHJldGNofS5zZWxmLXN0YXJ0LW17LW1zLWZsZXgtaXRlbS1hbGlnbjpzdGFydDthbGlnbi1zZWxmOmZsZXgtc3RhcnR9LnNlbGYtZW5kLW17LW1zLWZsZXgtaXRlbS1hbGlnbjplbmQ7YWxpZ24tc2VsZjpmbGV4LWVuZH0uc2VsZi1jZW50ZXItbXstbXMtZmxleC1pdGVtLWFsaWduOmNlbnRlcjstbXMtZ3JpZC1yb3ctYWxpZ246Y2VudGVyO2FsaWduLXNlbGY6Y2VudGVyfS5zZWxmLWJhc2VsaW5lLW17LW1zLWZsZXgtaXRlbS1hbGlnbjpiYXNlbGluZTthbGlnbi1zZWxmOmJhc2VsaW5lfS5zZWxmLXN0cmV0Y2gtbXstbXMtZmxleC1pdGVtLWFsaWduOnN0cmV0Y2g7LW1zLWdyaWQtcm93LWFsaWduOnN0cmV0Y2g7YWxpZ24tc2VsZjpzdHJldGNofS5qdXN0aWZ5LXN0YXJ0LW17LXdlYmtpdC1ib3gtcGFjazpzdGFydDstbXMtZmxleC1wYWNrOnN0YXJ0O2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0fS5qdXN0aWZ5LWVuZC1tey13ZWJraXQtYm94LXBhY2s6ZW5kOy1tcy1mbGV4LXBhY2s6ZW5kO2p1c3RpZnktY29udGVudDpmbGV4LWVuZH0uanVzdGlmeS1jZW50ZXItbXstd2Via2l0LWJveC1wYWNrOmNlbnRlcjstbXMtZmxleC1wYWNrOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5qdXN0aWZ5LWJldHdlZW4tbXstd2Via2l0LWJveC1wYWNrOmp1c3RpZnk7LW1zLWZsZXgtcGFjazpqdXN0aWZ5O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVufS5qdXN0aWZ5LWFyb3VuZC1tey1tcy1mbGV4LXBhY2s6ZGlzdHJpYnV0ZTtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYXJvdW5kfS5jb250ZW50LXN0YXJ0LW17LW1zLWZsZXgtbGluZS1wYWNrOnN0YXJ0O2FsaWduLWNvbnRlbnQ6ZmxleC1zdGFydH0uY29udGVudC1lbmQtbXstbXMtZmxleC1saW5lLXBhY2s6ZW5kO2FsaWduLWNvbnRlbnQ6ZmxleC1lbmR9LmNvbnRlbnQtY2VudGVyLW17LW1zLWZsZXgtbGluZS1wYWNrOmNlbnRlcjthbGlnbi1jb250ZW50OmNlbnRlcn0uY29udGVudC1iZXR3ZWVuLW17LW1zLWZsZXgtbGluZS1wYWNrOmp1c3RpZnk7YWxpZ24tY29udGVudDpzcGFjZS1iZXR3ZWVufS5jb250ZW50LWFyb3VuZC1tey1tcy1mbGV4LWxpbmUtcGFjazpkaXN0cmlidXRlO2FsaWduLWNvbnRlbnQ6c3BhY2UtYXJvdW5kfS5jb250ZW50LXN0cmV0Y2gtbXstbXMtZmxleC1saW5lLXBhY2s6c3RyZXRjaDthbGlnbi1jb250ZW50OnN0cmV0Y2h9Lm9yZGVyLTAtbXstd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjE7LW1zLWZsZXgtb3JkZXI6MDtvcmRlcjowfS5vcmRlci0xLW17LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDoyOy1tcy1mbGV4LW9yZGVyOjE7b3JkZXI6MX0ub3JkZXItMi1tey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6MzstbXMtZmxleC1vcmRlcjoyO29yZGVyOjJ9Lm9yZGVyLTMtbXstd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjQ7LW1zLWZsZXgtb3JkZXI6MztvcmRlcjozfS5vcmRlci00LW17LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDo1Oy1tcy1mbGV4LW9yZGVyOjQ7b3JkZXI6NH0ub3JkZXItNS1tey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6NjstbXMtZmxleC1vcmRlcjo1O29yZGVyOjV9Lm9yZGVyLTYtbXstd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjc7LW1zLWZsZXgtb3JkZXI6NjtvcmRlcjo2fS5vcmRlci03LW17LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDo4Oy1tcy1mbGV4LW9yZGVyOjc7b3JkZXI6N30ub3JkZXItOC1tey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6OTstbXMtZmxleC1vcmRlcjo4O29yZGVyOjh9Lm9yZGVyLWxhc3QtbXstd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjEwMDAwMDstbXMtZmxleC1vcmRlcjo5OTk5OTtvcmRlcjo5OTk5OX0uZmxleC1ncm93LTAtbXstd2Via2l0LWJveC1mbGV4OjA7LW1zLWZsZXgtcG9zaXRpdmU6MDtmbGV4LWdyb3c6MH0uZmxleC1ncm93LTEtbXstd2Via2l0LWJveC1mbGV4OjE7LW1zLWZsZXgtcG9zaXRpdmU6MTtmbGV4LWdyb3c6MX0uZmxleC1zaHJpbmstMC1tey1tcy1mbGV4LW5lZ2F0aXZlOjA7ZmxleC1zaHJpbms6MH0uZmxleC1zaHJpbmstMS1tey1tcy1mbGV4LW5lZ2F0aXZlOjE7ZmxleC1zaHJpbms6MX0uZmwtbXtmbG9hdDpsZWZ0fS5mbC1tLC5mci1te2Rpc3BsYXk6aW5saW5lfS5mci1te2Zsb2F0OnJpZ2h0fS5mbi1te2Zsb2F0Om5vbmV9LmktbXtmb250LXN0eWxlOml0YWxpY30uZnMtbm9ybWFsLW17Zm9udC1zdHlsZTpub3JtYWx9Lm5vcm1hbC1te2ZvbnQtd2VpZ2h0OjQwMH0uYi1te2ZvbnQtd2VpZ2h0OjcwMH0uZncxLW17Zm9udC13ZWlnaHQ6MTAwfS5mdzItbXtmb250LXdlaWdodDoyMDB9LmZ3My1te2ZvbnQtd2VpZ2h0OjMwMH0uZnc0LW17Zm9udC13ZWlnaHQ6NDAwfS5mdzUtbXtmb250LXdlaWdodDo1MDB9LmZ3Ni1te2ZvbnQtd2VpZ2h0OjYwMH0uZnc3LW17Zm9udC13ZWlnaHQ6NzAwfS5mdzgtbXtmb250LXdlaWdodDo4MDB9LmZ3OS1te2ZvbnQtd2VpZ2h0OjkwMH0uaDEtbXtoZWlnaHQ6MXJlbX0uaDItbXtoZWlnaHQ6MnJlbX0uaDMtbXtoZWlnaHQ6NHJlbX0uaDQtbXtoZWlnaHQ6OHJlbX0uaDUtbXtoZWlnaHQ6MTZyZW19LmgtMjUtbXtoZWlnaHQ6MjUlfS5oLTUwLW17aGVpZ2h0OjUwJX0uaC03NS1te2hlaWdodDo3NSV9LmgtMTAwLW17aGVpZ2h0OjEwMCV9Lm1pbi1oLTEwMC1te21pbi1oZWlnaHQ6MTAwJX0udmgtMjUtbXtoZWlnaHQ6MjV2aH0udmgtNTAtbXtoZWlnaHQ6NTB2aH0udmgtNzUtbXtoZWlnaHQ6NzV2aH0udmgtMTAwLW17aGVpZ2h0OjEwMHZofS5taW4tdmgtMTAwLW17bWluLWhlaWdodDoxMDB2aH0uaC1hdXRvLW17aGVpZ2h0OmF1dG99LmgtaW5oZXJpdC1te2hlaWdodDppbmhlcml0fS50cmFja2VkLW17bGV0dGVyLXNwYWNpbmc6LjFlbX0udHJhY2tlZC10aWdodC1te2xldHRlci1zcGFjaW5nOi0uMDVlbX0udHJhY2tlZC1tZWdhLW17bGV0dGVyLXNwYWNpbmc6LjI1ZW19LmxoLXNvbGlkLW17bGluZS1oZWlnaHQ6MX0ubGgtdGl0bGUtbXtsaW5lLWhlaWdodDoxLjI1fS5saC1jb3B5LW17bGluZS1oZWlnaHQ6MS41fS5tdy0xMDAtbXttYXgtd2lkdGg6MTAwJX0ubXcxLW17bWF4LXdpZHRoOjFyZW19Lm13Mi1te21heC13aWR0aDoycmVtfS5tdzMtbXttYXgtd2lkdGg6NHJlbX0ubXc0LW17bWF4LXdpZHRoOjhyZW19Lm13NS1te21heC13aWR0aDoxNnJlbX0ubXc2LW17bWF4LXdpZHRoOjMycmVtfS5tdzctbXttYXgtd2lkdGg6NDhyZW19Lm13OC1te21heC13aWR0aDo2NHJlbX0ubXc5LW17bWF4LXdpZHRoOjk2cmVtfS5tdy1ub25lLW17bWF4LXdpZHRoOm5vbmV9LncxLW17d2lkdGg6MXJlbX0udzItbXt3aWR0aDoycmVtfS53My1te3dpZHRoOjRyZW19Lnc0LW17d2lkdGg6OHJlbX0udzUtbXt3aWR0aDoxNnJlbX0udy0xMC1te3dpZHRoOjEwJX0udy0yMC1te3dpZHRoOjIwJX0udy0yNS1te3dpZHRoOjI1JX0udy0zMC1te3dpZHRoOjMwJX0udy0zMy1te3dpZHRoOjMzJX0udy0zNC1te3dpZHRoOjM0JX0udy00MC1te3dpZHRoOjQwJX0udy01MC1te3dpZHRoOjUwJX0udy02MC1te3dpZHRoOjYwJX0udy03MC1te3dpZHRoOjcwJX0udy03NS1te3dpZHRoOjc1JX0udy04MC1te3dpZHRoOjgwJX0udy05MC1te3dpZHRoOjkwJX0udy0xMDAtbXt3aWR0aDoxMDAlfS53LXRoaXJkLW17d2lkdGg6MzMuMzMzMzMlfS53LXR3by10aGlyZHMtbXt3aWR0aDo2Ni42NjY2NyV9LnctYXV0by1te3dpZHRoOmF1dG99Lm92ZXJmbG93LXZpc2libGUtbXtvdmVyZmxvdzp2aXNpYmxlfS5vdmVyZmxvdy1oaWRkZW4tbXtvdmVyZmxvdzpoaWRkZW59Lm92ZXJmbG93LXNjcm9sbC1te292ZXJmbG93OnNjcm9sbH0ub3ZlcmZsb3ctYXV0by1te292ZXJmbG93OmF1dG99Lm92ZXJmbG93LXgtdmlzaWJsZS1te292ZXJmbG93LXg6dmlzaWJsZX0ub3ZlcmZsb3cteC1oaWRkZW4tbXtvdmVyZmxvdy14OmhpZGRlbn0ub3ZlcmZsb3cteC1zY3JvbGwtbXtvdmVyZmxvdy14OnNjcm9sbH0ub3ZlcmZsb3cteC1hdXRvLW17b3ZlcmZsb3cteDphdXRvfS5vdmVyZmxvdy15LXZpc2libGUtbXtvdmVyZmxvdy15OnZpc2libGV9Lm92ZXJmbG93LXktaGlkZGVuLW17b3ZlcmZsb3cteTpoaWRkZW59Lm92ZXJmbG93LXktc2Nyb2xsLW17b3ZlcmZsb3cteTpzY3JvbGx9Lm92ZXJmbG93LXktYXV0by1te292ZXJmbG93LXk6YXV0b30uc3RhdGljLW17cG9zaXRpb246c3RhdGljfS5yZWxhdGl2ZS1te3Bvc2l0aW9uOnJlbGF0aXZlfS5hYnNvbHV0ZS1te3Bvc2l0aW9uOmFic29sdXRlfS5maXhlZC1te3Bvc2l0aW9uOmZpeGVkfS5yb3RhdGUtNDUtbXstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoNDVkZWcpO3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpfS5yb3RhdGUtOTAtbXstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoOTBkZWcpO3RyYW5zZm9ybTpyb3RhdGUoOTBkZWcpfS5yb3RhdGUtMTM1LW17LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDEzNWRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgxMzVkZWcpfS5yb3RhdGUtMTgwLW17LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDE4MGRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgxODBkZWcpfS5yb3RhdGUtMjI1LW17LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDIyNWRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgyMjVkZWcpfS5yb3RhdGUtMjcwLW17LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDI3MGRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgyNzBkZWcpfS5yb3RhdGUtMzE1LW17LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDMxNWRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgzMTVkZWcpfS5wYTAtbXtwYWRkaW5nOjB9LnBhMS1te3BhZGRpbmc6LjI1cmVtfS5wYTItbXtwYWRkaW5nOi41cmVtfS5wYTMtbXtwYWRkaW5nOjFyZW19LnBhNC1te3BhZGRpbmc6MnJlbX0ucGE1LW17cGFkZGluZzo0cmVtfS5wYTYtbXtwYWRkaW5nOjhyZW19LnBhNy1te3BhZGRpbmc6MTZyZW19LnBsMC1te3BhZGRpbmctbGVmdDowfS5wbDEtbXtwYWRkaW5nLWxlZnQ6LjI1cmVtfS5wbDItbXtwYWRkaW5nLWxlZnQ6LjVyZW19LnBsMy1te3BhZGRpbmctbGVmdDoxcmVtfS5wbDQtbXtwYWRkaW5nLWxlZnQ6MnJlbX0ucGw1LW17cGFkZGluZy1sZWZ0OjRyZW19LnBsNi1te3BhZGRpbmctbGVmdDo4cmVtfS5wbDctbXtwYWRkaW5nLWxlZnQ6MTZyZW19LnByMC1te3BhZGRpbmctcmlnaHQ6MH0ucHIxLW17cGFkZGluZy1yaWdodDouMjVyZW19LnByMi1te3BhZGRpbmctcmlnaHQ6LjVyZW19LnByMy1te3BhZGRpbmctcmlnaHQ6MXJlbX0ucHI0LW17cGFkZGluZy1yaWdodDoycmVtfS5wcjUtbXtwYWRkaW5nLXJpZ2h0OjRyZW19LnByNi1te3BhZGRpbmctcmlnaHQ6OHJlbX0ucHI3LW17cGFkZGluZy1yaWdodDoxNnJlbX0ucGIwLW17cGFkZGluZy1ib3R0b206MH0ucGIxLW17cGFkZGluZy1ib3R0b206LjI1cmVtfS5wYjItbXtwYWRkaW5nLWJvdHRvbTouNXJlbX0ucGIzLW17cGFkZGluZy1ib3R0b206MXJlbX0ucGI0LW17cGFkZGluZy1ib3R0b206MnJlbX0ucGI1LW17cGFkZGluZy1ib3R0b206NHJlbX0ucGI2LW17cGFkZGluZy1ib3R0b206OHJlbX0ucGI3LW17cGFkZGluZy1ib3R0b206MTZyZW19LnB0MC1te3BhZGRpbmctdG9wOjB9LnB0MS1te3BhZGRpbmctdG9wOi4yNXJlbX0ucHQyLW17cGFkZGluZy10b3A6LjVyZW19LnB0My1te3BhZGRpbmctdG9wOjFyZW19LnB0NC1te3BhZGRpbmctdG9wOjJyZW19LnB0NS1te3BhZGRpbmctdG9wOjRyZW19LnB0Ni1te3BhZGRpbmctdG9wOjhyZW19LnB0Ny1te3BhZGRpbmctdG9wOjE2cmVtfS5wdjAtbXtwYWRkaW5nLXRvcDowO3BhZGRpbmctYm90dG9tOjB9LnB2MS1te3BhZGRpbmctdG9wOi4yNXJlbTtwYWRkaW5nLWJvdHRvbTouMjVyZW19LnB2Mi1te3BhZGRpbmctdG9wOi41cmVtO3BhZGRpbmctYm90dG9tOi41cmVtfS5wdjMtbXtwYWRkaW5nLXRvcDoxcmVtO3BhZGRpbmctYm90dG9tOjFyZW19LnB2NC1te3BhZGRpbmctdG9wOjJyZW07cGFkZGluZy1ib3R0b206MnJlbX0ucHY1LW17cGFkZGluZy10b3A6NHJlbTtwYWRkaW5nLWJvdHRvbTo0cmVtfS5wdjYtbXtwYWRkaW5nLXRvcDo4cmVtO3BhZGRpbmctYm90dG9tOjhyZW19LnB2Ny1te3BhZGRpbmctdG9wOjE2cmVtO3BhZGRpbmctYm90dG9tOjE2cmVtfS5waDAtbXtwYWRkaW5nLWxlZnQ6MDtwYWRkaW5nLXJpZ2h0OjB9LnBoMS1te3BhZGRpbmctbGVmdDouMjVyZW07cGFkZGluZy1yaWdodDouMjVyZW19LnBoMi1te3BhZGRpbmctbGVmdDouNXJlbTtwYWRkaW5nLXJpZ2h0Oi41cmVtfS5waDMtbXtwYWRkaW5nLWxlZnQ6MXJlbTtwYWRkaW5nLXJpZ2h0OjFyZW19LnBoNC1te3BhZGRpbmctbGVmdDoycmVtO3BhZGRpbmctcmlnaHQ6MnJlbX0ucGg1LW17cGFkZGluZy1sZWZ0OjRyZW07cGFkZGluZy1yaWdodDo0cmVtfS5waDYtbXtwYWRkaW5nLWxlZnQ6OHJlbTtwYWRkaW5nLXJpZ2h0OjhyZW19LnBoNy1te3BhZGRpbmctbGVmdDoxNnJlbTtwYWRkaW5nLXJpZ2h0OjE2cmVtfS5tYTAtbXttYXJnaW46MH0ubWExLW17bWFyZ2luOi4yNXJlbX0ubWEyLW17bWFyZ2luOi41cmVtfS5tYTMtbXttYXJnaW46MXJlbX0ubWE0LW17bWFyZ2luOjJyZW19Lm1hNS1te21hcmdpbjo0cmVtfS5tYTYtbXttYXJnaW46OHJlbX0ubWE3LW17bWFyZ2luOjE2cmVtfS5tbDAtbXttYXJnaW4tbGVmdDowfS5tbDEtbXttYXJnaW4tbGVmdDouMjVyZW19Lm1sMi1te21hcmdpbi1sZWZ0Oi41cmVtfS5tbDMtbXttYXJnaW4tbGVmdDoxcmVtfS5tbDQtbXttYXJnaW4tbGVmdDoycmVtfS5tbDUtbXttYXJnaW4tbGVmdDo0cmVtfS5tbDYtbXttYXJnaW4tbGVmdDo4cmVtfS5tbDctbXttYXJnaW4tbGVmdDoxNnJlbX0ubXIwLW17bWFyZ2luLXJpZ2h0OjB9Lm1yMS1te21hcmdpbi1yaWdodDouMjVyZW19Lm1yMi1te21hcmdpbi1yaWdodDouNXJlbX0ubXIzLW17bWFyZ2luLXJpZ2h0OjFyZW19Lm1yNC1te21hcmdpbi1yaWdodDoycmVtfS5tcjUtbXttYXJnaW4tcmlnaHQ6NHJlbX0ubXI2LW17bWFyZ2luLXJpZ2h0OjhyZW19Lm1yNy1te21hcmdpbi1yaWdodDoxNnJlbX0ubWIwLW17bWFyZ2luLWJvdHRvbTowfS5tYjEtbXttYXJnaW4tYm90dG9tOi4yNXJlbX0ubWIyLW17bWFyZ2luLWJvdHRvbTouNXJlbX0ubWIzLW17bWFyZ2luLWJvdHRvbToxcmVtfS5tYjQtbXttYXJnaW4tYm90dG9tOjJyZW19Lm1iNS1te21hcmdpbi1ib3R0b206NHJlbX0ubWI2LW17bWFyZ2luLWJvdHRvbTo4cmVtfS5tYjctbXttYXJnaW4tYm90dG9tOjE2cmVtfS5tdDAtbXttYXJnaW4tdG9wOjB9Lm10MS1te21hcmdpbi10b3A6LjI1cmVtfS5tdDItbXttYXJnaW4tdG9wOi41cmVtfS5tdDMtbXttYXJnaW4tdG9wOjFyZW19Lm10NC1te21hcmdpbi10b3A6MnJlbX0ubXQ1LW17bWFyZ2luLXRvcDo0cmVtfS5tdDYtbXttYXJnaW4tdG9wOjhyZW19Lm10Ny1te21hcmdpbi10b3A6MTZyZW19Lm12MC1te21hcmdpbi10b3A6MDttYXJnaW4tYm90dG9tOjB9Lm12MS1te21hcmdpbi10b3A6LjI1cmVtO21hcmdpbi1ib3R0b206LjI1cmVtfS5tdjItbXttYXJnaW4tdG9wOi41cmVtO21hcmdpbi1ib3R0b206LjVyZW19Lm12My1te21hcmdpbi10b3A6MXJlbTttYXJnaW4tYm90dG9tOjFyZW19Lm12NC1te21hcmdpbi10b3A6MnJlbTttYXJnaW4tYm90dG9tOjJyZW19Lm12NS1te21hcmdpbi10b3A6NHJlbTttYXJnaW4tYm90dG9tOjRyZW19Lm12Ni1te21hcmdpbi10b3A6OHJlbTttYXJnaW4tYm90dG9tOjhyZW19Lm12Ny1te21hcmdpbi10b3A6MTZyZW07bWFyZ2luLWJvdHRvbToxNnJlbX0ubWgwLW17bWFyZ2luLWxlZnQ6MDttYXJnaW4tcmlnaHQ6MH0ubWgxLW17bWFyZ2luLWxlZnQ6LjI1cmVtO21hcmdpbi1yaWdodDouMjVyZW19Lm1oMi1te21hcmdpbi1sZWZ0Oi41cmVtO21hcmdpbi1yaWdodDouNXJlbX0ubWgzLW17bWFyZ2luLWxlZnQ6MXJlbTttYXJnaW4tcmlnaHQ6MXJlbX0ubWg0LW17bWFyZ2luLWxlZnQ6MnJlbTttYXJnaW4tcmlnaHQ6MnJlbX0ubWg1LW17bWFyZ2luLWxlZnQ6NHJlbTttYXJnaW4tcmlnaHQ6NHJlbX0ubWg2LW17bWFyZ2luLWxlZnQ6OHJlbTttYXJnaW4tcmlnaHQ6OHJlbX0ubWg3LW17bWFyZ2luLWxlZnQ6MTZyZW07bWFyZ2luLXJpZ2h0OjE2cmVtfS5uYTEtbXttYXJnaW46LS4yNXJlbX0ubmEyLW17bWFyZ2luOi0uNXJlbX0ubmEzLW17bWFyZ2luOi0xcmVtfS5uYTQtbXttYXJnaW46LTJyZW19Lm5hNS1te21hcmdpbjotNHJlbX0ubmE2LW17bWFyZ2luOi04cmVtfS5uYTctbXttYXJnaW46LTE2cmVtfS5ubDEtbXttYXJnaW4tbGVmdDotLjI1cmVtfS5ubDItbXttYXJnaW4tbGVmdDotLjVyZW19Lm5sMy1te21hcmdpbi1sZWZ0Oi0xcmVtfS5ubDQtbXttYXJnaW4tbGVmdDotMnJlbX0ubmw1LW17bWFyZ2luLWxlZnQ6LTRyZW19Lm5sNi1te21hcmdpbi1sZWZ0Oi04cmVtfS5ubDctbXttYXJnaW4tbGVmdDotMTZyZW19Lm5yMS1te21hcmdpbi1yaWdodDotLjI1cmVtfS5ucjItbXttYXJnaW4tcmlnaHQ6LS41cmVtfS5ucjMtbXttYXJnaW4tcmlnaHQ6LTFyZW19Lm5yNC1te21hcmdpbi1yaWdodDotMnJlbX0ubnI1LW17bWFyZ2luLXJpZ2h0Oi00cmVtfS5ucjYtbXttYXJnaW4tcmlnaHQ6LThyZW19Lm5yNy1te21hcmdpbi1yaWdodDotMTZyZW19Lm5iMS1te21hcmdpbi1ib3R0b206LS4yNXJlbX0ubmIyLW17bWFyZ2luLWJvdHRvbTotLjVyZW19Lm5iMy1te21hcmdpbi1ib3R0b206LTFyZW19Lm5iNC1te21hcmdpbi1ib3R0b206LTJyZW19Lm5iNS1te21hcmdpbi1ib3R0b206LTRyZW19Lm5iNi1te21hcmdpbi1ib3R0b206LThyZW19Lm5iNy1te21hcmdpbi1ib3R0b206LTE2cmVtfS5udDEtbXttYXJnaW4tdG9wOi0uMjVyZW19Lm50Mi1te21hcmdpbi10b3A6LS41cmVtfS5udDMtbXttYXJnaW4tdG9wOi0xcmVtfS5udDQtbXttYXJnaW4tdG9wOi0ycmVtfS5udDUtbXttYXJnaW4tdG9wOi00cmVtfS5udDYtbXttYXJnaW4tdG9wOi04cmVtfS5udDctbXttYXJnaW4tdG9wOi0xNnJlbX0uc3RyaWtlLW17dGV4dC1kZWNvcmF0aW9uOmxpbmUtdGhyb3VnaH0udW5kZXJsaW5lLW17dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX0ubm8tdW5kZXJsaW5lLW17dGV4dC1kZWNvcmF0aW9uOm5vbmV9LnRsLW17dGV4dC1hbGlnbjpsZWZ0fS50ci1te3RleHQtYWxpZ246cmlnaHR9LnRjLW17dGV4dC1hbGlnbjpjZW50ZXJ9LnRqLW17dGV4dC1hbGlnbjpqdXN0aWZ5fS50dGMtbXt0ZXh0LXRyYW5zZm9ybTpjYXBpdGFsaXplfS50dGwtbXt0ZXh0LXRyYW5zZm9ybTpsb3dlcmNhc2V9LnR0dS1te3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX0udHRuLW17dGV4dC10cmFuc2Zvcm06bm9uZX0uZi02LW0sLmYtaGVhZGxpbmUtbXtmb250LXNpemU6NnJlbX0uZi01LW0sLmYtc3ViaGVhZGxpbmUtbXtmb250LXNpemU6NXJlbX0uZjEtbXtmb250LXNpemU6M3JlbX0uZjItbXtmb250LXNpemU6Mi4yNXJlbX0uZjMtbXtmb250LXNpemU6MS41cmVtfS5mNC1te2ZvbnQtc2l6ZToxLjI1cmVtfS5mNS1te2ZvbnQtc2l6ZToxcmVtfS5mNi1te2ZvbnQtc2l6ZTouODc1cmVtfS5mNy1te2ZvbnQtc2l6ZTouNzVyZW19Lm1lYXN1cmUtbXttYXgtd2lkdGg6MzBlbX0ubWVhc3VyZS13aWRlLW17bWF4LXdpZHRoOjM0ZW19Lm1lYXN1cmUtbmFycm93LW17bWF4LXdpZHRoOjIwZW19LmluZGVudC1te3RleHQtaW5kZW50OjFlbTttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTowfS5zbWFsbC1jYXBzLW17Zm9udC12YXJpYW50OnNtYWxsLWNhcHN9LnRydW5jYXRlLW17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfS5jZW50ZXItbXttYXJnaW4tbGVmdDphdXRvfS5jZW50ZXItbSwubXItYXV0by1te21hcmdpbi1yaWdodDphdXRvfS5tbC1hdXRvLW17bWFyZ2luLWxlZnQ6YXV0b30uY2xpcC1te3Bvc2l0aW9uOmZpeGVkIWltcG9ydGFudDtwb3NpdGlvbjphYnNvbHV0ZSFpbXBvcnRhbnQ7Y2xpcDpyZWN0KDFweCAxcHggMXB4IDFweCk7Y2xpcDpyZWN0KDFweCwxcHgsMXB4LDFweCl9LndzLW5vcm1hbC1te3doaXRlLXNwYWNlOm5vcm1hbH0ubm93cmFwLW17d2hpdGUtc3BhY2U6bm93cmFwfS5wcmUtbXt3aGl0ZS1zcGFjZTpwcmV9LnYtYmFzZS1te3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lfS52LW1pZC1te3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0udi10b3AtbXt2ZXJ0aWNhbC1hbGlnbjp0b3B9LnYtYnRtLW17dmVydGljYWwtYWxpZ246Ym90dG9tfX1AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOjYwZW0pey5hc3BlY3QtcmF0aW8tbHtoZWlnaHQ6MDtwb3NpdGlvbjpyZWxhdGl2ZX0uYXNwZWN0LXJhdGlvLS0xNng5LWx7cGFkZGluZy1ib3R0b206NTYuMjUlfS5hc3BlY3QtcmF0aW8tLTl4MTYtbHtwYWRkaW5nLWJvdHRvbToxNzcuNzclfS5hc3BlY3QtcmF0aW8tLTR4My1se3BhZGRpbmctYm90dG9tOjc1JX0uYXNwZWN0LXJhdGlvLS0zeDQtbHtwYWRkaW5nLWJvdHRvbToxMzMuMzMlfS5hc3BlY3QtcmF0aW8tLTZ4NC1se3BhZGRpbmctYm90dG9tOjY2LjYlfS5hc3BlY3QtcmF0aW8tLTR4Ni1se3BhZGRpbmctYm90dG9tOjE1MCV9LmFzcGVjdC1yYXRpby0tOHg1LWx7cGFkZGluZy1ib3R0b206NjIuNSV9LmFzcGVjdC1yYXRpby0tNXg4LWx7cGFkZGluZy1ib3R0b206MTYwJX0uYXNwZWN0LXJhdGlvLS03eDUtbHtwYWRkaW5nLWJvdHRvbTo3MS40MiV9LmFzcGVjdC1yYXRpby0tNXg3LWx7cGFkZGluZy1ib3R0b206MTQwJX0uYXNwZWN0LXJhdGlvLS0xeDEtbHtwYWRkaW5nLWJvdHRvbToxMDAlfS5hc3BlY3QtcmF0aW8tLW9iamVjdC1se3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO3JpZ2h0OjA7Ym90dG9tOjA7bGVmdDowO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7ei1pbmRleDoxMDB9LmNvdmVyLWx7YmFja2dyb3VuZC1zaXplOmNvdmVyIWltcG9ydGFudH0uY29udGFpbi1se2JhY2tncm91bmQtc2l6ZTpjb250YWluIWltcG9ydGFudH0uYmctY2VudGVyLWx7YmFja2dyb3VuZC1wb3NpdGlvbjo1MCV9LmJnLWNlbnRlci1sLC5iZy10b3AtbHtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXR9LmJnLXRvcC1se2JhY2tncm91bmQtcG9zaXRpb246dG9wfS5iZy1yaWdodC1se2JhY2tncm91bmQtcG9zaXRpb246MTAwJX0uYmctYm90dG9tLWwsLmJnLXJpZ2h0LWx7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0fS5iZy1ib3R0b20tbHtiYWNrZ3JvdW5kLXBvc2l0aW9uOmJvdHRvbX0uYmctbGVmdC1se2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtiYWNrZ3JvdW5kLXBvc2l0aW9uOjB9Lm91dGxpbmUtbHtvdXRsaW5lOjFweCBzb2xpZH0ub3V0bGluZS10cmFuc3BhcmVudC1se291dGxpbmU6MXB4IHNvbGlkIHRyYW5zcGFyZW50fS5vdXRsaW5lLTAtbHtvdXRsaW5lOjB9LmJhLWx7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci13aWR0aDoxcHh9LmJ0LWx7Ym9yZGVyLXRvcC1zdHlsZTpzb2xpZDtib3JkZXItdG9wLXdpZHRoOjFweH0uYnItbHtib3JkZXItcmlnaHQtc3R5bGU6c29saWQ7Ym9yZGVyLXJpZ2h0LXdpZHRoOjFweH0uYmItbHtib3JkZXItYm90dG9tLXN0eWxlOnNvbGlkO2JvcmRlci1ib3R0b20td2lkdGg6MXB4fS5ibC1se2JvcmRlci1sZWZ0LXN0eWxlOnNvbGlkO2JvcmRlci1sZWZ0LXdpZHRoOjFweH0uYm4tbHtib3JkZXItc3R5bGU6bm9uZTtib3JkZXItd2lkdGg6MH0uYnIwLWx7Ym9yZGVyLXJhZGl1czowfS5icjEtbHtib3JkZXItcmFkaXVzOi4xMjVyZW19LmJyMi1se2JvcmRlci1yYWRpdXM6LjI1cmVtfS5icjMtbHtib3JkZXItcmFkaXVzOi41cmVtfS5icjQtbHtib3JkZXItcmFkaXVzOjFyZW19LmJyLTEwMC1se2JvcmRlci1yYWRpdXM6MTAwJX0uYnItcGlsbC1se2JvcmRlci1yYWRpdXM6OTk5OXB4fS5ici0tYm90dG9tLWx7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjB9LmJyLS10b3AtbHtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowfS5ici0tcmlnaHQtbCwuYnItLXRvcC1se2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MH0uYnItLXJpZ2h0LWx7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowfS5ici0tbGVmdC1se2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MH0uYi0tZG90dGVkLWx7Ym9yZGVyLXN0eWxlOmRvdHRlZH0uYi0tZGFzaGVkLWx7Ym9yZGVyLXN0eWxlOmRhc2hlZH0uYi0tc29saWQtbHtib3JkZXItc3R5bGU6c29saWR9LmItLW5vbmUtbHtib3JkZXItc3R5bGU6bm9uZX0uYncwLWx7Ym9yZGVyLXdpZHRoOjB9LmJ3MS1se2JvcmRlci13aWR0aDouMTI1cmVtfS5idzItbHtib3JkZXItd2lkdGg6LjI1cmVtfS5idzMtbHtib3JkZXItd2lkdGg6LjVyZW19LmJ3NC1se2JvcmRlci13aWR0aDoxcmVtfS5idzUtbHtib3JkZXItd2lkdGg6MnJlbX0uYnQtMC1se2JvcmRlci10b3Atd2lkdGg6MH0uYnItMC1se2JvcmRlci1yaWdodC13aWR0aDowfS5iYi0wLWx7Ym9yZGVyLWJvdHRvbS13aWR0aDowfS5ibC0wLWx7Ym9yZGVyLWxlZnQtd2lkdGg6MH0uc2hhZG93LTEtbHtib3gtc2hhZG93OjAgMCA0cHggMnB4IHJnYmEoMCwwLDAsLjIpfS5zaGFkb3ctMi1se2JveC1zaGFkb3c6MCAwIDhweCAycHggcmdiYSgwLDAsMCwuMil9LnNoYWRvdy0zLWx7Ym94LXNoYWRvdzoycHggMnB4IDRweCAycHggcmdiYSgwLDAsMCwuMil9LnNoYWRvdy00LWx7Ym94LXNoYWRvdzoycHggMnB4IDhweCAwIHJnYmEoMCwwLDAsLjIpfS5zaGFkb3ctNS1se2JveC1zaGFkb3c6NHB4IDRweCA4cHggMCByZ2JhKDAsMCwwLC4yKX0udG9wLTAtbHt0b3A6MH0ubGVmdC0wLWx7bGVmdDowfS5yaWdodC0wLWx7cmlnaHQ6MH0uYm90dG9tLTAtbHtib3R0b206MH0udG9wLTEtbHt0b3A6MXJlbX0ubGVmdC0xLWx7bGVmdDoxcmVtfS5yaWdodC0xLWx7cmlnaHQ6MXJlbX0uYm90dG9tLTEtbHtib3R0b206MXJlbX0udG9wLTItbHt0b3A6MnJlbX0ubGVmdC0yLWx7bGVmdDoycmVtfS5yaWdodC0yLWx7cmlnaHQ6MnJlbX0uYm90dG9tLTItbHtib3R0b206MnJlbX0udG9wLS0xLWx7dG9wOi0xcmVtfS5yaWdodC0tMS1se3JpZ2h0Oi0xcmVtfS5ib3R0b20tLTEtbHtib3R0b206LTFyZW19LmxlZnQtLTEtbHtsZWZ0Oi0xcmVtfS50b3AtLTItbHt0b3A6LTJyZW19LnJpZ2h0LS0yLWx7cmlnaHQ6LTJyZW19LmJvdHRvbS0tMi1se2JvdHRvbTotMnJlbX0ubGVmdC0tMi1se2xlZnQ6LTJyZW19LmFic29sdXRlLS1maWxsLWx7dG9wOjA7cmlnaHQ6MDtib3R0b206MDtsZWZ0OjB9LmNsLWx7Y2xlYXI6bGVmdH0uY3ItbHtjbGVhcjpyaWdodH0uY2ItbHtjbGVhcjpib3RofS5jbi1se2NsZWFyOm5vbmV9LmRuLWx7ZGlzcGxheTpub25lfS5kaS1se2Rpc3BsYXk6aW5saW5lfS5kYi1se2Rpc3BsYXk6YmxvY2t9LmRpYi1se2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5kaXQtbHtkaXNwbGF5OmlubGluZS10YWJsZX0uZHQtbHtkaXNwbGF5OnRhYmxlfS5kdGMtbHtkaXNwbGF5OnRhYmxlLWNlbGx9LmR0LXJvdy1se2Rpc3BsYXk6dGFibGUtcm93fS5kdC1yb3ctZ3JvdXAtbHtkaXNwbGF5OnRhYmxlLXJvdy1ncm91cH0uZHQtY29sdW1uLWx7ZGlzcGxheTp0YWJsZS1jb2x1bW59LmR0LWNvbHVtbi1ncm91cC1se2Rpc3BsYXk6dGFibGUtY29sdW1uLWdyb3VwfS5kdC0tZml4ZWQtbHt0YWJsZS1sYXlvdXQ6Zml4ZWQ7d2lkdGg6MTAwJX0uZmxleC1se2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXh9LmlubGluZS1mbGV4LWx7ZGlzcGxheTotd2Via2l0LWlubGluZS1ib3g7ZGlzcGxheTotbXMtaW5saW5lLWZsZXhib3g7ZGlzcGxheTppbmxpbmUtZmxleH0uZmxleC1hdXRvLWx7LXdlYmtpdC1ib3gtZmxleDoxOy1tcy1mbGV4OjEgMSBhdXRvO2ZsZXg6MSAxIGF1dG87bWluLXdpZHRoOjA7bWluLWhlaWdodDowfS5mbGV4LW5vbmUtbHstd2Via2l0LWJveC1mbGV4OjA7LW1zLWZsZXg6bm9uZTtmbGV4Om5vbmV9LmZsZXgtY29sdW1uLWx7LXdlYmtpdC1ib3gtb3JpZW50OnZlcnRpY2FsOy1tcy1mbGV4LWRpcmVjdGlvbjpjb2x1bW47ZmxleC1kaXJlY3Rpb246Y29sdW1ufS5mbGV4LWNvbHVtbi1sLC5mbGV4LXJvdy1sey13ZWJraXQtYm94LWRpcmVjdGlvbjpub3JtYWx9LmZsZXgtcm93LWx7LXdlYmtpdC1ib3gtb3JpZW50Omhvcml6b250YWw7LW1zLWZsZXgtZGlyZWN0aW9uOnJvdztmbGV4LWRpcmVjdGlvbjpyb3d9LmZsZXgtd3JhcC1sey1tcy1mbGV4LXdyYXA6d3JhcDtmbGV4LXdyYXA6d3JhcH0uZmxleC1ub3dyYXAtbHstbXMtZmxleC13cmFwOm5vd3JhcDtmbGV4LXdyYXA6bm93cmFwfS5mbGV4LXdyYXAtcmV2ZXJzZS1sey1tcy1mbGV4LXdyYXA6d3JhcC1yZXZlcnNlO2ZsZXgtd3JhcDp3cmFwLXJldmVyc2V9LmZsZXgtY29sdW1uLXJldmVyc2UtbHstd2Via2l0LWJveC1vcmllbnQ6dmVydGljYWw7LXdlYmtpdC1ib3gtZGlyZWN0aW9uOnJldmVyc2U7LW1zLWZsZXgtZGlyZWN0aW9uOmNvbHVtbi1yZXZlcnNlO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbi1yZXZlcnNlfS5mbGV4LXJvdy1yZXZlcnNlLWx7LXdlYmtpdC1ib3gtb3JpZW50Omhvcml6b250YWw7LXdlYmtpdC1ib3gtZGlyZWN0aW9uOnJldmVyc2U7LW1zLWZsZXgtZGlyZWN0aW9uOnJvdy1yZXZlcnNlO2ZsZXgtZGlyZWN0aW9uOnJvdy1yZXZlcnNlfS5pdGVtcy1zdGFydC1sey13ZWJraXQtYm94LWFsaWduOnN0YXJ0Oy1tcy1mbGV4LWFsaWduOnN0YXJ0O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnR9Lml0ZW1zLWVuZC1sey13ZWJraXQtYm94LWFsaWduOmVuZDstbXMtZmxleC1hbGlnbjplbmQ7YWxpZ24taXRlbXM6ZmxleC1lbmR9Lml0ZW1zLWNlbnRlci1sey13ZWJraXQtYm94LWFsaWduOmNlbnRlcjstbXMtZmxleC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyfS5pdGVtcy1iYXNlbGluZS1sey13ZWJraXQtYm94LWFsaWduOmJhc2VsaW5lOy1tcy1mbGV4LWFsaWduOmJhc2VsaW5lO2FsaWduLWl0ZW1zOmJhc2VsaW5lfS5pdGVtcy1zdHJldGNoLWx7LXdlYmtpdC1ib3gtYWxpZ246c3RyZXRjaDstbXMtZmxleC1hbGlnbjpzdHJldGNoO2FsaWduLWl0ZW1zOnN0cmV0Y2h9LnNlbGYtc3RhcnQtbHstbXMtZmxleC1pdGVtLWFsaWduOnN0YXJ0O2FsaWduLXNlbGY6ZmxleC1zdGFydH0uc2VsZi1lbmQtbHstbXMtZmxleC1pdGVtLWFsaWduOmVuZDthbGlnbi1zZWxmOmZsZXgtZW5kfS5zZWxmLWNlbnRlci1sey1tcy1mbGV4LWl0ZW0tYWxpZ246Y2VudGVyOy1tcy1ncmlkLXJvdy1hbGlnbjpjZW50ZXI7YWxpZ24tc2VsZjpjZW50ZXJ9LnNlbGYtYmFzZWxpbmUtbHstbXMtZmxleC1pdGVtLWFsaWduOmJhc2VsaW5lO2FsaWduLXNlbGY6YmFzZWxpbmV9LnNlbGYtc3RyZXRjaC1sey1tcy1mbGV4LWl0ZW0tYWxpZ246c3RyZXRjaDstbXMtZ3JpZC1yb3ctYWxpZ246c3RyZXRjaDthbGlnbi1zZWxmOnN0cmV0Y2h9Lmp1c3RpZnktc3RhcnQtbHstd2Via2l0LWJveC1wYWNrOnN0YXJ0Oy1tcy1mbGV4LXBhY2s6c3RhcnQ7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9Lmp1c3RpZnktZW5kLWx7LXdlYmtpdC1ib3gtcGFjazplbmQ7LW1zLWZsZXgtcGFjazplbmQ7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS5qdXN0aWZ5LWNlbnRlci1sey13ZWJraXQtYm94LXBhY2s6Y2VudGVyOy1tcy1mbGV4LXBhY2s6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXJ9Lmp1c3RpZnktYmV0d2Vlbi1sey13ZWJraXQtYm94LXBhY2s6anVzdGlmeTstbXMtZmxleC1wYWNrOmp1c3RpZnk7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW59Lmp1c3RpZnktYXJvdW5kLWx7LW1zLWZsZXgtcGFjazpkaXN0cmlidXRlO2p1c3RpZnktY29udGVudDpzcGFjZS1hcm91bmR9LmNvbnRlbnQtc3RhcnQtbHstbXMtZmxleC1saW5lLXBhY2s6c3RhcnQ7YWxpZ24tY29udGVudDpmbGV4LXN0YXJ0fS5jb250ZW50LWVuZC1sey1tcy1mbGV4LWxpbmUtcGFjazplbmQ7YWxpZ24tY29udGVudDpmbGV4LWVuZH0uY29udGVudC1jZW50ZXItbHstbXMtZmxleC1saW5lLXBhY2s6Y2VudGVyO2FsaWduLWNvbnRlbnQ6Y2VudGVyfS5jb250ZW50LWJldHdlZW4tbHstbXMtZmxleC1saW5lLXBhY2s6anVzdGlmeTthbGlnbi1jb250ZW50OnNwYWNlLWJldHdlZW59LmNvbnRlbnQtYXJvdW5kLWx7LW1zLWZsZXgtbGluZS1wYWNrOmRpc3RyaWJ1dGU7YWxpZ24tY29udGVudDpzcGFjZS1hcm91bmR9LmNvbnRlbnQtc3RyZXRjaC1sey1tcy1mbGV4LWxpbmUtcGFjazpzdHJldGNoO2FsaWduLWNvbnRlbnQ6c3RyZXRjaH0ub3JkZXItMC1sey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6MTstbXMtZmxleC1vcmRlcjowO29yZGVyOjB9Lm9yZGVyLTEtbHstd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjI7LW1zLWZsZXgtb3JkZXI6MTtvcmRlcjoxfS5vcmRlci0yLWx7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDozOy1tcy1mbGV4LW9yZGVyOjI7b3JkZXI6Mn0ub3JkZXItMy1sey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6NDstbXMtZmxleC1vcmRlcjozO29yZGVyOjN9Lm9yZGVyLTQtbHstd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjU7LW1zLWZsZXgtb3JkZXI6NDtvcmRlcjo0fS5vcmRlci01LWx7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDo2Oy1tcy1mbGV4LW9yZGVyOjU7b3JkZXI6NX0ub3JkZXItNi1sey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6NzstbXMtZmxleC1vcmRlcjo2O29yZGVyOjZ9Lm9yZGVyLTctbHstd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjg7LW1zLWZsZXgtb3JkZXI6NztvcmRlcjo3fS5vcmRlci04LWx7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDo5Oy1tcy1mbGV4LW9yZGVyOjg7b3JkZXI6OH0ub3JkZXItbGFzdC1sey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6MTAwMDAwOy1tcy1mbGV4LW9yZGVyOjk5OTk5O29yZGVyOjk5OTk5fS5mbGV4LWdyb3ctMC1sey13ZWJraXQtYm94LWZsZXg6MDstbXMtZmxleC1wb3NpdGl2ZTowO2ZsZXgtZ3JvdzowfS5mbGV4LWdyb3ctMS1sey13ZWJraXQtYm94LWZsZXg6MTstbXMtZmxleC1wb3NpdGl2ZToxO2ZsZXgtZ3JvdzoxfS5mbGV4LXNocmluay0wLWx7LW1zLWZsZXgtbmVnYXRpdmU6MDtmbGV4LXNocmluazowfS5mbGV4LXNocmluay0xLWx7LW1zLWZsZXgtbmVnYXRpdmU6MTtmbGV4LXNocmluazoxfS5mbC1se2Zsb2F0OmxlZnR9LmZsLWwsLmZyLWx7ZGlzcGxheTppbmxpbmV9LmZyLWx7ZmxvYXQ6cmlnaHR9LmZuLWx7ZmxvYXQ6bm9uZX0uaS1se2ZvbnQtc3R5bGU6aXRhbGljfS5mcy1ub3JtYWwtbHtmb250LXN0eWxlOm5vcm1hbH0ubm9ybWFsLWx7Zm9udC13ZWlnaHQ6NDAwfS5iLWx7Zm9udC13ZWlnaHQ6NzAwfS5mdzEtbHtmb250LXdlaWdodDoxMDB9LmZ3Mi1se2ZvbnQtd2VpZ2h0OjIwMH0uZnczLWx7Zm9udC13ZWlnaHQ6MzAwfS5mdzQtbHtmb250LXdlaWdodDo0MDB9LmZ3NS1se2ZvbnQtd2VpZ2h0OjUwMH0uZnc2LWx7Zm9udC13ZWlnaHQ6NjAwfS5mdzctbHtmb250LXdlaWdodDo3MDB9LmZ3OC1se2ZvbnQtd2VpZ2h0OjgwMH0uZnc5LWx7Zm9udC13ZWlnaHQ6OTAwfS5oMS1se2hlaWdodDoxcmVtfS5oMi1se2hlaWdodDoycmVtfS5oMy1se2hlaWdodDo0cmVtfS5oNC1se2hlaWdodDo4cmVtfS5oNS1se2hlaWdodDoxNnJlbX0uaC0yNS1se2hlaWdodDoyNSV9LmgtNTAtbHtoZWlnaHQ6NTAlfS5oLTc1LWx7aGVpZ2h0Ojc1JX0uaC0xMDAtbHtoZWlnaHQ6MTAwJX0ubWluLWgtMTAwLWx7bWluLWhlaWdodDoxMDAlfS52aC0yNS1se2hlaWdodDoyNXZofS52aC01MC1se2hlaWdodDo1MHZofS52aC03NS1se2hlaWdodDo3NXZofS52aC0xMDAtbHtoZWlnaHQ6MTAwdmh9Lm1pbi12aC0xMDAtbHttaW4taGVpZ2h0OjEwMHZofS5oLWF1dG8tbHtoZWlnaHQ6YXV0b30uaC1pbmhlcml0LWx7aGVpZ2h0OmluaGVyaXR9LnRyYWNrZWQtbHtsZXR0ZXItc3BhY2luZzouMWVtfS50cmFja2VkLXRpZ2h0LWx7bGV0dGVyLXNwYWNpbmc6LS4wNWVtfS50cmFja2VkLW1lZ2EtbHtsZXR0ZXItc3BhY2luZzouMjVlbX0ubGgtc29saWQtbHtsaW5lLWhlaWdodDoxfS5saC10aXRsZS1se2xpbmUtaGVpZ2h0OjEuMjV9LmxoLWNvcHktbHtsaW5lLWhlaWdodDoxLjV9Lm13LTEwMC1se21heC13aWR0aDoxMDAlfS5tdzEtbHttYXgtd2lkdGg6MXJlbX0ubXcyLWx7bWF4LXdpZHRoOjJyZW19Lm13My1se21heC13aWR0aDo0cmVtfS5tdzQtbHttYXgtd2lkdGg6OHJlbX0ubXc1LWx7bWF4LXdpZHRoOjE2cmVtfS5tdzYtbHttYXgtd2lkdGg6MzJyZW19Lm13Ny1se21heC13aWR0aDo0OHJlbX0ubXc4LWx7bWF4LXdpZHRoOjY0cmVtfS5tdzktbHttYXgtd2lkdGg6OTZyZW19Lm13LW5vbmUtbHttYXgtd2lkdGg6bm9uZX0udzEtbHt3aWR0aDoxcmVtfS53Mi1se3dpZHRoOjJyZW19LnczLWx7d2lkdGg6NHJlbX0udzQtbHt3aWR0aDo4cmVtfS53NS1se3dpZHRoOjE2cmVtfS53LTEwLWx7d2lkdGg6MTAlfS53LTIwLWx7d2lkdGg6MjAlfS53LTI1LWx7d2lkdGg6MjUlfS53LTMwLWx7d2lkdGg6MzAlfS53LTMzLWx7d2lkdGg6MzMlfS53LTM0LWx7d2lkdGg6MzQlfS53LTQwLWx7d2lkdGg6NDAlfS53LTUwLWx7d2lkdGg6NTAlfS53LTYwLWx7d2lkdGg6NjAlfS53LTcwLWx7d2lkdGg6NzAlfS53LTc1LWx7d2lkdGg6NzUlfS53LTgwLWx7d2lkdGg6ODAlfS53LTkwLWx7d2lkdGg6OTAlfS53LTEwMC1se3dpZHRoOjEwMCV9LnctdGhpcmQtbHt3aWR0aDozMy4zMzMzMyV9LnctdHdvLXRoaXJkcy1se3dpZHRoOjY2LjY2NjY3JX0udy1hdXRvLWx7d2lkdGg6YXV0b30ub3ZlcmZsb3ctdmlzaWJsZS1se292ZXJmbG93OnZpc2libGV9Lm92ZXJmbG93LWhpZGRlbi1se292ZXJmbG93OmhpZGRlbn0ub3ZlcmZsb3ctc2Nyb2xsLWx7b3ZlcmZsb3c6c2Nyb2xsfS5vdmVyZmxvdy1hdXRvLWx7b3ZlcmZsb3c6YXV0b30ub3ZlcmZsb3cteC12aXNpYmxlLWx7b3ZlcmZsb3cteDp2aXNpYmxlfS5vdmVyZmxvdy14LWhpZGRlbi1se292ZXJmbG93LXg6aGlkZGVufS5vdmVyZmxvdy14LXNjcm9sbC1se292ZXJmbG93LXg6c2Nyb2xsfS5vdmVyZmxvdy14LWF1dG8tbHtvdmVyZmxvdy14OmF1dG99Lm92ZXJmbG93LXktdmlzaWJsZS1se292ZXJmbG93LXk6dmlzaWJsZX0ub3ZlcmZsb3cteS1oaWRkZW4tbHtvdmVyZmxvdy15OmhpZGRlbn0ub3ZlcmZsb3cteS1zY3JvbGwtbHtvdmVyZmxvdy15OnNjcm9sbH0ub3ZlcmZsb3cteS1hdXRvLWx7b3ZlcmZsb3cteTphdXRvfS5zdGF0aWMtbHtwb3NpdGlvbjpzdGF0aWN9LnJlbGF0aXZlLWx7cG9zaXRpb246cmVsYXRpdmV9LmFic29sdXRlLWx7cG9zaXRpb246YWJzb2x1dGV9LmZpeGVkLWx7cG9zaXRpb246Zml4ZWR9LnJvdGF0ZS00NS1sey13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyk7dHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyl9LnJvdGF0ZS05MC1sey13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSg5MGRlZyk7dHJhbnNmb3JtOnJvdGF0ZSg5MGRlZyl9LnJvdGF0ZS0xMzUtbHstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMTM1ZGVnKTt0cmFuc2Zvcm06cm90YXRlKDEzNWRlZyl9LnJvdGF0ZS0xODAtbHstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMTgwZGVnKTt0cmFuc2Zvcm06cm90YXRlKDE4MGRlZyl9LnJvdGF0ZS0yMjUtbHstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMjI1ZGVnKTt0cmFuc2Zvcm06cm90YXRlKDIyNWRlZyl9LnJvdGF0ZS0yNzAtbHstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMjcwZGVnKTt0cmFuc2Zvcm06cm90YXRlKDI3MGRlZyl9LnJvdGF0ZS0zMTUtbHstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMzE1ZGVnKTt0cmFuc2Zvcm06cm90YXRlKDMxNWRlZyl9LnBhMC1se3BhZGRpbmc6MH0ucGExLWx7cGFkZGluZzouMjVyZW19LnBhMi1se3BhZGRpbmc6LjVyZW19LnBhMy1se3BhZGRpbmc6MXJlbX0ucGE0LWx7cGFkZGluZzoycmVtfS5wYTUtbHtwYWRkaW5nOjRyZW19LnBhNi1se3BhZGRpbmc6OHJlbX0ucGE3LWx7cGFkZGluZzoxNnJlbX0ucGwwLWx7cGFkZGluZy1sZWZ0OjB9LnBsMS1se3BhZGRpbmctbGVmdDouMjVyZW19LnBsMi1se3BhZGRpbmctbGVmdDouNXJlbX0ucGwzLWx7cGFkZGluZy1sZWZ0OjFyZW19LnBsNC1se3BhZGRpbmctbGVmdDoycmVtfS5wbDUtbHtwYWRkaW5nLWxlZnQ6NHJlbX0ucGw2LWx7cGFkZGluZy1sZWZ0OjhyZW19LnBsNy1se3BhZGRpbmctbGVmdDoxNnJlbX0ucHIwLWx7cGFkZGluZy1yaWdodDowfS5wcjEtbHtwYWRkaW5nLXJpZ2h0Oi4yNXJlbX0ucHIyLWx7cGFkZGluZy1yaWdodDouNXJlbX0ucHIzLWx7cGFkZGluZy1yaWdodDoxcmVtfS5wcjQtbHtwYWRkaW5nLXJpZ2h0OjJyZW19LnByNS1se3BhZGRpbmctcmlnaHQ6NHJlbX0ucHI2LWx7cGFkZGluZy1yaWdodDo4cmVtfS5wcjctbHtwYWRkaW5nLXJpZ2h0OjE2cmVtfS5wYjAtbHtwYWRkaW5nLWJvdHRvbTowfS5wYjEtbHtwYWRkaW5nLWJvdHRvbTouMjVyZW19LnBiMi1se3BhZGRpbmctYm90dG9tOi41cmVtfS5wYjMtbHtwYWRkaW5nLWJvdHRvbToxcmVtfS5wYjQtbHtwYWRkaW5nLWJvdHRvbToycmVtfS5wYjUtbHtwYWRkaW5nLWJvdHRvbTo0cmVtfS5wYjYtbHtwYWRkaW5nLWJvdHRvbTo4cmVtfS5wYjctbHtwYWRkaW5nLWJvdHRvbToxNnJlbX0ucHQwLWx7cGFkZGluZy10b3A6MH0ucHQxLWx7cGFkZGluZy10b3A6LjI1cmVtfS5wdDItbHtwYWRkaW5nLXRvcDouNXJlbX0ucHQzLWx7cGFkZGluZy10b3A6MXJlbX0ucHQ0LWx7cGFkZGluZy10b3A6MnJlbX0ucHQ1LWx7cGFkZGluZy10b3A6NHJlbX0ucHQ2LWx7cGFkZGluZy10b3A6OHJlbX0ucHQ3LWx7cGFkZGluZy10b3A6MTZyZW19LnB2MC1se3BhZGRpbmctdG9wOjA7cGFkZGluZy1ib3R0b206MH0ucHYxLWx7cGFkZGluZy10b3A6LjI1cmVtO3BhZGRpbmctYm90dG9tOi4yNXJlbX0ucHYyLWx7cGFkZGluZy10b3A6LjVyZW07cGFkZGluZy1ib3R0b206LjVyZW19LnB2My1se3BhZGRpbmctdG9wOjFyZW07cGFkZGluZy1ib3R0b206MXJlbX0ucHY0LWx7cGFkZGluZy10b3A6MnJlbTtwYWRkaW5nLWJvdHRvbToycmVtfS5wdjUtbHtwYWRkaW5nLXRvcDo0cmVtO3BhZGRpbmctYm90dG9tOjRyZW19LnB2Ni1se3BhZGRpbmctdG9wOjhyZW07cGFkZGluZy1ib3R0b206OHJlbX0ucHY3LWx7cGFkZGluZy10b3A6MTZyZW07cGFkZGluZy1ib3R0b206MTZyZW19LnBoMC1se3BhZGRpbmctbGVmdDowO3BhZGRpbmctcmlnaHQ6MH0ucGgxLWx7cGFkZGluZy1sZWZ0Oi4yNXJlbTtwYWRkaW5nLXJpZ2h0Oi4yNXJlbX0ucGgyLWx7cGFkZGluZy1sZWZ0Oi41cmVtO3BhZGRpbmctcmlnaHQ6LjVyZW19LnBoMy1se3BhZGRpbmctbGVmdDoxcmVtO3BhZGRpbmctcmlnaHQ6MXJlbX0ucGg0LWx7cGFkZGluZy1sZWZ0OjJyZW07cGFkZGluZy1yaWdodDoycmVtfS5waDUtbHtwYWRkaW5nLWxlZnQ6NHJlbTtwYWRkaW5nLXJpZ2h0OjRyZW19LnBoNi1se3BhZGRpbmctbGVmdDo4cmVtO3BhZGRpbmctcmlnaHQ6OHJlbX0ucGg3LWx7cGFkZGluZy1sZWZ0OjE2cmVtO3BhZGRpbmctcmlnaHQ6MTZyZW19Lm1hMC1se21hcmdpbjowfS5tYTEtbHttYXJnaW46LjI1cmVtfS5tYTItbHttYXJnaW46LjVyZW19Lm1hMy1se21hcmdpbjoxcmVtfS5tYTQtbHttYXJnaW46MnJlbX0ubWE1LWx7bWFyZ2luOjRyZW19Lm1hNi1se21hcmdpbjo4cmVtfS5tYTctbHttYXJnaW46MTZyZW19Lm1sMC1se21hcmdpbi1sZWZ0OjB9Lm1sMS1se21hcmdpbi1sZWZ0Oi4yNXJlbX0ubWwyLWx7bWFyZ2luLWxlZnQ6LjVyZW19Lm1sMy1se21hcmdpbi1sZWZ0OjFyZW19Lm1sNC1se21hcmdpbi1sZWZ0OjJyZW19Lm1sNS1se21hcmdpbi1sZWZ0OjRyZW19Lm1sNi1se21hcmdpbi1sZWZ0OjhyZW19Lm1sNy1se21hcmdpbi1sZWZ0OjE2cmVtfS5tcjAtbHttYXJnaW4tcmlnaHQ6MH0ubXIxLWx7bWFyZ2luLXJpZ2h0Oi4yNXJlbX0ubXIyLWx7bWFyZ2luLXJpZ2h0Oi41cmVtfS5tcjMtbHttYXJnaW4tcmlnaHQ6MXJlbX0ubXI0LWx7bWFyZ2luLXJpZ2h0OjJyZW19Lm1yNS1se21hcmdpbi1yaWdodDo0cmVtfS5tcjYtbHttYXJnaW4tcmlnaHQ6OHJlbX0ubXI3LWx7bWFyZ2luLXJpZ2h0OjE2cmVtfS5tYjAtbHttYXJnaW4tYm90dG9tOjB9Lm1iMS1se21hcmdpbi1ib3R0b206LjI1cmVtfS5tYjItbHttYXJnaW4tYm90dG9tOi41cmVtfS5tYjMtbHttYXJnaW4tYm90dG9tOjFyZW19Lm1iNC1se21hcmdpbi1ib3R0b206MnJlbX0ubWI1LWx7bWFyZ2luLWJvdHRvbTo0cmVtfS5tYjYtbHttYXJnaW4tYm90dG9tOjhyZW19Lm1iNy1se21hcmdpbi1ib3R0b206MTZyZW19Lm10MC1se21hcmdpbi10b3A6MH0ubXQxLWx7bWFyZ2luLXRvcDouMjVyZW19Lm10Mi1se21hcmdpbi10b3A6LjVyZW19Lm10My1se21hcmdpbi10b3A6MXJlbX0ubXQ0LWx7bWFyZ2luLXRvcDoycmVtfS5tdDUtbHttYXJnaW4tdG9wOjRyZW19Lm10Ni1se21hcmdpbi10b3A6OHJlbX0ubXQ3LWx7bWFyZ2luLXRvcDoxNnJlbX0ubXYwLWx7bWFyZ2luLXRvcDowO21hcmdpbi1ib3R0b206MH0ubXYxLWx7bWFyZ2luLXRvcDouMjVyZW07bWFyZ2luLWJvdHRvbTouMjVyZW19Lm12Mi1se21hcmdpbi10b3A6LjVyZW07bWFyZ2luLWJvdHRvbTouNXJlbX0ubXYzLWx7bWFyZ2luLXRvcDoxcmVtO21hcmdpbi1ib3R0b206MXJlbX0ubXY0LWx7bWFyZ2luLXRvcDoycmVtO21hcmdpbi1ib3R0b206MnJlbX0ubXY1LWx7bWFyZ2luLXRvcDo0cmVtO21hcmdpbi1ib3R0b206NHJlbX0ubXY2LWx7bWFyZ2luLXRvcDo4cmVtO21hcmdpbi1ib3R0b206OHJlbX0ubXY3LWx7bWFyZ2luLXRvcDoxNnJlbTttYXJnaW4tYm90dG9tOjE2cmVtfS5taDAtbHttYXJnaW4tbGVmdDowO21hcmdpbi1yaWdodDowfS5taDEtbHttYXJnaW4tbGVmdDouMjVyZW07bWFyZ2luLXJpZ2h0Oi4yNXJlbX0ubWgyLWx7bWFyZ2luLWxlZnQ6LjVyZW07bWFyZ2luLXJpZ2h0Oi41cmVtfS5taDMtbHttYXJnaW4tbGVmdDoxcmVtO21hcmdpbi1yaWdodDoxcmVtfS5taDQtbHttYXJnaW4tbGVmdDoycmVtO21hcmdpbi1yaWdodDoycmVtfS5taDUtbHttYXJnaW4tbGVmdDo0cmVtO21hcmdpbi1yaWdodDo0cmVtfS5taDYtbHttYXJnaW4tbGVmdDo4cmVtO21hcmdpbi1yaWdodDo4cmVtfS5taDctbHttYXJnaW4tbGVmdDoxNnJlbTttYXJnaW4tcmlnaHQ6MTZyZW19Lm5hMS1se21hcmdpbjotLjI1cmVtfS5uYTItbHttYXJnaW46LS41cmVtfS5uYTMtbHttYXJnaW46LTFyZW19Lm5hNC1se21hcmdpbjotMnJlbX0ubmE1LWx7bWFyZ2luOi00cmVtfS5uYTYtbHttYXJnaW46LThyZW19Lm5hNy1se21hcmdpbjotMTZyZW19Lm5sMS1se21hcmdpbi1sZWZ0Oi0uMjVyZW19Lm5sMi1se21hcmdpbi1sZWZ0Oi0uNXJlbX0ubmwzLWx7bWFyZ2luLWxlZnQ6LTFyZW19Lm5sNC1se21hcmdpbi1sZWZ0Oi0ycmVtfS5ubDUtbHttYXJnaW4tbGVmdDotNHJlbX0ubmw2LWx7bWFyZ2luLWxlZnQ6LThyZW19Lm5sNy1se21hcmdpbi1sZWZ0Oi0xNnJlbX0ubnIxLWx7bWFyZ2luLXJpZ2h0Oi0uMjVyZW19Lm5yMi1se21hcmdpbi1yaWdodDotLjVyZW19Lm5yMy1se21hcmdpbi1yaWdodDotMXJlbX0ubnI0LWx7bWFyZ2luLXJpZ2h0Oi0ycmVtfS5ucjUtbHttYXJnaW4tcmlnaHQ6LTRyZW19Lm5yNi1se21hcmdpbi1yaWdodDotOHJlbX0ubnI3LWx7bWFyZ2luLXJpZ2h0Oi0xNnJlbX0ubmIxLWx7bWFyZ2luLWJvdHRvbTotLjI1cmVtfS5uYjItbHttYXJnaW4tYm90dG9tOi0uNXJlbX0ubmIzLWx7bWFyZ2luLWJvdHRvbTotMXJlbX0ubmI0LWx7bWFyZ2luLWJvdHRvbTotMnJlbX0ubmI1LWx7bWFyZ2luLWJvdHRvbTotNHJlbX0ubmI2LWx7bWFyZ2luLWJvdHRvbTotOHJlbX0ubmI3LWx7bWFyZ2luLWJvdHRvbTotMTZyZW19Lm50MS1se21hcmdpbi10b3A6LS4yNXJlbX0ubnQyLWx7bWFyZ2luLXRvcDotLjVyZW19Lm50My1se21hcmdpbi10b3A6LTFyZW19Lm50NC1se21hcmdpbi10b3A6LTJyZW19Lm50NS1se21hcmdpbi10b3A6LTRyZW19Lm50Ni1se21hcmdpbi10b3A6LThyZW19Lm50Ny1se21hcmdpbi10b3A6LTE2cmVtfS5zdHJpa2UtbHt0ZXh0LWRlY29yYXRpb246bGluZS10aHJvdWdofS51bmRlcmxpbmUtbHt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfS5uby11bmRlcmxpbmUtbHt0ZXh0LWRlY29yYXRpb246bm9uZX0udGwtbHt0ZXh0LWFsaWduOmxlZnR9LnRyLWx7dGV4dC1hbGlnbjpyaWdodH0udGMtbHt0ZXh0LWFsaWduOmNlbnRlcn0udGotbHt0ZXh0LWFsaWduOmp1c3RpZnl9LnR0Yy1se3RleHQtdHJhbnNmb3JtOmNhcGl0YWxpemV9LnR0bC1se3RleHQtdHJhbnNmb3JtOmxvd2VyY2FzZX0udHR1LWx7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfS50dG4tbHt0ZXh0LXRyYW5zZm9ybTpub25lfS5mLTYtbCwuZi1oZWFkbGluZS1se2ZvbnQtc2l6ZTo2cmVtfS5mLTUtbCwuZi1zdWJoZWFkbGluZS1se2ZvbnQtc2l6ZTo1cmVtfS5mMS1se2ZvbnQtc2l6ZTozcmVtfS5mMi1se2ZvbnQtc2l6ZToyLjI1cmVtfS5mMy1se2ZvbnQtc2l6ZToxLjVyZW19LmY0LWx7Zm9udC1zaXplOjEuMjVyZW19LmY1LWx7Zm9udC1zaXplOjFyZW19LmY2LWx7Zm9udC1zaXplOi44NzVyZW19LmY3LWx7Zm9udC1zaXplOi43NXJlbX0ubWVhc3VyZS1se21heC13aWR0aDozMGVtfS5tZWFzdXJlLXdpZGUtbHttYXgtd2lkdGg6MzRlbX0ubWVhc3VyZS1uYXJyb3ctbHttYXgtd2lkdGg6MjBlbX0uaW5kZW50LWx7dGV4dC1pbmRlbnQ6MWVtO21hcmdpbi10b3A6MDttYXJnaW4tYm90dG9tOjB9LnNtYWxsLWNhcHMtbHtmb250LXZhcmlhbnQ6c21hbGwtY2Fwc30udHJ1bmNhdGUtbHt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9LmNlbnRlci1se21hcmdpbi1sZWZ0OmF1dG99LmNlbnRlci1sLC5tci1hdXRvLWx7bWFyZ2luLXJpZ2h0OmF1dG99Lm1sLWF1dG8tbHttYXJnaW4tbGVmdDphdXRvfS5jbGlwLWx7cG9zaXRpb246Zml4ZWQhaW1wb3J0YW50O3Bvc2l0aW9uOmFic29sdXRlIWltcG9ydGFudDtjbGlwOnJlY3QoMXB4IDFweCAxcHggMXB4KTtjbGlwOnJlY3QoMXB4LDFweCwxcHgsMXB4KX0ud3Mtbm9ybWFsLWx7d2hpdGUtc3BhY2U6bm9ybWFsfS5ub3dyYXAtbHt3aGl0ZS1zcGFjZTpub3dyYXB9LnByZS1se3doaXRlLXNwYWNlOnByZX0udi1iYXNlLWx7dmVydGljYWwtYWxpZ246YmFzZWxpbmV9LnYtbWlkLWx7dmVydGljYWwtYWxpZ246bWlkZGxlfS52LXRvcC1se3ZlcnRpY2FsLWFsaWduOnRvcH0udi1idG0tbHt2ZXJ0aWNhbC1hbGlnbjpib3R0b219fVxuXG4iLCJkaXYudGFnc2lucHV0e2JvcmRlcjoxcHggc29saWQgI0NDQztiYWNrZ3JvdW5kOiNGRkY7cGFkZGluZzo1cHg7d2lkdGg6MzAwcHg7aGVpZ2h0OjEwMHB4O292ZXJmbG93LXk6YXV0b31kaXYudGFnc2lucHV0IHNwYW4udGFne2JvcmRlcjoxcHggc29saWQgI2E1ZDI0YTstbW96LWJvcmRlci1yYWRpdXM6MnB4Oy13ZWJraXQtYm9yZGVyLXJhZGl1czoycHg7ZGlzcGxheTpibG9jaztmbG9hdDpsZWZ0O3BhZGRpbmc6NXB4O3RleHQtZGVjb3JhdGlvbjpub25lO2JhY2tncm91bmQ6I2NkZTY5Yztjb2xvcjojNjM4NDIxO21hcmdpbi1yaWdodDo1cHg7bWFyZ2luLWJvdHRvbTo1cHg7Zm9udC1mYW1pbHk6aGVsdmV0aWNhO2ZvbnQtc2l6ZToxM3B4fWRpdi50YWdzaW5wdXQgc3Bhbi50YWcgYXtmb250LXdlaWdodDo3MDA7Y29sb3I6IzgyYWQyYjt0ZXh0LWRlY29yYXRpb246bm9uZTtmb250LXNpemU6MTFweH1kaXYudGFnc2lucHV0IGlucHV0e3dpZHRoOjgwcHg7bWFyZ2luOjAgNXB4IDVweCAwO2ZvbnQtZmFtaWx5OmhlbHZldGljYTtmb250LXNpemU6MTNweDtib3JkZXI6MXB4IHNvbGlkIHRyYW5zcGFyZW50O3BhZGRpbmc6NXB4O2JhY2tncm91bmQ6MCAwO2NvbG9yOiMwMDA7b3V0bGluZTowfWRpdi50YWdzaW5wdXQgZGl2e2Rpc3BsYXk6YmxvY2s7ZmxvYXQ6bGVmdH0udGFnc19jbGVhcntjbGVhcjpib3RoO3dpZHRoOjEwMCU7aGVpZ2h0OjB9Lm5vdF92YWxpZHtiYWNrZ3JvdW5kOiNGQkQ4REIhaW1wb3J0YW50O2NvbG9yOiM5MDExMUEhaW1wb3J0YW50fSIsInRhYmxlLmRhdGFUYWJsZSB7XG4gICAgY2xlYXI6IGJvdGg7XG4gICAgbWFyZ2luLXRvcDogNnB4ICFpbXBvcnRhbnQ7XG4gICAgbWFyZ2luLWJvdHRvbTogNnB4ICFpbXBvcnRhbnQ7XG4gICAgbWF4LXdpZHRoOiBub25lICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyLWNvbGxhcHNlOiBzZXBhcmF0ZSAhaW1wb3J0YW50XG59XG5cbnRhYmxlLmRhdGFUYWJsZSB0ZCxcbnRhYmxlLmRhdGFUYWJsZSB0aCB7XG4gICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbiAgICBib3gtc2l6aW5nOiBjb250ZW50LWJveFxufVxuXG50YWJsZS5kYXRhVGFibGUgdGQuZGF0YVRhYmxlc19lbXB0eSxcbnRhYmxlLmRhdGFUYWJsZSB0aC5kYXRhVGFibGVzX2VtcHR5IHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXJcbn1cblxudGFibGUuZGF0YVRhYmxlLm5vd3JhcCB0aCxcbnRhYmxlLmRhdGFUYWJsZS5ub3dyYXAgdGQge1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXBcbn1cblxuZGl2LmRhdGFUYWJsZXNfd3JhcHBlciBkaXYuZGF0YVRhYmxlc19sZW5ndGggbGFiZWwge1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwXG59XG5cbmRpdi5kYXRhVGFibGVzX3dyYXBwZXIgZGl2LmRhdGFUYWJsZXNfbGVuZ3RoIHNlbGVjdCB7XG4gICAgd2lkdGg6IDc1cHg7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrXG59XG5cbmRpdi5kYXRhVGFibGVzX3dyYXBwZXIgZGl2LmRhdGFUYWJsZXNfZmlsdGVyIHtcbiAgICB0ZXh0LWFsaWduOiByaWdodFxufVxuXG5kaXYuZGF0YVRhYmxlc193cmFwcGVyIGRpdi5kYXRhVGFibGVzX2ZpbHRlciBsYWJlbCB7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIHRleHQtYWxpZ246IGxlZnRcbn1cblxuZGl2LmRhdGFUYWJsZXNfd3JhcHBlciBkaXYuZGF0YVRhYmxlc19maWx0ZXIgaW5wdXQge1xuICAgIG1hcmdpbi1sZWZ0OiAwLjVlbTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgd2lkdGg6IGF1dG9cbn1cblxuZGl2LmRhdGFUYWJsZXNfd3JhcHBlciBkaXYuZGF0YVRhYmxlc19pbmZvIHtcbiAgICBwYWRkaW5nLXRvcDogMC44NWVtO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXBcbn1cblxuZGl2LmRhdGFUYWJsZXNfd3JhcHBlciBkaXYuZGF0YVRhYmxlc19wYWdpbmF0ZSB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgdGV4dC1hbGlnbjogcmlnaHRcbn1cblxuZGl2LmRhdGFUYWJsZXNfd3JhcHBlciBkaXYuZGF0YVRhYmxlc19wYWdpbmF0ZSB1bC5wYWdpbmF0aW9uIHtcbiAgICBtYXJnaW46IDJweCAwO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXBcbn1cblxuZGl2LmRhdGFUYWJsZXNfd3JhcHBlciBkaXYuZGF0YVRhYmxlc19wcm9jZXNzaW5nIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiA1MCU7XG4gICAgbGVmdDogNTAlO1xuICAgIHdpZHRoOiAyMDBweDtcbiAgICBtYXJnaW4tbGVmdDogLTEwMHB4O1xuICAgIG1hcmdpbi10b3A6IC0yNnB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBwYWRkaW5nOiAxZW0gMFxufVxuXG50YWJsZS5kYXRhVGFibGUgdGhlYWQ+dHI+dGguc29ydGluZ19hc2MsXG50YWJsZS5kYXRhVGFibGUgdGhlYWQ+dHI+dGguc29ydGluZ19kZXNjLFxudGFibGUuZGF0YVRhYmxlIHRoZWFkPnRyPnRoLnNvcnRpbmcsXG50YWJsZS5kYXRhVGFibGUgdGhlYWQ+dHI+dGQuc29ydGluZ19hc2MsXG50YWJsZS5kYXRhVGFibGUgdGhlYWQ+dHI+dGQuc29ydGluZ19kZXNjLFxudGFibGUuZGF0YVRhYmxlIHRoZWFkPnRyPnRkLnNvcnRpbmcge1xuICAgIHBhZGRpbmctcmlnaHQ6IDMwcHhcbn1cblxudGFibGUuZGF0YVRhYmxlIHRoZWFkPnRyPnRoOmFjdGl2ZSxcbnRhYmxlLmRhdGFUYWJsZSB0aGVhZD50cj50ZDphY3RpdmUge1xuICAgIG91dGxpbmU6IG5vbmVcbn1cblxudGFibGUuZGF0YVRhYmxlIHRoZWFkIC5zb3J0aW5nLFxudGFibGUuZGF0YVRhYmxlIHRoZWFkIC5zb3J0aW5nX2FzYyxcbnRhYmxlLmRhdGFUYWJsZSB0aGVhZCAuc29ydGluZ19kZXNjLFxudGFibGUuZGF0YVRhYmxlIHRoZWFkIC5zb3J0aW5nX2FzY19kaXNhYmxlZCxcbnRhYmxlLmRhdGFUYWJsZSB0aGVhZCAuc29ydGluZ19kZXNjX2Rpc2FibGVkIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlXG59XG5cbnRhYmxlLmRhdGFUYWJsZSB0aGVhZCAuc29ydGluZzpiZWZvcmUsXG50YWJsZS5kYXRhVGFibGUgdGhlYWQgLnNvcnRpbmc6YWZ0ZXIsXG50YWJsZS5kYXRhVGFibGUgdGhlYWQgLnNvcnRpbmdfYXNjOmJlZm9yZSxcbnRhYmxlLmRhdGFUYWJsZSB0aGVhZCAuc29ydGluZ19hc2M6YWZ0ZXIsXG50YWJsZS5kYXRhVGFibGUgdGhlYWQgLnNvcnRpbmdfZGVzYzpiZWZvcmUsXG50YWJsZS5kYXRhVGFibGUgdGhlYWQgLnNvcnRpbmdfZGVzYzphZnRlcixcbnRhYmxlLmRhdGFUYWJsZSB0aGVhZCAuc29ydGluZ19hc2NfZGlzYWJsZWQ6YmVmb3JlLFxudGFibGUuZGF0YVRhYmxlIHRoZWFkIC5zb3J0aW5nX2FzY19kaXNhYmxlZDphZnRlcixcbnRhYmxlLmRhdGFUYWJsZSB0aGVhZCAuc29ydGluZ19kZXNjX2Rpc2FibGVkOmJlZm9yZSxcbnRhYmxlLmRhdGFUYWJsZSB0aGVhZCAuc29ydGluZ19kZXNjX2Rpc2FibGVkOmFmdGVyIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgYm90dG9tOiAwLjllbTtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBvcGFjaXR5OiAwLjNcbn1cblxudGFibGUuZGF0YVRhYmxlIHRoZWFkIC5zb3J0aW5nOmJlZm9yZSxcbnRhYmxlLmRhdGFUYWJsZSB0aGVhZCAuc29ydGluZ19hc2M6YmVmb3JlLFxudGFibGUuZGF0YVRhYmxlIHRoZWFkIC5zb3J0aW5nX2Rlc2M6YmVmb3JlLFxudGFibGUuZGF0YVRhYmxlIHRoZWFkIC5zb3J0aW5nX2FzY19kaXNhYmxlZDpiZWZvcmUsXG50YWJsZS5kYXRhVGFibGUgdGhlYWQgLnNvcnRpbmdfZGVzY19kaXNhYmxlZDpiZWZvcmUge1xuICAgIHJpZ2h0OiAyM3B4O1xuICAgIGNvbnRlbnQ6IFwiXFwyMTkxXCI7XG4gICAgdG9wOiAycHg7XG59XG5cbnRhYmxlLmRhdGFUYWJsZSB0aGVhZCAuc29ydGluZzphZnRlcixcbnRhYmxlLmRhdGFUYWJsZSB0aGVhZCAuc29ydGluZ19hc2M6YWZ0ZXIsXG50YWJsZS5kYXRhVGFibGUgdGhlYWQgLnNvcnRpbmdfZGVzYzphZnRlcixcbnRhYmxlLmRhdGFUYWJsZSB0aGVhZCAuc29ydGluZ19hc2NfZGlzYWJsZWQ6YWZ0ZXIsXG50YWJsZS5kYXRhVGFibGUgdGhlYWQgLnNvcnRpbmdfZGVzY19kaXNhYmxlZDphZnRlciB7XG4gICAgcmlnaHQ6IDEwcHg7XG4gICAgY29udGVudDogXCJcXDIxOTNcIjtcbiAgICB0b3A6IDJweDtcbn1cblxudGFibGUuZGF0YVRhYmxlIHRoZWFkIC5zb3J0aW5nX2FzYzpiZWZvcmUsXG50YWJsZS5kYXRhVGFibGUgdGhlYWQgLnNvcnRpbmdfZGVzYzphZnRlciB7XG4gICAgb3BhY2l0eTogMVxufVxuXG50YWJsZS5kYXRhVGFibGUgdGhlYWQgLnNvcnRpbmdfYXNjX2Rpc2FibGVkOmJlZm9yZSxcbnRhYmxlLmRhdGFUYWJsZSB0aGVhZCAuc29ydGluZ19kZXNjX2Rpc2FibGVkOmFmdGVyIHtcbiAgICBvcGFjaXR5OiAwXG59XG5cbmRpdi5kYXRhVGFibGVzX3Njcm9sbEhlYWQgdGFibGUuZGF0YVRhYmxlIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnRcbn1cblxuZGl2LmRhdGFUYWJsZXNfc2Nyb2xsQm9keSB0YWJsZSB7XG4gICAgYm9yZGVyLXRvcDogbm9uZTtcbiAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7XG4gICAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50XG59XG5cbmRpdi5kYXRhVGFibGVzX3Njcm9sbEJvZHkgdGFibGUgdGhlYWQgLnNvcnRpbmc6YWZ0ZXIsXG5kaXYuZGF0YVRhYmxlc19zY3JvbGxCb2R5IHRhYmxlIHRoZWFkIC5zb3J0aW5nX2FzYzphZnRlcixcbmRpdi5kYXRhVGFibGVzX3Njcm9sbEJvZHkgdGFibGUgdGhlYWQgLnNvcnRpbmdfZGVzYzphZnRlciB7XG4gICAgZGlzcGxheTogbm9uZVxufVxuXG5kaXYuZGF0YVRhYmxlc19zY3JvbGxCb2R5IHRhYmxlIHRib2R5IHRyOmZpcnN0LWNoaWxkIHRoLFxuZGl2LmRhdGFUYWJsZXNfc2Nyb2xsQm9keSB0YWJsZSB0Ym9keSB0cjpmaXJzdC1jaGlsZCB0ZCB7XG4gICAgYm9yZGVyLXRvcDogbm9uZVxufVxuXG5kaXYuZGF0YVRhYmxlc19zY3JvbGxGb290IHRhYmxlIHtcbiAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyLXRvcDogbm9uZVxufVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkge1xuICAgIGRpdi5kYXRhVGFibGVzX3dyYXBwZXIgZGl2LmRhdGFUYWJsZXNfbGVuZ3RoLFxuICAgIGRpdi5kYXRhVGFibGVzX3dyYXBwZXIgZGl2LmRhdGFUYWJsZXNfZmlsdGVyLFxuICAgIGRpdi5kYXRhVGFibGVzX3dyYXBwZXIgZGl2LmRhdGFUYWJsZXNfaW5mbyxcbiAgICBkaXYuZGF0YVRhYmxlc193cmFwcGVyIGRpdi5kYXRhVGFibGVzX3BhZ2luYXRlIHtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyXG4gICAgfVxufVxuXG50YWJsZS5kYXRhVGFibGUudGFibGUtY29uZGVuc2VkPnRoZWFkPnRyPnRoIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAyMHB4XG59XG5cbnRhYmxlLmRhdGFUYWJsZS50YWJsZS1jb25kZW5zZWQgLnNvcnRpbmc6YWZ0ZXIsXG50YWJsZS5kYXRhVGFibGUudGFibGUtY29uZGVuc2VkIC5zb3J0aW5nX2FzYzphZnRlcixcbnRhYmxlLmRhdGFUYWJsZS50YWJsZS1jb25kZW5zZWQgLnNvcnRpbmdfZGVzYzphZnRlciB7XG4gICAgdG9wOiA2cHg7XG4gICAgcmlnaHQ6IDZweFxufVxuXG50YWJsZS50YWJsZS1ib3JkZXJlZC5kYXRhVGFibGUgdGgsXG50YWJsZS50YWJsZS1ib3JkZXJlZC5kYXRhVGFibGUgdGQge1xuICAgIGJvcmRlci1sZWZ0LXdpZHRoOiAwXG59XG5cbnRhYmxlLnRhYmxlLWJvcmRlcmVkLmRhdGFUYWJsZSB0aDpsYXN0LWNoaWxkLFxudGFibGUudGFibGUtYm9yZGVyZWQuZGF0YVRhYmxlIHRoOmxhc3QtY2hpbGQsXG50YWJsZS50YWJsZS1ib3JkZXJlZC5kYXRhVGFibGUgdGQ6bGFzdC1jaGlsZCxcbnRhYmxlLnRhYmxlLWJvcmRlcmVkLmRhdGFUYWJsZSB0ZDpsYXN0LWNoaWxkIHtcbiAgICBib3JkZXItcmlnaHQtd2lkdGg6IDBcbn1cblxudGFibGUudGFibGUtYm9yZGVyZWQuZGF0YVRhYmxlIHRib2R5IHRoLFxudGFibGUudGFibGUtYm9yZGVyZWQuZGF0YVRhYmxlIHRib2R5IHRkIHtcbiAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwXG59XG5cbmRpdi5kYXRhVGFibGVzX3Njcm9sbEhlYWQgdGFibGUudGFibGUtYm9yZGVyZWQge1xuICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDBcbn1cblxuZGl2LnRhYmxlLXJlc3BvbnNpdmU+ZGl2LmRhdGFUYWJsZXNfd3JhcHBlcj5kaXYucm93IHtcbiAgICBtYXJnaW46IDBcbn1cblxuZGl2LnRhYmxlLXJlc3BvbnNpdmU+ZGl2LmRhdGFUYWJsZXNfd3JhcHBlcj5kaXYucm93PmRpdltjbGFzc149XCJjb2wtXCJdOmZpcnN0LWNoaWxkIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDBcbn1cblxuZGl2LnRhYmxlLXJlc3BvbnNpdmU+ZGl2LmRhdGFUYWJsZXNfd3JhcHBlcj5kaXYucm93PmRpdltjbGFzc149XCJjb2wtXCJdOmxhc3QtY2hpbGQge1xuICAgIHBhZGRpbmctcmlnaHQ6IDBcbn1cbiIsIi8qIVxuICogIEZvbnQgQXdlc29tZSA0LjcuMCBieSBAZGF2ZWdhbmR5IC0gaHR0cDovL2ZvbnRhd2Vzb21lLmlvIC0gQGZvbnRhd2Vzb21lXG4gKiAgTGljZW5zZSAtIGh0dHA6Ly9mb250YXdlc29tZS5pby9saWNlbnNlIChGb250OiBTSUwgT0ZMIDEuMSwgQ1NTOiBNSVQgTGljZW5zZSlcbiAqL1xuXG5AaW1wb3J0IFwidmFyaWFibGVzXCI7XG5AaW1wb3J0IFwibWl4aW5zXCI7XG5AaW1wb3J0IFwicGF0aFwiO1xuQGltcG9ydCBcImNvcmVcIjtcbkBpbXBvcnQgXCJsYXJnZXJcIjtcbkBpbXBvcnQgXCJmaXhlZC13aWR0aFwiO1xuQGltcG9ydCBcImxpc3RcIjtcbkBpbXBvcnQgXCJib3JkZXJlZC1wdWxsZWRcIjtcbkBpbXBvcnQgXCJhbmltYXRlZFwiO1xuQGltcG9ydCBcInJvdGF0ZWQtZmxpcHBlZFwiO1xuQGltcG9ydCBcInN0YWNrZWRcIjtcbkBpbXBvcnQgXCJpY29uc1wiO1xuQGltcG9ydCBcInNjcmVlbi1yZWFkZXJcIjtcbiIsIi8vIFZhcmlhYmxlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuJGZhLWZvbnQtcGF0aDogICAgICAgIFwiLi4vZm9udHNcIiAhZGVmYXVsdDtcbiRmYS1mb250LXNpemUtYmFzZTogICAxNHB4ICFkZWZhdWx0O1xuJGZhLWxpbmUtaGVpZ2h0LWJhc2U6IDEgIWRlZmF1bHQ7XG4vLyRmYS1mb250LXBhdGg6ICAgICAgICBcIi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNy4wL2ZvbnRzXCIgIWRlZmF1bHQ7IC8vIGZvciByZWZlcmVuY2luZyBCb290c3RyYXAgQ0ROIGZvbnQgZmlsZXMgZGlyZWN0bHlcbiRmYS1jc3MtcHJlZml4OiAgICAgICBmYSAhZGVmYXVsdDtcbiRmYS12ZXJzaW9uOiAgICAgICAgICBcIjQuNy4wXCIgIWRlZmF1bHQ7XG4kZmEtYm9yZGVyLWNvbG9yOiAgICAgI2VlZSAhZGVmYXVsdDtcbiRmYS1pbnZlcnNlOiAgICAgICAgICAjZmZmICFkZWZhdWx0O1xuJGZhLWxpLXdpZHRoOiAgICAgICAgICgzMGVtIC8gMTQpICFkZWZhdWx0O1xuXG4kZmEtdmFyLTUwMHB4OiBcIlxcZjI2ZVwiO1xuJGZhLXZhci1hZGRyZXNzLWJvb2s6IFwiXFxmMmI5XCI7XG4kZmEtdmFyLWFkZHJlc3MtYm9vay1vOiBcIlxcZjJiYVwiO1xuJGZhLXZhci1hZGRyZXNzLWNhcmQ6IFwiXFxmMmJiXCI7XG4kZmEtdmFyLWFkZHJlc3MtY2FyZC1vOiBcIlxcZjJiY1wiO1xuJGZhLXZhci1hZGp1c3Q6IFwiXFxmMDQyXCI7XG4kZmEtdmFyLWFkbjogXCJcXGYxNzBcIjtcbiRmYS12YXItYWxpZ24tY2VudGVyOiBcIlxcZjAzN1wiO1xuJGZhLXZhci1hbGlnbi1qdXN0aWZ5OiBcIlxcZjAzOVwiO1xuJGZhLXZhci1hbGlnbi1sZWZ0OiBcIlxcZjAzNlwiO1xuJGZhLXZhci1hbGlnbi1yaWdodDogXCJcXGYwMzhcIjtcbiRmYS12YXItYW1hem9uOiBcIlxcZjI3MFwiO1xuJGZhLXZhci1hbWJ1bGFuY2U6IFwiXFxmMGY5XCI7XG4kZmEtdmFyLWFtZXJpY2FuLXNpZ24tbGFuZ3VhZ2UtaW50ZXJwcmV0aW5nOiBcIlxcZjJhM1wiO1xuJGZhLXZhci1hbmNob3I6IFwiXFxmMTNkXCI7XG4kZmEtdmFyLWFuZHJvaWQ6IFwiXFxmMTdiXCI7XG4kZmEtdmFyLWFuZ2VsbGlzdDogXCJcXGYyMDlcIjtcbiRmYS12YXItYW5nbGUtZG91YmxlLWRvd246IFwiXFxmMTAzXCI7XG4kZmEtdmFyLWFuZ2xlLWRvdWJsZS1sZWZ0OiBcIlxcZjEwMFwiO1xuJGZhLXZhci1hbmdsZS1kb3VibGUtcmlnaHQ6IFwiXFxmMTAxXCI7XG4kZmEtdmFyLWFuZ2xlLWRvdWJsZS11cDogXCJcXGYxMDJcIjtcbiRmYS12YXItYW5nbGUtZG93bjogXCJcXGYxMDdcIjtcbiRmYS12YXItYW5nbGUtbGVmdDogXCJcXGYxMDRcIjtcbiRmYS12YXItYW5nbGUtcmlnaHQ6IFwiXFxmMTA1XCI7XG4kZmEtdmFyLWFuZ2xlLXVwOiBcIlxcZjEwNlwiO1xuJGZhLXZhci1hcHBsZTogXCJcXGYxNzlcIjtcbiRmYS12YXItYXJjaGl2ZTogXCJcXGYxODdcIjtcbiRmYS12YXItYXJlYS1jaGFydDogXCJcXGYxZmVcIjtcbiRmYS12YXItYXJyb3ctY2lyY2xlLWRvd246IFwiXFxmMGFiXCI7XG4kZmEtdmFyLWFycm93LWNpcmNsZS1sZWZ0OiBcIlxcZjBhOFwiO1xuJGZhLXZhci1hcnJvdy1jaXJjbGUtby1kb3duOiBcIlxcZjAxYVwiO1xuJGZhLXZhci1hcnJvdy1jaXJjbGUtby1sZWZ0OiBcIlxcZjE5MFwiO1xuJGZhLXZhci1hcnJvdy1jaXJjbGUtby1yaWdodDogXCJcXGYxOGVcIjtcbiRmYS12YXItYXJyb3ctY2lyY2xlLW8tdXA6IFwiXFxmMDFiXCI7XG4kZmEtdmFyLWFycm93LWNpcmNsZS1yaWdodDogXCJcXGYwYTlcIjtcbiRmYS12YXItYXJyb3ctY2lyY2xlLXVwOiBcIlxcZjBhYVwiO1xuJGZhLXZhci1hcnJvdy1kb3duOiBcIlxcZjA2M1wiO1xuJGZhLXZhci1hcnJvdy1sZWZ0OiBcIlxcZjA2MFwiO1xuJGZhLXZhci1hcnJvdy1yaWdodDogXCJcXGYwNjFcIjtcbiRmYS12YXItYXJyb3ctdXA6IFwiXFxmMDYyXCI7XG4kZmEtdmFyLWFycm93czogXCJcXGYwNDdcIjtcbiRmYS12YXItYXJyb3dzLWFsdDogXCJcXGYwYjJcIjtcbiRmYS12YXItYXJyb3dzLWg6IFwiXFxmMDdlXCI7XG4kZmEtdmFyLWFycm93cy12OiBcIlxcZjA3ZFwiO1xuJGZhLXZhci1hc2wtaW50ZXJwcmV0aW5nOiBcIlxcZjJhM1wiO1xuJGZhLXZhci1hc3Npc3RpdmUtbGlzdGVuaW5nLXN5c3RlbXM6IFwiXFxmMmEyXCI7XG4kZmEtdmFyLWFzdGVyaXNrOiBcIlxcZjA2OVwiO1xuJGZhLXZhci1hdDogXCJcXGYxZmFcIjtcbiRmYS12YXItYXVkaW8tZGVzY3JpcHRpb246IFwiXFxmMjllXCI7XG4kZmEtdmFyLWF1dG9tb2JpbGU6IFwiXFxmMWI5XCI7XG4kZmEtdmFyLWJhY2t3YXJkOiBcIlxcZjA0YVwiO1xuJGZhLXZhci1iYWxhbmNlLXNjYWxlOiBcIlxcZjI0ZVwiO1xuJGZhLXZhci1iYW46IFwiXFxmMDVlXCI7XG4kZmEtdmFyLWJhbmRjYW1wOiBcIlxcZjJkNVwiO1xuJGZhLXZhci1iYW5rOiBcIlxcZjE5Y1wiO1xuJGZhLXZhci1iYXItY2hhcnQ6IFwiXFxmMDgwXCI7XG4kZmEtdmFyLWJhci1jaGFydC1vOiBcIlxcZjA4MFwiO1xuJGZhLXZhci1iYXJjb2RlOiBcIlxcZjAyYVwiO1xuJGZhLXZhci1iYXJzOiBcIlxcZjBjOVwiO1xuJGZhLXZhci1iYXRoOiBcIlxcZjJjZFwiO1xuJGZhLXZhci1iYXRodHViOiBcIlxcZjJjZFwiO1xuJGZhLXZhci1iYXR0ZXJ5OiBcIlxcZjI0MFwiO1xuJGZhLXZhci1iYXR0ZXJ5LTA6IFwiXFxmMjQ0XCI7XG4kZmEtdmFyLWJhdHRlcnktMTogXCJcXGYyNDNcIjtcbiRmYS12YXItYmF0dGVyeS0yOiBcIlxcZjI0MlwiO1xuJGZhLXZhci1iYXR0ZXJ5LTM6IFwiXFxmMjQxXCI7XG4kZmEtdmFyLWJhdHRlcnktNDogXCJcXGYyNDBcIjtcbiRmYS12YXItYmF0dGVyeS1lbXB0eTogXCJcXGYyNDRcIjtcbiRmYS12YXItYmF0dGVyeS1mdWxsOiBcIlxcZjI0MFwiO1xuJGZhLXZhci1iYXR0ZXJ5LWhhbGY6IFwiXFxmMjQyXCI7XG4kZmEtdmFyLWJhdHRlcnktcXVhcnRlcjogXCJcXGYyNDNcIjtcbiRmYS12YXItYmF0dGVyeS10aHJlZS1xdWFydGVyczogXCJcXGYyNDFcIjtcbiRmYS12YXItYmVkOiBcIlxcZjIzNlwiO1xuJGZhLXZhci1iZWVyOiBcIlxcZjBmY1wiO1xuJGZhLXZhci1iZWhhbmNlOiBcIlxcZjFiNFwiO1xuJGZhLXZhci1iZWhhbmNlLXNxdWFyZTogXCJcXGYxYjVcIjtcbiRmYS12YXItYmVsbDogXCJcXGYwZjNcIjtcbiRmYS12YXItYmVsbC1vOiBcIlxcZjBhMlwiO1xuJGZhLXZhci1iZWxsLXNsYXNoOiBcIlxcZjFmNlwiO1xuJGZhLXZhci1iZWxsLXNsYXNoLW86IFwiXFxmMWY3XCI7XG4kZmEtdmFyLWJpY3ljbGU6IFwiXFxmMjA2XCI7XG4kZmEtdmFyLWJpbm9jdWxhcnM6IFwiXFxmMWU1XCI7XG4kZmEtdmFyLWJpcnRoZGF5LWNha2U6IFwiXFxmMWZkXCI7XG4kZmEtdmFyLWJpdGJ1Y2tldDogXCJcXGYxNzFcIjtcbiRmYS12YXItYml0YnVja2V0LXNxdWFyZTogXCJcXGYxNzJcIjtcbiRmYS12YXItYml0Y29pbjogXCJcXGYxNWFcIjtcbiRmYS12YXItYmxhY2stdGllOiBcIlxcZjI3ZVwiO1xuJGZhLXZhci1ibGluZDogXCJcXGYyOWRcIjtcbiRmYS12YXItYmx1ZXRvb3RoOiBcIlxcZjI5M1wiO1xuJGZhLXZhci1ibHVldG9vdGgtYjogXCJcXGYyOTRcIjtcbiRmYS12YXItYm9sZDogXCJcXGYwMzJcIjtcbiRmYS12YXItYm9sdDogXCJcXGYwZTdcIjtcbiRmYS12YXItYm9tYjogXCJcXGYxZTJcIjtcbiRmYS12YXItYm9vazogXCJcXGYwMmRcIjtcbiRmYS12YXItYm9va21hcms6IFwiXFxmMDJlXCI7XG4kZmEtdmFyLWJvb2ttYXJrLW86IFwiXFxmMDk3XCI7XG4kZmEtdmFyLWJyYWlsbGU6IFwiXFxmMmExXCI7XG4kZmEtdmFyLWJyaWVmY2FzZTogXCJcXGYwYjFcIjtcbiRmYS12YXItYnRjOiBcIlxcZjE1YVwiO1xuJGZhLXZhci1idWc6IFwiXFxmMTg4XCI7XG4kZmEtdmFyLWJ1aWxkaW5nOiBcIlxcZjFhZFwiO1xuJGZhLXZhci1idWlsZGluZy1vOiBcIlxcZjBmN1wiO1xuJGZhLXZhci1idWxsaG9ybjogXCJcXGYwYTFcIjtcbiRmYS12YXItYnVsbHNleWU6IFwiXFxmMTQwXCI7XG4kZmEtdmFyLWJ1czogXCJcXGYyMDdcIjtcbiRmYS12YXItYnV5c2VsbGFkczogXCJcXGYyMGRcIjtcbiRmYS12YXItY2FiOiBcIlxcZjFiYVwiO1xuJGZhLXZhci1jYWxjdWxhdG9yOiBcIlxcZjFlY1wiO1xuJGZhLXZhci1jYWxlbmRhcjogXCJcXGYwNzNcIjtcbiRmYS12YXItY2FsZW5kYXItY2hlY2stbzogXCJcXGYyNzRcIjtcbiRmYS12YXItY2FsZW5kYXItbWludXMtbzogXCJcXGYyNzJcIjtcbiRmYS12YXItY2FsZW5kYXItbzogXCJcXGYxMzNcIjtcbiRmYS12YXItY2FsZW5kYXItcGx1cy1vOiBcIlxcZjI3MVwiO1xuJGZhLXZhci1jYWxlbmRhci10aW1lcy1vOiBcIlxcZjI3M1wiO1xuJGZhLXZhci1jYW1lcmE6IFwiXFxmMDMwXCI7XG4kZmEtdmFyLWNhbWVyYS1yZXRybzogXCJcXGYwODNcIjtcbiRmYS12YXItY2FyOiBcIlxcZjFiOVwiO1xuJGZhLXZhci1jYXJldC1kb3duOiBcIlxcZjBkN1wiO1xuJGZhLXZhci1jYXJldC1sZWZ0OiBcIlxcZjBkOVwiO1xuJGZhLXZhci1jYXJldC1yaWdodDogXCJcXGYwZGFcIjtcbiRmYS12YXItY2FyZXQtc3F1YXJlLW8tZG93bjogXCJcXGYxNTBcIjtcbiRmYS12YXItY2FyZXQtc3F1YXJlLW8tbGVmdDogXCJcXGYxOTFcIjtcbiRmYS12YXItY2FyZXQtc3F1YXJlLW8tcmlnaHQ6IFwiXFxmMTUyXCI7XG4kZmEtdmFyLWNhcmV0LXNxdWFyZS1vLXVwOiBcIlxcZjE1MVwiO1xuJGZhLXZhci1jYXJldC11cDogXCJcXGYwZDhcIjtcbiRmYS12YXItY2FydC1hcnJvdy1kb3duOiBcIlxcZjIxOFwiO1xuJGZhLXZhci1jYXJ0LXBsdXM6IFwiXFxmMjE3XCI7XG4kZmEtdmFyLWNjOiBcIlxcZjIwYVwiO1xuJGZhLXZhci1jYy1hbWV4OiBcIlxcZjFmM1wiO1xuJGZhLXZhci1jYy1kaW5lcnMtY2x1YjogXCJcXGYyNGNcIjtcbiRmYS12YXItY2MtZGlzY292ZXI6IFwiXFxmMWYyXCI7XG4kZmEtdmFyLWNjLWpjYjogXCJcXGYyNGJcIjtcbiRmYS12YXItY2MtbWFzdGVyY2FyZDogXCJcXGYxZjFcIjtcbiRmYS12YXItY2MtcGF5cGFsOiBcIlxcZjFmNFwiO1xuJGZhLXZhci1jYy1zdHJpcGU6IFwiXFxmMWY1XCI7XG4kZmEtdmFyLWNjLXZpc2E6IFwiXFxmMWYwXCI7XG4kZmEtdmFyLWNlcnRpZmljYXRlOiBcIlxcZjBhM1wiO1xuJGZhLXZhci1jaGFpbjogXCJcXGYwYzFcIjtcbiRmYS12YXItY2hhaW4tYnJva2VuOiBcIlxcZjEyN1wiO1xuJGZhLXZhci1jaGVjazogXCJcXGYwMGNcIjtcbiRmYS12YXItY2hlY2stY2lyY2xlOiBcIlxcZjA1OFwiO1xuJGZhLXZhci1jaGVjay1jaXJjbGUtbzogXCJcXGYwNWRcIjtcbiRmYS12YXItY2hlY2stc3F1YXJlOiBcIlxcZjE0YVwiO1xuJGZhLXZhci1jaGVjay1zcXVhcmUtbzogXCJcXGYwNDZcIjtcbiRmYS12YXItY2hldnJvbi1jaXJjbGUtZG93bjogXCJcXGYxM2FcIjtcbiRmYS12YXItY2hldnJvbi1jaXJjbGUtbGVmdDogXCJcXGYxMzdcIjtcbiRmYS12YXItY2hldnJvbi1jaXJjbGUtcmlnaHQ6IFwiXFxmMTM4XCI7XG4kZmEtdmFyLWNoZXZyb24tY2lyY2xlLXVwOiBcIlxcZjEzOVwiO1xuJGZhLXZhci1jaGV2cm9uLWRvd246IFwiXFxmMDc4XCI7XG4kZmEtdmFyLWNoZXZyb24tbGVmdDogXCJcXGYwNTNcIjtcbiRmYS12YXItY2hldnJvbi1yaWdodDogXCJcXGYwNTRcIjtcbiRmYS12YXItY2hldnJvbi11cDogXCJcXGYwNzdcIjtcbiRmYS12YXItY2hpbGQ6IFwiXFxmMWFlXCI7XG4kZmEtdmFyLWNocm9tZTogXCJcXGYyNjhcIjtcbiRmYS12YXItY2lyY2xlOiBcIlxcZjExMVwiO1xuJGZhLXZhci1jaXJjbGUtbzogXCJcXGYxMGNcIjtcbiRmYS12YXItY2lyY2xlLW8tbm90Y2g6IFwiXFxmMWNlXCI7XG4kZmEtdmFyLWNpcmNsZS10aGluOiBcIlxcZjFkYlwiO1xuJGZhLXZhci1jbGlwYm9hcmQ6IFwiXFxmMGVhXCI7XG4kZmEtdmFyLWNsb2NrLW86IFwiXFxmMDE3XCI7XG4kZmEtdmFyLWNsb25lOiBcIlxcZjI0ZFwiO1xuJGZhLXZhci1jbG9zZTogXCJcXGYwMGRcIjtcbiRmYS12YXItY2xvdWQ6IFwiXFxmMGMyXCI7XG4kZmEtdmFyLWNsb3VkLWRvd25sb2FkOiBcIlxcZjBlZFwiO1xuJGZhLXZhci1jbG91ZC11cGxvYWQ6IFwiXFxmMGVlXCI7XG4kZmEtdmFyLWNueTogXCJcXGYxNTdcIjtcbiRmYS12YXItY29kZTogXCJcXGYxMjFcIjtcbiRmYS12YXItY29kZS1mb3JrOiBcIlxcZjEyNlwiO1xuJGZhLXZhci1jb2RlcGVuOiBcIlxcZjFjYlwiO1xuJGZhLXZhci1jb2RpZXBpZTogXCJcXGYyODRcIjtcbiRmYS12YXItY29mZmVlOiBcIlxcZjBmNFwiO1xuJGZhLXZhci1jb2c6IFwiXFxmMDEzXCI7XG4kZmEtdmFyLWNvZ3M6IFwiXFxmMDg1XCI7XG4kZmEtdmFyLWNvbHVtbnM6IFwiXFxmMGRiXCI7XG4kZmEtdmFyLWNvbW1lbnQ6IFwiXFxmMDc1XCI7XG4kZmEtdmFyLWNvbW1lbnQtbzogXCJcXGYwZTVcIjtcbiRmYS12YXItY29tbWVudGluZzogXCJcXGYyN2FcIjtcbiRmYS12YXItY29tbWVudGluZy1vOiBcIlxcZjI3YlwiO1xuJGZhLXZhci1jb21tZW50czogXCJcXGYwODZcIjtcbiRmYS12YXItY29tbWVudHMtbzogXCJcXGYwZTZcIjtcbiRmYS12YXItY29tcGFzczogXCJcXGYxNGVcIjtcbiRmYS12YXItY29tcHJlc3M6IFwiXFxmMDY2XCI7XG4kZmEtdmFyLWNvbm5lY3RkZXZlbG9wOiBcIlxcZjIwZVwiO1xuJGZhLXZhci1jb250YW86IFwiXFxmMjZkXCI7XG4kZmEtdmFyLWNvcHk6IFwiXFxmMGM1XCI7XG4kZmEtdmFyLWNvcHlyaWdodDogXCJcXGYxZjlcIjtcbiRmYS12YXItY3JlYXRpdmUtY29tbW9uczogXCJcXGYyNWVcIjtcbiRmYS12YXItY3JlZGl0LWNhcmQ6IFwiXFxmMDlkXCI7XG4kZmEtdmFyLWNyZWRpdC1jYXJkLWFsdDogXCJcXGYyODNcIjtcbiRmYS12YXItY3JvcDogXCJcXGYxMjVcIjtcbiRmYS12YXItY3Jvc3NoYWlyczogXCJcXGYwNWJcIjtcbiRmYS12YXItY3NzMzogXCJcXGYxM2NcIjtcbiRmYS12YXItY3ViZTogXCJcXGYxYjJcIjtcbiRmYS12YXItY3ViZXM6IFwiXFxmMWIzXCI7XG4kZmEtdmFyLWN1dDogXCJcXGYwYzRcIjtcbiRmYS12YXItY3V0bGVyeTogXCJcXGYwZjVcIjtcbiRmYS12YXItZGFzaGJvYXJkOiBcIlxcZjBlNFwiO1xuJGZhLXZhci1kYXNoY3ViZTogXCJcXGYyMTBcIjtcbiRmYS12YXItZGF0YWJhc2U6IFwiXFxmMWMwXCI7XG4kZmEtdmFyLWRlYWY6IFwiXFxmMmE0XCI7XG4kZmEtdmFyLWRlYWZuZXNzOiBcIlxcZjJhNFwiO1xuJGZhLXZhci1kZWRlbnQ6IFwiXFxmMDNiXCI7XG4kZmEtdmFyLWRlbGljaW91czogXCJcXGYxYTVcIjtcbiRmYS12YXItZGVza3RvcDogXCJcXGYxMDhcIjtcbiRmYS12YXItZGV2aWFudGFydDogXCJcXGYxYmRcIjtcbiRmYS12YXItZGlhbW9uZDogXCJcXGYyMTlcIjtcbiRmYS12YXItZGlnZzogXCJcXGYxYTZcIjtcbiRmYS12YXItZG9sbGFyOiBcIlxcZjE1NVwiO1xuJGZhLXZhci1kb3QtY2lyY2xlLW86IFwiXFxmMTkyXCI7XG4kZmEtdmFyLWRvd25sb2FkOiBcIlxcZjAxOVwiO1xuJGZhLXZhci1kcmliYmJsZTogXCJcXGYxN2RcIjtcbiRmYS12YXItZHJpdmVycy1saWNlbnNlOiBcIlxcZjJjMlwiO1xuJGZhLXZhci1kcml2ZXJzLWxpY2Vuc2UtbzogXCJcXGYyYzNcIjtcbiRmYS12YXItZHJvcGJveDogXCJcXGYxNmJcIjtcbiRmYS12YXItZHJ1cGFsOiBcIlxcZjFhOVwiO1xuJGZhLXZhci1lZGdlOiBcIlxcZjI4MlwiO1xuJGZhLXZhci1lZGl0OiBcIlxcZjA0NFwiO1xuJGZhLXZhci1lZXJjYXN0OiBcIlxcZjJkYVwiO1xuJGZhLXZhci1lamVjdDogXCJcXGYwNTJcIjtcbiRmYS12YXItZWxsaXBzaXMtaDogXCJcXGYxNDFcIjtcbiRmYS12YXItZWxsaXBzaXMtdjogXCJcXGYxNDJcIjtcbiRmYS12YXItZW1waXJlOiBcIlxcZjFkMVwiO1xuJGZhLXZhci1lbnZlbG9wZTogXCJcXGYwZTBcIjtcbiRmYS12YXItZW52ZWxvcGUtbzogXCJcXGYwMDNcIjtcbiRmYS12YXItZW52ZWxvcGUtb3BlbjogXCJcXGYyYjZcIjtcbiRmYS12YXItZW52ZWxvcGUtb3Blbi1vOiBcIlxcZjJiN1wiO1xuJGZhLXZhci1lbnZlbG9wZS1zcXVhcmU6IFwiXFxmMTk5XCI7XG4kZmEtdmFyLWVudmlyYTogXCJcXGYyOTlcIjtcbiRmYS12YXItZXJhc2VyOiBcIlxcZjEyZFwiO1xuJGZhLXZhci1ldHN5OiBcIlxcZjJkN1wiO1xuJGZhLXZhci1ldXI6IFwiXFxmMTUzXCI7XG4kZmEtdmFyLWV1cm86IFwiXFxmMTUzXCI7XG4kZmEtdmFyLWV4Y2hhbmdlOiBcIlxcZjBlY1wiO1xuJGZhLXZhci1leGNsYW1hdGlvbjogXCJcXGYxMmFcIjtcbiRmYS12YXItZXhjbGFtYXRpb24tY2lyY2xlOiBcIlxcZjA2YVwiO1xuJGZhLXZhci1leGNsYW1hdGlvbi10cmlhbmdsZTogXCJcXGYwNzFcIjtcbiRmYS12YXItZXhwYW5kOiBcIlxcZjA2NVwiO1xuJGZhLXZhci1leHBlZGl0ZWRzc2w6IFwiXFxmMjNlXCI7XG4kZmEtdmFyLWV4dGVybmFsLWxpbms6IFwiXFxmMDhlXCI7XG4kZmEtdmFyLWV4dGVybmFsLWxpbmstc3F1YXJlOiBcIlxcZjE0Y1wiO1xuJGZhLXZhci1leWU6IFwiXFxmMDZlXCI7XG4kZmEtdmFyLWV5ZS1zbGFzaDogXCJcXGYwNzBcIjtcbiRmYS12YXItZXllZHJvcHBlcjogXCJcXGYxZmJcIjtcbiRmYS12YXItZmE6IFwiXFxmMmI0XCI7XG4kZmEtdmFyLWZhY2Vib29rOiBcIlxcZjA5YVwiO1xuJGZhLXZhci1mYWNlYm9vay1mOiBcIlxcZjA5YVwiO1xuJGZhLXZhci1mYWNlYm9vay1vZmZpY2lhbDogXCJcXGYyMzBcIjtcbiRmYS12YXItZmFjZWJvb2stc3F1YXJlOiBcIlxcZjA4MlwiO1xuJGZhLXZhci1mYXN0LWJhY2t3YXJkOiBcIlxcZjA0OVwiO1xuJGZhLXZhci1mYXN0LWZvcndhcmQ6IFwiXFxmMDUwXCI7XG4kZmEtdmFyLWZheDogXCJcXGYxYWNcIjtcbiRmYS12YXItZmVlZDogXCJcXGYwOWVcIjtcbiRmYS12YXItZmVtYWxlOiBcIlxcZjE4MlwiO1xuJGZhLXZhci1maWdodGVyLWpldDogXCJcXGYwZmJcIjtcbiRmYS12YXItZmlsZTogXCJcXGYxNWJcIjtcbiRmYS12YXItZmlsZS1hcmNoaXZlLW86IFwiXFxmMWM2XCI7XG4kZmEtdmFyLWZpbGUtYXVkaW8tbzogXCJcXGYxYzdcIjtcbiRmYS12YXItZmlsZS1jb2RlLW86IFwiXFxmMWM5XCI7XG4kZmEtdmFyLWZpbGUtZXhjZWwtbzogXCJcXGYxYzNcIjtcbiRmYS12YXItZmlsZS1pbWFnZS1vOiBcIlxcZjFjNVwiO1xuJGZhLXZhci1maWxlLW1vdmllLW86IFwiXFxmMWM4XCI7XG4kZmEtdmFyLWZpbGUtbzogXCJcXGYwMTZcIjtcbiRmYS12YXItZmlsZS1wZGYtbzogXCJcXGYxYzFcIjtcbiRmYS12YXItZmlsZS1waG90by1vOiBcIlxcZjFjNVwiO1xuJGZhLXZhci1maWxlLXBpY3R1cmUtbzogXCJcXGYxYzVcIjtcbiRmYS12YXItZmlsZS1wb3dlcnBvaW50LW86IFwiXFxmMWM0XCI7XG4kZmEtdmFyLWZpbGUtc291bmQtbzogXCJcXGYxYzdcIjtcbiRmYS12YXItZmlsZS10ZXh0OiBcIlxcZjE1Y1wiO1xuJGZhLXZhci1maWxlLXRleHQtbzogXCJcXGYwZjZcIjtcbiRmYS12YXItZmlsZS12aWRlby1vOiBcIlxcZjFjOFwiO1xuJGZhLXZhci1maWxlLXdvcmQtbzogXCJcXGYxYzJcIjtcbiRmYS12YXItZmlsZS16aXAtbzogXCJcXGYxYzZcIjtcbiRmYS12YXItZmlsZXMtbzogXCJcXGYwYzVcIjtcbiRmYS12YXItZmlsbTogXCJcXGYwMDhcIjtcbiRmYS12YXItZmlsdGVyOiBcIlxcZjBiMFwiO1xuJGZhLXZhci1maXJlOiBcIlxcZjA2ZFwiO1xuJGZhLXZhci1maXJlLWV4dGluZ3Vpc2hlcjogXCJcXGYxMzRcIjtcbiRmYS12YXItZmlyZWZveDogXCJcXGYyNjlcIjtcbiRmYS12YXItZmlyc3Qtb3JkZXI6IFwiXFxmMmIwXCI7XG4kZmEtdmFyLWZsYWc6IFwiXFxmMDI0XCI7XG4kZmEtdmFyLWZsYWctY2hlY2tlcmVkOiBcIlxcZjExZVwiO1xuJGZhLXZhci1mbGFnLW86IFwiXFxmMTFkXCI7XG4kZmEtdmFyLWZsYXNoOiBcIlxcZjBlN1wiO1xuJGZhLXZhci1mbGFzazogXCJcXGYwYzNcIjtcbiRmYS12YXItZmxpY2tyOiBcIlxcZjE2ZVwiO1xuJGZhLXZhci1mbG9wcHktbzogXCJcXGYwYzdcIjtcbiRmYS12YXItZm9sZGVyOiBcIlxcZjA3YlwiO1xuJGZhLXZhci1mb2xkZXItbzogXCJcXGYxMTRcIjtcbiRmYS12YXItZm9sZGVyLW9wZW46IFwiXFxmMDdjXCI7XG4kZmEtdmFyLWZvbGRlci1vcGVuLW86IFwiXFxmMTE1XCI7XG4kZmEtdmFyLWZvbnQ6IFwiXFxmMDMxXCI7XG4kZmEtdmFyLWZvbnQtYXdlc29tZTogXCJcXGYyYjRcIjtcbiRmYS12YXItZm9udGljb25zOiBcIlxcZjI4MFwiO1xuJGZhLXZhci1mb3J0LWF3ZXNvbWU6IFwiXFxmMjg2XCI7XG4kZmEtdmFyLWZvcnVtYmVlOiBcIlxcZjIxMVwiO1xuJGZhLXZhci1mb3J3YXJkOiBcIlxcZjA0ZVwiO1xuJGZhLXZhci1mb3Vyc3F1YXJlOiBcIlxcZjE4MFwiO1xuJGZhLXZhci1mcmVlLWNvZGUtY2FtcDogXCJcXGYyYzVcIjtcbiRmYS12YXItZnJvd24tbzogXCJcXGYxMTlcIjtcbiRmYS12YXItZnV0Ym9sLW86IFwiXFxmMWUzXCI7XG4kZmEtdmFyLWdhbWVwYWQ6IFwiXFxmMTFiXCI7XG4kZmEtdmFyLWdhdmVsOiBcIlxcZjBlM1wiO1xuJGZhLXZhci1nYnA6IFwiXFxmMTU0XCI7XG4kZmEtdmFyLWdlOiBcIlxcZjFkMVwiO1xuJGZhLXZhci1nZWFyOiBcIlxcZjAxM1wiO1xuJGZhLXZhci1nZWFyczogXCJcXGYwODVcIjtcbiRmYS12YXItZ2VuZGVybGVzczogXCJcXGYyMmRcIjtcbiRmYS12YXItZ2V0LXBvY2tldDogXCJcXGYyNjVcIjtcbiRmYS12YXItZ2c6IFwiXFxmMjYwXCI7XG4kZmEtdmFyLWdnLWNpcmNsZTogXCJcXGYyNjFcIjtcbiRmYS12YXItZ2lmdDogXCJcXGYwNmJcIjtcbiRmYS12YXItZ2l0OiBcIlxcZjFkM1wiO1xuJGZhLXZhci1naXQtc3F1YXJlOiBcIlxcZjFkMlwiO1xuJGZhLXZhci1naXRodWI6IFwiXFxmMDliXCI7XG4kZmEtdmFyLWdpdGh1Yi1hbHQ6IFwiXFxmMTEzXCI7XG4kZmEtdmFyLWdpdGh1Yi1zcXVhcmU6IFwiXFxmMDkyXCI7XG4kZmEtdmFyLWdpdGxhYjogXCJcXGYyOTZcIjtcbiRmYS12YXItZ2l0dGlwOiBcIlxcZjE4NFwiO1xuJGZhLXZhci1nbGFzczogXCJcXGYwMDBcIjtcbiRmYS12YXItZ2xpZGU6IFwiXFxmMmE1XCI7XG4kZmEtdmFyLWdsaWRlLWc6IFwiXFxmMmE2XCI7XG4kZmEtdmFyLWdsb2JlOiBcIlxcZjBhY1wiO1xuJGZhLXZhci1nb29nbGU6IFwiXFxmMWEwXCI7XG4kZmEtdmFyLWdvb2dsZS1wbHVzOiBcIlxcZjBkNVwiO1xuJGZhLXZhci1nb29nbGUtcGx1cy1jaXJjbGU6IFwiXFxmMmIzXCI7XG4kZmEtdmFyLWdvb2dsZS1wbHVzLW9mZmljaWFsOiBcIlxcZjJiM1wiO1xuJGZhLXZhci1nb29nbGUtcGx1cy1zcXVhcmU6IFwiXFxmMGQ0XCI7XG4kZmEtdmFyLWdvb2dsZS13YWxsZXQ6IFwiXFxmMWVlXCI7XG4kZmEtdmFyLWdyYWR1YXRpb24tY2FwOiBcIlxcZjE5ZFwiO1xuJGZhLXZhci1ncmF0aXBheTogXCJcXGYxODRcIjtcbiRmYS12YXItZ3JhdjogXCJcXGYyZDZcIjtcbiRmYS12YXItZ3JvdXA6IFwiXFxmMGMwXCI7XG4kZmEtdmFyLWgtc3F1YXJlOiBcIlxcZjBmZFwiO1xuJGZhLXZhci1oYWNrZXItbmV3czogXCJcXGYxZDRcIjtcbiRmYS12YXItaGFuZC1ncmFiLW86IFwiXFxmMjU1XCI7XG4kZmEtdmFyLWhhbmQtbGl6YXJkLW86IFwiXFxmMjU4XCI7XG4kZmEtdmFyLWhhbmQtby1kb3duOiBcIlxcZjBhN1wiO1xuJGZhLXZhci1oYW5kLW8tbGVmdDogXCJcXGYwYTVcIjtcbiRmYS12YXItaGFuZC1vLXJpZ2h0OiBcIlxcZjBhNFwiO1xuJGZhLXZhci1oYW5kLW8tdXA6IFwiXFxmMGE2XCI7XG4kZmEtdmFyLWhhbmQtcGFwZXItbzogXCJcXGYyNTZcIjtcbiRmYS12YXItaGFuZC1wZWFjZS1vOiBcIlxcZjI1YlwiO1xuJGZhLXZhci1oYW5kLXBvaW50ZXItbzogXCJcXGYyNWFcIjtcbiRmYS12YXItaGFuZC1yb2NrLW86IFwiXFxmMjU1XCI7XG4kZmEtdmFyLWhhbmQtc2Npc3NvcnMtbzogXCJcXGYyNTdcIjtcbiRmYS12YXItaGFuZC1zcG9jay1vOiBcIlxcZjI1OVwiO1xuJGZhLXZhci1oYW5kLXN0b3AtbzogXCJcXGYyNTZcIjtcbiRmYS12YXItaGFuZHNoYWtlLW86IFwiXFxmMmI1XCI7XG4kZmEtdmFyLWhhcmQtb2YtaGVhcmluZzogXCJcXGYyYTRcIjtcbiRmYS12YXItaGFzaHRhZzogXCJcXGYyOTJcIjtcbiRmYS12YXItaGRkLW86IFwiXFxmMGEwXCI7XG4kZmEtdmFyLWhlYWRlcjogXCJcXGYxZGNcIjtcbiRmYS12YXItaGVhZHBob25lczogXCJcXGYwMjVcIjtcbiRmYS12YXItaGVhcnQ6IFwiXFxmMDA0XCI7XG4kZmEtdmFyLWhlYXJ0LW86IFwiXFxmMDhhXCI7XG4kZmEtdmFyLWhlYXJ0YmVhdDogXCJcXGYyMWVcIjtcbiRmYS12YXItaGlzdG9yeTogXCJcXGYxZGFcIjtcbiRmYS12YXItaG9tZTogXCJcXGYwMTVcIjtcbiRmYS12YXItaG9zcGl0YWwtbzogXCJcXGYwZjhcIjtcbiRmYS12YXItaG90ZWw6IFwiXFxmMjM2XCI7XG4kZmEtdmFyLWhvdXJnbGFzczogXCJcXGYyNTRcIjtcbiRmYS12YXItaG91cmdsYXNzLTE6IFwiXFxmMjUxXCI7XG4kZmEtdmFyLWhvdXJnbGFzcy0yOiBcIlxcZjI1MlwiO1xuJGZhLXZhci1ob3VyZ2xhc3MtMzogXCJcXGYyNTNcIjtcbiRmYS12YXItaG91cmdsYXNzLWVuZDogXCJcXGYyNTNcIjtcbiRmYS12YXItaG91cmdsYXNzLWhhbGY6IFwiXFxmMjUyXCI7XG4kZmEtdmFyLWhvdXJnbGFzcy1vOiBcIlxcZjI1MFwiO1xuJGZhLXZhci1ob3VyZ2xhc3Mtc3RhcnQ6IFwiXFxmMjUxXCI7XG4kZmEtdmFyLWhvdXp6OiBcIlxcZjI3Y1wiO1xuJGZhLXZhci1odG1sNTogXCJcXGYxM2JcIjtcbiRmYS12YXItaS1jdXJzb3I6IFwiXFxmMjQ2XCI7XG4kZmEtdmFyLWlkLWJhZGdlOiBcIlxcZjJjMVwiO1xuJGZhLXZhci1pZC1jYXJkOiBcIlxcZjJjMlwiO1xuJGZhLXZhci1pZC1jYXJkLW86IFwiXFxmMmMzXCI7XG4kZmEtdmFyLWlsczogXCJcXGYyMGJcIjtcbiRmYS12YXItaW1hZ2U6IFwiXFxmMDNlXCI7XG4kZmEtdmFyLWltZGI6IFwiXFxmMmQ4XCI7XG4kZmEtdmFyLWluYm94OiBcIlxcZjAxY1wiO1xuJGZhLXZhci1pbmRlbnQ6IFwiXFxmMDNjXCI7XG4kZmEtdmFyLWluZHVzdHJ5OiBcIlxcZjI3NVwiO1xuJGZhLXZhci1pbmZvOiBcIlxcZjEyOVwiO1xuJGZhLXZhci1pbmZvLWNpcmNsZTogXCJcXGYwNWFcIjtcbiRmYS12YXItaW5yOiBcIlxcZjE1NlwiO1xuJGZhLXZhci1pbnN0YWdyYW06IFwiXFxmMTZkXCI7XG4kZmEtdmFyLWluc3RpdHV0aW9uOiBcIlxcZjE5Y1wiO1xuJGZhLXZhci1pbnRlcm5ldC1leHBsb3JlcjogXCJcXGYyNmJcIjtcbiRmYS12YXItaW50ZXJzZXg6IFwiXFxmMjI0XCI7XG4kZmEtdmFyLWlveGhvc3Q6IFwiXFxmMjA4XCI7XG4kZmEtdmFyLWl0YWxpYzogXCJcXGYwMzNcIjtcbiRmYS12YXItam9vbWxhOiBcIlxcZjFhYVwiO1xuJGZhLXZhci1qcHk6IFwiXFxmMTU3XCI7XG4kZmEtdmFyLWpzZmlkZGxlOiBcIlxcZjFjY1wiO1xuJGZhLXZhci1rZXk6IFwiXFxmMDg0XCI7XG4kZmEtdmFyLWtleWJvYXJkLW86IFwiXFxmMTFjXCI7XG4kZmEtdmFyLWtydzogXCJcXGYxNTlcIjtcbiRmYS12YXItbGFuZ3VhZ2U6IFwiXFxmMWFiXCI7XG4kZmEtdmFyLWxhcHRvcDogXCJcXGYxMDlcIjtcbiRmYS12YXItbGFzdGZtOiBcIlxcZjIwMlwiO1xuJGZhLXZhci1sYXN0Zm0tc3F1YXJlOiBcIlxcZjIwM1wiO1xuJGZhLXZhci1sZWFmOiBcIlxcZjA2Y1wiO1xuJGZhLXZhci1sZWFucHViOiBcIlxcZjIxMlwiO1xuJGZhLXZhci1sZWdhbDogXCJcXGYwZTNcIjtcbiRmYS12YXItbGVtb24tbzogXCJcXGYwOTRcIjtcbiRmYS12YXItbGV2ZWwtZG93bjogXCJcXGYxNDlcIjtcbiRmYS12YXItbGV2ZWwtdXA6IFwiXFxmMTQ4XCI7XG4kZmEtdmFyLWxpZmUtYm91eTogXCJcXGYxY2RcIjtcbiRmYS12YXItbGlmZS1idW95OiBcIlxcZjFjZFwiO1xuJGZhLXZhci1saWZlLXJpbmc6IFwiXFxmMWNkXCI7XG4kZmEtdmFyLWxpZmUtc2F2ZXI6IFwiXFxmMWNkXCI7XG4kZmEtdmFyLWxpZ2h0YnVsYi1vOiBcIlxcZjBlYlwiO1xuJGZhLXZhci1saW5lLWNoYXJ0OiBcIlxcZjIwMVwiO1xuJGZhLXZhci1saW5rOiBcIlxcZjBjMVwiO1xuJGZhLXZhci1saW5rZWRpbjogXCJcXGYwZTFcIjtcbiRmYS12YXItbGlua2VkaW4tc3F1YXJlOiBcIlxcZjA4Y1wiO1xuJGZhLXZhci1saW5vZGU6IFwiXFxmMmI4XCI7XG4kZmEtdmFyLWxpbnV4OiBcIlxcZjE3Y1wiO1xuJGZhLXZhci1saXN0OiBcIlxcZjAzYVwiO1xuJGZhLXZhci1saXN0LWFsdDogXCJcXGYwMjJcIjtcbiRmYS12YXItbGlzdC1vbDogXCJcXGYwY2JcIjtcbiRmYS12YXItbGlzdC11bDogXCJcXGYwY2FcIjtcbiRmYS12YXItbG9jYXRpb24tYXJyb3c6IFwiXFxmMTI0XCI7XG4kZmEtdmFyLWxvY2s6IFwiXFxmMDIzXCI7XG4kZmEtdmFyLWxvbmctYXJyb3ctZG93bjogXCJcXGYxNzVcIjtcbiRmYS12YXItbG9uZy1hcnJvdy1sZWZ0OiBcIlxcZjE3N1wiO1xuJGZhLXZhci1sb25nLWFycm93LXJpZ2h0OiBcIlxcZjE3OFwiO1xuJGZhLXZhci1sb25nLWFycm93LXVwOiBcIlxcZjE3NlwiO1xuJGZhLXZhci1sb3ctdmlzaW9uOiBcIlxcZjJhOFwiO1xuJGZhLXZhci1tYWdpYzogXCJcXGYwZDBcIjtcbiRmYS12YXItbWFnbmV0OiBcIlxcZjA3NlwiO1xuJGZhLXZhci1tYWlsLWZvcndhcmQ6IFwiXFxmMDY0XCI7XG4kZmEtdmFyLW1haWwtcmVwbHk6IFwiXFxmMTEyXCI7XG4kZmEtdmFyLW1haWwtcmVwbHktYWxsOiBcIlxcZjEyMlwiO1xuJGZhLXZhci1tYWxlOiBcIlxcZjE4M1wiO1xuJGZhLXZhci1tYXA6IFwiXFxmMjc5XCI7XG4kZmEtdmFyLW1hcC1tYXJrZXI6IFwiXFxmMDQxXCI7XG4kZmEtdmFyLW1hcC1vOiBcIlxcZjI3OFwiO1xuJGZhLXZhci1tYXAtcGluOiBcIlxcZjI3NlwiO1xuJGZhLXZhci1tYXAtc2lnbnM6IFwiXFxmMjc3XCI7XG4kZmEtdmFyLW1hcnM6IFwiXFxmMjIyXCI7XG4kZmEtdmFyLW1hcnMtZG91YmxlOiBcIlxcZjIyN1wiO1xuJGZhLXZhci1tYXJzLXN0cm9rZTogXCJcXGYyMjlcIjtcbiRmYS12YXItbWFycy1zdHJva2UtaDogXCJcXGYyMmJcIjtcbiRmYS12YXItbWFycy1zdHJva2UtdjogXCJcXGYyMmFcIjtcbiRmYS12YXItbWF4Y2RuOiBcIlxcZjEzNlwiO1xuJGZhLXZhci1tZWFucGF0aDogXCJcXGYyMGNcIjtcbiRmYS12YXItbWVkaXVtOiBcIlxcZjIzYVwiO1xuJGZhLXZhci1tZWRraXQ6IFwiXFxmMGZhXCI7XG4kZmEtdmFyLW1lZXR1cDogXCJcXGYyZTBcIjtcbiRmYS12YXItbWVoLW86IFwiXFxmMTFhXCI7XG4kZmEtdmFyLW1lcmN1cnk6IFwiXFxmMjIzXCI7XG4kZmEtdmFyLW1pY3JvY2hpcDogXCJcXGYyZGJcIjtcbiRmYS12YXItbWljcm9waG9uZTogXCJcXGYxMzBcIjtcbiRmYS12YXItbWljcm9waG9uZS1zbGFzaDogXCJcXGYxMzFcIjtcbiRmYS12YXItbWludXM6IFwiXFxmMDY4XCI7XG4kZmEtdmFyLW1pbnVzLWNpcmNsZTogXCJcXGYwNTZcIjtcbiRmYS12YXItbWludXMtc3F1YXJlOiBcIlxcZjE0NlwiO1xuJGZhLXZhci1taW51cy1zcXVhcmUtbzogXCJcXGYxNDdcIjtcbiRmYS12YXItbWl4Y2xvdWQ6IFwiXFxmMjg5XCI7XG4kZmEtdmFyLW1vYmlsZTogXCJcXGYxMGJcIjtcbiRmYS12YXItbW9iaWxlLXBob25lOiBcIlxcZjEwYlwiO1xuJGZhLXZhci1tb2R4OiBcIlxcZjI4NVwiO1xuJGZhLXZhci1tb25leTogXCJcXGYwZDZcIjtcbiRmYS12YXItbW9vbi1vOiBcIlxcZjE4NlwiO1xuJGZhLXZhci1tb3J0YXItYm9hcmQ6IFwiXFxmMTlkXCI7XG4kZmEtdmFyLW1vdG9yY3ljbGU6IFwiXFxmMjFjXCI7XG4kZmEtdmFyLW1vdXNlLXBvaW50ZXI6IFwiXFxmMjQ1XCI7XG4kZmEtdmFyLW11c2ljOiBcIlxcZjAwMVwiO1xuJGZhLXZhci1uYXZpY29uOiBcIlxcZjBjOVwiO1xuJGZhLXZhci1uZXV0ZXI6IFwiXFxmMjJjXCI7XG4kZmEtdmFyLW5ld3NwYXBlci1vOiBcIlxcZjFlYVwiO1xuJGZhLXZhci1vYmplY3QtZ3JvdXA6IFwiXFxmMjQ3XCI7XG4kZmEtdmFyLW9iamVjdC11bmdyb3VwOiBcIlxcZjI0OFwiO1xuJGZhLXZhci1vZG5va2xhc3NuaWtpOiBcIlxcZjI2M1wiO1xuJGZhLXZhci1vZG5va2xhc3NuaWtpLXNxdWFyZTogXCJcXGYyNjRcIjtcbiRmYS12YXItb3BlbmNhcnQ6IFwiXFxmMjNkXCI7XG4kZmEtdmFyLW9wZW5pZDogXCJcXGYxOWJcIjtcbiRmYS12YXItb3BlcmE6IFwiXFxmMjZhXCI7XG4kZmEtdmFyLW9wdGluLW1vbnN0ZXI6IFwiXFxmMjNjXCI7XG4kZmEtdmFyLW91dGRlbnQ6IFwiXFxmMDNiXCI7XG4kZmEtdmFyLXBhZ2VsaW5lczogXCJcXGYxOGNcIjtcbiRmYS12YXItcGFpbnQtYnJ1c2g6IFwiXFxmMWZjXCI7XG4kZmEtdmFyLXBhcGVyLXBsYW5lOiBcIlxcZjFkOFwiO1xuJGZhLXZhci1wYXBlci1wbGFuZS1vOiBcIlxcZjFkOVwiO1xuJGZhLXZhci1wYXBlcmNsaXA6IFwiXFxmMGM2XCI7XG4kZmEtdmFyLXBhcmFncmFwaDogXCJcXGYxZGRcIjtcbiRmYS12YXItcGFzdGU6IFwiXFxmMGVhXCI7XG4kZmEtdmFyLXBhdXNlOiBcIlxcZjA0Y1wiO1xuJGZhLXZhci1wYXVzZS1jaXJjbGU6IFwiXFxmMjhiXCI7XG4kZmEtdmFyLXBhdXNlLWNpcmNsZS1vOiBcIlxcZjI4Y1wiO1xuJGZhLXZhci1wYXc6IFwiXFxmMWIwXCI7XG4kZmEtdmFyLXBheXBhbDogXCJcXGYxZWRcIjtcbiRmYS12YXItcGVuY2lsOiBcIlxcZjA0MFwiO1xuJGZhLXZhci1wZW5jaWwtc3F1YXJlOiBcIlxcZjE0YlwiO1xuJGZhLXZhci1wZW5jaWwtc3F1YXJlLW86IFwiXFxmMDQ0XCI7XG4kZmEtdmFyLXBlcmNlbnQ6IFwiXFxmMjk1XCI7XG4kZmEtdmFyLXBob25lOiBcIlxcZjA5NVwiO1xuJGZhLXZhci1waG9uZS1zcXVhcmU6IFwiXFxmMDk4XCI7XG4kZmEtdmFyLXBob3RvOiBcIlxcZjAzZVwiO1xuJGZhLXZhci1waWN0dXJlLW86IFwiXFxmMDNlXCI7XG4kZmEtdmFyLXBpZS1jaGFydDogXCJcXGYyMDBcIjtcbiRmYS12YXItcGllZC1waXBlcjogXCJcXGYyYWVcIjtcbiRmYS12YXItcGllZC1waXBlci1hbHQ6IFwiXFxmMWE4XCI7XG4kZmEtdmFyLXBpZWQtcGlwZXItcHA6IFwiXFxmMWE3XCI7XG4kZmEtdmFyLXBpbnRlcmVzdDogXCJcXGYwZDJcIjtcbiRmYS12YXItcGludGVyZXN0LXA6IFwiXFxmMjMxXCI7XG4kZmEtdmFyLXBpbnRlcmVzdC1zcXVhcmU6IFwiXFxmMGQzXCI7XG4kZmEtdmFyLXBsYW5lOiBcIlxcZjA3MlwiO1xuJGZhLXZhci1wbGF5OiBcIlxcZjA0YlwiO1xuJGZhLXZhci1wbGF5LWNpcmNsZTogXCJcXGYxNDRcIjtcbiRmYS12YXItcGxheS1jaXJjbGUtbzogXCJcXGYwMWRcIjtcbiRmYS12YXItcGx1ZzogXCJcXGYxZTZcIjtcbiRmYS12YXItcGx1czogXCJcXGYwNjdcIjtcbiRmYS12YXItcGx1cy1jaXJjbGU6IFwiXFxmMDU1XCI7XG4kZmEtdmFyLXBsdXMtc3F1YXJlOiBcIlxcZjBmZVwiO1xuJGZhLXZhci1wbHVzLXNxdWFyZS1vOiBcIlxcZjE5NlwiO1xuJGZhLXZhci1wb2RjYXN0OiBcIlxcZjJjZVwiO1xuJGZhLXZhci1wb3dlci1vZmY6IFwiXFxmMDExXCI7XG4kZmEtdmFyLXByaW50OiBcIlxcZjAyZlwiO1xuJGZhLXZhci1wcm9kdWN0LWh1bnQ6IFwiXFxmMjg4XCI7XG4kZmEtdmFyLXB1enpsZS1waWVjZTogXCJcXGYxMmVcIjtcbiRmYS12YXItcXE6IFwiXFxmMWQ2XCI7XG4kZmEtdmFyLXFyY29kZTogXCJcXGYwMjlcIjtcbiRmYS12YXItcXVlc3Rpb246IFwiXFxmMTI4XCI7XG4kZmEtdmFyLXF1ZXN0aW9uLWNpcmNsZTogXCJcXGYwNTlcIjtcbiRmYS12YXItcXVlc3Rpb24tY2lyY2xlLW86IFwiXFxmMjljXCI7XG4kZmEtdmFyLXF1b3JhOiBcIlxcZjJjNFwiO1xuJGZhLXZhci1xdW90ZS1sZWZ0OiBcIlxcZjEwZFwiO1xuJGZhLXZhci1xdW90ZS1yaWdodDogXCJcXGYxMGVcIjtcbiRmYS12YXItcmE6IFwiXFxmMWQwXCI7XG4kZmEtdmFyLXJhbmRvbTogXCJcXGYwNzRcIjtcbiRmYS12YXItcmF2ZWxyeTogXCJcXGYyZDlcIjtcbiRmYS12YXItcmViZWw6IFwiXFxmMWQwXCI7XG4kZmEtdmFyLXJlY3ljbGU6IFwiXFxmMWI4XCI7XG4kZmEtdmFyLXJlZGRpdDogXCJcXGYxYTFcIjtcbiRmYS12YXItcmVkZGl0LWFsaWVuOiBcIlxcZjI4MVwiO1xuJGZhLXZhci1yZWRkaXQtc3F1YXJlOiBcIlxcZjFhMlwiO1xuJGZhLXZhci1yZWZyZXNoOiBcIlxcZjAyMVwiO1xuJGZhLXZhci1yZWdpc3RlcmVkOiBcIlxcZjI1ZFwiO1xuJGZhLXZhci1yZW1vdmU6IFwiXFxmMDBkXCI7XG4kZmEtdmFyLXJlbnJlbjogXCJcXGYxOGJcIjtcbiRmYS12YXItcmVvcmRlcjogXCJcXGYwYzlcIjtcbiRmYS12YXItcmVwZWF0OiBcIlxcZjAxZVwiO1xuJGZhLXZhci1yZXBseTogXCJcXGYxMTJcIjtcbiRmYS12YXItcmVwbHktYWxsOiBcIlxcZjEyMlwiO1xuJGZhLXZhci1yZXNpc3RhbmNlOiBcIlxcZjFkMFwiO1xuJGZhLXZhci1yZXR3ZWV0OiBcIlxcZjA3OVwiO1xuJGZhLXZhci1ybWI6IFwiXFxmMTU3XCI7XG4kZmEtdmFyLXJvYWQ6IFwiXFxmMDE4XCI7XG4kZmEtdmFyLXJvY2tldDogXCJcXGYxMzVcIjtcbiRmYS12YXItcm90YXRlLWxlZnQ6IFwiXFxmMGUyXCI7XG4kZmEtdmFyLXJvdGF0ZS1yaWdodDogXCJcXGYwMWVcIjtcbiRmYS12YXItcm91YmxlOiBcIlxcZjE1OFwiO1xuJGZhLXZhci1yc3M6IFwiXFxmMDllXCI7XG4kZmEtdmFyLXJzcy1zcXVhcmU6IFwiXFxmMTQzXCI7XG4kZmEtdmFyLXJ1YjogXCJcXGYxNThcIjtcbiRmYS12YXItcnVibGU6IFwiXFxmMTU4XCI7XG4kZmEtdmFyLXJ1cGVlOiBcIlxcZjE1NlwiO1xuJGZhLXZhci1zMTU6IFwiXFxmMmNkXCI7XG4kZmEtdmFyLXNhZmFyaTogXCJcXGYyNjdcIjtcbiRmYS12YXItc2F2ZTogXCJcXGYwYzdcIjtcbiRmYS12YXItc2Npc3NvcnM6IFwiXFxmMGM0XCI7XG4kZmEtdmFyLXNjcmliZDogXCJcXGYyOGFcIjtcbiRmYS12YXItc2VhcmNoOiBcIlxcZjAwMlwiO1xuJGZhLXZhci1zZWFyY2gtbWludXM6IFwiXFxmMDEwXCI7XG4kZmEtdmFyLXNlYXJjaC1wbHVzOiBcIlxcZjAwZVwiO1xuJGZhLXZhci1zZWxsc3k6IFwiXFxmMjEzXCI7XG4kZmEtdmFyLXNlbmQ6IFwiXFxmMWQ4XCI7XG4kZmEtdmFyLXNlbmQtbzogXCJcXGYxZDlcIjtcbiRmYS12YXItc2VydmVyOiBcIlxcZjIzM1wiO1xuJGZhLXZhci1zaGFyZTogXCJcXGYwNjRcIjtcbiRmYS12YXItc2hhcmUtYWx0OiBcIlxcZjFlMFwiO1xuJGZhLXZhci1zaGFyZS1hbHQtc3F1YXJlOiBcIlxcZjFlMVwiO1xuJGZhLXZhci1zaGFyZS1zcXVhcmU6IFwiXFxmMTRkXCI7XG4kZmEtdmFyLXNoYXJlLXNxdWFyZS1vOiBcIlxcZjA0NVwiO1xuJGZhLXZhci1zaGVrZWw6IFwiXFxmMjBiXCI7XG4kZmEtdmFyLXNoZXFlbDogXCJcXGYyMGJcIjtcbiRmYS12YXItc2hpZWxkOiBcIlxcZjEzMlwiO1xuJGZhLXZhci1zaGlwOiBcIlxcZjIxYVwiO1xuJGZhLXZhci1zaGlydHNpbmJ1bGs6IFwiXFxmMjE0XCI7XG4kZmEtdmFyLXNob3BwaW5nLWJhZzogXCJcXGYyOTBcIjtcbiRmYS12YXItc2hvcHBpbmctYmFza2V0OiBcIlxcZjI5MVwiO1xuJGZhLXZhci1zaG9wcGluZy1jYXJ0OiBcIlxcZjA3YVwiO1xuJGZhLXZhci1zaG93ZXI6IFwiXFxmMmNjXCI7XG4kZmEtdmFyLXNpZ24taW46IFwiXFxmMDkwXCI7XG4kZmEtdmFyLXNpZ24tbGFuZ3VhZ2U6IFwiXFxmMmE3XCI7XG4kZmEtdmFyLXNpZ24tb3V0OiBcIlxcZjA4YlwiO1xuJGZhLXZhci1zaWduYWw6IFwiXFxmMDEyXCI7XG4kZmEtdmFyLXNpZ25pbmc6IFwiXFxmMmE3XCI7XG4kZmEtdmFyLXNpbXBseWJ1aWx0OiBcIlxcZjIxNVwiO1xuJGZhLXZhci1zaXRlbWFwOiBcIlxcZjBlOFwiO1xuJGZhLXZhci1za3lhdGxhczogXCJcXGYyMTZcIjtcbiRmYS12YXItc2t5cGU6IFwiXFxmMTdlXCI7XG4kZmEtdmFyLXNsYWNrOiBcIlxcZjE5OFwiO1xuJGZhLXZhci1zbGlkZXJzOiBcIlxcZjFkZVwiO1xuJGZhLXZhci1zbGlkZXNoYXJlOiBcIlxcZjFlN1wiO1xuJGZhLXZhci1zbWlsZS1vOiBcIlxcZjExOFwiO1xuJGZhLXZhci1zbmFwY2hhdDogXCJcXGYyYWJcIjtcbiRmYS12YXItc25hcGNoYXQtZ2hvc3Q6IFwiXFxmMmFjXCI7XG4kZmEtdmFyLXNuYXBjaGF0LXNxdWFyZTogXCJcXGYyYWRcIjtcbiRmYS12YXItc25vd2ZsYWtlLW86IFwiXFxmMmRjXCI7XG4kZmEtdmFyLXNvY2Nlci1iYWxsLW86IFwiXFxmMWUzXCI7XG4kZmEtdmFyLXNvcnQ6IFwiXFxmMGRjXCI7XG4kZmEtdmFyLXNvcnQtYWxwaGEtYXNjOiBcIlxcZjE1ZFwiO1xuJGZhLXZhci1zb3J0LWFscGhhLWRlc2M6IFwiXFxmMTVlXCI7XG4kZmEtdmFyLXNvcnQtYW1vdW50LWFzYzogXCJcXGYxNjBcIjtcbiRmYS12YXItc29ydC1hbW91bnQtZGVzYzogXCJcXGYxNjFcIjtcbiRmYS12YXItc29ydC1hc2M6IFwiXFxmMGRlXCI7XG4kZmEtdmFyLXNvcnQtZGVzYzogXCJcXGYwZGRcIjtcbiRmYS12YXItc29ydC1kb3duOiBcIlxcZjBkZFwiO1xuJGZhLXZhci1zb3J0LW51bWVyaWMtYXNjOiBcIlxcZjE2MlwiO1xuJGZhLXZhci1zb3J0LW51bWVyaWMtZGVzYzogXCJcXGYxNjNcIjtcbiRmYS12YXItc29ydC11cDogXCJcXGYwZGVcIjtcbiRmYS12YXItc291bmRjbG91ZDogXCJcXGYxYmVcIjtcbiRmYS12YXItc3BhY2Utc2h1dHRsZTogXCJcXGYxOTdcIjtcbiRmYS12YXItc3Bpbm5lcjogXCJcXGYxMTBcIjtcbiRmYS12YXItc3Bvb246IFwiXFxmMWIxXCI7XG4kZmEtdmFyLXNwb3RpZnk6IFwiXFxmMWJjXCI7XG4kZmEtdmFyLXNxdWFyZTogXCJcXGYwYzhcIjtcbiRmYS12YXItc3F1YXJlLW86IFwiXFxmMDk2XCI7XG4kZmEtdmFyLXN0YWNrLWV4Y2hhbmdlOiBcIlxcZjE4ZFwiO1xuJGZhLXZhci1zdGFjay1vdmVyZmxvdzogXCJcXGYxNmNcIjtcbiRmYS12YXItc3RhcjogXCJcXGYwMDVcIjtcbiRmYS12YXItc3Rhci1oYWxmOiBcIlxcZjA4OVwiO1xuJGZhLXZhci1zdGFyLWhhbGYtZW1wdHk6IFwiXFxmMTIzXCI7XG4kZmEtdmFyLXN0YXItaGFsZi1mdWxsOiBcIlxcZjEyM1wiO1xuJGZhLXZhci1zdGFyLWhhbGYtbzogXCJcXGYxMjNcIjtcbiRmYS12YXItc3Rhci1vOiBcIlxcZjAwNlwiO1xuJGZhLXZhci1zdGVhbTogXCJcXGYxYjZcIjtcbiRmYS12YXItc3RlYW0tc3F1YXJlOiBcIlxcZjFiN1wiO1xuJGZhLXZhci1zdGVwLWJhY2t3YXJkOiBcIlxcZjA0OFwiO1xuJGZhLXZhci1zdGVwLWZvcndhcmQ6IFwiXFxmMDUxXCI7XG4kZmEtdmFyLXN0ZXRob3Njb3BlOiBcIlxcZjBmMVwiO1xuJGZhLXZhci1zdGlja3ktbm90ZTogXCJcXGYyNDlcIjtcbiRmYS12YXItc3RpY2t5LW5vdGUtbzogXCJcXGYyNGFcIjtcbiRmYS12YXItc3RvcDogXCJcXGYwNGRcIjtcbiRmYS12YXItc3RvcC1jaXJjbGU6IFwiXFxmMjhkXCI7XG4kZmEtdmFyLXN0b3AtY2lyY2xlLW86IFwiXFxmMjhlXCI7XG4kZmEtdmFyLXN0cmVldC12aWV3OiBcIlxcZjIxZFwiO1xuJGZhLXZhci1zdHJpa2V0aHJvdWdoOiBcIlxcZjBjY1wiO1xuJGZhLXZhci1zdHVtYmxldXBvbjogXCJcXGYxYTRcIjtcbiRmYS12YXItc3R1bWJsZXVwb24tY2lyY2xlOiBcIlxcZjFhM1wiO1xuJGZhLXZhci1zdWJzY3JpcHQ6IFwiXFxmMTJjXCI7XG4kZmEtdmFyLXN1YndheTogXCJcXGYyMzlcIjtcbiRmYS12YXItc3VpdGNhc2U6IFwiXFxmMGYyXCI7XG4kZmEtdmFyLXN1bi1vOiBcIlxcZjE4NVwiO1xuJGZhLXZhci1zdXBlcnBvd2VyczogXCJcXGYyZGRcIjtcbiRmYS12YXItc3VwZXJzY3JpcHQ6IFwiXFxmMTJiXCI7XG4kZmEtdmFyLXN1cHBvcnQ6IFwiXFxmMWNkXCI7XG4kZmEtdmFyLXRhYmxlOiBcIlxcZjBjZVwiO1xuJGZhLXZhci10YWJsZXQ6IFwiXFxmMTBhXCI7XG4kZmEtdmFyLXRhY2hvbWV0ZXI6IFwiXFxmMGU0XCI7XG4kZmEtdmFyLXRhZzogXCJcXGYwMmJcIjtcbiRmYS12YXItdGFnczogXCJcXGYwMmNcIjtcbiRmYS12YXItdGFza3M6IFwiXFxmMGFlXCI7XG4kZmEtdmFyLXRheGk6IFwiXFxmMWJhXCI7XG4kZmEtdmFyLXRlbGVncmFtOiBcIlxcZjJjNlwiO1xuJGZhLXZhci10ZWxldmlzaW9uOiBcIlxcZjI2Y1wiO1xuJGZhLXZhci10ZW5jZW50LXdlaWJvOiBcIlxcZjFkNVwiO1xuJGZhLXZhci10ZXJtaW5hbDogXCJcXGYxMjBcIjtcbiRmYS12YXItdGV4dC1oZWlnaHQ6IFwiXFxmMDM0XCI7XG4kZmEtdmFyLXRleHQtd2lkdGg6IFwiXFxmMDM1XCI7XG4kZmEtdmFyLXRoOiBcIlxcZjAwYVwiO1xuJGZhLXZhci10aC1sYXJnZTogXCJcXGYwMDlcIjtcbiRmYS12YXItdGgtbGlzdDogXCJcXGYwMGJcIjtcbiRmYS12YXItdGhlbWVpc2xlOiBcIlxcZjJiMlwiO1xuJGZhLXZhci10aGVybW9tZXRlcjogXCJcXGYyYzdcIjtcbiRmYS12YXItdGhlcm1vbWV0ZXItMDogXCJcXGYyY2JcIjtcbiRmYS12YXItdGhlcm1vbWV0ZXItMTogXCJcXGYyY2FcIjtcbiRmYS12YXItdGhlcm1vbWV0ZXItMjogXCJcXGYyYzlcIjtcbiRmYS12YXItdGhlcm1vbWV0ZXItMzogXCJcXGYyYzhcIjtcbiRmYS12YXItdGhlcm1vbWV0ZXItNDogXCJcXGYyYzdcIjtcbiRmYS12YXItdGhlcm1vbWV0ZXItZW1wdHk6IFwiXFxmMmNiXCI7XG4kZmEtdmFyLXRoZXJtb21ldGVyLWZ1bGw6IFwiXFxmMmM3XCI7XG4kZmEtdmFyLXRoZXJtb21ldGVyLWhhbGY6IFwiXFxmMmM5XCI7XG4kZmEtdmFyLXRoZXJtb21ldGVyLXF1YXJ0ZXI6IFwiXFxmMmNhXCI7XG4kZmEtdmFyLXRoZXJtb21ldGVyLXRocmVlLXF1YXJ0ZXJzOiBcIlxcZjJjOFwiO1xuJGZhLXZhci10aHVtYi10YWNrOiBcIlxcZjA4ZFwiO1xuJGZhLXZhci10aHVtYnMtZG93bjogXCJcXGYxNjVcIjtcbiRmYS12YXItdGh1bWJzLW8tZG93bjogXCJcXGYwODhcIjtcbiRmYS12YXItdGh1bWJzLW8tdXA6IFwiXFxmMDg3XCI7XG4kZmEtdmFyLXRodW1icy11cDogXCJcXGYxNjRcIjtcbiRmYS12YXItdGlja2V0OiBcIlxcZjE0NVwiO1xuJGZhLXZhci10aW1lczogXCJcXGYwMGRcIjtcbiRmYS12YXItdGltZXMtY2lyY2xlOiBcIlxcZjA1N1wiO1xuJGZhLXZhci10aW1lcy1jaXJjbGUtbzogXCJcXGYwNWNcIjtcbiRmYS12YXItdGltZXMtcmVjdGFuZ2xlOiBcIlxcZjJkM1wiO1xuJGZhLXZhci10aW1lcy1yZWN0YW5nbGUtbzogXCJcXGYyZDRcIjtcbiRmYS12YXItdGludDogXCJcXGYwNDNcIjtcbiRmYS12YXItdG9nZ2xlLWRvd246IFwiXFxmMTUwXCI7XG4kZmEtdmFyLXRvZ2dsZS1sZWZ0OiBcIlxcZjE5MVwiO1xuJGZhLXZhci10b2dnbGUtb2ZmOiBcIlxcZjIwNFwiO1xuJGZhLXZhci10b2dnbGUtb246IFwiXFxmMjA1XCI7XG4kZmEtdmFyLXRvZ2dsZS1yaWdodDogXCJcXGYxNTJcIjtcbiRmYS12YXItdG9nZ2xlLXVwOiBcIlxcZjE1MVwiO1xuJGZhLXZhci10cmFkZW1hcms6IFwiXFxmMjVjXCI7XG4kZmEtdmFyLXRyYWluOiBcIlxcZjIzOFwiO1xuJGZhLXZhci10cmFuc2dlbmRlcjogXCJcXGYyMjRcIjtcbiRmYS12YXItdHJhbnNnZW5kZXItYWx0OiBcIlxcZjIyNVwiO1xuJGZhLXZhci10cmFzaDogXCJcXGYxZjhcIjtcbiRmYS12YXItdHJhc2gtbzogXCJcXGYwMTRcIjtcbiRmYS12YXItdHJlZTogXCJcXGYxYmJcIjtcbiRmYS12YXItdHJlbGxvOiBcIlxcZjE4MVwiO1xuJGZhLXZhci10cmlwYWR2aXNvcjogXCJcXGYyNjJcIjtcbiRmYS12YXItdHJvcGh5OiBcIlxcZjA5MVwiO1xuJGZhLXZhci10cnVjazogXCJcXGYwZDFcIjtcbiRmYS12YXItdHJ5OiBcIlxcZjE5NVwiO1xuJGZhLXZhci10dHk6IFwiXFxmMWU0XCI7XG4kZmEtdmFyLXR1bWJscjogXCJcXGYxNzNcIjtcbiRmYS12YXItdHVtYmxyLXNxdWFyZTogXCJcXGYxNzRcIjtcbiRmYS12YXItdHVya2lzaC1saXJhOiBcIlxcZjE5NVwiO1xuJGZhLXZhci10djogXCJcXGYyNmNcIjtcbiRmYS12YXItdHdpdGNoOiBcIlxcZjFlOFwiO1xuJGZhLXZhci10d2l0dGVyOiBcIlxcZjA5OVwiO1xuJGZhLXZhci10d2l0dGVyLXNxdWFyZTogXCJcXGYwODFcIjtcbiRmYS12YXItdW1icmVsbGE6IFwiXFxmMGU5XCI7XG4kZmEtdmFyLXVuZGVybGluZTogXCJcXGYwY2RcIjtcbiRmYS12YXItdW5kbzogXCJcXGYwZTJcIjtcbiRmYS12YXItdW5pdmVyc2FsLWFjY2VzczogXCJcXGYyOWFcIjtcbiRmYS12YXItdW5pdmVyc2l0eTogXCJcXGYxOWNcIjtcbiRmYS12YXItdW5saW5rOiBcIlxcZjEyN1wiO1xuJGZhLXZhci11bmxvY2s6IFwiXFxmMDljXCI7XG4kZmEtdmFyLXVubG9jay1hbHQ6IFwiXFxmMTNlXCI7XG4kZmEtdmFyLXVuc29ydGVkOiBcIlxcZjBkY1wiO1xuJGZhLXZhci11cGxvYWQ6IFwiXFxmMDkzXCI7XG4kZmEtdmFyLXVzYjogXCJcXGYyODdcIjtcbiRmYS12YXItdXNkOiBcIlxcZjE1NVwiO1xuJGZhLXZhci11c2VyOiBcIlxcZjAwN1wiO1xuJGZhLXZhci11c2VyLWNpcmNsZTogXCJcXGYyYmRcIjtcbiRmYS12YXItdXNlci1jaXJjbGUtbzogXCJcXGYyYmVcIjtcbiRmYS12YXItdXNlci1tZDogXCJcXGYwZjBcIjtcbiRmYS12YXItdXNlci1vOiBcIlxcZjJjMFwiO1xuJGZhLXZhci11c2VyLXBsdXM6IFwiXFxmMjM0XCI7XG4kZmEtdmFyLXVzZXItc2VjcmV0OiBcIlxcZjIxYlwiO1xuJGZhLXZhci11c2VyLXRpbWVzOiBcIlxcZjIzNVwiO1xuJGZhLXZhci11c2VyczogXCJcXGYwYzBcIjtcbiRmYS12YXItdmNhcmQ6IFwiXFxmMmJiXCI7XG4kZmEtdmFyLXZjYXJkLW86IFwiXFxmMmJjXCI7XG4kZmEtdmFyLXZlbnVzOiBcIlxcZjIyMVwiO1xuJGZhLXZhci12ZW51cy1kb3VibGU6IFwiXFxmMjI2XCI7XG4kZmEtdmFyLXZlbnVzLW1hcnM6IFwiXFxmMjI4XCI7XG4kZmEtdmFyLXZpYWNvaW46IFwiXFxmMjM3XCI7XG4kZmEtdmFyLXZpYWRlbzogXCJcXGYyYTlcIjtcbiRmYS12YXItdmlhZGVvLXNxdWFyZTogXCJcXGYyYWFcIjtcbiRmYS12YXItdmlkZW8tY2FtZXJhOiBcIlxcZjAzZFwiO1xuJGZhLXZhci12aW1lbzogXCJcXGYyN2RcIjtcbiRmYS12YXItdmltZW8tc3F1YXJlOiBcIlxcZjE5NFwiO1xuJGZhLXZhci12aW5lOiBcIlxcZjFjYVwiO1xuJGZhLXZhci12azogXCJcXGYxODlcIjtcbiRmYS12YXItdm9sdW1lLWNvbnRyb2wtcGhvbmU6IFwiXFxmMmEwXCI7XG4kZmEtdmFyLXZvbHVtZS1kb3duOiBcIlxcZjAyN1wiO1xuJGZhLXZhci12b2x1bWUtb2ZmOiBcIlxcZjAyNlwiO1xuJGZhLXZhci12b2x1bWUtdXA6IFwiXFxmMDI4XCI7XG4kZmEtdmFyLXdhcm5pbmc6IFwiXFxmMDcxXCI7XG4kZmEtdmFyLXdlY2hhdDogXCJcXGYxZDdcIjtcbiRmYS12YXItd2VpYm86IFwiXFxmMThhXCI7XG4kZmEtdmFyLXdlaXhpbjogXCJcXGYxZDdcIjtcbiRmYS12YXItd2hhdHNhcHA6IFwiXFxmMjMyXCI7XG4kZmEtdmFyLXdoZWVsY2hhaXI6IFwiXFxmMTkzXCI7XG4kZmEtdmFyLXdoZWVsY2hhaXItYWx0OiBcIlxcZjI5YlwiO1xuJGZhLXZhci13aWZpOiBcIlxcZjFlYlwiO1xuJGZhLXZhci13aWtpcGVkaWEtdzogXCJcXGYyNjZcIjtcbiRmYS12YXItd2luZG93LWNsb3NlOiBcIlxcZjJkM1wiO1xuJGZhLXZhci13aW5kb3ctY2xvc2UtbzogXCJcXGYyZDRcIjtcbiRmYS12YXItd2luZG93LW1heGltaXplOiBcIlxcZjJkMFwiO1xuJGZhLXZhci13aW5kb3ctbWluaW1pemU6IFwiXFxmMmQxXCI7XG4kZmEtdmFyLXdpbmRvdy1yZXN0b3JlOiBcIlxcZjJkMlwiO1xuJGZhLXZhci13aW5kb3dzOiBcIlxcZjE3YVwiO1xuJGZhLXZhci13b246IFwiXFxmMTU5XCI7XG4kZmEtdmFyLXdvcmRwcmVzczogXCJcXGYxOWFcIjtcbiRmYS12YXItd3BiZWdpbm5lcjogXCJcXGYyOTdcIjtcbiRmYS12YXItd3BleHBsb3JlcjogXCJcXGYyZGVcIjtcbiRmYS12YXItd3Bmb3JtczogXCJcXGYyOThcIjtcbiRmYS12YXItd3JlbmNoOiBcIlxcZjBhZFwiO1xuJGZhLXZhci14aW5nOiBcIlxcZjE2OFwiO1xuJGZhLXZhci14aW5nLXNxdWFyZTogXCJcXGYxNjlcIjtcbiRmYS12YXIteS1jb21iaW5hdG9yOiBcIlxcZjIzYlwiO1xuJGZhLXZhci15LWNvbWJpbmF0b3Itc3F1YXJlOiBcIlxcZjFkNFwiO1xuJGZhLXZhci15YWhvbzogXCJcXGYxOWVcIjtcbiRmYS12YXIteWM6IFwiXFxmMjNiXCI7XG4kZmEtdmFyLXljLXNxdWFyZTogXCJcXGYxZDRcIjtcbiRmYS12YXIteWVscDogXCJcXGYxZTlcIjtcbiRmYS12YXIteWVuOiBcIlxcZjE1N1wiO1xuJGZhLXZhci15b2FzdDogXCJcXGYyYjFcIjtcbiRmYS12YXIteW91dHViZTogXCJcXGYxNjdcIjtcbiRmYS12YXIteW91dHViZS1wbGF5OiBcIlxcZjE2YVwiO1xuJGZhLXZhci15b3V0dWJlLXNxdWFyZTogXCJcXGYxNjZcIjtcblxuIiwiLy8gTWl4aW5zXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5AbWl4aW4gZmEtaWNvbigpIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBmb250OiBub3JtYWwgbm9ybWFsIG5vcm1hbCAjeyRmYS1mb250LXNpemUtYmFzZX0vI3skZmEtbGluZS1oZWlnaHQtYmFzZX0gRm9udEF3ZXNvbWU7IC8vIHNob3J0ZW5pbmcgZm9udCBkZWNsYXJhdGlvblxuICBmb250LXNpemU6IGluaGVyaXQ7IC8vIGNhbid0IGhhdmUgZm9udC1zaXplIGluaGVyaXQgb24gbGluZSBhYm92ZSwgc28gbmVlZCB0byBvdmVycmlkZVxuICB0ZXh0LXJlbmRlcmluZzogYXV0bzsgLy8gb3B0aW1pemVsZWdpYmlsaXR5IHRocm93cyB0aGluZ3Mgb2ZmICMxMDk0XG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xuXG59XG5cbkBtaXhpbiBmYS1pY29uLXJvdGF0ZSgkZGVncmVlcywgJHJvdGF0aW9uKSB7XG4gIC1tcy1maWx0ZXI6IFwicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkJhc2ljSW1hZ2Uocm90YXRpb249I3skcm90YXRpb259KVwiO1xuICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKCRkZWdyZWVzKTtcbiAgICAgIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSgkZGVncmVlcyk7XG4gICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoJGRlZ3JlZXMpO1xufVxuXG5AbWl4aW4gZmEtaWNvbi1mbGlwKCRob3JpeiwgJHZlcnQsICRyb3RhdGlvbikge1xuICAtbXMtZmlsdGVyOiBcInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5CYXNpY0ltYWdlKHJvdGF0aW9uPSN7JHJvdGF0aW9ufSwgbWlycm9yPTEpXCI7XG4gIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgkaG9yaXosICR2ZXJ0KTtcbiAgICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlKCRob3JpeiwgJHZlcnQpO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoJGhvcml6LCAkdmVydCk7XG59XG5cblxuLy8gT25seSBkaXNwbGF5IGNvbnRlbnQgdG8gc2NyZWVuIHJlYWRlcnMuIEEgbGEgQm9vdHN0cmFwIDQuXG4vL1xuLy8gU2VlOiBodHRwOi8vYTExeXByb2plY3QuY29tL3Bvc3RzL2hvdy10by1oaWRlLWNvbnRlbnQvXG5cbkBtaXhpbiBzci1vbmx5IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMXB4O1xuICBoZWlnaHQ6IDFweDtcbiAgcGFkZGluZzogMDtcbiAgbWFyZ2luOiAtMXB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBjbGlwOiByZWN0KDAsMCwwLDApO1xuICBib3JkZXI6IDA7XG59XG5cbi8vIFVzZSBpbiBjb25qdW5jdGlvbiB3aXRoIC5zci1vbmx5IHRvIG9ubHkgZGlzcGxheSBjb250ZW50IHdoZW4gaXQncyBmb2N1c2VkLlxuLy9cbi8vIFVzZWZ1bCBmb3IgXCJTa2lwIHRvIG1haW4gY29udGVudFwiIGxpbmtzOyBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMjAxMy9OT1RFLVdDQUcyMC1URUNIUy0yMDEzMDkwNS9HMVxuLy9cbi8vIENyZWRpdDogSFRNTDUgQm9pbGVycGxhdGVcblxuQG1peGluIHNyLW9ubHktZm9jdXNhYmxlIHtcbiAgJjphY3RpdmUsXG4gICY6Zm9jdXMge1xuICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gICAgd2lkdGg6IGF1dG87XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIG1hcmdpbjogMDtcbiAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICBjbGlwOiBhdXRvO1xuICB9XG59XG4iLCIvKiBGT05UIFBBVEhcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ0ZvbnRBd2Vzb21lJztcbiAgc3JjOiB1cmwoJyN7JGZhLWZvbnQtcGF0aH0vZm9udGF3ZXNvbWUtd2ViZm9udC5lb3Q/dj0jeyRmYS12ZXJzaW9ufScpO1xuICBzcmM6IHVybCgnI3skZmEtZm9udC1wYXRofS9mb250YXdlc29tZS13ZWJmb250LmVvdD8jaWVmaXgmdj0jeyRmYS12ZXJzaW9ufScpIGZvcm1hdCgnZW1iZWRkZWQtb3BlbnR5cGUnKSxcbiAgICB1cmwoJyN7JGZhLWZvbnQtcGF0aH0vZm9udGF3ZXNvbWUtd2ViZm9udC53b2ZmMj92PSN7JGZhLXZlcnNpb259JykgZm9ybWF0KCd3b2ZmMicpLFxuICAgIHVybCgnI3skZmEtZm9udC1wYXRofS9mb250YXdlc29tZS13ZWJmb250LndvZmY/dj0jeyRmYS12ZXJzaW9ufScpIGZvcm1hdCgnd29mZicpLFxuICAgIHVybCgnI3skZmEtZm9udC1wYXRofS9mb250YXdlc29tZS13ZWJmb250LnR0Zj92PSN7JGZhLXZlcnNpb259JykgZm9ybWF0KCd0cnVldHlwZScpLFxuICAgIHVybCgnI3skZmEtZm9udC1wYXRofS9mb250YXdlc29tZS13ZWJmb250LnN2Zz92PSN7JGZhLXZlcnNpb259I2ZvbnRhd2Vzb21lcmVndWxhcicpIGZvcm1hdCgnc3ZnJyk7XG4vLyAgc3JjOiB1cmwoJyN7JGZhLWZvbnQtcGF0aH0vRm9udEF3ZXNvbWUub3RmJykgZm9ybWF0KCdvcGVudHlwZScpOyAvLyB1c2VkIHdoZW4gZGV2ZWxvcGluZyBmb250c1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG59XG4iLCIvLyBCYXNlIENsYXNzIERlZmluaXRpb25cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLiN7JGZhLWNzcy1wcmVmaXh9IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBmb250OiBub3JtYWwgbm9ybWFsIG5vcm1hbCAjeyRmYS1mb250LXNpemUtYmFzZX0vI3skZmEtbGluZS1oZWlnaHQtYmFzZX0gRm9udEF3ZXNvbWU7IC8vIHNob3J0ZW5pbmcgZm9udCBkZWNsYXJhdGlvblxuICBmb250LXNpemU6IGluaGVyaXQ7IC8vIGNhbid0IGhhdmUgZm9udC1zaXplIGluaGVyaXQgb24gbGluZSBhYm92ZSwgc28gbmVlZCB0byBvdmVycmlkZVxuICB0ZXh0LXJlbmRlcmluZzogYXV0bzsgLy8gb3B0aW1pemVsZWdpYmlsaXR5IHRocm93cyB0aGluZ3Mgb2ZmICMxMDk0XG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xuXG59XG4iLCIvLyBJY29uIFNpemVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qIG1ha2VzIHRoZSBmb250IDMzJSBsYXJnZXIgcmVsYXRpdmUgdG8gdGhlIGljb24gY29udGFpbmVyICovXG4uI3skZmEtY3NzLXByZWZpeH0tbGcge1xuICBmb250LXNpemU6ICg0ZW0gLyAzKTtcbiAgbGluZS1oZWlnaHQ6ICgzZW0gLyA0KTtcbiAgdmVydGljYWwtYWxpZ246IC0xNSU7XG59XG4uI3skZmEtY3NzLXByZWZpeH0tMnggeyBmb250LXNpemU6IDJlbTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LTN4IHsgZm9udC1zaXplOiAzZW07IH1cbi4jeyRmYS1jc3MtcHJlZml4fS00eCB7IGZvbnQtc2l6ZTogNGVtOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tNXggeyBmb250LXNpemU6IDVlbTsgfVxuIiwiLy8gRml4ZWQgV2lkdGggSWNvbnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi4jeyRmYS1jc3MtcHJlZml4fS1mdyB7XG4gIHdpZHRoOiAoMThlbSAvIDE0KTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuIiwiLy8gTGlzdCBJY29uc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4uI3skZmEtY3NzLXByZWZpeH0tdWwge1xuICBwYWRkaW5nLWxlZnQ6IDA7XG4gIG1hcmdpbi1sZWZ0OiAkZmEtbGktd2lkdGg7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgPiBsaSB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgfVxufVxuLiN7JGZhLWNzcy1wcmVmaXh9LWxpIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAtJGZhLWxpLXdpZHRoO1xuICB3aWR0aDogJGZhLWxpLXdpZHRoO1xuICB0b3A6ICgyZW0gLyAxNCk7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgJi4jeyRmYS1jc3MtcHJlZml4fS1sZyB7XG4gICAgbGVmdDogLSRmYS1saS13aWR0aCArICg0ZW0gLyAxNCk7XG4gIH1cbn1cbiIsIi8vIEJvcmRlcmVkICYgUHVsbGVkXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi4jeyRmYS1jc3MtcHJlZml4fS1ib3JkZXIge1xuICBwYWRkaW5nOiAuMmVtIC4yNWVtIC4xNWVtO1xuICBib3JkZXI6IHNvbGlkIC4wOGVtICRmYS1ib3JkZXItY29sb3I7XG4gIGJvcmRlci1yYWRpdXM6IC4xZW07XG59XG5cbi4jeyRmYS1jc3MtcHJlZml4fS1wdWxsLWxlZnQgeyBmbG9hdDogbGVmdDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXB1bGwtcmlnaHQgeyBmbG9hdDogcmlnaHQ7IH1cblxuLiN7JGZhLWNzcy1wcmVmaXh9IHtcbiAgJi4jeyRmYS1jc3MtcHJlZml4fS1wdWxsLWxlZnQgeyBtYXJnaW4tcmlnaHQ6IC4zZW07IH1cbiAgJi4jeyRmYS1jc3MtcHJlZml4fS1wdWxsLXJpZ2h0IHsgbWFyZ2luLWxlZnQ6IC4zZW07IH1cbn1cblxuLyogRGVwcmVjYXRlZCBhcyBvZiA0LjQuMCAqL1xuLnB1bGwtcmlnaHQgeyBmbG9hdDogcmlnaHQ7IH1cbi5wdWxsLWxlZnQgeyBmbG9hdDogbGVmdDsgfVxuXG4uI3skZmEtY3NzLXByZWZpeH0ge1xuICAmLnB1bGwtbGVmdCB7IG1hcmdpbi1yaWdodDogLjNlbTsgfVxuICAmLnB1bGwtcmlnaHQgeyBtYXJnaW4tbGVmdDogLjNlbTsgfVxufVxuIiwiLy8gU3Bpbm5pbmcgSWNvbnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi4jeyRmYS1jc3MtcHJlZml4fS1zcGluIHtcbiAgLXdlYmtpdC1hbmltYXRpb246IGZhLXNwaW4gMnMgaW5maW5pdGUgbGluZWFyO1xuICAgICAgICAgIGFuaW1hdGlvbjogZmEtc3BpbiAycyBpbmZpbml0ZSBsaW5lYXI7XG59XG5cbi4jeyRmYS1jc3MtcHJlZml4fS1wdWxzZSB7XG4gIC13ZWJraXQtYW5pbWF0aW9uOiBmYS1zcGluIDFzIGluZmluaXRlIHN0ZXBzKDgpO1xuICAgICAgICAgIGFuaW1hdGlvbjogZmEtc3BpbiAxcyBpbmZpbml0ZSBzdGVwcyg4KTtcbn1cblxuQC13ZWJraXQta2V5ZnJhbWVzIGZhLXNwaW4ge1xuICAwJSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xuICB9XG4gIDEwMCUge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMzU5ZGVnKTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDM1OWRlZyk7XG4gIH1cbn1cblxuQGtleWZyYW1lcyBmYS1zcGluIHtcbiAgMCUge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcbiAgfVxuICAxMDAlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM1OWRlZyk7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNTlkZWcpO1xuICB9XG59XG4iLCIvLyBSb3RhdGVkICYgRmxpcHBlZCBJY29uc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4uI3skZmEtY3NzLXByZWZpeH0tcm90YXRlLTkwICB7IEBpbmNsdWRlIGZhLWljb24tcm90YXRlKDkwZGVnLCAxKTsgIH1cbi4jeyRmYS1jc3MtcHJlZml4fS1yb3RhdGUtMTgwIHsgQGluY2x1ZGUgZmEtaWNvbi1yb3RhdGUoMTgwZGVnLCAyKTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXJvdGF0ZS0yNzAgeyBAaW5jbHVkZSBmYS1pY29uLXJvdGF0ZSgyNzBkZWcsIDMpOyB9XG5cbi4jeyRmYS1jc3MtcHJlZml4fS1mbGlwLWhvcml6b250YWwgeyBAaW5jbHVkZSBmYS1pY29uLWZsaXAoLTEsIDEsIDApOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZmxpcC12ZXJ0aWNhbCAgIHsgQGluY2x1ZGUgZmEtaWNvbi1mbGlwKDEsIC0xLCAyKTsgfVxuXG4vLyBIb29rIGZvciBJRTgtOVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG46cm9vdCAuI3skZmEtY3NzLXByZWZpeH0tcm90YXRlLTkwLFxuOnJvb3QgLiN7JGZhLWNzcy1wcmVmaXh9LXJvdGF0ZS0xODAsXG46cm9vdCAuI3skZmEtY3NzLXByZWZpeH0tcm90YXRlLTI3MCxcbjpyb290IC4jeyRmYS1jc3MtcHJlZml4fS1mbGlwLWhvcml6b250YWwsXG46cm9vdCAuI3skZmEtY3NzLXByZWZpeH0tZmxpcC12ZXJ0aWNhbCB7XG4gIGZpbHRlcjogbm9uZTtcbn1cbiIsIi8vIFN0YWNrZWQgSWNvbnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLiN7JGZhLWNzcy1wcmVmaXh9LXN0YWNrIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAyZW07XG4gIGhlaWdodDogMmVtO1xuICBsaW5lLWhlaWdodDogMmVtO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuLiN7JGZhLWNzcy1wcmVmaXh9LXN0YWNrLTF4LCAuI3skZmEtY3NzLXByZWZpeH0tc3RhY2stMngge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG4uI3skZmEtY3NzLXByZWZpeH0tc3RhY2stMXggeyBsaW5lLWhlaWdodDogaW5oZXJpdDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXN0YWNrLTJ4IHsgZm9udC1zaXplOiAyZW07IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1pbnZlcnNlIHsgY29sb3I6ICRmYS1pbnZlcnNlOyB9XG4iLCIvKiBGb250IEF3ZXNvbWUgdXNlcyB0aGUgVW5pY29kZSBQcml2YXRlIFVzZSBBcmVhIChQVUEpIHRvIGVuc3VyZSBzY3JlZW5cbiAgIHJlYWRlcnMgZG8gbm90IHJlYWQgb2ZmIHJhbmRvbSBjaGFyYWN0ZXJzIHRoYXQgcmVwcmVzZW50IGljb25zICovXG5cbi4jeyRmYS1jc3MtcHJlZml4fS1nbGFzczpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWdsYXNzOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tbXVzaWM6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1tdXNpYzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXNlYXJjaDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXNlYXJjaDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWVudmVsb3BlLW86YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1lbnZlbG9wZS1vOyB9XG4uI3skZmEtY3NzLXByZWZpeH0taGVhcnQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1oZWFydDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXN0YXI6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1zdGFyOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tc3Rhci1vOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc3Rhci1vOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tdXNlcjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXVzZXI7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1maWxtOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZmlsbTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXRoLWxhcmdlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItdGgtbGFyZ2U7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS10aDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXRoOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tdGgtbGlzdDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXRoLWxpc3Q7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1jaGVjazpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWNoZWNrOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tcmVtb3ZlOmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1jbG9zZTpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tdGltZXM6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci10aW1lczsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXNlYXJjaC1wbHVzOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc2VhcmNoLXBsdXM7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1zZWFyY2gtbWludXM6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1zZWFyY2gtbWludXM7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1wb3dlci1vZmY6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1wb3dlci1vZmY7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1zaWduYWw6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1zaWduYWw7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1nZWFyOmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1jb2c6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1jb2c7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS10cmFzaC1vOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItdHJhc2gtbzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWhvbWU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1ob21lOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZmlsZS1vOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZmlsZS1vOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tY2xvY2stbzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWNsb2NrLW87IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1yb2FkOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItcm9hZDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWRvd25sb2FkOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZG93bmxvYWQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1hcnJvdy1jaXJjbGUtby1kb3duOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYXJyb3ctY2lyY2xlLW8tZG93bjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWFycm93LWNpcmNsZS1vLXVwOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYXJyb3ctY2lyY2xlLW8tdXA7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1pbmJveDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWluYm94OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tcGxheS1jaXJjbGUtbzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXBsYXktY2lyY2xlLW87IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1yb3RhdGUtcmlnaHQ6YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LXJlcGVhdDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXJlcGVhdDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXJlZnJlc2g6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1yZWZyZXNoOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tbGlzdC1hbHQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1saXN0LWFsdDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWxvY2s6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1sb2NrOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZmxhZzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWZsYWc7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1oZWFkcGhvbmVzOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItaGVhZHBob25lczsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXZvbHVtZS1vZmY6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci12b2x1bWUtb2ZmOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tdm9sdW1lLWRvd246YmVmb3JlIHsgY29udGVudDogJGZhLXZhci12b2x1bWUtZG93bjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXZvbHVtZS11cDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXZvbHVtZS11cDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXFyY29kZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXFyY29kZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWJhcmNvZGU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1iYXJjb2RlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tdGFnOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItdGFnOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tdGFnczpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXRhZ3M7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1ib29rOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYm9vazsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWJvb2ttYXJrOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYm9va21hcms7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1wcmludDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXByaW50OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tY2FtZXJhOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItY2FtZXJhOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZm9udDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWZvbnQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1ib2xkOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYm9sZDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWl0YWxpYzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWl0YWxpYzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXRleHQtaGVpZ2h0OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItdGV4dC1oZWlnaHQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS10ZXh0LXdpZHRoOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItdGV4dC13aWR0aDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWFsaWduLWxlZnQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1hbGlnbi1sZWZ0OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYWxpZ24tY2VudGVyOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYWxpZ24tY2VudGVyOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYWxpZ24tcmlnaHQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1hbGlnbi1yaWdodDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWFsaWduLWp1c3RpZnk6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1hbGlnbi1qdXN0aWZ5OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tbGlzdDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWxpc3Q7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1kZWRlbnQ6YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LW91dGRlbnQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1vdXRkZW50OyB9XG4uI3skZmEtY3NzLXByZWZpeH0taW5kZW50OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItaW5kZW50OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tdmlkZW8tY2FtZXJhOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItdmlkZW8tY2FtZXJhOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tcGhvdG86YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LWltYWdlOmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1waWN0dXJlLW86YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1waWN0dXJlLW87IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1wZW5jaWw6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1wZW5jaWw7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1tYXAtbWFya2VyOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItbWFwLW1hcmtlcjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWFkanVzdDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWFkanVzdDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXRpbnQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci10aW50OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZWRpdDpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tcGVuY2lsLXNxdWFyZS1vOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItcGVuY2lsLXNxdWFyZS1vOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tc2hhcmUtc3F1YXJlLW86YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1zaGFyZS1zcXVhcmUtbzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWNoZWNrLXNxdWFyZS1vOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItY2hlY2stc3F1YXJlLW87IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1hcnJvd3M6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1hcnJvd3M7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1zdGVwLWJhY2t3YXJkOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc3RlcC1iYWNrd2FyZDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWZhc3QtYmFja3dhcmQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1mYXN0LWJhY2t3YXJkOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYmFja3dhcmQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1iYWNrd2FyZDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXBsYXk6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1wbGF5OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tcGF1c2U6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1wYXVzZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXN0b3A6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1zdG9wOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZm9yd2FyZDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWZvcndhcmQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1mYXN0LWZvcndhcmQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1mYXN0LWZvcndhcmQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1zdGVwLWZvcndhcmQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1zdGVwLWZvcndhcmQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1lamVjdDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWVqZWN0OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tY2hldnJvbi1sZWZ0OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItY2hldnJvbi1sZWZ0OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tY2hldnJvbi1yaWdodDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWNoZXZyb24tcmlnaHQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1wbHVzLWNpcmNsZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXBsdXMtY2lyY2xlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tbWludXMtY2lyY2xlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItbWludXMtY2lyY2xlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tdGltZXMtY2lyY2xlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItdGltZXMtY2lyY2xlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tY2hlY2stY2lyY2xlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItY2hlY2stY2lyY2xlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tcXVlc3Rpb24tY2lyY2xlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItcXVlc3Rpb24tY2lyY2xlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0taW5mby1jaXJjbGU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1pbmZvLWNpcmNsZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWNyb3NzaGFpcnM6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1jcm9zc2hhaXJzOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tdGltZXMtY2lyY2xlLW86YmVmb3JlIHsgY29udGVudDogJGZhLXZhci10aW1lcy1jaXJjbGUtbzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWNoZWNrLWNpcmNsZS1vOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItY2hlY2stY2lyY2xlLW87IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1iYW46YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1iYW47IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1hcnJvdy1sZWZ0OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYXJyb3ctbGVmdDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWFycm93LXJpZ2h0OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYXJyb3ctcmlnaHQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1hcnJvdy11cDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWFycm93LXVwOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYXJyb3ctZG93bjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWFycm93LWRvd247IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1tYWlsLWZvcndhcmQ6YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LXNoYXJlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc2hhcmU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1leHBhbmQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1leHBhbmQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1jb21wcmVzczpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWNvbXByZXNzOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tcGx1czpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXBsdXM7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1taW51czpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLW1pbnVzOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYXN0ZXJpc2s6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1hc3RlcmlzazsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWV4Y2xhbWF0aW9uLWNpcmNsZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWV4Y2xhbWF0aW9uLWNpcmNsZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWdpZnQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1naWZ0OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tbGVhZjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWxlYWY7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1maXJlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZmlyZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWV5ZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWV5ZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWV5ZS1zbGFzaDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWV5ZS1zbGFzaDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXdhcm5pbmc6YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LWV4Y2xhbWF0aW9uLXRyaWFuZ2xlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZXhjbGFtYXRpb24tdHJpYW5nbGU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1wbGFuZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXBsYW5lOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tY2FsZW5kYXI6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1jYWxlbmRhcjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXJhbmRvbTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXJhbmRvbTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWNvbW1lbnQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1jb21tZW50OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tbWFnbmV0OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItbWFnbmV0OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tY2hldnJvbi11cDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWNoZXZyb24tdXA7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1jaGV2cm9uLWRvd246YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1jaGV2cm9uLWRvd247IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1yZXR3ZWV0OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItcmV0d2VldDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXNob3BwaW5nLWNhcnQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1zaG9wcGluZy1jYXJ0OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZm9sZGVyOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZm9sZGVyOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZm9sZGVyLW9wZW46YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1mb2xkZXItb3BlbjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWFycm93cy12OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYXJyb3dzLXY7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1hcnJvd3MtaDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWFycm93cy1oOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYmFyLWNoYXJ0LW86YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LWJhci1jaGFydDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWJhci1jaGFydDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXR3aXR0ZXItc3F1YXJlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItdHdpdHRlci1zcXVhcmU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1mYWNlYm9vay1zcXVhcmU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1mYWNlYm9vay1zcXVhcmU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1jYW1lcmEtcmV0cm86YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1jYW1lcmEtcmV0cm87IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1rZXk6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1rZXk7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1nZWFyczpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tY29nczpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWNvZ3M7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1jb21tZW50czpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWNvbW1lbnRzOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tdGh1bWJzLW8tdXA6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci10aHVtYnMtby11cDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXRodW1icy1vLWRvd246YmVmb3JlIHsgY29udGVudDogJGZhLXZhci10aHVtYnMtby1kb3duOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tc3Rhci1oYWxmOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc3Rhci1oYWxmOyB9XG4uI3skZmEtY3NzLXByZWZpeH0taGVhcnQtbzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWhlYXJ0LW87IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1zaWduLW91dDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXNpZ24tb3V0OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tbGlua2VkaW4tc3F1YXJlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItbGlua2VkaW4tc3F1YXJlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tdGh1bWItdGFjazpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXRodW1iLXRhY2s7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1leHRlcm5hbC1saW5rOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZXh0ZXJuYWwtbGluazsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXNpZ24taW46YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1zaWduLWluOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tdHJvcGh5OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItdHJvcGh5OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZ2l0aHViLXNxdWFyZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWdpdGh1Yi1zcXVhcmU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS11cGxvYWQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci11cGxvYWQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1sZW1vbi1vOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItbGVtb24tbzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXBob25lOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItcGhvbmU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1zcXVhcmUtbzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXNxdWFyZS1vOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYm9va21hcmstbzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWJvb2ttYXJrLW87IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1waG9uZS1zcXVhcmU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1waG9uZS1zcXVhcmU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS10d2l0dGVyOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItdHdpdHRlcjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWZhY2Vib29rLWY6YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LWZhY2Vib29rOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZmFjZWJvb2s7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1naXRodWI6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1naXRodWI7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS11bmxvY2s6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci11bmxvY2s7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1jcmVkaXQtY2FyZDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWNyZWRpdC1jYXJkOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZmVlZDpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tcnNzOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItcnNzOyB9XG4uI3skZmEtY3NzLXByZWZpeH0taGRkLW86YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1oZGQtbzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWJ1bGxob3JuOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYnVsbGhvcm47IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1iZWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYmVsbDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWNlcnRpZmljYXRlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItY2VydGlmaWNhdGU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1oYW5kLW8tcmlnaHQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1oYW5kLW8tcmlnaHQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1oYW5kLW8tbGVmdDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWhhbmQtby1sZWZ0OyB9XG4uI3skZmEtY3NzLXByZWZpeH0taGFuZC1vLXVwOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItaGFuZC1vLXVwOyB9XG4uI3skZmEtY3NzLXByZWZpeH0taGFuZC1vLWRvd246YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1oYW5kLW8tZG93bjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWFycm93LWNpcmNsZS1sZWZ0OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYXJyb3ctY2lyY2xlLWxlZnQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1hcnJvdy1jaXJjbGUtcmlnaHQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1hcnJvdy1jaXJjbGUtcmlnaHQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1hcnJvdy1jaXJjbGUtdXA6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1hcnJvdy1jaXJjbGUtdXA7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1hcnJvdy1jaXJjbGUtZG93bjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWFycm93LWNpcmNsZS1kb3duOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZ2xvYmU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1nbG9iZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXdyZW5jaDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXdyZW5jaDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXRhc2tzOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItdGFza3M7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1maWx0ZXI6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1maWx0ZXI7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1icmllZmNhc2U6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1icmllZmNhc2U7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1hcnJvd3MtYWx0OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYXJyb3dzLWFsdDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWdyb3VwOmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS11c2VyczpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXVzZXJzOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tY2hhaW46YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LWxpbms6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1saW5rOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tY2xvdWQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1jbG91ZDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWZsYXNrOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZmxhc2s7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1jdXQ6YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LXNjaXNzb3JzOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc2Npc3NvcnM7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1jb3B5OmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1maWxlcy1vOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZmlsZXMtbzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXBhcGVyY2xpcDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXBhcGVyY2xpcDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXNhdmU6YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LWZsb3BweS1vOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZmxvcHB5LW87IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1zcXVhcmU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1zcXVhcmU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1uYXZpY29uOmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1yZW9yZGVyOmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1iYXJzOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYmFyczsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWxpc3QtdWw6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1saXN0LXVsOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tbGlzdC1vbDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWxpc3Qtb2w7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1zdHJpa2V0aHJvdWdoOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc3RyaWtldGhyb3VnaDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXVuZGVybGluZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXVuZGVybGluZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXRhYmxlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItdGFibGU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1tYWdpYzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLW1hZ2ljOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tdHJ1Y2s6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci10cnVjazsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXBpbnRlcmVzdDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXBpbnRlcmVzdDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXBpbnRlcmVzdC1zcXVhcmU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1waW50ZXJlc3Qtc3F1YXJlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZ29vZ2xlLXBsdXMtc3F1YXJlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZ29vZ2xlLXBsdXMtc3F1YXJlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZ29vZ2xlLXBsdXM6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1nb29nbGUtcGx1czsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LW1vbmV5OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItbW9uZXk7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1jYXJldC1kb3duOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItY2FyZXQtZG93bjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWNhcmV0LXVwOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItY2FyZXQtdXA7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1jYXJldC1sZWZ0OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItY2FyZXQtbGVmdDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWNhcmV0LXJpZ2h0OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItY2FyZXQtcmlnaHQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1jb2x1bW5zOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItY29sdW1uczsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXVuc29ydGVkOmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1zb3J0OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc29ydDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXNvcnQtZG93bjpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tc29ydC1kZXNjOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc29ydC1kZXNjOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tc29ydC11cDpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tc29ydC1hc2M6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1zb3J0LWFzYzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWVudmVsb3BlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZW52ZWxvcGU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1saW5rZWRpbjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWxpbmtlZGluOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tcm90YXRlLWxlZnQ6YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LXVuZG86YmVmb3JlIHsgY29udGVudDogJGZhLXZhci11bmRvOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tbGVnYWw6YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LWdhdmVsOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZ2F2ZWw7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1kYXNoYm9hcmQ6YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LXRhY2hvbWV0ZXI6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci10YWNob21ldGVyOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tY29tbWVudC1vOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItY29tbWVudC1vOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tY29tbWVudHMtbzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWNvbW1lbnRzLW87IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1mbGFzaDpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tYm9sdDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWJvbHQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1zaXRlbWFwOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc2l0ZW1hcDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXVtYnJlbGxhOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItdW1icmVsbGE7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1wYXN0ZTpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tY2xpcGJvYXJkOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItY2xpcGJvYXJkOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tbGlnaHRidWxiLW86YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1saWdodGJ1bGItbzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWV4Y2hhbmdlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZXhjaGFuZ2U7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1jbG91ZC1kb3dubG9hZDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWNsb3VkLWRvd25sb2FkOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tY2xvdWQtdXBsb2FkOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItY2xvdWQtdXBsb2FkOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tdXNlci1tZDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXVzZXItbWQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1zdGV0aG9zY29wZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXN0ZXRob3Njb3BlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tc3VpdGNhc2U6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1zdWl0Y2FzZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWJlbGwtbzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWJlbGwtbzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWNvZmZlZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWNvZmZlZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWN1dGxlcnk6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1jdXRsZXJ5OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZmlsZS10ZXh0LW86YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1maWxlLXRleHQtbzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWJ1aWxkaW5nLW86YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1idWlsZGluZy1vOyB9XG4uI3skZmEtY3NzLXByZWZpeH0taG9zcGl0YWwtbzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWhvc3BpdGFsLW87IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1hbWJ1bGFuY2U6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1hbWJ1bGFuY2U7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1tZWRraXQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1tZWRraXQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1maWdodGVyLWpldDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWZpZ2h0ZXItamV0OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYmVlcjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWJlZXI7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1oLXNxdWFyZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWgtc3F1YXJlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tcGx1cy1zcXVhcmU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1wbHVzLXNxdWFyZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWFuZ2xlLWRvdWJsZS1sZWZ0OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYW5nbGUtZG91YmxlLWxlZnQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1hbmdsZS1kb3VibGUtcmlnaHQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1hbmdsZS1kb3VibGUtcmlnaHQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1hbmdsZS1kb3VibGUtdXA6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1hbmdsZS1kb3VibGUtdXA7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1hbmdsZS1kb3VibGUtZG93bjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWFuZ2xlLWRvdWJsZS1kb3duOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYW5nbGUtbGVmdDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWFuZ2xlLWxlZnQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1hbmdsZS1yaWdodDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWFuZ2xlLXJpZ2h0OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYW5nbGUtdXA6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1hbmdsZS11cDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWFuZ2xlLWRvd246YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1hbmdsZS1kb3duOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZGVza3RvcDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWRlc2t0b3A7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1sYXB0b3A6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1sYXB0b3A7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS10YWJsZXQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci10YWJsZXQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1tb2JpbGUtcGhvbmU6YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LW1vYmlsZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLW1vYmlsZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWNpcmNsZS1vOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItY2lyY2xlLW87IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1xdW90ZS1sZWZ0OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItcXVvdGUtbGVmdDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXF1b3RlLXJpZ2h0OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItcXVvdGUtcmlnaHQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1zcGlubmVyOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc3Bpbm5lcjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWNpcmNsZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWNpcmNsZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LW1haWwtcmVwbHk6YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LXJlcGx5OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItcmVwbHk7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1naXRodWItYWx0OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZ2l0aHViLWFsdDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWZvbGRlci1vOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZm9sZGVyLW87IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1mb2xkZXItb3Blbi1vOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZm9sZGVyLW9wZW4tbzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXNtaWxlLW86YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1zbWlsZS1vOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZnJvd24tbzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWZyb3duLW87IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1tZWgtbzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLW1laC1vOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZ2FtZXBhZDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWdhbWVwYWQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1rZXlib2FyZC1vOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXIta2V5Ym9hcmQtbzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWZsYWctbzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWZsYWctbzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWZsYWctY2hlY2tlcmVkOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZmxhZy1jaGVja2VyZWQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS10ZXJtaW5hbDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXRlcm1pbmFsOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tY29kZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWNvZGU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1tYWlsLXJlcGx5LWFsbDpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tcmVwbHktYWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItcmVwbHktYWxsOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tc3Rhci1oYWxmLWVtcHR5OmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1zdGFyLWhhbGYtZnVsbDpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tc3Rhci1oYWxmLW86YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1zdGFyLWhhbGYtbzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWxvY2F0aW9uLWFycm93OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItbG9jYXRpb24tYXJyb3c7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1jcm9wOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItY3JvcDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWNvZGUtZm9yazpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWNvZGUtZm9yazsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXVubGluazpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tY2hhaW4tYnJva2VuOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItY2hhaW4tYnJva2VuOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tcXVlc3Rpb246YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1xdWVzdGlvbjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWluZm86YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1pbmZvOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZXhjbGFtYXRpb246YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1leGNsYW1hdGlvbjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXN1cGVyc2NyaXB0OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc3VwZXJzY3JpcHQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1zdWJzY3JpcHQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1zdWJzY3JpcHQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1lcmFzZXI6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1lcmFzZXI7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1wdXp6bGUtcGllY2U6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1wdXp6bGUtcGllY2U7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1taWNyb3Bob25lOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItbWljcm9waG9uZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LW1pY3JvcGhvbmUtc2xhc2g6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1taWNyb3Bob25lLXNsYXNoOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tc2hpZWxkOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc2hpZWxkOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tY2FsZW5kYXItbzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWNhbGVuZGFyLW87IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1maXJlLWV4dGluZ3Vpc2hlcjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWZpcmUtZXh0aW5ndWlzaGVyOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tcm9ja2V0OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItcm9ja2V0OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tbWF4Y2RuOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItbWF4Y2RuOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tY2hldnJvbi1jaXJjbGUtbGVmdDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWNoZXZyb24tY2lyY2xlLWxlZnQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1jaGV2cm9uLWNpcmNsZS1yaWdodDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWNoZXZyb24tY2lyY2xlLXJpZ2h0OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tY2hldnJvbi1jaXJjbGUtdXA6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1jaGV2cm9uLWNpcmNsZS11cDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWNoZXZyb24tY2lyY2xlLWRvd246YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1jaGV2cm9uLWNpcmNsZS1kb3duOyB9XG4uI3skZmEtY3NzLXByZWZpeH0taHRtbDU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1odG1sNTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWNzczM6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1jc3MzOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYW5jaG9yOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYW5jaG9yOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tdW5sb2NrLWFsdDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXVubG9jay1hbHQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1idWxsc2V5ZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWJ1bGxzZXllOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZWxsaXBzaXMtaDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWVsbGlwc2lzLWg7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1lbGxpcHNpcy12OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZWxsaXBzaXMtdjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXJzcy1zcXVhcmU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1yc3Mtc3F1YXJlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tcGxheS1jaXJjbGU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1wbGF5LWNpcmNsZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXRpY2tldDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXRpY2tldDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LW1pbnVzLXNxdWFyZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLW1pbnVzLXNxdWFyZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LW1pbnVzLXNxdWFyZS1vOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItbWludXMtc3F1YXJlLW87IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1sZXZlbC11cDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWxldmVsLXVwOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tbGV2ZWwtZG93bjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWxldmVsLWRvd247IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1jaGVjay1zcXVhcmU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1jaGVjay1zcXVhcmU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1wZW5jaWwtc3F1YXJlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItcGVuY2lsLXNxdWFyZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWV4dGVybmFsLWxpbmstc3F1YXJlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZXh0ZXJuYWwtbGluay1zcXVhcmU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1zaGFyZS1zcXVhcmU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1zaGFyZS1zcXVhcmU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1jb21wYXNzOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItY29tcGFzczsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXRvZ2dsZS1kb3duOmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1jYXJldC1zcXVhcmUtby1kb3duOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItY2FyZXQtc3F1YXJlLW8tZG93bjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXRvZ2dsZS11cDpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tY2FyZXQtc3F1YXJlLW8tdXA6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1jYXJldC1zcXVhcmUtby11cDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXRvZ2dsZS1yaWdodDpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tY2FyZXQtc3F1YXJlLW8tcmlnaHQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1jYXJldC1zcXVhcmUtby1yaWdodDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWV1cm86YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LWV1cjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWV1cjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWdicDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWdicDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWRvbGxhcjpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tdXNkOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItdXNkOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tcnVwZWU6YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LWlucjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWlucjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWNueTpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tcm1iOmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS15ZW46YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LWpweTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWpweTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXJ1YmxlOmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1yb3VibGU6YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LXJ1YjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXJ1YjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXdvbjpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0ta3J3OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXIta3J3OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYml0Y29pbjpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tYnRjOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYnRjOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZmlsZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWZpbGU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1maWxlLXRleHQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1maWxlLXRleHQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1zb3J0LWFscGhhLWFzYzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXNvcnQtYWxwaGEtYXNjOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tc29ydC1hbHBoYS1kZXNjOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc29ydC1hbHBoYS1kZXNjOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tc29ydC1hbW91bnQtYXNjOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc29ydC1hbW91bnQtYXNjOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tc29ydC1hbW91bnQtZGVzYzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXNvcnQtYW1vdW50LWRlc2M7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1zb3J0LW51bWVyaWMtYXNjOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc29ydC1udW1lcmljLWFzYzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXNvcnQtbnVtZXJpYy1kZXNjOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc29ydC1udW1lcmljLWRlc2M7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS10aHVtYnMtdXA6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci10aHVtYnMtdXA7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS10aHVtYnMtZG93bjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXRodW1icy1kb3duOyB9XG4uI3skZmEtY3NzLXByZWZpeH0teW91dHViZS1zcXVhcmU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci15b3V0dWJlLXNxdWFyZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXlvdXR1YmU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci15b3V0dWJlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0teGluZzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXhpbmc7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS14aW5nLXNxdWFyZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXhpbmctc3F1YXJlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0teW91dHViZS1wbGF5OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXIteW91dHViZS1wbGF5OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZHJvcGJveDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWRyb3Bib3g7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1zdGFjay1vdmVyZmxvdzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXN0YWNrLW92ZXJmbG93OyB9XG4uI3skZmEtY3NzLXByZWZpeH0taW5zdGFncmFtOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItaW5zdGFncmFtOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZmxpY2tyOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZmxpY2tyOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYWRuOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYWRuOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYml0YnVja2V0OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYml0YnVja2V0OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYml0YnVja2V0LXNxdWFyZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWJpdGJ1Y2tldC1zcXVhcmU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS10dW1ibHI6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci10dW1ibHI7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS10dW1ibHItc3F1YXJlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItdHVtYmxyLXNxdWFyZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWxvbmctYXJyb3ctZG93bjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWxvbmctYXJyb3ctZG93bjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWxvbmctYXJyb3ctdXA6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1sb25nLWFycm93LXVwOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tbG9uZy1hcnJvdy1sZWZ0OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItbG9uZy1hcnJvdy1sZWZ0OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tbG9uZy1hcnJvdy1yaWdodDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWxvbmctYXJyb3ctcmlnaHQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1hcHBsZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWFwcGxlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0td2luZG93czpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXdpbmRvd3M7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1hbmRyb2lkOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYW5kcm9pZDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWxpbnV4OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItbGludXg7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1kcmliYmJsZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWRyaWJiYmxlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tc2t5cGU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1za3lwZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWZvdXJzcXVhcmU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1mb3Vyc3F1YXJlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tdHJlbGxvOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItdHJlbGxvOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZmVtYWxlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZmVtYWxlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tbWFsZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLW1hbGU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1naXR0aXA6YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LWdyYXRpcGF5OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZ3JhdGlwYXk7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1zdW4tbzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXN1bi1vOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tbW9vbi1vOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItbW9vbi1vOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYXJjaGl2ZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWFyY2hpdmU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1idWc6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1idWc7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS12azpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXZrOyB9XG4uI3skZmEtY3NzLXByZWZpeH0td2VpYm86YmVmb3JlIHsgY29udGVudDogJGZhLXZhci13ZWlibzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXJlbnJlbjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXJlbnJlbjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXBhZ2VsaW5lczpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXBhZ2VsaW5lczsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXN0YWNrLWV4Y2hhbmdlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc3RhY2stZXhjaGFuZ2U7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1hcnJvdy1jaXJjbGUtby1yaWdodDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWFycm93LWNpcmNsZS1vLXJpZ2h0OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYXJyb3ctY2lyY2xlLW8tbGVmdDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWFycm93LWNpcmNsZS1vLWxlZnQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS10b2dnbGUtbGVmdDpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tY2FyZXQtc3F1YXJlLW8tbGVmdDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWNhcmV0LXNxdWFyZS1vLWxlZnQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1kb3QtY2lyY2xlLW86YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1kb3QtY2lyY2xlLW87IH1cbi4jeyRmYS1jc3MtcHJlZml4fS13aGVlbGNoYWlyOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItd2hlZWxjaGFpcjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXZpbWVvLXNxdWFyZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXZpbWVvLXNxdWFyZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXR1cmtpc2gtbGlyYTpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tdHJ5OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItdHJ5OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tcGx1cy1zcXVhcmUtbzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXBsdXMtc3F1YXJlLW87IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1zcGFjZS1zaHV0dGxlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc3BhY2Utc2h1dHRsZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXNsYWNrOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc2xhY2s7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1lbnZlbG9wZS1zcXVhcmU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1lbnZlbG9wZS1zcXVhcmU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS13b3JkcHJlc3M6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci13b3JkcHJlc3M7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1vcGVuaWQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1vcGVuaWQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1pbnN0aXR1dGlvbjpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tYmFuazpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tdW5pdmVyc2l0eTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXVuaXZlcnNpdHk7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1tb3J0YXItYm9hcmQ6YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LWdyYWR1YXRpb24tY2FwOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZ3JhZHVhdGlvbi1jYXA7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS15YWhvbzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXlhaG9vOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZ29vZ2xlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZ29vZ2xlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tcmVkZGl0OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItcmVkZGl0OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tcmVkZGl0LXNxdWFyZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXJlZGRpdC1zcXVhcmU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1zdHVtYmxldXBvbi1jaXJjbGU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1zdHVtYmxldXBvbi1jaXJjbGU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1zdHVtYmxldXBvbjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXN0dW1ibGV1cG9uOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZGVsaWNpb3VzOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZGVsaWNpb3VzOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZGlnZzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWRpZ2c7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1waWVkLXBpcGVyLXBwOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItcGllZC1waXBlci1wcDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXBpZWQtcGlwZXItYWx0OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItcGllZC1waXBlci1hbHQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1kcnVwYWw6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1kcnVwYWw7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1qb29tbGE6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1qb29tbGE7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1sYW5ndWFnZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWxhbmd1YWdlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZmF4OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZmF4OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYnVpbGRpbmc6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1idWlsZGluZzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWNoaWxkOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItY2hpbGQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1wYXc6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1wYXc7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1zcG9vbjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXNwb29uOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tY3ViZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWN1YmU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1jdWJlczpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWN1YmVzOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYmVoYW5jZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWJlaGFuY2U7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1iZWhhbmNlLXNxdWFyZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWJlaGFuY2Utc3F1YXJlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tc3RlYW06YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1zdGVhbTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXN0ZWFtLXNxdWFyZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXN0ZWFtLXNxdWFyZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXJlY3ljbGU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1yZWN5Y2xlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYXV0b21vYmlsZTpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tY2FyOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItY2FyOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tY2FiOmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS10YXhpOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItdGF4aTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXRyZWU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci10cmVlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tc3BvdGlmeTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXNwb3RpZnk7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1kZXZpYW50YXJ0OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZGV2aWFudGFydDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXNvdW5kY2xvdWQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1zb3VuZGNsb3VkOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZGF0YWJhc2U6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1kYXRhYmFzZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWZpbGUtcGRmLW86YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1maWxlLXBkZi1vOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZmlsZS13b3JkLW86YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1maWxlLXdvcmQtbzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWZpbGUtZXhjZWwtbzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWZpbGUtZXhjZWwtbzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWZpbGUtcG93ZXJwb2ludC1vOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZmlsZS1wb3dlcnBvaW50LW87IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1maWxlLXBob3RvLW86YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LWZpbGUtcGljdHVyZS1vOmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1maWxlLWltYWdlLW86YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1maWxlLWltYWdlLW87IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1maWxlLXppcC1vOmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1maWxlLWFyY2hpdmUtbzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWZpbGUtYXJjaGl2ZS1vOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZmlsZS1zb3VuZC1vOmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1maWxlLWF1ZGlvLW86YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1maWxlLWF1ZGlvLW87IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1maWxlLW1vdmllLW86YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LWZpbGUtdmlkZW8tbzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWZpbGUtdmlkZW8tbzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWZpbGUtY29kZS1vOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZmlsZS1jb2RlLW87IH1cbi4jeyRmYS1jc3MtcHJlZml4fS12aW5lOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItdmluZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWNvZGVwZW46YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1jb2RlcGVuOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tanNmaWRkbGU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1qc2ZpZGRsZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWxpZmUtYm91eTpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tbGlmZS1idW95OmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1saWZlLXNhdmVyOmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1zdXBwb3J0OmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1saWZlLXJpbmc6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1saWZlLXJpbmc7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1jaXJjbGUtby1ub3RjaDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWNpcmNsZS1vLW5vdGNoOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tcmE6YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LXJlc2lzdGFuY2U6YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LXJlYmVsOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItcmViZWw7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1nZTpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tZW1waXJlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZW1waXJlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZ2l0LXNxdWFyZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWdpdC1zcXVhcmU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1naXQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1naXQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS15LWNvbWJpbmF0b3Itc3F1YXJlOmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS15Yy1zcXVhcmU6YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LWhhY2tlci1uZXdzOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItaGFja2VyLW5ld3M7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS10ZW5jZW50LXdlaWJvOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItdGVuY2VudC13ZWlibzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXFxOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItcXE7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS13ZWNoYXQ6YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LXdlaXhpbjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXdlaXhpbjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXNlbmQ6YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LXBhcGVyLXBsYW5lOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItcGFwZXItcGxhbmU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1zZW5kLW86YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LXBhcGVyLXBsYW5lLW86YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1wYXBlci1wbGFuZS1vOyB9XG4uI3skZmEtY3NzLXByZWZpeH0taGlzdG9yeTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWhpc3Rvcnk7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1jaXJjbGUtdGhpbjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWNpcmNsZS10aGluOyB9XG4uI3skZmEtY3NzLXByZWZpeH0taGVhZGVyOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItaGVhZGVyOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tcGFyYWdyYXBoOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItcGFyYWdyYXBoOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tc2xpZGVyczpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXNsaWRlcnM7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1zaGFyZS1hbHQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1zaGFyZS1hbHQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1zaGFyZS1hbHQtc3F1YXJlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc2hhcmUtYWx0LXNxdWFyZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWJvbWI6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1ib21iOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tc29jY2VyLWJhbGwtbzpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tZnV0Ym9sLW86YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1mdXRib2wtbzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXR0eTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXR0eTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWJpbm9jdWxhcnM6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1iaW5vY3VsYXJzOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tcGx1ZzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXBsdWc7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1zbGlkZXNoYXJlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc2xpZGVzaGFyZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXR3aXRjaDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXR3aXRjaDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXllbHA6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci15ZWxwOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tbmV3c3BhcGVyLW86YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1uZXdzcGFwZXItbzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXdpZmk6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci13aWZpOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tY2FsY3VsYXRvcjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWNhbGN1bGF0b3I7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1wYXlwYWw6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1wYXlwYWw7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1nb29nbGUtd2FsbGV0OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZ29vZ2xlLXdhbGxldDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWNjLXZpc2E6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1jYy12aXNhOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tY2MtbWFzdGVyY2FyZDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWNjLW1hc3RlcmNhcmQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1jYy1kaXNjb3ZlcjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWNjLWRpc2NvdmVyOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tY2MtYW1leDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWNjLWFtZXg7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1jYy1wYXlwYWw6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1jYy1wYXlwYWw7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1jYy1zdHJpcGU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1jYy1zdHJpcGU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1iZWxsLXNsYXNoOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYmVsbC1zbGFzaDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWJlbGwtc2xhc2gtbzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWJlbGwtc2xhc2gtbzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXRyYXNoOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItdHJhc2g7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1jb3B5cmlnaHQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1jb3B5cmlnaHQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1hdDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWF0OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZXllZHJvcHBlcjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWV5ZWRyb3BwZXI7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1wYWludC1icnVzaDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXBhaW50LWJydXNoOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYmlydGhkYXktY2FrZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWJpcnRoZGF5LWNha2U7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1hcmVhLWNoYXJ0OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYXJlYS1jaGFydDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXBpZS1jaGFydDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXBpZS1jaGFydDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWxpbmUtY2hhcnQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1saW5lLWNoYXJ0OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tbGFzdGZtOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItbGFzdGZtOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tbGFzdGZtLXNxdWFyZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWxhc3RmbS1zcXVhcmU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS10b2dnbGUtb2ZmOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItdG9nZ2xlLW9mZjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXRvZ2dsZS1vbjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXRvZ2dsZS1vbjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWJpY3ljbGU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1iaWN5Y2xlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYnVzOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYnVzOyB9XG4uI3skZmEtY3NzLXByZWZpeH0taW94aG9zdDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWlveGhvc3Q7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1hbmdlbGxpc3Q6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1hbmdlbGxpc3Q7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1jYzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWNjOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tc2hla2VsOmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1zaGVxZWw6YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LWlsczpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWlsczsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LW1lYW5wYXRoOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItbWVhbnBhdGg7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1idXlzZWxsYWRzOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYnV5c2VsbGFkczsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWNvbm5lY3RkZXZlbG9wOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItY29ubmVjdGRldmVsb3A7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1kYXNoY3ViZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWRhc2hjdWJlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZm9ydW1iZWU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1mb3J1bWJlZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWxlYW5wdWI6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1sZWFucHViOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tc2VsbHN5OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc2VsbHN5OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tc2hpcnRzaW5idWxrOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc2hpcnRzaW5idWxrOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tc2ltcGx5YnVpbHQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1zaW1wbHlidWlsdDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXNreWF0bGFzOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc2t5YXRsYXM7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1jYXJ0LXBsdXM6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1jYXJ0LXBsdXM7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1jYXJ0LWFycm93LWRvd246YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1jYXJ0LWFycm93LWRvd247IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1kaWFtb25kOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZGlhbW9uZDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXNoaXA6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1zaGlwOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tdXNlci1zZWNyZXQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci11c2VyLXNlY3JldDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LW1vdG9yY3ljbGU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1tb3RvcmN5Y2xlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tc3RyZWV0LXZpZXc6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1zdHJlZXQtdmlldzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWhlYXJ0YmVhdDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWhlYXJ0YmVhdDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXZlbnVzOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItdmVudXM7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1tYXJzOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItbWFyczsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LW1lcmN1cnk6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1tZXJjdXJ5OyB9XG4uI3skZmEtY3NzLXByZWZpeH0taW50ZXJzZXg6YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LXRyYW5zZ2VuZGVyOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItdHJhbnNnZW5kZXI7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS10cmFuc2dlbmRlci1hbHQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci10cmFuc2dlbmRlci1hbHQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS12ZW51cy1kb3VibGU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci12ZW51cy1kb3VibGU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1tYXJzLWRvdWJsZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLW1hcnMtZG91YmxlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tdmVudXMtbWFyczpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXZlbnVzLW1hcnM7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1tYXJzLXN0cm9rZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLW1hcnMtc3Ryb2tlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tbWFycy1zdHJva2UtdjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLW1hcnMtc3Ryb2tlLXY7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1tYXJzLXN0cm9rZS1oOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItbWFycy1zdHJva2UtaDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LW5ldXRlcjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLW5ldXRlcjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWdlbmRlcmxlc3M6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1nZW5kZXJsZXNzOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZmFjZWJvb2stb2ZmaWNpYWw6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1mYWNlYm9vay1vZmZpY2lhbDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXBpbnRlcmVzdC1wOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItcGludGVyZXN0LXA7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS13aGF0c2FwcDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXdoYXRzYXBwOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tc2VydmVyOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc2VydmVyOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tdXNlci1wbHVzOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItdXNlci1wbHVzOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tdXNlci10aW1lczpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXVzZXItdGltZXM7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1ob3RlbDpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tYmVkOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYmVkOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tdmlhY29pbjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXZpYWNvaW47IH1cbi4jeyRmYS1jc3MtcHJlZml4fS10cmFpbjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXRyYWluOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tc3Vid2F5OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc3Vid2F5OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tbWVkaXVtOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItbWVkaXVtOyB9XG4uI3skZmEtY3NzLXByZWZpeH0teWM6YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LXktY29tYmluYXRvcjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXktY29tYmluYXRvcjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LW9wdGluLW1vbnN0ZXI6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1vcHRpbi1tb25zdGVyOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tb3BlbmNhcnQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1vcGVuY2FydDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWV4cGVkaXRlZHNzbDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWV4cGVkaXRlZHNzbDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWJhdHRlcnktNDpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tYmF0dGVyeTpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tYmF0dGVyeS1mdWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYmF0dGVyeS1mdWxsOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYmF0dGVyeS0zOmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1iYXR0ZXJ5LXRocmVlLXF1YXJ0ZXJzOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYmF0dGVyeS10aHJlZS1xdWFydGVyczsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWJhdHRlcnktMjpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tYmF0dGVyeS1oYWxmOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYmF0dGVyeS1oYWxmOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYmF0dGVyeS0xOmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1iYXR0ZXJ5LXF1YXJ0ZXI6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1iYXR0ZXJ5LXF1YXJ0ZXI7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1iYXR0ZXJ5LTA6YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LWJhdHRlcnktZW1wdHk6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1iYXR0ZXJ5LWVtcHR5OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tbW91c2UtcG9pbnRlcjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLW1vdXNlLXBvaW50ZXI7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1pLWN1cnNvcjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWktY3Vyc29yOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tb2JqZWN0LWdyb3VwOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItb2JqZWN0LWdyb3VwOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tb2JqZWN0LXVuZ3JvdXA6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1vYmplY3QtdW5ncm91cDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXN0aWNreS1ub3RlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc3RpY2t5LW5vdGU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1zdGlja3ktbm90ZS1vOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc3RpY2t5LW5vdGUtbzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWNjLWpjYjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWNjLWpjYjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWNjLWRpbmVycy1jbHViOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItY2MtZGluZXJzLWNsdWI7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1jbG9uZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWNsb25lOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYmFsYW5jZS1zY2FsZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWJhbGFuY2Utc2NhbGU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1ob3VyZ2xhc3MtbzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWhvdXJnbGFzcy1vOyB9XG4uI3skZmEtY3NzLXByZWZpeH0taG91cmdsYXNzLTE6YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LWhvdXJnbGFzcy1zdGFydDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWhvdXJnbGFzcy1zdGFydDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWhvdXJnbGFzcy0yOmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1ob3VyZ2xhc3MtaGFsZjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWhvdXJnbGFzcy1oYWxmOyB9XG4uI3skZmEtY3NzLXByZWZpeH0taG91cmdsYXNzLTM6YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LWhvdXJnbGFzcy1lbmQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1ob3VyZ2xhc3MtZW5kOyB9XG4uI3skZmEtY3NzLXByZWZpeH0taG91cmdsYXNzOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItaG91cmdsYXNzOyB9XG4uI3skZmEtY3NzLXByZWZpeH0taGFuZC1ncmFiLW86YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LWhhbmQtcm9jay1vOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItaGFuZC1yb2NrLW87IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1oYW5kLXN0b3AtbzpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0taGFuZC1wYXBlci1vOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItaGFuZC1wYXBlci1vOyB9XG4uI3skZmEtY3NzLXByZWZpeH0taGFuZC1zY2lzc29ycy1vOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItaGFuZC1zY2lzc29ycy1vOyB9XG4uI3skZmEtY3NzLXByZWZpeH0taGFuZC1saXphcmQtbzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWhhbmQtbGl6YXJkLW87IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1oYW5kLXNwb2NrLW86YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1oYW5kLXNwb2NrLW87IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1oYW5kLXBvaW50ZXItbzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWhhbmQtcG9pbnRlci1vOyB9XG4uI3skZmEtY3NzLXByZWZpeH0taGFuZC1wZWFjZS1vOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItaGFuZC1wZWFjZS1vOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tdHJhZGVtYXJrOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItdHJhZGVtYXJrOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tcmVnaXN0ZXJlZDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXJlZ2lzdGVyZWQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1jcmVhdGl2ZS1jb21tb25zOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItY3JlYXRpdmUtY29tbW9uczsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWdnOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZ2c7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1nZy1jaXJjbGU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1nZy1jaXJjbGU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS10cmlwYWR2aXNvcjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXRyaXBhZHZpc29yOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tb2Rub2tsYXNzbmlraTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLW9kbm9rbGFzc25pa2k7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1vZG5va2xhc3NuaWtpLXNxdWFyZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLW9kbm9rbGFzc25pa2ktc3F1YXJlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZ2V0LXBvY2tldDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWdldC1wb2NrZXQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS13aWtpcGVkaWEtdzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXdpa2lwZWRpYS13OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tc2FmYXJpOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc2FmYXJpOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tY2hyb21lOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItY2hyb21lOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZmlyZWZveDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWZpcmVmb3g7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1vcGVyYTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLW9wZXJhOyB9XG4uI3skZmEtY3NzLXByZWZpeH0taW50ZXJuZXQtZXhwbG9yZXI6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1pbnRlcm5ldC1leHBsb3JlcjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXR2OmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS10ZWxldmlzaW9uOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItdGVsZXZpc2lvbjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWNvbnRhbzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWNvbnRhbzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LTUwMHB4OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItNTAwcHg7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1hbWF6b246YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1hbWF6b247IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1jYWxlbmRhci1wbHVzLW86YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1jYWxlbmRhci1wbHVzLW87IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1jYWxlbmRhci1taW51cy1vOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItY2FsZW5kYXItbWludXMtbzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWNhbGVuZGFyLXRpbWVzLW86YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1jYWxlbmRhci10aW1lcy1vOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tY2FsZW5kYXItY2hlY2stbzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWNhbGVuZGFyLWNoZWNrLW87IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1pbmR1c3RyeTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWluZHVzdHJ5OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tbWFwLXBpbjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLW1hcC1waW47IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1tYXAtc2lnbnM6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1tYXAtc2lnbnM7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1tYXAtbzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLW1hcC1vOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tbWFwOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItbWFwOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tY29tbWVudGluZzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWNvbW1lbnRpbmc7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1jb21tZW50aW5nLW86YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1jb21tZW50aW5nLW87IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1ob3V6ejpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWhvdXp6OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tdmltZW86YmVmb3JlIHsgY29udGVudDogJGZhLXZhci12aW1lbzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWJsYWNrLXRpZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWJsYWNrLXRpZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWZvbnRpY29uczpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWZvbnRpY29uczsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXJlZGRpdC1hbGllbjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXJlZGRpdC1hbGllbjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWVkZ2U6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1lZGdlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tY3JlZGl0LWNhcmQtYWx0OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItY3JlZGl0LWNhcmQtYWx0OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tY29kaWVwaWU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1jb2RpZXBpZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LW1vZHg6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1tb2R4OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZm9ydC1hd2Vzb21lOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZm9ydC1hd2Vzb21lOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tdXNiOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItdXNiOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tcHJvZHVjdC1odW50OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItcHJvZHVjdC1odW50OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tbWl4Y2xvdWQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1taXhjbG91ZDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXNjcmliZDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXNjcmliZDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXBhdXNlLWNpcmNsZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXBhdXNlLWNpcmNsZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXBhdXNlLWNpcmNsZS1vOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItcGF1c2UtY2lyY2xlLW87IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1zdG9wLWNpcmNsZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXN0b3AtY2lyY2xlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tc3RvcC1jaXJjbGUtbzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXN0b3AtY2lyY2xlLW87IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1zaG9wcGluZy1iYWc6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1zaG9wcGluZy1iYWc7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1zaG9wcGluZy1iYXNrZXQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1zaG9wcGluZy1iYXNrZXQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1oYXNodGFnOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItaGFzaHRhZzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWJsdWV0b290aDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWJsdWV0b290aDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWJsdWV0b290aC1iOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYmx1ZXRvb3RoLWI7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1wZXJjZW50OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItcGVyY2VudDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWdpdGxhYjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWdpdGxhYjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXdwYmVnaW5uZXI6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci13cGJlZ2lubmVyOyB9XG4uI3skZmEtY3NzLXByZWZpeH0td3Bmb3JtczpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXdwZm9ybXM7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1lbnZpcmE6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1lbnZpcmE7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS11bml2ZXJzYWwtYWNjZXNzOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItdW5pdmVyc2FsLWFjY2VzczsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXdoZWVsY2hhaXItYWx0OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItd2hlZWxjaGFpci1hbHQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1xdWVzdGlvbi1jaXJjbGUtbzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXF1ZXN0aW9uLWNpcmNsZS1vOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYmxpbmQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1ibGluZDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWF1ZGlvLWRlc2NyaXB0aW9uOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYXVkaW8tZGVzY3JpcHRpb247IH1cbi4jeyRmYS1jc3MtcHJlZml4fS12b2x1bWUtY29udHJvbC1waG9uZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXZvbHVtZS1jb250cm9sLXBob25lOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYnJhaWxsZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWJyYWlsbGU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1hc3Npc3RpdmUtbGlzdGVuaW5nLXN5c3RlbXM6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1hc3Npc3RpdmUtbGlzdGVuaW5nLXN5c3RlbXM7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1hc2wtaW50ZXJwcmV0aW5nOmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1hbWVyaWNhbi1zaWduLWxhbmd1YWdlLWludGVycHJldGluZzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWFtZXJpY2FuLXNpZ24tbGFuZ3VhZ2UtaW50ZXJwcmV0aW5nOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZGVhZm5lc3M6YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LWhhcmQtb2YtaGVhcmluZzpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tZGVhZjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWRlYWY7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1nbGlkZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWdsaWRlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZ2xpZGUtZzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWdsaWRlLWc7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1zaWduaW5nOmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1zaWduLWxhbmd1YWdlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc2lnbi1sYW5ndWFnZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWxvdy12aXNpb246YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1sb3ctdmlzaW9uOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tdmlhZGVvOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItdmlhZGVvOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tdmlhZGVvLXNxdWFyZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXZpYWRlby1zcXVhcmU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1zbmFwY2hhdDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXNuYXBjaGF0OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tc25hcGNoYXQtZ2hvc3Q6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1zbmFwY2hhdC1naG9zdDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXNuYXBjaGF0LXNxdWFyZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXNuYXBjaGF0LXNxdWFyZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXBpZWQtcGlwZXI6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1waWVkLXBpcGVyOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZmlyc3Qtb3JkZXI6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1maXJzdC1vcmRlcjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXlvYXN0OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXIteW9hc3Q7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS10aGVtZWlzbGU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci10aGVtZWlzbGU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1nb29nbGUtcGx1cy1jaXJjbGU6YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LWdvb2dsZS1wbHVzLW9mZmljaWFsOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZ29vZ2xlLXBsdXMtb2ZmaWNpYWw7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1mYTpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tZm9udC1hd2Vzb21lOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZm9udC1hd2Vzb21lOyB9XG4uI3skZmEtY3NzLXByZWZpeH0taGFuZHNoYWtlLW86YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1oYW5kc2hha2UtbzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWVudmVsb3BlLW9wZW46YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1lbnZlbG9wZS1vcGVuOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZW52ZWxvcGUtb3Blbi1vOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZW52ZWxvcGUtb3Blbi1vOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tbGlub2RlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItbGlub2RlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYWRkcmVzcy1ib29rOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYWRkcmVzcy1ib29rOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYWRkcmVzcy1ib29rLW86YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1hZGRyZXNzLWJvb2stbzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXZjYXJkOmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1hZGRyZXNzLWNhcmQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1hZGRyZXNzLWNhcmQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS12Y2FyZC1vOmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1hZGRyZXNzLWNhcmQtbzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWFkZHJlc3MtY2FyZC1vOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tdXNlci1jaXJjbGU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci11c2VyLWNpcmNsZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXVzZXItY2lyY2xlLW86YmVmb3JlIHsgY29udGVudDogJGZhLXZhci11c2VyLWNpcmNsZS1vOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tdXNlci1vOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItdXNlci1vOyB9XG4uI3skZmEtY3NzLXByZWZpeH0taWQtYmFkZ2U6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1pZC1iYWRnZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWRyaXZlcnMtbGljZW5zZTpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0taWQtY2FyZDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWlkLWNhcmQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1kcml2ZXJzLWxpY2Vuc2UtbzpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0taWQtY2FyZC1vOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItaWQtY2FyZC1vOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tcXVvcmE6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1xdW9yYTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWZyZWUtY29kZS1jYW1wOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZnJlZS1jb2RlLWNhbXA7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS10ZWxlZ3JhbTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXRlbGVncmFtOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tdGhlcm1vbWV0ZXItNDpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tdGhlcm1vbWV0ZXI6YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LXRoZXJtb21ldGVyLWZ1bGw6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci10aGVybW9tZXRlci1mdWxsOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tdGhlcm1vbWV0ZXItMzpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tdGhlcm1vbWV0ZXItdGhyZWUtcXVhcnRlcnM6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci10aGVybW9tZXRlci10aHJlZS1xdWFydGVyczsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXRoZXJtb21ldGVyLTI6YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LXRoZXJtb21ldGVyLWhhbGY6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci10aGVybW9tZXRlci1oYWxmOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tdGhlcm1vbWV0ZXItMTpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tdGhlcm1vbWV0ZXItcXVhcnRlcjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXRoZXJtb21ldGVyLXF1YXJ0ZXI7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS10aGVybW9tZXRlci0wOmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS10aGVybW9tZXRlci1lbXB0eTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXRoZXJtb21ldGVyLWVtcHR5OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tc2hvd2VyOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc2hvd2VyOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYmF0aHR1YjpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tczE1OmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1iYXRoOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYmF0aDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXBvZGNhc3Q6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1wb2RjYXN0OyB9XG4uI3skZmEtY3NzLXByZWZpeH0td2luZG93LW1heGltaXplOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItd2luZG93LW1heGltaXplOyB9XG4uI3skZmEtY3NzLXByZWZpeH0td2luZG93LW1pbmltaXplOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItd2luZG93LW1pbmltaXplOyB9XG4uI3skZmEtY3NzLXByZWZpeH0td2luZG93LXJlc3RvcmU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci13aW5kb3ctcmVzdG9yZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXRpbWVzLXJlY3RhbmdsZTpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0td2luZG93LWNsb3NlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItd2luZG93LWNsb3NlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tdGltZXMtcmVjdGFuZ2xlLW86YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LXdpbmRvdy1jbG9zZS1vOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItd2luZG93LWNsb3NlLW87IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1iYW5kY2FtcDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWJhbmRjYW1wOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZ3JhdjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWdyYXY7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1ldHN5OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZXRzeTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWltZGI6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1pbWRiOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tcmF2ZWxyeTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXJhdmVscnk7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1lZXJjYXN0OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZWVyY2FzdDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LW1pY3JvY2hpcDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLW1pY3JvY2hpcDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXNub3dmbGFrZS1vOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc25vd2ZsYWtlLW87IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1zdXBlcnBvd2VyczpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXN1cGVycG93ZXJzOyB9XG4uI3skZmEtY3NzLXByZWZpeH0td3BleHBsb3JlcjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXdwZXhwbG9yZXI7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1tZWV0dXA6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1tZWV0dXA7IH1cbiIsIi8vIFNjcmVlbiBSZWFkZXJzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi5zci1vbmx5IHsgQGluY2x1ZGUgc3Itb25seSgpOyB9XG4uc3Itb25seS1mb2N1c2FibGUgeyBAaW5jbHVkZSBzci1vbmx5LWZvY3VzYWJsZSgpOyB9XG4iLCIuYnRuIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBhZGRpbmc6IDZweCAxMnB4O1xuICBmb250LXNpemU6IDE0cHg7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICBjb2xvcjogIzMzMztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KCNmY2ZjZmMsICNlZWUpO1xuICBib3JkZXI6IDFweCBzb2xpZCAjZDVkNWQ1O1xuICBib3JkZXItcmFkaXVzOiAzcHg7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNkZGQ7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KCNlZWUsICNkZGQpO1xuICAgIGJvcmRlci1jb2xvcjogI2NjYztcbiAgICBjb2xvcjogIzMzMztcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIH1cbn1cblxuLmJ0bi1wcmltYXJ5IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzYwYjA0NDtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KCM4YWRkNmQsICM2MGIwNDQpO1xuICBib3JkZXItY29sb3I6ICM1Y2E5NDE7XG4gIGNvbG9yOiAjZmZmO1xuICB0ZXh0LXNoYWRvdzogMCAtMXB4IDAgcmdiYSgwLCAwLCAwLCAuMTUpO1xuXG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM1NjllM2Q7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KCM3OWQ4NTgsICM1NjllM2QpO1xuICAgIGJvcmRlci1jb2xvcjogIzRhOTkzZTtcbiAgICBjb2xvcjogI2ZmZjtcbiAgfVxufVxuXG4uYnRuLWRhbmdlciB7XG4gIGNvbG9yOiAjOTAwO1xuXG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNiMzM2MzA7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KCNkYzVmNTksICNiMzM2MzApO1xuICAgIGJvcmRlci1jb2xvcjogI2NkNTA0YTtcbiAgICBjb2xvcjogI2ZmZjtcbiAgfVxufVxuXG4uYnRuLWFkZCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdG9wOiAzcHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICM1NzY2NzU7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgd2lkdGg6IDE1cHg7XG4gIG1hcmdpbi1yaWdodDogM3B4O1xufVxuIiwiaGVhZGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzMyNTc3NjtcblxuICAubWFpbi1jdGEge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB0b3A6IDE2cHg7XG4gIH1cbn1cblxuLmxvZ28ge1xuICBtYXJnaW46IDEwcHggMTVweDtcblxuICBhIHtcbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgY29sb3I6ICNmZmY7XG4gICAgfVxuICB9XG59XG5cbi5oZWFkZXItc2VhcmNoIHtcbiAgcGFkZGluZzogMDtcbiAgbWFyZ2luOiBhdXRvIDA7XG59XG5cbi5oZWFkZXItc2VhcmNoLWZvcm0ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgc3BhbiB7XG4gICAgY29sb3I6ICNkN2Q3ZDc7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGxlZnQ6IDEwcHg7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMTBweDtcbiAgfVxuXG4gIGlucHV0IHtcbiAgICBib3JkZXI6IDA7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgcGFkZGluZy1sZWZ0OiAyOXB4O1xuICB9XG59XG5cbi5oZWFkZXItbmF2IHtcbiAgbWFyZ2luLXRvcDogMjRweDtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG59XG5cbi5oZWFkZXItbmF2LWl0ZW0ge1xuICBkaXNwbGF5OiBpbmxpbmU7XG4gIG1hcmdpbi1yaWdodDogMTBweDtcblxuICAmOmxhc3QtY2hpbGQge1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgfVxufVxuXG4uaGVhZGVyLW5hdi1pdGVtLWxpbmsge1xuICBjb2xvcjogI2ZmZjtcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgcGFkZGluZzogM3B4IDExcHg7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblxuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDk3MTkzO1xuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgICBjb2xvcjogI2ZmZjtcbiAgICBwYWRkaW5nOiAzcHggMTFweDtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIH1cbn1cblxuLmhlYWRlci1zZWFyY2gtaW5wdXQge1xuICBiYWNrZ3JvdW5kOiAjNDk3MTkzO1xuICBib3JkZXItY29sb3I6ICM0OTcxOTM7XG4gIGNvbG9yOiB3aGl0ZTtcblxuICAmOjpwbGFjZWhvbGRlciB7XG4gICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40KTtcbiAgfVxuICAmOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7XG4gICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40KTtcbiAgfVxuXG4gICY6Zm9jdXMge1xuICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuICAgIGNvbG9yOiByZ2IoNTAsIDUwLCA1MCk7XG4gIH1cbn1cblxuLmhlYWRlci1zZWFyY2gtcmVzdWx0cyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDEwMCU7XG4gIHotaW5kZXg6IDEwO1xufVxuXG4uaGVhZGVyLXNlYXJjaC1yZXN1bHQge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGJhY2tncm91bmQ6IHdoaXRlO1xuICBib3gtc2hhZG93OiAwIDNweCAzcHggMCByZ2JhKDAsIDAsIDAsIDAuMyk7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWVlO1xuXG4gIGEge1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuXG4gICAgc3BhbiB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIHRvcDogMDtcbiAgICAgIGxlZnQ6IDA7XG5cbiAgICAgIHotaW5kZXg6IDE7XG4gICAgfVxuICB9XG5cbiAgYTpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogaW5oZXJpdDtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgfVxuXG4gIC5hdmF0YXIge1xuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgaGVpZ2h0OiAzNnB4O1xuICAgIG1hcmdpbjogMTBweDtcbiAgICB3aWR0aDogMzZweDtcbiAgfVxuXG4gIC5hdmF0YXItaW5pdGlhbHMge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBwYWRkaW5nLXRvcDogNnB4O1xuICAgIGZvbnQtc2l6ZTogMTVweDtcbiAgICBjb2xvcjogI2ZmZjtcbiAgfVxuXG4gICY6bGFzdC1jaGlsZCB7XG4gICAgYm9yZGVyLWJvdHRvbTogaW5pdGlhbDtcbiAgfVxufVxuXG4uaGVhZGVyLXNlYXJjaC1yZXN1bHQ6aG92ZXIge1xuICBiYWNrZ3JvdW5kOiAjZjVmNWY1O1xufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgaGVhZGVyIHtcbiAgICAubW9iaWxlLW1lbnUge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzU4NzQ4YztcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICMzMjU3NzY7XG4gICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuXG4gICAgICBsaSB7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjNDc1YjZiO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICBwYWRkaW5nOiA0cHggMDtcblxuICAgICAgICBhIHtcbiAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICAgIGJvcmRlci1ib3R0b206IDA7XG4gICAgICAgIH1cblxuICAgICAgICAmLmN0YSB7XG4gICAgICAgICAgYm9yZGVyOiAwO1xuXG4gICAgICAgICAgYSB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAuaGVhZGVyLXNlYXJjaCB7XG4gICAgcGFkZGluZzogMDtcbiAgICBtYXJnaW46IDIwcHggMDtcblxuICAgIHVsIHtcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDI2cHg7XG4gICAgfVxuICB9XG59XG4iLCIucGVvcGxlLWxpc3Qge1xuICAuYnJlYWRjcnVtYiB7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlZWU7XG4gIH1cblxuICAubWFpbi1jb250ZW50IHtcbiAgICBtYXJnaW4tdG9wOiAyMHB4O1xuICB9XG5cbiAgLnNpZGViYXIge1xuICAgIC5zaWRlYmFyLWN0YSB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgICAgcGFkZGluZzogMTVweDtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgIGxpIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDdweDtcbiAgICAgIHBhZGRpbmctbGVmdDogMTVweDtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgJi5zZWxlY3RlZDo6YmVmb3JlIHtcbiAgICAgICAgY29sb3I6ICM5OTk7XG4gICAgICAgIGNvbnRlbnQ6ICc+JztcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgfVxuXG4gICAgICAubnVtYmVyLWNvbnRhY3RzLXBlci10YWcge1xuICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmxpc3Qge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNlZWU7XG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xuICB9XG5cbiAgLmNsZWFyLWZpbHRlciB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2VlZTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgcGFkZGluZzogNnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcblxuICAgIGEge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgcmlnaHQ6IDEwcHg7XG4gICAgfVxuICB9XG5cbiAgLnBlb3BsZS1saXN0LWl0ZW0ge1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWVlO1xuICAgIHBhZGRpbmc6IDEwcHg7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmN2ZiZmM7XG4gICAgfVxuXG4gICAgJi5zb3J0aW5nIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmNmY4ZmE7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBwYWRkaW5nOiAxMHB4O1xuXG4gICAgICAub3B0aW9ucyB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZTtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICByaWdodDogMTBweDtcblxuICAgICAgICAuZHJvcGRvd24tYnRuIHtcbiAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6ICdcXGYwZDcnO1xuICAgICAgICAgICAgZm9udC1mYW1pbHk6IEZvbnRBd2Vzb21lO1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDVweDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuZHJvcGRvd24taXRlbSB7XG4gICAgICAgICAgcGFkZGluZzogM3B4IDIwcHggM3B4IDEwcHg7XG5cbiAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICBjb250ZW50OiAnXFxmMDBjJztcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBGb250QXdlc29tZTtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogNXB4O1xuICAgICAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDM2NmQ2O1xuICAgICAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgJi5zZWxlY3RlZCB7XG4gICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgIGNvbG9yOiAjOTk5O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC5hdmF0YXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzkzNTIxZTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgZm9udC1zaXplOiAxNXB4O1xuICAgICAgaGVpZ2h0OiA0M3B4O1xuICAgICAgbWFyZ2luLXJpZ2h0OiA1cHg7XG4gICAgICBwYWRkaW5nLWxlZnQ6IDVweDtcbiAgICAgIHBhZGRpbmctdG9wOiAxMHB4O1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgIHdpZHRoOiA0M3B4O1xuXG4gICAgICAmLm9uZS1sZXR0ZXIge1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpbWcge1xuICAgICAgYm9yZGVyLXJhZGl1czogM3B4O1xuICAgICAgbWFyZ2luLXJpZ2h0OiA1cHg7XG4gICAgfVxuXG4gICAgYSB7XG4gICAgICBjb2xvcjogIzMzMztcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgICBjb2xvcjogIzMzMztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAucGVvcGxlLWxpc3QtaXRlbS1pbmZvcm1hdGlvbiB7XG4gICAgICBjb2xvcjogIzk5OTtcbiAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgdG9wOiAxNnB4O1xuICAgIH1cbiAgfVxufVxuXG4uYmxhbmstcGVvcGxlLXN0YXRlIHtcbiAgbWFyZ2luLXRvcDogMzBweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gIGgzIHtcbiAgICBmb250LXdlaWdodDogNDAwO1xuICAgIG1hcmdpbi1ib3R0b206IDMwcHg7XG4gIH1cblxuICAuY3RhLWJsYW5rIHtcbiAgICBtYXJnaW4tYm90dG9tOiAzMHB4O1xuICB9XG5cbiAgLmlsbHVzdHJhdGlvbi1ibGFuayB7XG4gICAgcCB7XG4gICAgICBtYXJnaW4tdG9wOiAzMHB4O1xuICAgIH1cblxuICAgIGltZyB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIG1hcmdpbjogMCBhdXRvIDIwcHg7XG4gICAgfVxuICB9XG59XG5cbi5wZW9wbGUtc2hvdyB7XG4gIC5wYWdlaGVhZCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y5ZjlmYjtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2VlZTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgcGFkZGluZy1ib3R0b206IDIwcHg7XG5cbiAgICAucGVvcGxlLXByb2ZpbGUtaW5mb3JtYXRpb24ge1xuICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgLmF2YXRhciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICM5MzUyMWU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgZm9udC1zaXplOiAzMHB4O1xuICAgICAgICBoZWlnaHQ6IDg3cHg7XG4gICAgICAgIG1hcmdpbi1yaWdodDogNXB4O1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDVweDtcbiAgICAgICAgcGFkZGluZy10b3A6IDIxcHg7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgd2lkdGg6IDg3cHg7XG5cbiAgICAgICAgJi5vbmUtbGV0dGVyIHtcbiAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGltZyB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgfVxuXG4gICAgICBoMiB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBmb250LXNpemU6IDI0cHg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAzMDA7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMTAwcHg7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB3aWR0aDogY2FsYygxMDAlIC0gMjQ1cHgpO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IC05OTk5cHg7XG4gICAgICB9XG5cbiAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA0ODBweCkge1xuICAgICAgICBoMiB7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLnByb2ZpbGUtZGV0YWlsLXN1bW1hcnkge1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDEwMHB4O1xuICAgICAgICBtYXJnaW4tdG9wOiAzcHg7XG5cbiAgICAgICAgbGkge1xuICAgICAgICAgICY6bm90KDpsYXN0LWNoaWxkKSB7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICN0YWdzRm9ybSB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMTAwcHg7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgICAjdGFnc190YWdzaW5wdXQge1xuICAgICAgICAgIGhlaWdodDogNDBweCFpbXBvcnRhbnQ7XG4gICAgICAgICAgbWluLWhlaWdodDogNDBweCFpbXBvcnRhbnQ7XG4gICAgICAgICAgd2lkdGg6IDM3MHB4IWltcG9ydGFudDtcbiAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgfVxuXG4gICAgICAgIC50YWdzRm9ybUFjdGlvbnMge1xuICAgICAgICAgIGRpc3BsYXk6IGlubGluZTtcbiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgdG9wOiAtMTdweDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAudGFncyB7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMTAwcHg7XG4gICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIG1hcmdpbi10b3A6IDhweDtcblxuICAgICAgICBsaSB7XG4gICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAucXVpY2stYWN0aW9ucyB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICByaWdodDogMDtcbiAgICAgIHRvcDogMTRweDtcbiAgICB9XG4gIH1cblxuICAubWFpbi1jb250ZW50IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICAgIHBhZGRpbmctYm90dG9tOiAyMHB4O1xuICAgIHBhZGRpbmctdG9wOiA0MHB4O1xuXG4gICAgLnNlY3Rpb24tdGl0bGUge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICBoMyB7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTFlMmUzO1xuICAgICAgICBmb250LXNpemU6IDE4cHg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAxMHB4O1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDIzcHg7XG4gICAgICAgIHBhZGRpbmctdG9wOiAxMHB4O1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICB9XG5cbiAgICAgIC5pY29uLXNlY3Rpb24ge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMTRweDtcbiAgICAgICAgd2lkdGg6IDE3cHg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLnNpZGViYXIge1xuICAgICAgLnNpZGViYXItY3RhIHtcbiAgICAgICAgYSB7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5wcm9maWxlIHtcbiAgICAuc2lkZWJhci1ib3gge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZhZmFmYTtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNlZWU7XG4gICAgICBib3JkZXItcmFkaXVzOiAzcHg7XG4gICAgICBjb2xvcjogIzMzMztcbiAgICAgIG1hcmdpbi1ib3R0b206IDI1cHg7XG4gICAgICBwYWRkaW5nOiAxMHB4O1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIH1cblxuICAgIC5zaWRlYmFyLWJveC10aXRsZSB7XG4gICAgICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgIHN0cm9uZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgYSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgcmlnaHQ6IDdweDtcbiAgICAgIH1cblxuICAgICAgaW1nIHtcbiAgICAgICAgbGVmdDogLTNweDtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB3aWR0aDogMjBweDtcblxuICAgICAgICAmLnBlb3BsZS1pbmZvcm1hdGlvbiB7XG4gICAgICAgICAgdG9wOiAtNHB4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLnNpZGViYXItYm94LXBhcmFncmFwaCB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cblxuICAgIC5wZW9wbGUtbGlzdCB7XG4gICAgICBsaSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDRweDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAucGVvcGxlLWluZm9ybWF0aW9uLFxuICAgIC53b3JrLFxuICAgIC5pbnRyb2R1Y3Rpb25zIHtcbiAgICAgIGxpIHtcbiAgICAgICAgY29sb3I6ICM5OTk7XG4gICAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcblxuICAgICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgIH1cblxuICAgICAgICBpIHtcbiAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgd2lkdGg6IDE3cHg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAuc2VjdGlvbiB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAzNXB4O1xuXG4gICAgICAmLmtpZHMsXG4gICAgICAmLmZvb2QtcHJlZmVyZW5jaWVzIHtcbiAgICAgICAgLnNlY3Rpb24taGVhZGluZyBpbWcge1xuICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICB0b3A6IC0zcHg7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmlubGluZS1hY3Rpb24ge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmU7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAxMHB4O1xuXG4gICAgICAgIGEge1xuICAgICAgICAgIG1hcmdpbi1yaWdodDogNXB4O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5zZWN0aW9uLWhlYWRpbmcge1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2VlZTtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDRweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcblxuICAgICAgICBpbWcge1xuICAgICAgICAgIHdpZHRoOiAyNXB4O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5zZWN0aW9uLWFjdGlvbiB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZTtcbiAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgfVxuXG4gICAgICAuc2VjdGlvbi1ibGFuayB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmYWZhZmE7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNlZWU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgICAgICAgcGFkZGluZzogMTVweDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgICAgIGgzIHtcbiAgICAgICAgICBmb250LXdlaWdodDogNDAwO1xuICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5naWZ0cyB7XG4gICAgLmdpZnQtcmVjaXBpZW50IHtcbiAgICAgIGZvbnQtc2l6ZTogMTVweDtcblxuICAgICAgJjpub3QoOmZpcnN0LWNoaWxkKSB7XG4gICAgICAgIG1hcmdpbi10b3A6IDI1cHg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLm9mZmVyZWQge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzVjYjg1YztcbiAgICAgIGJvcmRlci1yYWRpdXM6IDEwcmVtO1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgZm9udC1zaXplOiA3NSU7XG4gICAgICBmb250LXdlaWdodDogNDAwO1xuICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICBjb2xvcjogI2ZmZjtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG4gICAgICBwYWRkaW5nOiAycHggMDtcbiAgICAgIHBhZGRpbmctcmlnaHQ6IC42ZW07XG4gICAgICBwYWRkaW5nLWxlZnQ6IC42ZW07XG4gICAgfVxuXG4gICAgLmdpZnQtbGlzdC1pdGVtIHtcbiAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZWVlO1xuICAgICAgcGFkZGluZzogNXB4IDA7XG5cbiAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmdpZnQtbGlzdC1pdGVtLXVybCB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmU7XG4gICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICBtYXJnaW4tbGVmdDogMTBweDtcbiAgICAgIHBhZGRpbmc6IDVweCAwIDA7XG4gICAgfVxuXG4gICAgLmdpZnQtbGlzdC1pdGVtLWluZm9ybWF0aW9uIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZTtcbiAgICAgIG1hcmdpbi1sZWZ0OiAxMHB4O1xuICAgIH1cblxuICAgIC5naWZ0LWxpc3QtaXRlbS1kYXRlLFxuICAgIC5naWZ0LWxpc3QtaXRlbS1hY3Rpb25zIHtcbiAgICAgIGNvbG9yOiAjOTk5O1xuICAgICAgZGlzcGxheTogaW5saW5lO1xuICAgICAgZm9udC1zaXplOiAxMnB4O1xuXG4gICAgICBhIHtcbiAgICAgICAgY29sb3I6ICM5OTk7XG4gICAgICAgIGZvbnQtc2l6ZTogMTFweDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiA1cHg7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgICAgfVxuXG4gICAgICBsaSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAuZ2lmdC1saXN0LWl0ZW0tYWN0aW9ucyB7XG4gICAgICBtYXJnaW4tbGVmdDogNXB4O1xuICAgIH1cblxuICAgIC5mb3Ige1xuICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7XG4gICAgfVxuICB9XG5cbiAgLmFjdGl2aXRpZXMsXG4gIC5yZW1pbmRlcnMsXG4gIC50YXNrcyxcbiAgLmRlYnRzLFxuICAuZ2lmdHMsXG4gIC5jYWxscyB7XG4gICAgLmRhdGUge1xuICAgICAgY29sb3I6ICM3Nzc7XG4gICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gICAgICB3aWR0aDogMTAwcHg7XG4gICAgfVxuICAgIC5wYTIgbGkge1xuICAgICAgbGlzdC1zdHlsZTogaW5zaWRlIGRpc2M7XG4gICAgfVxuXG4gICAgLmZyZXF1ZW5jeS10eXBlLFxuICAgIC52YWx1ZSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWNmOWZmO1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgI2VlZTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgICAgIGRpc3BsYXk6IGlubGluZTtcbiAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgIHBhZGRpbmc6IDAgNnB4O1xuICAgIH1cblxuICAgIC5saXN0LWFjdGlvbnMge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgd2lkdGg6IDYwcHg7XG5cbiAgICAgIGE6Zmlyc3QtY2hpbGQge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbiAgICAgIH1cblxuICAgICAgYS5lZGl0IHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB0b3A6IDFweDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAuZW1wdHkge1xuICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgIH1cbiAgfVxuXG4gIC5yZW1pbmRlcnMge1xuICAgIC5mcmVxdWVuY3ktdHlwZSB7XG4gICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIH1cblxuICAgIGlucHV0W3R5cGU9J2RhdGUnXSB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgICAgd2lkdGg6IDE3MHB4O1xuICAgIH1cblxuICAgIC5mb3JtLWNoZWNrIHtcbiAgICAgIGlucHV0W3R5cGU9J251bWJlciddIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lO1xuICAgICAgICB3aWR0aDogNTBweDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAuZGVidHMge1xuICAgIC5kZWJ0cy1saXN0IHtcbiAgICAgIC5kZWJ0LW5hdHVyZSB7XG4gICAgICAgIHdpZHRoOiAyMjBweDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmLnNpZ25pZmljYW50b3RoZXIsXG4gICYua2lkIHtcbiAgICAuc2lnbmlmaWNhbnQtb3RoZXItYmxhbmstc3RhdGUge1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgICBpbWcge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgICAgICBtYXJnaW4tdG9wOiAxMHB4O1xuICAgICAgfVxuICAgIH1cblxuICAgIC5jZW50cmFsLWZvcm0ge1xuICAgICAgLmhpbnQtcmVtaW5kZXIge1xuICAgICAgICBtYXJnaW4tdG9wOiAxMHB4O1xuXG4gICAgICAgIHAge1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLnJlYWwtY29udGFjdC1jaGVja2JveCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG5cbiAgICAgICAgaW5wdXQge1xuICAgICAgICAgIG1hcmdpbi1yaWdodDogNXB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLmhlbHAge1xuICAgICAgICAgIGNvbG9yOiAjOTk5O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi5jcmVhdGUtcGVvcGxlIHtcbiAgLmltcG9ydCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMzBweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIH1cbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KSB7XG4gIC5wZW9wbGUtbGlzdCB7XG4gICAgbWFyZ2luLXRvcDogMjBweDtcblxuICAgIC5wZW9wbGUtbGlzdC1tb2JpbGUge1xuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRib3JkZXItY29sb3I7XG5cbiAgICAgIGxpIHtcbiAgICAgICAgcGFkZGluZzogNnB4IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLnBlb3BsZS1saXN0LWl0ZW0ge1xuICAgICAgLnBlb3BsZS1saXN0LWl0ZW0taW5mb3JtYXRpb24ge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5wZW9wbGUtc2hvdyB7XG4gICAgLnBhZ2VoZWFkIHtcbiAgICAgIC5wZW9wbGUtcHJvZmlsZS1pbmZvcm1hdGlvbiB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gICAgICAgIG1hcmdpbi10b3A6IDEwcHg7XG5cbiAgICAgICAgaDIge1xuICAgICAgICAgIHBhZGRpbmctbGVmdDogODBweDtcblxuICAgICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAjdGFnc0Zvcm0ge1xuICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgIG1hcmdpbi10b3A6IDQwcHg7XG4gICAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuXG4gICAgICAgICAgI3RhZ3NfdGFnc2lucHV0IHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLnRhZ3NGb3JtQWN0aW9ucyB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDIwcHg7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLnByb2ZpbGUtZGV0YWlsLXN1bW1hcnkge1xuICAgICAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICAgICAgICBtYXJnaW4tdG9wOiAxMHB4O1xuXG4gICAgICAgICAgbGkge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG5cbiAgICAgICAgICAgICY6bm90KDpsYXN0LWNoaWxkKSB7XG4gICAgICAgICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5hdmF0YXIge1xuICAgICAgICAgIGhlaWdodDogNjdweDtcbiAgICAgICAgICB3aWR0aDogNjdweDtcbiAgICAgICAgICBwYWRkaW5nLXRvcDogMTFweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC50YWdzIHtcbiAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDgwcHg7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmVkaXQtaW5mb3JtYXRpb24ge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgICAgfVxuICAgIH1cblxuICAgIC5tYWluLWNvbnRlbnQge1xuICAgICAgJi5tb2RhbCB7XG4gICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICB9XG5cbiAgICAgICYuZGFzaGJvYXJkIHtcbiAgICAgICAgLnNpZGViYXItYm94IHtcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLnNpZGViYXItY3RhIHtcbiAgICAgICAgICBtYXJnaW4tdG9wOiAxNXB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLnBlb3BsZS1pbmZvcm1hdGlvbi1hY3Rpb25zIHtcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYuYWN0aXZpdGllcyB7XG4gICAgICAgIC5jdGEtbW9iaWxlIHtcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuXG4gICAgICAgICAgYSB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuYWN0aXZpdGllcy1saXN0IHtcbiAgICAgICAgICAuYWN0aXZpdHktaXRlbS1kYXRlIHtcbiAgICAgICAgICAgIHRvcDogLTRweDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAuY3JlYXRlLXBlb3BsZSB7XG4gICAgd2lkdGg6IDEwMCU7XG5cbiAgICAuYnRuIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cbiAgfVxuXG4gIC5saXN0LWFkZC1pdGVtIHtcbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgfVxuXG4gIC5pbmxpbmUtZm9ybSB7XG4gICAgLnRhc2stYWRkLXRpdGxlIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgIHRleHRhcmVhIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cbiAgfVxuXG4gIC5ib3gtbGlua3Mge1xuICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHJpZ2h0OiAwO1xuICAgIHRvcDogMDtcblxuICAgIGxpIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgIH1cbiAgfVxufVxuIiwiLmpvdXJuYWwtY2FsZW5kYXItdGV4dCB7XG4gIHRvcDogMTlweDtcbiAgbGluZS1oZWlnaHQ6IDE2cHg7XG4gIHdpZHRoOiA2MnB4O1xufVxuXG4uam91cm5hbC1jYWxlbmRhci1ib3gge1xuICB3aWR0aDogNjJweDtcbiAgbWFyZ2luLXJpZ2h0OiAxMXB4O1xufVxuXG4uam91cm5hbC1jYWxlbmRhci1jb250ZW50IHtcbiAgd2lkdGg6IGNhbGMoMTAwJSAtIDczcHgpO1xufVxuXG4uam91cm5hbC1saW5lIHtcbiAgdHJhbnNpdGlvbjogYWxsIC4ycztcblxuICAmOmhvdmVyIHtcbiAgICBib3JkZXItY29sb3I6ICMwMGE4ZmY7XG4gIH1cbn1cbiIsIi5tYXJrZXRpbmcge1xuXG4gICYuaG9tZXBhZ2Uge1xuXG4gICAgLnRvcC1wYWdlIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICMzMTM5NDA7XG4gICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2QwZDBkMDtcbiAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgcGFkZGluZy10b3A6IDQwcHg7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICAgIC5uYXZpZ2F0aW9uIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICByaWdodDogMjBweDtcbiAgICAgICAgdG9wOiAyMHB4O1xuXG4gICAgICAgIGEge1xuICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNmZmY7XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4O1xuICAgICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICAgIHBhZGRpbmc6IDEwcHg7XG4gICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGgxIHtcbiAgICAgICAgZm9udC1zaXplOiAzMnB4O1xuICAgICAgICBmb250LXdlaWdodDogMzAwO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA0MHB4O1xuICAgICAgfVxuXG4gICAgICBwIHtcbiAgICAgICAgZm9udC1zaXplOiAxOHB4O1xuICAgICAgICBmb250LXdlaWdodDogMzAwO1xuICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgbWF4LXdpZHRoOiA1NTBweDtcblxuICAgICAgICAmLmN0YSB7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogNTBweDtcbiAgICAgICAgICBtYXJnaW4tdG9wOiA3MHB4O1xuXG4gICAgICAgICAgYSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDIwcHg7XG4gICAgICAgICAgICBmb250LXdlaWdodDogMzAwO1xuICAgICAgICAgICAgcGFkZGluZzogMjBweCA1MHB4O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAubG9nbyB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmJlZm9yZS1zZWN0aW9ucyB7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICAgIGgzIHtcbiAgICAgICAgZm9udC1zaXplOiAyNXB4O1xuICAgICAgICBmb250LXdlaWdodDogMzAwO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA0MHB4O1xuICAgICAgICBtYXJnaW4tdG9wOiA4MHB4O1xuICAgICAgfVxuICAgIH1cblxuICAgIC5zZWN0aW9uLWhvbWVwYWdlIHtcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGNkY2RjO1xuICAgICAgcGFkZGluZzogNjBweCAwO1xuXG4gICAgICAudmlzdWFsIHtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgfVxuXG4gICAgICBoMiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjVweDtcbiAgICAgIH1cblxuICAgICAgJi5kYXRlcyB7XG4gICAgICAgIGgyIHtcbiAgICAgICAgICBtYXJnaW4tdG9wOiA0MHB4O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYuYWN0aXZpdGllcyB7XG4gICAgICAgIGgyIHtcbiAgICAgICAgICBtYXJnaW4tdG9wOiAxMzBweDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAmLmZlYXR1cmVzIHtcbiAgICAgICAgaDMge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICAgICAgICBmb250LXdlaWdodDogMzAwO1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQwcHg7XG4gICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgdWwge1xuICAgICAgICAgIGxpIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgICAgICAgIG1hcmdpbjogMTBweCBhdXRvO1xuICAgICAgICAgICAgbWF4LXdpZHRoOiA2MCU7XG5cbiAgICAgICAgICAgIGkge1xuICAgICAgICAgICAgICBjb2xvcjogIzQxNzc0MTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJi50cnkge1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICAgICAgcCB7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogNTBweDtcbiAgICAgICAgICBtYXJnaW4tdG9wOiA3MHB4O1xuXG4gICAgICAgICAgYSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDIwcHg7XG4gICAgICAgICAgICBmb250LXdlaWdodDogMzAwO1xuICAgICAgICAgICAgcGFkZGluZzogMjBweCA1MHB4O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC53aHkge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzMxMzk0MDtcbiAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgcGFkZGluZy1ib3R0b206IDUwcHg7XG5cbiAgICAgIGgzIHtcbiAgICAgICAgZm9udC1zaXplOiAyMHB4O1xuICAgICAgICBmb250LXdlaWdodDogMzAwO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAzMHB4O1xuICAgICAgICBwYWRkaW5nLXRvcDogNTBweDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgfVxuXG4gICAgICBwIHtcbiAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgICBmb250LXdlaWdodDogMzAwO1xuICAgICAgICBtYXJnaW46IDEwcHggYXV0byAyMHB4O1xuICAgICAgICBtYXgtd2lkdGg6IDU1MHB4O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5mb290ZXItbWFya2V0aW5nIHtcbiAgICBtYXJnaW4tYm90dG9tOiA0MHB4O1xuICAgIHBhZGRpbmctdG9wOiA0MHB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgIGEge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuICAgIH1cbiAgfVxuXG4gICYucmVnaXN0ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmYWZiZmM7XG4gICAgcGFkZGluZy10b3A6IDkwcHg7XG4gICAgcGFkZGluZy1ib3R0b206IDQwcHg7XG5cbiAgICAuc2lnbnVwLWJveCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgI2U0ZWRmNTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICAgIHBhZGRpbmc6IDUwcHggMjBweCAyMHB4O1xuXG4gICAgICAubG9nbyB7XG4gICAgICAgIGxlZnQ6IDQwJTtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IC0zM3B4O1xuICAgICAgfVxuXG4gICAgICBoMSB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIH1cblxuICAgICAgaDIsIGgzIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgfVxuXG4gICAgICBoMiB7XG4gICAgICAgIG1hcmdpbi10b3A6IDIwcHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gICAgICB9XG5cbiAgICAgIGgzIHtcbiAgICAgICAgZm9udC1zaXplOiAxNXB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAzMHB4O1xuICAgICAgfVxuXG4gICAgICAuZm9ybS1pbmxpbmUge1xuICAgICAgICBsYWJlbCB7XG4gICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgYnV0dG9uIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMTBweDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB9XG5cbiAgICAgIGEuYWN0aW9uIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMTBweDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB9XG5cbiAgICAgIC5oZWxwIHtcbiAgICAgICAgZm9udC1zaXplOiAxM3B4O1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVja2JveCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5saW5rcyB7XG4gICAgICAgIG1hcmdpbi10b3A6IDIwcHg7XG5cbiAgICAgICAgbGkge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiA1cHg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAuc3VicGFnZXMge1xuICAgIC5oZWFkZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzMxMzk0MDtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG4gIH1cblxufVxuXG4ucmVsZWFzZXMsIC5wcml2YWN5LCAuc3RhdGlzdGljcyB7XG4gIG1heC13aWR0aDogNzUwcHg7XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIHBhZGRpbmc6IDIwcHggMzBweCAxMDBweCAzMHB4O1xuICBtYXJnaW4tdG9wOiA1MHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBib3gtc2hhZG93OiAwcHggOHB4IDIwcHggI2RhZGJkZDtcblxuICBoMiB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB9XG5cbiAgaDMge1xuICAgIGZvbnQtc2l6ZTogMTVweDtcbiAgICBtYXJnaW4tdG9wOiAzMHB4O1xuICB9XG59XG5cbi5yZWxlYXNlcyB7XG4gIHVsIHtcbiAgICBsaXN0LXN0eWxlLXR5cGU6IGRpc2M7XG4gICAgbWFyZ2luLWxlZnQ6IDIwcHg7XG4gIH1cbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KSB7XG4gIC5tYXJrZXRpbmcge1xuICAgICYuaG9tZXBhZ2Uge1xuICAgICAgaW1nIHtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgfVxuXG4gICAgICAuYmVmb3JlLXNlY3Rpb25zIGgzIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgIH1cblxuICAgICAgLnNlY3Rpb24taG9tZXBhZ2Uge1xuICAgICAgICAmLnBlb3BsZSB7XG4gICAgICAgICAgLnZpc3VhbCB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiA0MHB4O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICYuYWN0aXZpdGllcyB7XG4gICAgICAgICAgaDIge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAudmlzdWFsIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDQwcHg7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJi5mZWF0dXJlcyB7XG4gICAgICAgICAgdWwgbGkge1xuICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICYudHJ5IHtcbiAgICAgICAgICBwYWRkaW5nOiAzMHB4IDA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLnJlZ2lzdGVyIHtcbiAgICAgIC5zaWdudXAtYm94IHtcbiAgICAgICAgLmxvZ28ge1xuICAgICAgICAgIGxlZnQ6IDM5JTtcbiAgICAgICAgICB0b3A6IC00N3B4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIuc2V0dGluZ3Mge1xuICAuYnJlYWRjcnVtYiB7XG4gICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgfVxuXG4gIC5zaWRlYmFyLW1lbnUge1xuICAgIHVsIHtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRib3JkZXItY29sb3I7XG4gICAgICBib3JkZXItcmFkaXVzOiAzcHg7XG4gICAgfVxuXG4gICAgbGkge1xuICAgICAgcGFkZGluZzogMTBweDtcblxuICAgICAgJjpub3QoOmxhc3QtY2hpbGQpIHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRib3JkZXItY29sb3I7XG4gICAgICB9XG5cbiAgICAgICYuc2VsZWN0ZWQge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjdmYmZjO1xuXG4gICAgICAgIGkge1xuICAgICAgICAgIGNvbG9yOiBncmVlbjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBhIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB9XG5cbiAgICAgIGkge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbiAgICAgICAgY29sb3I6ICM5OTk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLnNldHRpbmdzLXJlc2V0LFxuICAuc2V0dGluZ3MtZGVsZXRlIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZDtcbiAgICBwYWRkaW5nOiAxMHB4O1xuICAgIG1hcmdpbi10b3A6IDQwcHg7XG5cbiAgICBoMiB7XG4gICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgIH1cbiAgfVxuXG4gIC5zZXR0aW5ncy1kZWxldGUge1xuICAgIGJvcmRlci1jb2xvcjogI2Q5NTM0ZjtcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XG4gIH1cblxuICAuc2V0dGluZ3MtcmVzZXQge1xuICAgIGJvcmRlci1jb2xvcjogI2YwYWQ0ZTtcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XG4gIH1cblxuICAud2FybmluZy16b25lIHtcbiAgICBtYXJnaW4tYm90dG9tOiAzMHB4O1xuICAgIG1hcmdpbi10b3A6IDMwcHg7XG4gICAgcGFkZGluZzogMTBweCAxMHB4IDVweCAxNXB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNmMWM4OTc7XG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmU4YmM7XG4gIH1cblxuICAudXNlcnMtbGlzdCB7XG4gICAgaDMud2l0aC1hY3Rpb25zIHtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAxM3B4O1xuXG4gICAgICBhIHtcbiAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgfVxuICAgIH1cblxuICAgIC50YWJsZS1jZWxsLmFjdGlvbnMge1xuICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgfVxuICB9XG5cbiAgLmJsYW5rLXNjcmVlbiB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgaW1nIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDMwcHg7XG4gICAgICBtYXJnaW4tdG9wOiAzMHB4O1xuICAgIH1cblxuICAgIGgyIHtcbiAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgIH1cblxuICAgIGgzIHtcbiAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICBib3JkZXItYm90dG9tOiAwO1xuICAgIH1cblxuICAgIHAge1xuICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICB3aWR0aDogNDAwcHg7XG5cbiAgICAgICYuY3RhIHtcbiAgICAgICAgbWFyZ2luLXRvcDogNDBweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAucmVxdWlyZXMtc3Vic2NyaXB0aW9uIHtcbiAgICAgIG1hcmdpbi10b3A6IDIwcHg7XG4gICAgICBmb250LXNpemU6IDEzcHg7XG4gICAgICBjb2xvcjogIzk5OTtcbiAgICB9XG4gIH1cblxuICAuc3Vic2NyaXB0aW9ucyB7XG4gICAgLnVwZ3JhZGUtYmVuZWZpdHMge1xuICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcblxuICAgICAgbGkge1xuICAgICAgICBtYXJnaW4tbGVmdDogMjBweDtcbiAgICAgICAgbGlzdC1zdHlsZS10eXBlOiBkaXNjO1xuICAgICAgfVxuICAgIH1cblxuICAgICNsYWJlbC1jYXJkLWVsZW1lbnQge1xuICAgICAgbWFyZ2luLWJvdHRvbTogMTVweDtcbiAgICB9XG5cbiAgICAuZG93bmdyYWRlIHtcbiAgICAgIHVsIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjhmODtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJGJvcmRlci1jb2xvcjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgICAgICBwYWRkaW5nOiAyNXB4O1xuICAgICAgfVxuXG4gICAgICBsaSB7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAxNXB4O1xuXG4gICAgICAgICY6bm90KDpsYXN0LWNoaWxkKSB7XG4gICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRib3JkZXItY29sb3I7XG4gICAgICAgIH1cblxuICAgICAgICAmOm5vdCg6Zmlyc3QtY2hpbGQpIHtcbiAgICAgICAgICBtYXJnaW4tdG9wOiAxMHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgJi5zdWNjZXNzIHtcbiAgICAgICAgICAucnVsZS10aXRsZSB7XG4gICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAuaWNvbjphZnRlciB7XG4gICAgICAgICAgICBmb250LWZhbWlseTogRm9udEF3ZXNvbWU7XG4gICAgICAgICAgICBmb250LXNpemU6IDE3cHg7XG4gICAgICAgICAgICBjb2xvcjogIzBlYjBiNztcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiXFxmMDU4XCI7XG4gICAgICAgICAgICB0b3A6IDEwcHg7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICYuZmFpbCB7XG4gICAgICAgICAgLmljb246YWZ0ZXIge1xuICAgICAgICAgICAgZm9udC1mYW1pbHk6IEZvbnRBd2Vzb21lO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxN3B4O1xuICAgICAgICAgICAgY29sb3I6ICNjZDQ0MDA7XG4gICAgICAgICAgICBjb250ZW50OiBcIlxcZjA1N1wiO1xuICAgICAgICAgICAgdG9wOiAxMHB4O1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOztcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAucnVsZS10aXRsZSB7XG4gICAgICAgICAgZm9udC1zaXplOiAxOHB4O1xuICAgICAgICAgIHBhZGRpbmctbGVmdDogNXB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLnJ1bGUtdG8tc3VjY2VlZCB7XG4gICAgICAgICAgZm9udC1zaXplOiAxM3B4O1xuICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgIHBhZGRpbmctbGVmdDogMjdweDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5yZXBvcnQge1xuICAgIC5yZXBvcnQtc3VtbWFyeSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFmYWZhO1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgJGJvcmRlci1jb2xvcjtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgICAgIG1hcmdpbi1ib3R0b206IDMwcHg7XG5cbiAgICAgIGxpIHtcbiAgICAgICAgcGFkZGluZzogNXB4IDEwcHg7XG5cbiAgICAgICAgJjpub3QoOmxhc3QtY2hpbGQpIHtcbiAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGJvcmRlci1jb2xvcjtcbiAgICAgICAgfVxuXG4gICAgICAgIHNwYW4ge1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAuc3RhdHVzIHtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIHdpZHRoOiA5NXB4O1xuICAgIH1cblxuICAgIC5yZWFzb24ge1xuICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgIH1cbiAgfVxuXG4gICYuaW1wb3J0IHtcbiAgICAuc3VjY2VzcyB7XG4gICAgICBjb2xvcjogIzVjYjg1YztcbiAgICB9XG5cbiAgICAuZmFpbHVyZSB7XG4gICAgICBjb2xvcjogI2Q5NTM0ZjtcbiAgICB9XG5cbiAgICAud2FybmluZyB7XG4gICAgICBjb2xvcjogI2YwYWQ0ZTtcbiAgICB9XG5cbiAgICAuZGF0ZSB7XG4gICAgICBmb250LXNpemU6IDEzcHg7XG4gICAgICBtYXJnaW4tbGVmdDogMTBweDtcbiAgICB9XG5cbiAgICBoMy53aXRoLWFjdGlvbnMge1xuICAgICAgcGFkZGluZy1ib3R0b206IDEzcHg7XG5cbiAgICAgIGEge1xuICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJi51cGxvYWQge1xuICAgIC53YXJuaW5nLXpvbmUge1xuICAgICAgcGFkZGluZzogMjBweCAxNXB4O1xuXG4gICAgICB1bCB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAyMHB4O1xuICAgICAgICBsaXN0LXN0eWxlLXR5cGU6IGRpc2M7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLnRhZ3MtbGlzdCB7XG4gICAgLnRhZ3MtbGlzdC1jb250YWN0LW51bWJlciB7XG4gICAgICBtYXJnaW4tbGVmdDogMTBweDtcbiAgICAgIGNvbG9yOiAjOTk5O1xuICAgIH1cblxuICAgIC5hY3Rpb25zIHtcbiAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIH1cbiAgfVxufVxuIiwiLm1vZGFsIHtcbiAgaDUge1xuICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICB9XG5cbiAgbGFiZWwge1xuICAgIHBhZGRpbmctbGVmdDogMDtcbiAgfVxuXG4gIC5jbG9zZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiAxOXB4O1xuICAgIHRvcDogMTRweDtcbiAgICBmb250LXNpemU6IDMwcHg7XG4gIH1cblxuICAmLmxvZy1jYWxsIHtcbiAgICAuZGF0ZS1pdC1oYXBwZW5lZCB7XG4gICAgICBtYXJnaW4tdG9wOiAyMHB4O1xuICAgIH1cblxuICAgIC5leGFjdC1kYXRlIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICBtYXJnaW4tdG9wOiAyMHB4O1xuXG4gICAgICBpbnB1dCB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZTtcbiAgICAgICAgd2lkdGg6IDE2NXB4O1xuICAgICAgfVxuICAgIH1cbiAgfVxufSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FtQ0FBLDRFQUE0RTtBQVE1RSxBQUFBLElBQUksQ0FBQztFQUNILFdBQVcsRUFBRSxVQUFVO0VBQ3ZCLG9CQUFvQixFQUFFLElBQUk7RUFD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YkFBdUI7Q0FDMUM7O0FBR0gsQWhCaFJFLFlnQmdSVSxDaEJoUlYsVUFBVTtBZ0JnUlosQWhCL1FFLFlnQitRVSxDaEIvUVYsbUJBQW1CO0FnQitRckIsQWhCOVFFLFlnQjhRVSxDaEI5UVYsTUFBTTtBZ0I4UVIsQWhCN1FFLFlnQjZRVSxDaEI3UVYsU0FBUztBZ0I2UVgsQWhCNVFFLFlnQjRRVSxDaEI1UVYsYUFBYTtBZ0I0UWYsQWhCM1FFLFlnQjJRVSxDaEIzUVYsZ0JBQWdCO0FnQjJRbEIsQWhCMVFVLFlnQjBRRSxBaEIxUVosTUFBUyxDQUFDLEtBQUs7QWdCMFFmLEFoQnpRYSxZZ0J5UUQsQWhCelFaLFNBQVksQ0FBQyxLQUFLO0FnQnlRbEIsQWhCeFFpQixZZ0J3UUwsQWhCeFFaLGFBQWdCLENBQUMsS0FBSztBZ0J3UXRCLEFoQnZRb0IsWWdCdVFSLEFoQnZRWixnQkFBbUIsQ0FBQyxLQUFLLENBQUU7RUFDdkIsS0FBSyxFdEJvQm1CLE9BQU87Q3NCbkJoQzs7QWdCcVFILEFoQm5RRSxZZ0JtUVUsQ2hCblFWLGFBQWEsQ0FBQztFQUNaLFlBQVksRXRCZ0JZLE9BQU87Q3NCUmhDOztBZ0IwUEgsQWhCdlBFLFlnQnVQVSxDaEJ2UFYsa0JBQWtCLENBQUM7RUFDakIsS0FBSyxFdEJJbUIsT0FBTztFc0JIL0IsWUFBWSxFdEJHWSxPQUFPO0VzQkYvQixnQkFBZ0IsRUFBRSxLQUFvQjtDQUN2Qzs7QWdCbVBILEFoQmpQRSxZZ0JpUFUsQ2hCalBWLHNCQUFzQixDQUFDO0VBQ3JCLEtBQUssRXRCRm1CLE9BQU87Q3NCR2hDOztBZ0IrT0gsQUFHRSxZQUhVLENBR1YscUJBQXFCLENBQUM7RUFDcEIsZ0JBQWdCLEVBQUUsNmRBQXVCO0NBQzFDOztBQUdILEFoQnhSRSxXZ0J3UlMsQ2hCeFJULFVBQVU7QWdCd1JaLEFoQnZSRSxXZ0J1UlMsQ2hCdlJULG1CQUFtQjtBZ0J1UnJCLEFoQnRSRSxXZ0JzUlMsQ2hCdFJULE1BQU07QWdCc1JSLEFoQnJSRSxXZ0JxUlMsQ2hCclJULFNBQVM7QWdCcVJYLEFoQnBS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QU07Q0FBRzs7QUFBRCxBQUFBLElBQUksRUFBQyxBQUFBLEdBQUcsRUFBQyxBQUFBLElBQUksQ0FBQTtFQUFDLFdBQVcsRUFBQyxtQkFBbUI7RUFBRSxTQUFTLEVBQUMsR0FBRztDQUFHOztBQUFELEFBQUEsR0FBRyxDQUFBO0VBQUMsVUFBVSxFQUFDLE1BQU07Q0FBRzs7QUFBRCxBQUFBLElBQUksQ0FBQTtFQUFDLGdCQUFnQixFQUFDLElBQUk7RUFBRSxLQUFLLEVBQUMsSUFBSTtDQUFHOztBQUFELEFBQUEsS0FBSyxDQUFBO0VBQUMsU0FBUyxFQUFDLEdBQUc7Q0FBRzs7QUFBRCxBQUFBLEdBQUcsRUFBQyxBQUFBLEdBQUcsQ0FBQTtFQUFDLFNBQVMsRUFBQyxHQUFHO0VBQUUsV0FBVyxFQUFDLENBQUM7RUFBRSxRQUFRLEVBQUMsUUFBUTtFQUFFLGNBQWMsRUFBQyxRQUFRO0NBQUc7O0FBQUQsQUFBQSxHQUFHLENBQUE7RUFBQyxNQUFNLEVBQUMsTUFBTTtDQUFHOztBQUFELEFBQUEsR0FBRyxDQUFBO0VBQUMsR0FBRyxFQUFDLEtBQUs7Q0FBRzs7QUFBRCxBQUFBLEtBQUssRUFBQyxBQUFBLEtBQUssQ0FBQTtFQUFDLE9BQU8sRUFBQyxZQUFZO0NBQUc7O0FBQUQsQUFBQSxLQUFLLEFBQUEsSUFBSyxFQUFBLEFBQUEsQUFBQSxRQUFDLEFBQUEsR0FBVTtFQUFDLE9BQU8sRUFBQyxJQUFJO0VBQUUsTUFBTSxFQUFDLENBQUM7Q0FBRzs7QUFBRCxBQUFBLEdBQUcsQ0FBQTtFQUFDLFlBQVksRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxHQUFHLEFBQUEsSUFBSyxDQUFBLEFBQUEsS0FBSyxFQUFDO0VBQUMsUUFBUSxFQUFDLE1BQU07Q0FBRzs7QUFBRCxBQUFBLE1BQU0sRUFBQyxBQUFBLEtBQUssRUFBQyxBQUFBLFFBQVEsRUFBQyxBQUFBLE1BQU0sRUFBQyxBQUFBLFFBQVEsQ0FBQTtFQUFDLFdBQVcsRUFBQyxVQUFVO0VBQUUsU0FBUyxFQUFDLElBQUk7RUFBRSxXQUFXLEVBQUMsSUFBSTtF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Rzs7QUFBRCxBQUFBLFdBQVcsRUFBQyxBQUFBLENBQUMsRUFBQyxBQUFBLE9BQU8sRUFBQyxBQUFBLEtBQUssRUFBQyxBQUFBLFVBQVUsRUFBQyxBQUFBLElBQUksRUFBQyxBQUFBLElBQUksRUFBQyxBQUFBLEVBQUUsRUFBQyxBQUFBLEdBQUcsRUFBQyxBQUFBLEVBQUUsRUFBQyxBQUFBLEVBQUUsRUFBQyxBQUFBLFFBQVEsRUFBQyxBQUFBLFVBQVUsRUFBQyxBQUFBLE1BQU0sRUFBQyxBQUFBLE1BQU0sRUFBQyxBQUFBLElBQUksRUFBQyxBQUFBLEVBQUUsRUFBQyxBQUFBLEVBQUUsRUFBQyxBQUFBLEVBQUUsRUFBQyxBQUFBLEVBQUUsRUFBQyxBQUFBLEVBQUUsRUFBQyxBQUFBLEVBQUUsRUFBQyxBQUFBLE1BQU0sRUFBQyxBQUFBLElBQUksRUFBQyxBQUFBLEtBQUssQ0FBQSxBQUFBLElBQUMsQ0FBRCxLQUFDLEFBQUEsR0FBWSxBQUFBLEtBQUssQ0FBQSxBQUFBLElBQUMsQ0FBRCxNQUFDLEFBQUEsR0FBYSxBQUFBLEtBQUssQ0FBQSxBQUFBLElBQUMsQ0FBRCxRQUFDLEFBQUEsR0FBZSxBQUFBLEtBQUssQ0FBQSxBQUFBLElBQUMsQ0FBRCxHQUFDLEFBQUEsR0FBVSxBQUFBLEtBQUssQ0FBQSxBQUFBLElBQUMsQ0FBRCxJQUFDLEFBQUEsR0FBVyxBQUFBLEtBQUssQ0FBQSxBQUFBLElBQUMsQ0FBRCxHQUFDLEFBQUEsR0FBVSxBQUFBLE1BQU0sRUFBQyxBQUFBLEVBQUUsRUFBQyxBQUFBLElBQUksRUFBQyxBQUFBLEdBQUcsRUFBQyxBQUFBLEVBQUUsRUFBQyxBQUFBLENBQUMsRUFBQyxBQUFBLEdBQUcsRUFBQyxBQUFBLE9BQU8sRUFBQyxBQUFBLEtBQUssRUFBQyxBQUFBLEVBQUUsRUFBQyxBQUFBLFFBQVEsRUFBQyxBQUFBLEVBQUUsRUFBQyxBQUFBLEVBQUUsRUFBQyxBQUFBLEVBQUUsQ0FBQTtFQUFDLFVBQVUsRUFBQyxVQUFVO0NBQUc7O0FBQUQsQUFBQSxhQUFhLENBQUE7RUFBQyxNQUFNLEVBQUMsQ0FBQztFQUFFLFFBQVEsRUFBQyxRQUFRO0NBQUc7O0FBQUQsQUFBQSxtQkFBbUIsQ0FBQTtFQUFDLGNBQWMsRUFBQyxNQUFNO0NBQUc7O0FBQUQsQUFBQSxtQkFBbUIsQ0FBQTtFQUFDLGNBQWMsRUFBQyxPQUFPO0NBQUc7O0FBQUQsQUFBQSxrQkFBa0IsQ0FBQTtFQUFDLGNBQWMsRUFBQyxHQUFHO0NBQUc7O0FBQUQsQUFBQSxrQkFBa0IsQ0FBQTtFQUFDLGNBQWMsRUFBQyxPQUFPO0NBQUc7O0FBQUQsQUFBQSxrQkFBa0IsQ0FBQTtFQUFDLGNBQWMsRUFBQyxLQUFLO0NBQUc7O0FBQUQsQUFBQSxrQkFBa0IsQ0FBQTtFQUFDLGNBQWMsRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxrQkFBa0IsQ0FBQTtFQUFDLGNBQWMsRUFBQyxLQUFLO0NBQUc7O0FBQUQsQUFBQSxrQkFBa0IsQ0FBQTtFQUFDLGNBQWMsRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxrQkFBa0IsQ0FBQTtFQUFDLGNBQWMsRUFBQyxNQUFNO0NBQUc7O0FBQUQsQUFBQSxrQkFBa0IsQ0FBQTtFQUFDLGNBQWMsRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxrQkFBa0IsQ0FBQTtFQUFDLGNBQWMsRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxxQkFBcUIsQ0FBQTtFQUFDLFFBQVEsRUFBQyxRQUFRO0VBQUUsR0FBRyxFQUFDLENBQUM7RUFBRSxLQUFLLEVBQUMsQ0FBQztFQUFFLE1BQU0sRUFBQyxDQUFDO0VBQUUsSUFBSSxFQUFDLENBQUM7RUFBRSxLQUFLLEVBQUMsSUFBSTtFQUFFLE1BQU0sRUFBQyxJQUFJO0VBQUUsT0FBTyxFQUFDLEdBQUc7Q0FBRzs7QUFBRCxBQUFBLEdBQUcsQ0FBQTtFQUFDLFNBQVMsRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxNQUFNLENBQUE7RUFBQyxlQUFlLEVBQUMsS0FBSyxDQUFBLFVBQVU7Q0FBRTs7QUFBRCxBQUFBLFFBQVEsQ0FBQTtFQUFDLGVBQWUsRUFBQyxPQUFPLENBQUEsVUFBVTtDQUFFOztBQUFELEFBQUEsVUFBVSxDQUFBO0VBQUMsbUJBQW1CLEVBQUMsR0FBRztDQUFHOztBQUFELEFBQUEsVUFBVSxFQUFDLEFBQUEsT0FBTyxDQUFBO0VBQUMsaUJBQWlCLEVBQUMsU0FBUztDQUFHOztBQUFELEFBQUEsT0FBTyxDQUFBO0VBQUMsbUJBQW1CLEVBQUMsR0FBRztDQUFHOztBQUFELEFBQUEsU0FBUyxDQUFBO0VBQUMsbUJBQW1CLEVBQUMsSUFBSTtDQUFHOztBQUFELEFBQUEsVUFBVSxFQUFDLEFBQUEsU0FBUyxDQUFBO0VBQUMsaUJBQWlCLEVBQUMsU0FBUztDQUFHOztBQUFELEFBQUEsVUFBVSxDQUFBO0VBQUMsbUJBQW1CLEVBQUMsTUFBTTtDQUFHOztBQUFELEFBQUEsUUFBUSxDQUFBO0VBQUMsaUJBQWlCLEVBQUMsU0FBUztFQUFFLG1CQUFtQixFQUFDLENBQUM7Q0FBRzs7QUFBRCxBQUFBLFFBQVEsQ0FBQTtFQUFDLE9BQU8sRUFBQyxTQUFTO0NBQUc7O0FBQUQsQUFBQSxvQkFBb0IsQ0FBQTtFQUFDLE9BQU8sRUFBQyxxQkFBcUI7Q0FBRzs7QUFBRCxBQUFBLFVBQVUsQ0FBQTtFQUFDLE9BQU8sRUFBQyxDQUFDO0NBQUc7O0FBQUQsQUFBQSxHQUFHLENBQUE7RUFBQyxZQUFZLEVBQUMsS0FBSztFQUFFLFlBQVksRUFBQyxHQUFHO0NBQUc7O0FBQUQsQUFBQSxHQUFHLENBQUE7RUFBQyxnQkFBZ0IsRUFBQyxLQUFLO0VBQUUsZ0JBQWdCLEVBQUMsR0FBRztDQUFHOztBQUFELEFBQUEsR0FBRyxDQUFBO0VBQUMsa0JBQWtCLEVBQUMsS0FBSztFQUFFLGtCQUFrQixFQUFDLEdBQUc7Q0FBRzs7QUFBRCxBQUFBLEdBQUcsQ0FBQTtFQUFDLG1CQUFtQixFQUFDLEtBQUs7RUFBRSxtQkFBbUIsRUFBQyxHQUFHO0NBQUc7O0FBQUQsQUFBQSxHQUFHLENBQUE7RUFBQyxpQkFBaUIsRUFBQyxLQUFLO0VBQUUsaUJBQWlCLEVBQUMsR0FBRztDQUFHOztBQUFELEFBQUEsR0FBRyxDQUFBO0VBQUMsWUFBWSxFQUFDLElBQUk7RUFBRSxZQUFZLEVBQUMsQ0FBQztDQUFHOztBQUFELEFBQUEsU0FBUyxDQUFBO0VBQUMsWUFBWSxFQUFDLElBQUk7Q0FBRzs7QUFBRCxBQUFBLGNBQWMsQ0FBQTtFQUFDLFlBQVksRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxhQUFhLENBQUE7RUFBQyxZQUFZLEVBQUMsSUFBSTtDQUFHOztBQUFELEFBQUEsWUFBWSxDQUFBO0VBQUMsWUFBWSxFQUFDLElBQUk7Q0FBRzs7QUFBRCxBQUFBLFFBQVEsQ0FBQTtFQUFDLFlBQVksRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxVQUFVLENBQUE7RUFBQyxZQUFZLEVBQUMsSUFBSTtDQUFHOztBQUFELEFBQUEsZ0JBQWdCLENBQUE7RUFBQyxZQUFZLEVBQUMsSUFBSTtDQUFHOztBQUFELEFBQUEsYUFBYSxDQUFBO0VBQUMsWUFBWSxFQUFDLElBQUk7Q0FBRzs7QUFBRCxBQUFBLGNBQWMsQ0FBQTtFQUFDLFlBQVksRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxjQUFjLENBQUE7RUFBQyxZQUFZLEVBQUMsT0FBTztDQUFHOztBQUFELEFBQUEsU0FBUyxDQUFBO0VBQUMsWUFBWSxFQUFDLElBQUk7Q0FBRzs7QUFBRCxBQUFBLFlBQVksQ0FBQTtFQUFDLFlBQVksRUFBQyx3QkFBa0I7Q0FBRTs7QUFBRCxBQUFBLFlBQVksQ0FBQTtFQUFDLFlBQVksRUFBQyx3QkFBa0I7Q0FBRTs7QUFBRCxBQUFBLFlBQVksQ0FBQTtFQUFDLFlBQVksRUFBQyx3QkFBa0I7Q0FBRTs7QUFBRCxBQUFBLFlBQVksQ0FBQTtFQUFDLFlBQVksRUFBQyx3QkFBa0I7Q0FBRTs7QUFBRCxBQUFBLFlBQVksQ0FBQTtFQUFDLFlBQVksRUFBQyx3QkFBa0I7Q0FBRTs7QUFBRCxBQUFBLFlBQVksQ0FBQTtFQUFDLFlBQVksRUFBQyx3QkFBa0I7Q0FBRTs7QUFBRCxBQUFBLFlBQVksQ0FBQTtFQUFDLFlBQVksRUFBQyx3QkFBa0I7Q0FBRTs7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QSxTQUFTLENBQUE7RUFBQyxVQUFVLEVBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLGtCQUFjO0NBQUU7O0FBQUQsQUFBQSxTQUFTLENBQUE7RUFBQyxVQUFVLEVBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLGtCQUFjO0NBQUU7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxVQUFVLEVBQUMsSUFBSTtFQUFFLFVBQVUsRUFBQyxNQUFNO0VBQUUsUUFBUSxFQUFDLE1BQU07Q0FBRzs7QUFBRCxBQUFBLE1BQU0sQ0FBQTtFQUFDLEdBQUcsRUFBQyxDQUFDO0NBQUc7O0FBQUQsQUFBQSxRQUFRLENBQUE7RUFBQyxLQUFLLEVBQUMsQ0FBQztDQUFHOztBQUFELEFBQUEsU0FBUyxDQUFBO0VBQUMsTUFBTSxFQUFDLENBQUM7Q0FBRzs7QUFBRCxBQUFBLE9BQU8sQ0FBQTtFQUFDLElBQUksRUFBQyxDQUFDO0NBQUc7O0FBQUQsQUFBQSxNQUFNLENBQUE7RUFBQyxHQUFHLEVBQUMsSUFBSTtDQUFHOztBQUFELEFBQUEsUUFBUSxDQUFBO0VBQUMsS0FBSyxFQUFDLElBQUk7Q0FBRzs7QUFBRCxBQUFBLFNBQVMsQ0FBQTtFQUFDLE1BQU0sRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxPQUFPLENBQUE7RUFBQyxJQUFJLEVBQUMsSUFBSTtDQUFHOztBQUFELEFBQUEsTUFBTSxDQUFBO0VBQUMsR0FBRyxFQUFDLElBQUk7Q0FBRzs7QUFBRCxBQUFBLFFBQVEsQ0FBQTtFQUFDLEtBQUssRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxTQUFTLENBQUE7RUFBQyxNQUFNLEVBQUMsSUFBSTtDQUFHOztBQUFELEFBQUEsT0FBTyxDQUFBO0VBQUMsSUFBSSxFQUFDLElBQUk7Q0FBRzs7QUFBRCxBQUFBLE9BQU8sQ0FBQTtFQUFDLEdBQUcsRUFBQyxLQUFLO0NBQUc7O0FBQUQsQUFBQSxTQUFTLENBQUE7RUFBQyxLQUFLLEVBQUMsS0FBSztDQUFHOztBQUFELEFBQUEsVUFBVSxDQUFBO0VBQUMsTUFBTSxFQUFDLEtBQUs7Q0FBRzs7QUFBRCxBQUFBLFFBQVEsQ0FBQTtFQUFDLElBQUksRUFBQyxLQUFLO0NBQUc7O0FBQUQsQUFBQSxPQUFPLENBQUE7RUFBQyxHQUFHLEVBQUMsS0FBSztDQUFHOztBQUFELEFBQUEsU0FBUyxDQUFBO0VBQUMsS0FBSyxFQUFDLEtBQUs7Q0FBRzs7QUFBRCxBQUFBLFVBQVUsQ0FBQTtFQUFDLE1BQU0sRUFBQyxLQUFLO0NBQUc7O0FBQUQsQUFBQSxRQUFRLENBQUE7RUFBQyxJQUFJLEVBQUMsS0FBSztDQUFHOztBQUFELEFBQUEsZUFBZSxDQUFBO0VBQUMsR0FBRyxFQUFDLENBQUM7RUFBRSxLQUFLLEVBQUMsQ0FBQztFQUFFLE1BQU0sRUFBQyxDQUFDO0VBQUUsSUFBSSxFQUFDLENBQUM7Q0FBRzs7QUFBRCxBQUFBLEdBQUcsQUFBQSxNQUFNLEVBQUMsQUFBQSxHQUFHLEFBQUEsT0FBTyxDQUFBO0VBQUMsT0FBTyxFQUFDLEdBQUc7RUFBRSxPQUFPLEVBQUMsS0FBSztDQUFHOztBQUFELEFBQUEsR0FBRyxBQUFBLE1BQU0sQ0FBQTtFQUFDLEtBQUssRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxHQUFHLENBQUE7RUFBQyxLQUFLLEVBQUMsQ0FBQztDQUFHOztBQUFELEFBQUEsR0FBRyxDQUFBO0VBQUMsS0FBSyxFQUFDLElBQUk7Q0FBRzs7QUFBRCxBQUFBLEdBQUcsQ0FBQTtFQUFDLEtBQUssRUFBQyxLQUFLO0NBQUc7O0FBQUQsQUFBQSxHQUFHLENBQUE7RUFBQyxLQUFLLEVBQUMsSUFBSTtDQUFHOztBQUFELEFBQUEsR0FBRyxDQUFBO0VBQUMsS0FBSyxFQUFDLElBQUk7Q0FBRzs7QUFBRCxBQUFBLEdBQUcsQ0FBQTtFQUFDLE9BQU8sRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxHQUFHLENBQUE7RUFBQyxPQUFPLEVBQUMsTUFBTTtDQUFHOztBQUFELEFBQUEsR0FBRyxDQUFBO0VBQUMsT0FBTyxFQUFDLEtBQUs7Q0FB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VyxFQUFDLEdBQUc7Q0FBRzs7QUFBRCxBQUFBLEVBQUUsQ0FBQTtFQUFDLFdBQVcsRUFBQyxHQUFHO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxXQUFXLEVBQUMsR0FBRztDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsV0FBVyxFQUFDLEdBQUc7Q0FBRzs7QUFBRCxBQUFBLElBQUksQ0FBQTtFQUFDLFdBQVcsRUFBQyxHQUFHO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxXQUFXLEVBQUMsR0FBRztDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsV0FBVyxFQUFDLEdBQUc7Q0FBRzs7QUFBRCxBQUFBLElBQUksQ0FBQTtFQUFDLFdBQVcsRUFBQyxHQUFHO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxXQUFXLEVBQUMsR0FBRztDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsV0FBVyxFQUFDLEdBQUc7Q0FBRzs7QUFBRCxBQUFBLElBQUksQ0FBQTtFQUFDLFdBQVcsRUFBQyxHQUFHO0NBQUc7O0FBQUQsQUFBQSxZQUFZLENBQUE7RUFBQyxrQkFBa0IsRUFBQyxJQUFJO0VBQUUsZUFBZSxFQUFDLElBQUk7Q0FBRzs7QUFBRCxBQUFBLGFBQWEsQUFBQSxrQkFBa0IsRUFBQyxBQUFBLFlBQVksQUFBQSxrQkFBa0IsQ0FBQTtFQUFDLE1BQU0sRUFBQyxDQUFDO0VBQUUsT0FBTyxFQUFDLENBQUM7Q0FBRzs7QUFBRCxBQUFBLEdBQUcsQ0FBQTtFQUFDLE1BQU0sRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxHQUFHLENBQUE7RUFBQyxNQUFNLEVBQUMsSUFBSTtDQUFHOztBQUFELEFBQUEsR0FBRyxDQUFBO0VBQUMsTUFBTSxFQUFDLElBQUk7Q0FBRzs7QUFBRCxBQUFBLEdBQUcsQ0FBQTtFQUFDLE1BQU0sRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxHQUFHLENBQUE7RUFBQyxNQUFNLEVBQUMsS0FBSztDQUFHOztBQUFELEFBQUEsS0FBSyxDQUFBO0VBQUMsTUFBTSxFQUFDLEdBQUc7Q0FBRzs7QUFBRCxBQUFBLEtBQUssQ0FBQTtFQUFDLE1BQU0sRUFBQyxHQUFHO0NBQUc7O0FBQUQsQUFBQSxLQUFLLENBQUE7RUFBQyxNQUFNLEVBQUMsR0FBRztDQUFHOztBQUFELEFBQUEsTUFBTSxDQUFBO0VBQUMsTUFBTSxFQUFDLElBQUk7Q0FBRzs7QUFBRCxBQUFBLFVBQVUsQ0FBQTtFQUFDLFVBQVUsRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxNQUFNLENBQUE7RUFBQyxNQUFNLEVBQUMsSUFBSTtDQUFHOztBQUFELEFBQUEsTUFBTSxDQUFBO0VBQUMsTUFBTSxFQUFDLElBQUk7Q0FBRzs7QUFBRCxBQUFBLE1BQU0sQ0FBQTtFQUFDLE1BQU0sRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxPQUFPLENBQUE7RUFBQyxNQUFNLEVBQUMsS0FBSztDQUFHOztBQUFELEFBQUEsV0FBVyxDQUFBO0VBQUMsVUFBVSxFQUFDLEtBQUs7Q0FBRzs7QUFBRCxBQUFBLE9BQU8sQ0FBQTtFQUFDLE1BQU0sRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxVQUFVLENBQUE7RUFBQyxNQUFNLEVBQUMsT0FBTztDQUFHOztBQUFELEFBQUEsUUFBUSxDQUFBO0VBQUMsY0FBYyxFQUFDLElBQUk7Q0FBRzs7QUFBRCxBQUFBLGNBQWMsQ0FBQTtFQUFDLGNBQWMsRUFBQyxNQUFNO0NBQUc7O0FBQUQsQUFBQSxhQUFhLENBQUE7RUFBQyxjQUFjLEVBQUMsS0FBSztDQUFHOztBQUFELEFBQUEsU0FBUyxDQUFBO0VBQUMsV0FBVyxFQUFDLENBQUM7Q0FBRzs7QUFBRCxBQUFBLFNBQVMsQ0FBQTtFQUFDLFdBQVcsRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxRQUFRLENBQUE7RUFBQyxXQUFXLEVBQUMsR0FBRztDQUFHOztBQUFELEFBQUEsS0FBSyxDQUFBO0VBQUMsZUFBZSxFQUFDLElBQUk7Q0FBRzs7QUFBRCxBQUFBLEtBQUssRUFBQyxBQUFBLEtBQUssQUFBQSxPQUFPLEVBQUMsQUFBQSxLQUFLLEFBQUEsTUFBTSxFQUFDLEFBQUEsS0FBSyxBQUFBLE1BQU0sRUFBQyxBQUFBLEtBQUssQUFBQSxLQUFLLEVBQUMsQUFBQSxLQUFLLEFBQUEsUUFBUSxDQUFBO0VBQUMsVUFBVSxFQUFDLGtCQUFrQjtDQUFHOztBQUFELEFBQUEsS0FBSyxBQUFBLE1BQU0sQ0FBQTtFQUFDLE9BQU8sRUFBQyx1QkFBdUI7Q0FBRzs7QUFBRCxBQUFBLEtBQUssQ0FBQTtFQUFDLGVBQWUsRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxPQUFPLENBQUE7RUFBQyxTQUFTLEVBQUMsSUFBSTtDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsU0FBUyxFQUFDLElBQUk7Q0FBRzs7QUFBRCxBQUFBLElBQUksQ0FBQTtFQUFDLFNBQVMsRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxTQUFTLEVBQUMsSUFBSTtDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsU0FBUyxFQUFDLElBQUk7Q0FBRzs7QUFBRCxBQUFBLElBQUksQ0FBQTtFQUFDLFNBQVMsRUFBQyxLQUFLO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxTQUFTLEVBQUMsS0FBSztDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsU0FBUyxFQUFDLEtBQUs7Q0FBRzs7QUFBRCxBQUFBLElBQUksQ0FBQTtFQUFDLFNBQVMsRUFBQyxLQUFLO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxTQUFTLEVBQUMsS0FBSztDQUFHOztBQUFELEFBQUEsUUFBUSxDQUFBO0VBQUMsU0FBUyxFQUFDLElBQUk7Q0FBRzs7QUFBRCxBQUFBLEdBQUcsQ0FBQTtFQUFDLEtBQUssRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxHQUFHLENBQUE7RUFBQyxLQUFLLEVBQUMsSUFBSTtDQUFHOztBQUFELEFBQUEsR0FBRyxDQUFBO0VBQUMsS0FBSyxFQUFDLElBQUk7Q0FBRzs7QUFBRCxBQUFBLEdBQUcsQ0FBQTtFQUFDLEtBQUssRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxHQUFHLENBQUE7RUFBQyxLQUFLLEVBQUMsS0FBSztDQUFHOztBQUFELEFBQUEsS0FBSyxDQUFBO0VBQUMsS0FBSyxFQUFDLEdBQUc7Q0FBRzs7QUFBRCxBQUFBLEtBQUssQ0FBQTtFQUFDLEtBQUssRUFBQyxHQUFHO0NBQUc7O0FBQUQsQUFBQSxLQUFLLENBQUE7RUFBQyxLQUFLLEVBQUMsR0FBRztDQUFHOztBQUFELEFBQUEsS0FBSyxDQUFBO0VBQUMsS0FBSyxFQUFDLEdBQUc7Q0FBRzs7QUFBRCxBQUFBLEtBQUssQ0FBQTtFQUFDLEtBQUssRUFBQyxHQUFHO0NBQUc7O0FBQUQsQUFBQSxLQUFLLENBQUE7RUFBQyxLQUFLLEVBQUMsR0FBRztDQUFHOztBQUFELEFBQUEsS0FBSyxDQUFBO0VBQUMsS0FBSyxFQUFDLEdBQUc7Q0FBRzs7QUFBRCxBQUFBLEtBQUssQ0FBQTtFQUFDLEtBQUssRUFBQyxHQUFHO0NBQUc7O0FBQUQsQUFBQSxLQUFLLENBQUE7RUFBQyxLQUFLLEVBQUMsR0FBRztDQUFHOztBQUFELEFBQUEsS0FBSyxDQUFBO0VBQUMsS0FBSyxFQUFDLEdBQUc7Q0FBRzs7QUFBRCxBQUFBLEtBQUssQ0FBQTtFQUFDLEtBQUssRUFBQyxHQUFHO0NBQUc7O0FBQUQsQUFBQSxLQUFLLENBQUE7RUFBQyxLQUFLLEVBQUMsR0FBRztDQUFHOztBQUFELEFBQUEsS0FBSyxDQUFBO0VBQUMsS0FBSyxFQUFDLEdBQUc7Q0FBRzs7QUFBRCxBQUFBLE1BQU0sQ0FBQTtFQUFDLEtBQUssRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxRQUFRLENBQUE7RUFBQyxLQUFLLEVBQUMsU0FBUztDQUFHOztBQUFELEFBQUEsYUFBYSxDQUFBO0VBQUMsS0FBSyxFQUFDLFNBQVM7Q0FBRzs7QUFBRCxBQUFBLE9BQU8sQ0FBQTtFQUFDLEtBQUssRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxpQkFBaUIsQ0FBQTtFQUFDLFFBQVEsRUFBQyxPQUFPO0NBQUc7O0FBQUQsQUFBQSxnQkFBZ0IsQ0FBQTtFQUFDLFFBQVEsRUFBQyxNQUFNO0NBQUc7O0FBQUQsQUFBQSxnQkFBZ0IsQ0FBQTtFQUFDLFFBQVEsRUFBQyxNQUFNO0NBQUc7O0FBQUQsQUFBQSxjQUFjLENBQUE7RUFBQyxRQUFRLEVBQUMsSUFBSTtDQUFHOztBQUFELEFBQUEsbUJBQW1CLENBQUE7RUFBQyxVQUFVLEVBQUMsT0FBTztDQUFHOztBQUFELEFBQUEsa0JBQWtCLENBQUE7RUFBQyxVQUFVLEVBQUMsTUFBTTtDQUFHOztBQUFELEFBQUEsa0JBQWtCLENBQUE7RUFBQyxVQUFVLEVBQUMsTUFBTTtDQUFHOztBQUFELEFBQUEsZ0JBQWdCLENBQUE7RUFBQyxVQUFVLEVBQUMsSUFBSTtDQUFHOztBQUFELEFBQUEsbUJBQW1CLENBQUE7RUFBQyxVQUFVLEVBQUMsT0FBTztDQUFHOztBQUFELEFBQUEsa0JBQWtCLENBQUE7RUFBQyxVQUFVLEVBQUMsTUFBTTtDQUFHOztBQUFELEFBQUEsa0JBQWtCLENBQUE7RUFBQyxVQUFVLEVBQUMsTUFBTTtDQUFHOztBQUFELEFBQUEsZ0JBQWdCLENBQUE7RUFBQyxVQUFVLEVBQUMsSUFBSTtDQUFHOztBQUFELEFBQUEsT0FBTyxDQUFBO0VBQUMsUUFBUSxFQUFDLE1BQU07Q0FBRzs7QUFBRCxBQUFBLFNBQVMsQ0FBQTtFQUFDLFFBQVEsRUFBQyxRQUFRO0NBQUc7O0FBQUQsQUFBQSxTQUFTLENBQUE7RUFBQyxRQUFRLEVBQUMsUUFBUTtDQUFHOztBQUFELEFBQUEsTUFBTSxDQUFBO0VBQUMsUUFBUSxFQUFDLEtBQUs7Q0FBRzs7QUFBRCxBQUFBLE1BQU0sQ0FBQTtFQUFDLE9BQU8sRUFBQyxDQUFDO0NBQUc7O0FBQUQsQUFBQSxLQUFLLENBQUE7RUFBQyxPQUFPLEVBQUMsRUFBRTtDQUFHOztBQUFELEFBQUEsS0FBSyxDQUFBO0VBQUMsT0FBTyxFQUFDLEVBQUU7Q0FBRzs7QUFBRCxBQUFBLEtBQUssQ0FBQTtFQUFDLE9BQU8sRUFBQyxFQUFFO0NBQUc7O0FBQUQsQUFBQSxLQUFLLENBQUE7RUFBQyxPQUFPLEVBQUMsRUFBRTtDQUFHOztBQUFELEFBQUEsS0FBSyxDQUFBO0VBQUMsT0FBTyxFQUFDLEVBQUU7Q0FBRzs7QUFBRCxBQUFBLEtBQUssQ0FBQTtFQUFDLE9BQU8sRUFBQyxFQUFFO0NBQUc7O0FBQUQsQUFBQSxLQUFLLENBQUE7RUFBQyxPQUFPLEVBQUMsRUFBRTtDQUFHOztBQUFELEFBQUEsS0FBSyxDQUFBO0VBQUMsT0FBTyxFQUFDLEVBQUU7Q0FBRzs7QUFBRCxBQUFBLEtBQUssQ0FBQTtFQUFDLE9BQU8sRUFBQyxFQUFFO0NBQUc7O0FBQUQsQUFBQSxLQUFLLENBQUE7RUFBQyxPQUFPLEVBQUMsR0FBRztDQUFHOztBQUFELEFBQUEsTUFBTSxDQUFBO0VBQUMsT0FBTyxFQUFDLElBQUk7Q0FBRzs7QUFBRCxBQUFBLElBQUksQ0FBQTtFQUFDLE9BQU8sRUFBQyxDQUFDO0NBQUc7O0FBQUQsQUFBQSxVQUFVLENBQUE7RUFBQyxpQkFBaUIsRUFBQyxhQUFhO0VBQUMsU0FBUyxFQUFDLGFBQWE7Q0FBRTs7QUFBRCxBQUFBLFVBQVUsQ0FBQTtFQUFDLGlCQUFpQixFQUFDLGFBQWE7RUFBQyxTQUFTLEVBQUMsYUFBYTtDQUFFOztBQUFELEFBQUEsV0FBVyxDQUFBO0VBQUMsaUJBQWlCLEVBQUMsY0FBYztFQUFDLFNBQVMsRUFBQyxjQUFjO0NBQUU7O0FBQUQsQUFBQSxXQUFXLENBQUE7RUFBQyxpQkFBaUIsRUFBQyxjQUFjO0VBQUMsU0FBUyxFQUFDLGNBQWM7Q0FBRTs7QUFBRCxBQUFBLFdBQVcsQ0FBQTtFQUFDLGlCQUFpQixFQUFDLGNBQWM7RUFBQyxTQUFTLEVBQUMsY0FBYztDQUFFOztBQUFELEFBQUEsV0FBVyxDQUFBO0VBQUMsaUJBQWlCLEVBQUMsY0FBYztFQUFDLFNBQVMsRUFBQyxjQUFjO0NBQUU7O0FBQUQsQUFBQSxXQUFXLENBQUE7RUFBQyxpQkFBaUIsRUFBQyxjQUFjO0VBQUMsU0FBUyxFQUFDLGNBQWM7Q0FBRTs7QUFBRCxBQUFBLFNBQVMsQ0FBQTtFQUFDLEtBQUssRUFBQyxrQkFBYztDQUFFOztBQUFELEFBQUEsU0FBUyxDQUFBO0VBQUMsS0FBSyxFQUFDLGtCQUFjO0NBQUU7O0FBQUQsQUFBQSxTQUFTLENBQUE7RUFBQyxLQUFLLEVBQUMsa0JBQWM7Q0FBRTs7QUFBRCxBQUFBLFNBQVMsQ0FBQTtFQUFDLEtBQUssRUFBQyxrQkFBYztDQUFFOztBQUFELEFBQUEsU0FBUyxDQUFBO0VBQUMsS0FBSyxFQUFDLGtCQUFjO0NBQUU7O0FBQUQsQUFBQSxTQUFTLENBQUE7RUFBQyxLQUFLLEVBQUMsa0JBQWM7Q0FBRTs7QUFBRCxBQUFBLFNBQVMsQ0FBQTtFQUFDLEtBQUssRUFBQyxrQkFBYztDQUFFOztBQUFELEFBQUEsU0FBUyxDQUFBO0VBQUMsS0FBSyxFQUFDLGtCQUFjO0NBQUU7O0FBQUQsQUFBQSxTQUFTLENBQUE7RUFBQyxLQUFLLEVBQUMsa0JBQWM7Q0FBRTs7QUFBRCxBQUFBLFNBQVMsQ0FBQTtFQUFDLEtBQUssRUFBQyxtQkFBZTtDQUFFOztBQUFELEFBQUEsU0FBUyxDQUFBO0VBQUMsS0FBSyxFQUFDLHdCQUFrQjtDQUFFOztBQUFELEFBQUEsU0FBUyxDQUFBO0VBQUMsS0FBSyxFQUFDLHdCQUFrQjtDQUFFOztBQUFELEFBQUEsU0FBUyxDQUFBO0VBQUMsS0FBSyxFQUFDLHdCQUFrQjtDQUFFOztBQUFELEFBQUEsU0FBUyxDQUFBO0VBQUMsS0FBSyxFQUFDLHdCQUFrQjtDQUFFOztBQUFELEFBQUEsU0FBUyxDQUFBO0VBQUMsS0FBSyxFQUFDLHdCQUFrQjtDQUFFOztBQUFELEFBQUEsU0FBUyxDQUFBO0VBQUMsS0FBSyxFQUFDLHdCQUFrQjtDQUFFOztBQUFELEFBQUEsU0FBUyxDQUFBO0VBQUMsS0FBSyxFQUFDLHdCQUFrQjtDQUFFOztBQUFELEFBQUEsU0FBUyxDQUFBO0VBQUMsS0FBSyxFQUFDLHdCQUFrQjtDQUFFOztBQUFELEFBQUEsU0FBUyxDQUFBO0VBQUMsS0FBSyxFQUFDLHdCQUFrQjtDQUFFOztBQUFELEFBQUEsTUFBTSxDQUFBO0VBQUMsS0FBSyxFQUFDLElBQUk7Q0FBRzs7QUFBRCxBQUFBLFdBQVcsQ0FBQTtFQUFDLEtBQUssRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxVQUFVLENBQUE7RUFBQyxLQUFLLEVBQUMsSUFBSTtDQUFHOztBQUFELEFBQUEsU0FBUyxDQUFBO0VBQUMsS0FBSyxFQUFDLElBQUk7Q0FBRzs7QUFBRCxBQUFBLEtBQUssQ0FBQTtFQUFDLEtBQUssRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxPQUFPLENBQUE7RUFBQyxLQUFLLEVBQUMsSUFBSTtDQUFHOztBQUFELEFBQUEsYUFBYSxDQUFBO0VBQUMsS0FBSyxFQUFDLElBQUk7Q0FBRzs7QUFBRCxBQUFBLFVBQVUsQ0FBQTtFQUFDLEtBQUssRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxXQUFXLENBQUE7RUFBQyxLQUFLLEVBQUMsSUFBSTtDQUFHOztBQUFELEFBQUEsV0FBVyxDQUFBO0VBQUMsS0FBSyxFQUFDLE9BQU87Q0FBRzs7QUFBRCxBQUFBLE1BQU0sQ0FBQTtFQUFDLEtBQUssRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxTQUFTLENBQUE7RUFBQyxLQUFLLEVBQUMsT0FBTztDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsS0FBSyxFQUFDLE9BQU87Q0FBRzs7QUFBRCxBQUFBLFVBQVUsQ0FBQTtFQUFDLEtBQUssRUFBQyxPQUFPO0NBQUc7O0FBQUQsQUFBQSxPQUFPLENBQUE7RUFBQyxLQUFLLEVBQUMsT0FBTztDQUFHOztBQUFELEFBQUEsS0FBSyxDQUFBO0VBQUMsS0FBSyxFQUFDLE9BQU87Q0FBRzs7QUFBRCxBQUFBLE9BQU8sQ0FBQTtFQUFDLEtBQUssRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxhQUFhLENBQUE7RUFBQyxLQUFLLEVBQUMsT0FBTztDQUFHOztBQUFELEFBQUEsT0FBTyxDQUFBO0VBQUMsS0FBSyxFQUFDLE9BQU87Q0FBRzs7QUFBRCxBQUFBLGFBQWEsQ0FBQTtFQUFDLEtBQUssRUFBQyxPQUFPO0NB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QkFBZ0IsRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxhQUFhLENBQUE7RUFBQyxnQkFBZ0IsRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxZQUFZLENBQUE7RUFBQyxnQkFBZ0IsRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxRQUFRLENBQUE7RUFBQyxnQkFBZ0IsRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxVQUFVLENBQUE7RUFBQyxnQkFBZ0IsRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxnQkFBZ0IsQ0FBQTtFQUFDLGdCQUFnQixFQUFDLElBQUk7Q0FBRzs7QUFBRCxBQUFBLGFBQWEsQ0FBQTtFQUFDLGdCQUFnQixFQUFDLElBQUk7Q0FBRzs7QUFBRCxBQUFBLGNBQWMsQ0FBQTtFQUFDLGdCQUFnQixFQUFDLElBQUk7Q0FBRzs7QUFBRCxBQUFBLGNBQWMsQ0FBQTtFQUFDLGdCQUFnQixFQUFDLE9BQU87Q0FBRzs7QUFBRCxBQUFBLFNBQVMsQ0FBQTtFQUFDLGdCQUFnQixFQUFDLElBQUk7Q0FBRzs7QUFBRCxBQUFBLGVBQWUsQ0FBQTtFQUFDLGdCQUFnQixFQUFDLFdBQVc7Q0FBRzs7QUFBRCxBQUFBLFlBQVksQ0FBQTtFQUFDLGdCQUFnQixFQUFDLE9BQU87Q0FBRzs7QUFBRCxBQUFBLE9BQU8sQ0FBQTtFQUFDLGdCQUFnQixFQUFDLE9BQU87Q0FBRzs7QUFBRCxBQUFBLGFBQWEsQ0FBQTtFQUFDLGdCQUFnQixFQUFDLE9BQU87Q0FBRzs7QUFBRCxBQUFBLFVBQVUsQ0FBQTtFQUFDLGdCQUFnQixFQUFDLE9BQU87Q0FBRzs7QUFBRCxBQUFBLFFBQVEsQ0FBQTtFQUFDLGdCQUFnQixFQUFDLE9BQU87Q0FBRzs7QUFBRCxBQUFBLFVBQVUsQ0FBQTtFQUFDLGdCQUFnQixFQUFDLElBQUk7Q0FBRzs7QUFBRCxBQUFBLGdCQUFnQixDQUFBO0VBQUMsZ0JBQWdCLEVBQUMsT0FBTztDQUFHOztBQUFELEFBQUEsVUFBVSxDQUFBO0VBQUMsZ0JBQWdCLEVBQUMsT0FBTztDQUFHOztBQUFELEFBQUEs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TSxFQUFDLEFBQUEsZUFBZSxBQUFBLE1BQU0sQ0FBQTtFQUFDLEtBQUssRUFBQyxrQkFBYztDQUFFOztBQUFELEFBQUEsZUFBZSxBQUFBLE1BQU0sRUFBQyxBQUFBLGVBQWUsQUFBQSxNQUFNLENBQUE7RUFBQyxLQUFLLEVBQUMsa0JBQWM7Q0FBRTs7QUFBRCxBQUFBLGVBQWUsQUFBQSxNQUFNLEVBQUMsQUFBQSxlQUFlLEFBQUEsTUFBTSxDQUFBO0VBQUMsS0FBSyxFQUFDLGtCQUFjO0NBQUU7O0FBQUQsQUFBQSxlQUFlLEFBQUEsTUFBTSxFQUFDLEFBQUEsZUFBZSxBQUFBLE1BQU0sQ0FBQTtFQUFDLEtBQUssRUFBQyxrQkFBYztDQUFFOztBQUFELEFBQUEsZUFBZSxBQUFBLE1BQU0sRUFBQyxBQUFBLGVBQWUsQUFBQSxNQUFNLENBQUE7RUFBQyxLQUFLLEVBQUMsa0JBQWM7Q0FBRTs7QUFBRCxBQUFBLGVBQWUsQUFBQSxNQUFNLEVBQUMsQUFBQSxlQUFlLEFBQUEsTUFBTSxDQUFBO0VBQUMsS0FBSyxFQUFDLGtCQUFjO0NBQUU7O0FBQUQsQUFBQSxlQUFlLEFBQUEsTUFBTSxFQUFDLEFBQUEsZUFBZSxBQUFBLE1BQU0sQ0FBQTtFQUFDLEtBQUssRUFBQyxrQkFBYztDQUFFOztBQUFELEFBQUEsZUFBZSxBQUFBLE1BQU0sRUFBQyxBQUFBLGVBQWUsQUFBQSxNQUFNLENBQUE7RUFBQyxLQUFLLEVBQUMsa0JBQWM7Q0FBRTs7QUFBRCxBQUFBLGVBQWUsQUFBQSxNQUFNLEVBQUMsQUFBQSxlQUFlLEFBQUEsTUFBTSxDQUFBO0VBQUMsS0FBSyxFQUFDLGtCQUFjO0NBQUU7O0FBQUQsQUFBQSxlQUFlLEFBQUEsTUFBTSxFQUFDLEFBQUEsZUFBZSxBQUFBLE1BQU0sQ0FBQTtFQUFDLEtBQUssRUFBQyx3QkFBa0I7Q0FBRTs7QUFBRCxBQUFBLGVBQWUsQUFBQSxNQUFNLEVBQUMsQUFBQSxlQUFlLEFBQUEsTUFBTSxDQUFBO0VBQUMsS0FBSyxFQUFDLHdCQUFrQjtDQUFFOztBQUFELEFBQUEsZUFBZSxBQUFB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a0JBQWtCLEFBQUEsTUFBTSxDQUFBO0VBQUMsZ0JBQWdCLEVBQUMsa0JBQWM7Q0FBRTs7QUFBRCxBQUFBLGtCQUFrQixBQUFBLE1BQU0sRUFBQyxBQUFBLGtCQUFrQixBQUFBLE1BQU0sQ0FBQTtFQUFDLGdCQUFnQixFQUFDLGtCQUFjO0NBQUU7O0FBQUQsQUFBQSxrQkFBa0IsQUFBQSxNQUFNLEVBQUMsQUFBQSxrQkFBa0IsQUFBQSxNQUFNLENBQUE7RUFBQyxnQkFBZ0IsRUFBQyxrQkFBYztDQUFFOztBQUFELEFBQUEsa0JBQWtCLEFBQUEsTUFBTSxFQUFDLEFBQUEsa0JBQWtCLEFBQUEsTUFBTSxDQUFBO0VBQUMsZ0JBQWdCLEVBQUMsa0JBQWM7Q0FBRTs7QUFBRCxBQUFBLGtCQUFrQixBQUFBLE1BQU0sRUFBQyxBQUFBLGtCQUFrQixBQUFBLE1BQU0sQ0FBQTtFQUFDLGdCQUFnQixFQUFDLGtCQUFjO0NBQUU7O0FBQUQsQUFBQSxrQkFBa0IsQUFBQSxNQUFNLEVBQUMsQUFBQSxrQkFBa0IsQUFBQSxNQUFNLENBQUE7RUFBQyxnQkFBZ0IsRUFBQyxrQkFBYztDQUFFOztBQUFELEFBQUEsa0JBQWtCLEFBQUEsTUFBTSxFQUFDLEFBQUEsa0JBQWtCLEFBQUEsTUFBTSxDQUFBO0VBQUMsZ0JBQWdCLEVBQUMsa0JBQWM7Q0FBRTs7QUFBRCxBQUFBLGtCQUFrQixBQUFBLE1BQU0sRUFBQyxBQUFBLGtCQUFrQixBQUFBLE1BQU0sQ0FBQTtFQUFDLGdCQUFnQixFQUFDLGtCQUFjO0NBQUU7O0FBQUQsQUFBQSxrQkFBa0IsQUFBQSxNQUFNLEVBQUMsQUFBQSxrQkFBa0IsQUFBQSxNQUFNLENBQUE7RUFBQyxnQkFBZ0IsRUFBQyx3QkFBa0I7Q0FBRTs7QUFBRCxBQUFBLGtCQUFrQixBQUFBLE1BQU0sRUFBQyxBQUFBLGtCQUFrQixBQUFBLE1BQU0sQ0FBQTtFQUFDLGdCQUFnQixFQUFDLHdCQUFrQjtDQUFFOztBQUFELEFBQUEsa0JBQWtCLEFBQUEsTUFBTSxFQUFDLEFBQUEsa0JBQWtCLEFBQUEsTUFBTSxD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LE1BQU0sQ0FBQTtFQUFDLGdCQUFnQixFQUFDLE9BQU87Q0FBRzs7QUFBRCxBQUFBLHNCQUFzQixBQUFBLE1BQU0sRUFBQyxBQUFBLHNCQUFzQixBQUFBLE1BQU0sQ0FBQTtFQUFDLGdCQUFnQixFQUFDLE9BQU87Q0FBRzs7QUFBRCxBQUFBLHVCQUF1QixBQUFBLE1BQU0sRUFBQyxBQUFBLHVCQUF1QixBQUFBLE1BQU0sQ0FBQTtFQUFDLGdCQUFnQixFQUFDLE9BQU87Q0FBRzs7QUFBRCxBQUFBLG9CQUFvQixBQUFBLE1BQU0sRUFBQyxBQUFBLG9CQUFvQixBQUFBLE1BQU0sQ0FBQTtFQUFDLGdCQUFnQixFQUFDLE9BQU87Q0FBRzs7QUFBRCxBQUFBLGlCQUFpQixBQUFBLE1BQU0sRUFBQyxBQUFBLGlCQUFpQixBQUFBLE1BQU0sQ0FBQTtFQUFDLGdCQUFnQixFQUFDLE9BQU87Q0FBRzs7QUFBRCxBQUFBLElBQUksQ0FBQTtFQUFDLE9BQU8sRUFBQyxDQUFDO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxPQUFPLEVBQUMsTUFBTTtDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsT0FBTyxFQUFDLEtBQUs7Q0FBRzs7QUFBRCxBQUFBLElBQUksQ0FBQTtFQUFDLE9BQU8sRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxPQUFPLEVBQUMsSUFBSTtDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsT0FBTyxFQUFDLElBQUk7Q0FBRzs7QUFBRCxBQUFBLElBQUksQ0FBQTtFQUFDLE9BQU8sRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxPQUFPLEVBQUMsS0FBSztDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsWUFBWSxFQUFDLENBQUM7Q0FBRzs7QUFBRCxBQUFBLElBQUksQ0FBQTtFQUFDLFlBQVksRUFBQyxNQUFNO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxZQUFZLEVBQUMsS0FBSztDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsWUFBWSxFQUFDLElBQUk7Q0FBRzs7QUFBRCxBQUFBLElBQUksQ0FBQTtFQUFDLFlBQVksRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxZQUFZLEVBQUMsSUFBSTtDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsWUFBWSxFQUFDLElBQUk7Q0FBRzs7QUFBRCxBQUFBLElBQUksQ0FBQTtFQUFDLFlBQVksRUFBQyxLQUFLO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxhQUFhLEVBQUMsQ0FBQztDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsYUFBYSxFQUFDLE1BQU07Q0FBRzs7QUFBRCxBQUFBLElBQUksQ0FBQTtFQUFDLGFBQWEsRUFBQyxLQUFLO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxhQUFhLEVBQUMsSUFBSTtDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsYUFBYSxFQUFDLElBQUk7Q0FBRzs7QUFBRCxBQUFBLElBQUksQ0FBQTtFQUFDLGFBQWEsRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxhQUFhLEVBQUMsSUFBSTtDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsYUFBYSxFQUFDLEtBQUs7Q0FBRzs7QUFBRCxBQUFBLElBQUksQ0FBQTtFQUFDLGNBQWMsRUFBQyxDQUFDO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxjQUFjLEVBQUMsTUFBTTtDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsY0FBYyxFQUFDLEtBQUs7Q0FBRzs7QUFBRCxBQUFBLElBQUksQ0FBQTtFQUFDLGNBQWMsRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxjQUFjLEVBQUMsSUFBSTtDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsY0FBYyxFQUFDLElBQUk7Q0FBRzs7QUFBRCxBQUFBLElBQUksQ0FBQTtFQUFDLGNBQWMsRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxjQUFjLEVBQUMsS0FBSztDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsV0FBVyxFQUFDLENBQUM7Q0FBRzs7QUFBRCxBQUFBLElBQUksQ0FBQTtFQUFDLFdBQVcsRUFBQyxNQUFNO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxXQUFXLEVBQUMsS0FBSztDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsV0FBVyxFQUFDLElBQUk7Q0FBRzs7QUFBRCxBQUFBLElBQUksQ0FBQTtFQUFDLFdBQVcsRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxXQUFXLEVBQUMsSUFBSTtDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsV0FBVyxFQUFDLElBQUk7Q0FBRzs7QUFBRCxBQUFBLElBQUksQ0FBQTtFQUFDLFdBQVcsRUFBQyxLQUFLO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxXQUFXLEVBQUMsQ0FBQztFQUFFLGNBQWMsRUFBQyxDQUFDO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxXQUFXLEVBQUMsTUFBTTtFQUFFLGNBQWMsRUFBQyxNQUFNO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxXQUFXLEVBQUMsS0FBSztFQUFFLGNBQWMsRUFBQyxLQUFLO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxXQUFXLEVBQUMsSUFBSTtFQUFFLGNBQWMsRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxXQUFXLEVBQUMsSUFBSTtFQUFFLGNBQWMsRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxXQUFXLEVBQUMsSUFBSTtFQUFFLGNBQWMsRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxXQUFXLEVBQUMsSUFBSTtFQUFFLGNBQWMsRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxXQUFXLEVBQUMsS0FBSztFQUFFLGNBQWMsRUFBQyxLQUFLO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxZQUFZLEVBQUMsQ0FBQztFQUFFLGFBQWEsRUFBQyxDQUFDO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxZQUFZLEVBQUMsTUFBTTtFQUFFLGFBQWEsRUFBQyxNQUFNO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxZQUFZLEVBQUMsS0FBSztFQUFFLGFBQWEsRUFBQyxLQUFLO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxZQUFZLEVBQUMsSUFBSTtFQUFFLGFBQWEsRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxZQUFZLEVBQUMsSUFBSTtFQUFFLGFBQWEsRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxZQUFZLEVBQUMsSUFBSTtFQUFFLGFBQWEsRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxZQUFZLEVBQUMsSUFBSTtFQUFFLGFBQWEsRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxZQUFZLEVBQUMsS0FBSztFQUFFLGFBQWEsRUFBQyxLQUFLO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxNQUFNLEVBQUMsQ0FBQztDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsTUFBTSxFQUFDLE1BQU07Q0FBRzs7QUFBRCxBQUFBLElBQUksQ0FBQTtFQUFDLE1BQU0sRUFBQyxLQUFLO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxNQUFNLEVBQUMsSUFBSTtDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsTUFBTSxFQUFDLElBQUk7Q0FBRzs7QUFBRCxBQUFBLElBQUksQ0FBQTtFQUFDLE1BQU0sRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxNQUFNLEVBQUMsSUFBSTtDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsTUFBTSxFQUFDLEtBQUs7Q0FBRzs7QUFBRCxBQUFBLElBQUksQ0FBQTtFQUFDLFdBQVcsRUFBQyxDQUFDO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxXQUFXLEVBQUMsTUFBTTtDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsV0FBVyxFQUFDLEtBQUs7Q0FBRzs7QUFBRCxBQUFBLElBQUksQ0FBQTtFQUFDLFdBQVcsRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxXQUFXLEVBQUMsSUFBSTtDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsV0FBVyxFQUFDLElBQUk7Q0FBRzs7QUFBRCxBQUFBLElBQUksQ0FBQTtFQUFDLFdBQVcsRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxXQUFXLEVBQUMsS0FBSztDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsWUFBWSxFQUFDLENBQUM7Q0FBRzs7QUFBRCxBQUFBLElBQUksQ0FBQTtFQUFDLFlBQVksRUFBQyxNQUFNO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxZQUFZLEVBQUMsS0FBSztDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsWUFBWSxFQUFDLElBQUk7Q0FBRzs7QUFBRCxBQUFBLElBQUksQ0FBQTtFQUFDLFlBQVksRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxZQUFZLEVBQUMsSUFBSTtDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsWUFBWSxFQUFDLElBQUk7Q0FBRzs7QUFBRCxBQUFBLElBQUksQ0FBQTtFQUFDLFlBQVksRUFBQyxLQUFLO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxhQUFhLEVBQUMsQ0FBQztDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsYUFBYSxFQUFDLE1BQU07Q0FBRzs7QUFBRCxBQUFBLElBQUksQ0FBQTtFQUFDLGFBQWEsRUFBQyxLQUFLO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxhQUFhLEVBQUMsSUFBSTtDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsYUFBYSxFQUFDLElBQUk7Q0FBRzs7QUFBRCxBQUFBLElBQUksQ0FBQTtFQUFDLGFBQWEsRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxhQUFhLEVBQUMsSUFBSTtDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsYUFBYSxFQUFDLEtBQUs7Q0FBRzs7QUFBRCxBQUFBLElBQUksQ0FBQTtFQUFDLFVBQVUsRUFBQyxDQUFDO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxVQUFVLEVBQUMsTUFBTTtDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsVUFBVSxFQUFDLEtBQUs7Q0FBRzs7QUFBRCxBQUFBLElBQUksQ0FBQTtFQUFDLFVBQVUsRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxVQUFVLEVBQUMsSUFBSTtDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsVUFBVSxFQUFDLElBQUk7Q0FBRzs7QUFBRCxBQUFBLElBQUksQ0FBQTtFQUFDLFVBQVUsRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxVQUFVLEVBQUMsS0FBSztDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsVUFBVSxFQUFDLENBQUM7RUFBRSxhQUFhLEVBQUMsQ0FBQztDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsVUFBVSxFQUFDLE1BQU07RUFBRSxhQUFhLEVBQUMsTUFBTTtDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsVUFBVSxFQUFDLEtBQUs7RUFBRSxhQUFhLEVBQUMsS0FBSztDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsVUFBVSxFQUFDLElBQUk7RUFBRSxhQUFhLEVBQUMsSUFBSTtDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsVUFBVSxFQUFDLElBQUk7RUFBRSxhQUFhLEVBQUMsSUFBSTtDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsVUFBVSxFQUFDLElBQUk7RUFBRSxhQUFhLEVBQUMsSUFBSTtDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsVUFBVSxFQUFDLElBQUk7RUFBRSxhQUFhLEVBQUMsSUFBSTtDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsVUFBVSxFQUFDLEtBQUs7RUFBRSxhQUFhLEVBQUMsS0FBSztDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsV0FBVyxFQUFDLENBQUM7RUFBRSxZQUFZLEVBQUMsQ0FBQztDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsV0FBVyxFQUFDLE1BQU07RUFBRSxZQUFZLEVBQUMsTUFBTTtDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsV0FBVyxFQUFDLEtBQUs7RUFBRSxZQUFZLEVBQUMsS0FBSztDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsV0FBVyxFQUFDLElBQUk7RUFBRSxZQUFZLEVBQUMsSUFBSTtDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsV0FBVyxFQUFDLElBQUk7RUFBRSxZQUFZLEVBQUMsSUFBSTtDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsV0FBVyxFQUFDLElBQUk7RUFBRSxZQUFZLEVBQUMsSUFBSTtDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsV0FBVyxFQUFDLElBQUk7RUFBRSxZQUFZLEVBQUMsSUFBSTtDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsV0FBVyxFQUFDLEtBQUs7RUFBRSxZQUFZLEVBQUMsS0FBSztDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsTUFBTSxFQUFDLE9BQU87Q0FBRzs7QUFBRCxBQUFBLElBQUksQ0FBQTtFQUFDLE1BQU0sRUFBQyxNQUFNO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxNQUFNLEVBQUMsS0FBSztDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsTUFBTSxFQUFDLEtBQUs7Q0FBRzs7QUFBRCxBQUFBLElBQUksQ0FBQTtFQUFDLE1BQU0sRUFBQyxLQUFLO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxNQUFNLEVBQUMsS0FBSztDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsTUFBTSxFQUFDLE1BQU07Q0FBRzs7QUFBRCxBQUFBLElBQUksQ0FBQTtFQUFDLFdBQVcsRUFBQyxPQUFPO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxXQUFXLEVBQUMsTUFBTTtDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsV0FBVyxFQUFDLEtBQUs7Q0FBRzs7QUFBRCxBQUFBLElBQUksQ0FBQTtFQUFDLFdBQVcsRUFBQyxLQUFLO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxXQUFXLEVBQUMsS0FBSztDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsV0FBVyxFQUFDLEtBQUs7Q0FBRzs7QUFBRCxBQUFBLElBQUksQ0FBQTtFQUFDLFdBQVcsRUFBQyxNQUFNO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxZQUFZLEVBQUMsT0FBTztDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsWUFBWSxFQUFDLE1BQU07Q0FBRzs7QUFBRCxBQUFBLElBQUksQ0FBQTtFQUFDLFlBQVksRUFBQyxLQUFLO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxZQUFZLEVBQUMsS0FBSztDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsWUFBWSxFQUFDLEtBQUs7Q0FBRzs7QUFBRCxBQUFBLElBQUksQ0FBQTtFQUFDLFlBQVksRUFBQyxLQUFLO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxZQUFZLEVBQUMsTUFBTTtDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsYUFBYSxFQUFDLE9BQU87Q0FBRzs7QUFBRCxBQUFBLElBQUksQ0FBQTtFQUFDLGFBQWEsRUFBQyxNQUFNO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxhQUFhLEVBQUMsS0FBSztDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsYUFBYSxFQUFDLEtBQUs7Q0FBRzs7QUFBRCxBQUFBLElBQUksQ0FBQTtFQUFDLGFBQWEsRUFBQyxLQUFLO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxhQUFhLEVBQUMsS0FBSztDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsYUFBYSxFQUFDLE1BQU07Q0FBRzs7QUFBRCxBQUFBLElBQUksQ0FBQTtFQUFDLFVBQVUsRUFBQyxPQUFPO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxVQUFVLEVBQUMsTUFBTTtDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsVUFBVSxFQUFDLEtBQUs7Q0FBRzs7QUFBRCxBQUFBLElBQUksQ0FBQTtFQUFDLFVBQVUsRUFBQyxLQUFLO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxVQUFVLEVBQUMsS0FBSztDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsVUFBVSxFQUFDLEtBQUs7Q0FBRzs7QUFBRCxBQUFBLElBQUksQ0FBQTtFQUFDLFVBQVUsRUFBQyxNQUFNO0NBQUc7O0FBQUQsQUFBQSxTQUFTLENBQUE7RUFBQyxlQUFlLEVBQUMsUUFBUTtFQUFFLGNBQWMsRUFBQyxDQUFDO0NBQUc7O0FBQUQsQUFBQSxzQkFBc0IsQUFBQSxVQUFXLENBQUEsQUFBQSxHQUFHLEVBQUM7RUFBQyxnQkFBZ0IsRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxtQkFBbUIsQUFBQSxVQUFXLENBQUEsQUFBQSxHQUFHLEVBQUM7RUFBQyxnQkFBZ0IsRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxvQkFBb0IsQUFBQSxVQUFXLENBQUEsQUFBQSxHQUFHLEVBQUM7RUFBQyxnQkFBZ0IsRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxvQkFBb0IsQUFBQSxVQUFXLENBQUEsQUFBQSxHQUFHLEVBQUM7RUFBQyxnQkFBZ0IsRUFBQyxPQUFPO0NBQUc7O0FBQUQsQUFBQSxhQUFhLEFBQUEsVUFBVyxDQUFBLEFBQUEsR0FBRyxFQUFDO0VBQUMsZ0JBQWdCLEVBQUMsd0JBQWtCO0NBQUU7O0FBQUQsQUFBQSxZQUFZLEFBQUEsVUFBVyxDQUFBLEFBQUEsR0FBRyxFQUFDO0VBQUMsZ0JBQWdCLEVBQUMsa0JBQWM7Q0FBRTs7QUFBRCxBQUFBLE9BQU8sQ0FBQTtFQUFDLGVBQWUsRUFBQyxZQUFZO0NBQUc7O0FBQUQsQUFBQSxVQUFVLENBQUE7RUFBQyxlQUFlLEVBQUMsU0FBUztDQUFHOztBQUFELEFBQUEsYUFBYSxDQUFBO0VBQUMsZUFBZSxFQUFDLElBQUk7Q0FBRzs7QUFBRCxBQUFBLEdBQUcsQ0FBQTtFQUFDLFVBQVUsRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxHQUFHLENBQUE7RUFBQyxVQUFVLEVBQUMsS0FBSztDQUFHOztBQUFELEFBQUEsR0FBRyxDQUFBO0VBQUMsVUFBVSxFQUFDLE1BQU07Q0FBRzs7QUFBRCxBQUFBLEdBQUcsQ0FBQTtFQUFDLFVBQVUsRUFBQyxPQUFPO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxjQUFjLEVBQUMsVUFBVTtDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsY0FBYyxFQUFDLFNBQVM7Q0FBRzs7QUFBRCxBQUFBLElBQUksQ0FBQTtFQUFDLGNBQWMsRUFBQyxTQUFTO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxjQUFjLEVBQUMsSUFBSTtDQUFHOztBQUFELEFBQUEsSUFBSSxFQUFDLEFBQUEsV0FBVyxDQUFBO0VBQUMsU0FBUyxFQUFDLElBQUk7Q0FBRzs7QUFBRCxBQUFBLElBQUksRUFBQyxBQUFBLGNBQWMsQ0FBQTtFQUFDLFNBQVMsRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxHQUFHLENBQUE7RUFBQyxTQUFTLEVBQUMsSUFBSTtDQUFHOztBQUFELEFBQUEsR0FBRyxDQUFBO0VBQUMsU0FBUyxFQUFDLE9BQU87Q0FBRzs7QUFBRCxBQUFBLEdBQUcsQ0FBQTtFQUFDLFNBQVMsRUFBQyxNQUFNO0NBQUc7O0FBQUQsQUFBQSxHQUFHLENBQUE7RUFBQyxTQUFTLEVBQUMsT0FBTztDQUFHOztBQUFELEFBQUEsR0FBRyxDQUFBO0VBQUMsU0FBUyxFQUFDLElBQUk7Q0FBRzs7QUFBRCxBQUFBLEdBQUcsQ0FBQTtFQUFDLFNBQVMsRUFBQyxPQUFPO0NBQUc7O0FBQUQsQUFBQSxHQUFHLENBQUE7RUFBQyxTQUFTLEVBQUMsTUFBTTtDQUFHOztBQUFELEFBQUEsUUFBUSxDQUFBO0VBQUMsU0FBUyxFQUFDLElBQUk7Q0FBRzs7QUFBRCxBQUFBLGFBQWEsQ0FBQTtFQUFDLFNBQVMsRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxlQUFlLENBQUE7RUFBQyxTQUFTLEVBQUMsSUFBSTtDQUFHOztBQUFELEFBQUEsT0FBTyxDQUFBO0VBQUMsV0FBVyxFQUFDLEdBQUc7RUFBRSxVQUFVLEVBQUMsQ0FBQztFQUFFLGFBQWEsRUFBQyxDQUFDO0NBQUc7O0FBQUQsQUFBQSxXQUFXLENBQUE7RUFBQyxZQUFZLEVBQUMsVUFBVTtDQUFHOztBQUFELEFBQUEsU0FBUyxDQUFBO0VBQUMsV0FBVyxFQUFDLE1BQU07RUFBRSxRQUFRLEVBQUMsTUFBTTtFQUFFLGFBQWEsRUFBQyxRQUFRO0NBQUc7O0FBQUQsQUFBQSxtQkFBbUIsQ0FBQTtFQUFDLFVBQVUsRUFBQyxNQUFNO0NBQUc7O0FBQUQsQUFBQSxPQUFPLENBQUE7RUFBQyxXQUFXLEVBQUMsSUFBSTtDQUFHOztBQUFELEFBQUEsT0FBTyxFQUFDLEFBQUEsUUFBUSxDQUFBO0VBQUMsWUFBWSxFQUFDLElBQUk7Q0FBRzs7QUFBRCxBQUFBLFFBQVEsQ0FBQTtFQUFDLFdBQVcsRUFBQyxJQUFJO0NBQUc7O0FBQUQsQUFBQSxLQUFLLENBQUE7RUFBQyxRQUFRLEVBQUMsS0FBSyxDQUFBLFVBQVU7RUFBQyxTQUFTLEVBQUMsUUFBUSxDQUFBLFVBQVU7RUFBQyxJQUFJ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QUFBRCxBQUFBLElBQUksQ0FBQTtFQUFDLE9BQU8sRUFBQyxDQUFDO0NBQUc7O0FBQUQsQUFBQSxJQUFJLENBQUE7RUFBQyxPQUFPLEVBQUMsQ0FBQztDQUFHOztBQUFELEFBQUEsSUFBSSxDQUFBO0VBQUMsT0FBTyxFQUFDLENBQUM7Q0FBRzs7QUFBRCxBQUFBLElBQUksQ0FBQTtFQUFDLE9BQU8sRUFBQyxDQUFDO0NBQUc7O0FBQUQsQUFBQSxNQUFNLENBQUE7RUFBQyxPQUFPLEVBQUMsR0FBRztDQUFHOztBQUFELEFBQUEsT0FBTyxDQUFBO0VBQUMsT0FBTyxFQUFDLElBQUk7Q0FBRzs7QUFBRCxBQUFBLE1BQU0sQ0FBQTtFQUFDLE9BQU8sRUFBQyxVQUFVO0NBQUc7O0FBQUQsQUFBQSxVQUFVLENBQUE7RUFBQyxPQUFPLEVBQUMsT0FBTztDQUFHOztBQUFELEFBQUEsVUFBVSxDQUFBO0VBQUMsT0FBTyxFQUFDLElBQUk7Q0FBRzs7QUFBRCxBQUFBLFFBQVEsQ0FBQTtFQUFDLE9BQU8sRUFBQyxLQUFLO0NBQUc7O0FBQUQsQUFBeUIsd0JBQUQsQ0FBQyxFQUFFLEVBQUMsQUFBeUIsd0JBQUQsQ0FBQyxDQUFDLEVBQUMsQUFBeUIsd0JBQUQsQ0FBQyxFQUFFLENBQUE7RUFBQyxXQUFXLEVBQUMsR0FBRztDQUFHOztBQUFELEFBQTZCLDRCQUFELENBQUMsRUFBRSxFQUFDLEFBQTZCLDRCQUFELENBQUMsRUFBRSxFQUFDLEFBQTZCLDRCQUFELENBQUMsRUFBRSxFQUFDLEFBQTZCLDRCQUFELENBQUMsRUFBRSxFQUFDLEFBQTZCLDRCQUFELENBQUMsRUFBRSxFQUFDLEFBQTZCLDRCQUFELENBQUMsRUFBRSxDQUFBO0VBQUMsV0FBVyxFQUFDLElBQUk7Q0FBRzs7QUFBRCxBQUFtQixrQkFBRCxDQUFDLEVBQUUsRUFBQyxBQUFtQixrQkFBRCxDQUFDLEVBQUUsQ0FBQTtFQUFDLFlBQVksRUFBQyxDQUFDO0VBQUUsV0FBVyxFQUFDLENBQUM7RUFBRSxlQUFlLEVBQUMsSUFBSTtDQUFHOztBQUFELEFBQXNC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a0JBQWM7R0FBRTtFQUFELEFBQUEsU0FBUyxDQUFBO0lBQUMsR0FBRyxFQUFDLENBQUM7R0FBRztFQUFELEFBQUEsVUFBVSxDQUFBO0lBQUMsSUFBSSxFQUFDLENBQUM7R0FBRztFQUFELEFBQUEsV0FBVyxDQUFBO0lBQUMsS0FBSyxFQUFDLENBQUM7R0FBRztFQUFELEFBQUEsWUFBWSxDQUFBO0lBQUMsTUFBTSxFQUFDLENBQUM7R0FBRztFQUFELEFBQUEsU0FBUyxDQUFBO0lBQUMsR0FBRyxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsVUFBVSxDQUFBO0lBQUMsSUFBSSxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsV0FBVyxDQUFBO0lBQUMsS0FBSyxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsWUFBWSxDQUFBO0lBQUMsTUFBTSxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsU0FBUyxDQUFBO0lBQUMsR0FBRyxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsVUFBVSxDQUFBO0lBQUMsSUFBSSxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsV0FBVyxDQUFBO0lBQUMsS0FBSyxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsWUFBWSxDQUFBO0lBQUMsTUFBTSxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsVUFBVSxDQUFBO0lBQUMsR0FBRyxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsWUFBWSxDQUFBO0lBQUMsS0FBSyxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsYUFBYSxDQUFBO0lBQUMsTUFBTSxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsV0FBVyxDQUFBO0lBQUMsSUFBSSxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsVUFBVSxDQUFBO0lBQUMsR0FBRyxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsWUFBWSxDQUFBO0lBQUMsS0FBSyxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsYUFBYSxDQUFBO0lBQUMsTUFBTSxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsV0FBVyxDQUFBO0lBQUMsSUFBSSxFQUFD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LGNBQWMsRUFBQyxDQUFDO0lBQUUsS0FBSyxFQUFDLENBQUM7R0FBRztFQUFELEFBQUEsV0FBVyxDQUFBO0lBQUMseUJBQXlCLEVBQUMsQ0FBQztJQUFFLGNBQWMsRUFBQyxDQUFDO0lBQUUsS0FBSyxFQUFDLENBQUM7R0FBRztFQUFELEFBQUEsV0FBVyxDQUFBO0lBQUMseUJBQXlCLEVBQUMsQ0FBQztJQUFFLGNBQWMsRUFBQyxDQUFDO0lBQUUsS0FBSyxFQUFDLENBQUM7R0FBRztFQUFELEFBQUEsV0FBVyxDQUFBO0lBQUMseUJBQXlCLEVBQUMsQ0FBQztJQUFFLGNBQWMsRUFBQyxDQUFDO0lBQUUsS0FBSyxFQUFDLENBQUM7R0FBRztFQUFELEFBQUEsV0FBVyxDQUFBO0lBQUMseUJBQXlCLEVBQUMsQ0FBQztJQUFFLGNBQWMsRUFBQyxDQUFDO0lBQUUsS0FBSyxFQUFDLENBQUM7R0FBRztFQUFELEFBQUEsV0FBVyxDQUFBO0lBQUMseUJBQXlCLEVBQUMsQ0FBQztJQUFFLGNBQWMsRUFBQyxDQUFDO0lBQUUsS0FBSyxFQUFDLENBQUM7R0FBRztFQUFELEFBQUEsV0FBVyxDQUFBO0lBQUMseUJBQXlCLEVBQUMsQ0FBQztJQUFFLGNBQWMsRUFBQyxDQUFDO0lBQUUsS0FBSyxFQUFDLENBQUM7R0FBRztFQUFELEFBQUEsV0FBVyxDQUFBO0lBQUMseUJBQXlCLEVBQUMsQ0FBQztJQUFFLGNBQWMsRUFBQyxDQUFDO0lBQUUsS0FBSyxFQUFDLENBQUM7R0FBRztFQUFELEFBQUEsV0FBVyxDQUFBO0lBQUMseUJBQXlCLEVBQUMsQ0FBQztJQUFFLGNBQWMsRUFBQyxDQUFDO0lBQUUsS0FBSyxFQUFDLENBQUM7R0FBRztFQUFELEFBQUEsY0FBYyxDQUFBO0lBQUMseUJBQXlCLEVBQUMsTUFBTTtJQUFFLGNBQWMsRUFBQyxLQUFLO0lBQUUsS0FBSyxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsZUFBZSxDQUFBO0lBQUMsZ0JBQWdCLEVBQUMsQ0FBQztJQUFFLGlCQUFpQixFQUFDLENBQUM7SUFBRSxTQUFTLEVBQUMsQ0FBQztHQUFHO0VBQUQsQUFBQSxlQUFlLENBQUE7SUFBQyxnQkFBZ0IsRUFBQyxDQUFDO0lBQUUsaUJBQWlCLEVBQUMsQ0FBQztJQUFFLFNBQVMsRUFBQyxDQUFDO0dBQUc7RUFBRCxBQUFBLGlCQUFpQixDQUFBO0lBQUMsaUJBQWlCLEVBQUMsQ0FBQztJQUFFLFdBQVcsRUFBQyxDQUFDO0dBQUc7RUFBRCxBQUFBLGlCQUFpQixDQUFBO0lBQUMsaUJBQWlCLEVBQUMsQ0FBQztJQUFFLFdBQVcsRUFBQyxDQUFDO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLEtBQUssRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE1BQU0sRUFBQyxBQUFBLE1BQU0sQ0FBQTtJQUFDLE9BQU8sRUFBQyxNQUFNO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLEtBQUssRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLEtBQUssRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLEtBQUssQ0FBQTtJQUFDLFVBQVUsRUFBQyxNQUFNO0dBQUc7RUFBRCxBQUFBLGFBQWEsQ0FBQTtJQUFDLFVBQVUsRUFBQyxNQUFNO0dBQUc7RUFBRCxBQUFBLFVBQVUsQ0FBQTtJQUFDLFdBQVcsRUFBQyxHQUFHO0dBQUc7RUFBRCxBQUFBLEtBQUssQ0FBQTtJQUFDLFdBQVcsRUFBQyxHQUFHO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLFdBQVcsRUFBQyxHQUFHO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLFdBQVcsRUFBQyxHQUFHO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLFdBQVcsRUFBQyxHQUFHO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLFdBQVcsRUFBQyxHQUFHO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLFdBQVcsRUFBQyxHQUFHO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLFdBQVcsRUFBQyxHQUFHO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLFdBQVcsRUFBQyxHQUFHO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLFdBQVcsRUFBQyxHQUFHO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLFdBQVcsRUFBQyxHQUFHO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLE1BQU0sRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLE1BQU0sRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLE1BQU0sRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLE1BQU0sRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLE1BQU0sRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLFFBQVEsQ0FBQTtJQUFDLE1BQU0sRUFBQyxHQUFHO0dBQUc7RUFBRCxBQUFBLFFBQVEsQ0FBQTtJQUFDLE1BQU0sRUFBQyxHQUFHO0dBQUc7RUFBRCxBQUFBLFFBQVEsQ0FBQTtJQUFDLE1BQU0sRUFBQyxHQUFHO0dBQUc7RUFBRCxBQUFBLFNBQVMsQ0FBQTtJQUFDLE1BQU0sRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLGFBQWEsQ0FBQTtJQUFDLFVBQVUsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLFNBQVMsQ0FBQTtJQUFDLE1BQU0sRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLFNBQVMsQ0FBQTtJQUFDLE1BQU0sRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLFNBQVMsQ0FBQTtJQUFDLE1BQU0sRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLFVBQVUsQ0FBQTtJQUFDLE1BQU0sRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLGNBQWMsQ0FBQTtJQUFDLFVBQVUsRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLFVBQVUsQ0FBQTtJQUFDLE1BQU0sRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLGFBQWEsQ0FBQTtJQUFDLE1BQU0sRUFBQyxPQUFPO0dBQUc7RUFBRCxBQUFBLFdBQVcsQ0FBQTtJQUFDLGNBQWMsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLGlCQUFpQixDQUFBO0lBQUMsY0FBYyxFQUFDLE1BQU07R0FBRztFQUFELEFBQUEsZ0JBQWdCLENBQUE7SUFBQyxjQUFjLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxZQUFZLENBQUE7SUFBQyxXQUFXLEVBQUMsQ0FBQztHQUFHO0VBQUQsQUFBQSxZQUFZLENBQUE7SUFBQyxXQUFXLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxXQUFXLENBQUE7SUFBQyxXQUFXLEVBQUMsR0FBRztHQUFHO0VBQUQsQUFBQSxVQUFVLENBQUE7SUFBQyxTQUFTLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxTQUFTLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxTQUFTLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxTQUFTLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxTQUFTLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxTQUFTLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxTQUFTLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxTQUFTLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxTQUFTLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxTQUFTLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxXQUFXLENBQUE7SUFBQyxTQUFTLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxLQUFLLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxLQUFLLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxLQUFLLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxLQUFLLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxLQUFLLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxRQUFRLENBQUE7SUFBQyxLQUFLLEVBQUMsR0FBRztHQUFHO0VBQUQsQUFBQSxRQUFRLENBQUE7SUFBQyxLQUFLLEVBQUMsR0FBRztHQUFHO0VBQUQsQUFBQSxRQUFRLENBQUE7SUFBQyxLQUFLLEVBQUMsR0FBRztHQUFHO0VBQUQsQUFBQSxRQUFRLENBQUE7SUFBQyxLQUFLLEVBQUMsR0FBRztHQUFHO0VBQUQsQUFBQSxRQUFRLENBQUE7SUFBQyxLQUFLLEVBQUMsR0FBRztHQUFHO0VBQUQsQUFBQSxRQUFRLENBQUE7SUFBQyxLQUFLLEVBQUMsR0FBRztHQUFHO0VBQUQsQUFBQSxRQUFRLENBQUE7SUFBQyxLQUFLLEVBQUMsR0FBRztHQUFHO0VBQUQsQUFBQSxRQUFRLENBQUE7SUFBQyxLQUFLLEVBQUMsR0FBRztHQUFHO0VBQUQsQUFBQSxRQUFRLENBQUE7SUFBQyxLQUFLLEVBQUMsR0FBRztHQUFHO0VBQUQsQUFBQSxRQUFRLENBQUE7SUFBQyxLQUFLLEVBQUMsR0FBRztHQUFHO0VBQUQsQUFBQSxRQUFRLENBQUE7SUFBQyxLQUFLLEVBQUMsR0FBRztHQUFHO0VBQUQsQUFBQSxRQUFRLENBQUE7SUFBQyxLQUFLLEVBQUMsR0FBRztHQUFHO0VBQUQsQUFBQSxRQUFRLENBQUE7SUFBQyxLQUFLLEVBQUMsR0FBRztHQUFHO0VBQUQsQUFBQSxTQUFTLENBQUE7SUFBQyxLQUFLLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxXQUFXLENBQUE7SUFBQyxLQUFLLEVBQUMsU0FBUztHQUFHO0VBQUQsQUFBQSxnQkFBZ0IsQ0FBQTtJQUFDLEtBQUssRUFBQyxTQUFTO0dBQUc7RUFBRCxBQUFBLFVBQVUsQ0FBQTtJQUFDLEtBQUssRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLG9CQUFvQixDQUFBO0lBQUMsUUFBUSxFQUFDLE9BQU87R0FBRztFQUFELEFBQUEsbUJBQW1CLENBQUE7SUFBQyxRQUFRLEVBQUMsTUFBTTtHQUFHO0VBQUQsQUFBQSxtQkFBbUIsQ0FBQTtJQUFDLFFBQVEsRUFBQyxNQUFNO0dBQUc7RUFBRCxBQUFBLGlCQUFpQixDQUFBO0lBQUMsUUFBUSxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsc0JBQXNCLENBQUE7SUFBQyxVQUFVLEVBQUMsT0FBTztHQUFHO0VBQUQsQUFBQSxxQkFBcUIsQ0FBQTtJQUFDLFVBQVUsRUFBQyxNQUFNO0dBQUc7RUFBRCxBQUFBLHFCQUFxQixDQUFBO0lBQUMsVUFBVSxFQUFDLE1BQU07R0FBRztFQUFELEFBQUEsbUJBQW1CLENBQUE7SUFBQyxVQUFVLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxzQkFBc0IsQ0FBQTtJQUFDLFVBQVUsRUFBQyxPQUFPO0dBQUc7RUFBRCxBQUFBLHFCQUFxQixDQUFBO0lBQUMsVUFBVSxFQUFDLE1BQU07R0FBRztFQUFELEFBQUEscUJBQXFCLENBQUE7SUFBQyxVQUFVLEVBQUMsTUFBTTtHQUFHO0VBQUQsQUFBQSxtQkFBbUIsQ0FBQTtJQUFDLFVBQVUsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLFVBQVUsQ0FBQTtJQUFDLFFBQVEsRUFBQyxNQUFNO0dBQUc7RUFBRCxBQUFBLFlBQVksQ0FBQTtJQUFDLFFBQVEsRUFBQyxRQUFRO0dBQUc7RUFBRCxBQUFBLFlBQVksQ0FBQTtJQUFDLFFBQVEsRUFBQyxRQUFRO0dBQUc7RUFBRCxBQUFBLFNBQVMsQ0FBQTtJQUFDLFFBQVEsRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLGFBQWEsQ0FBQTtJQUFDLGlCQUFpQixFQUFDLGFBQWE7SUFBQyxTQUFTLEVBQUMsYUFBYTtHQUFFO0VBQUQsQUFBQSxhQUFhLENBQUE7SUFBQyxpQkFBaUIsRUFBQyxhQUFhO0lBQUMsU0FBUyxFQUFDLGFBQWE7R0FBRTtFQUFELEFBQUEsY0FBYyxDQUFBO0lBQUMsaUJBQWlCLEVBQUMsY0FBYztJQUFDLFNBQVMsRUFBQyxjQUFjO0dBQUU7RUFBRCxBQUFBLGNBQWMsQ0FBQTtJQUFDLGlCQUFpQixFQUFDLGNBQWM7SUFBQyxTQUFTLEVBQUMsY0FBYztHQUFFO0VBQUQsQUFBQSxjQUFjLENBQUE7SUFBQyxpQkFBaUIsRUFBQyxjQUFjO0lBQUMsU0FBUyxFQUFDLGNBQWM7R0FBRTtFQUFELEFBQUEsY0FBYyxDQUFBO0lBQUMsaUJBQWlCLEVBQUMsY0FBYztJQUFDLFNBQVMsRUFBQyxjQUFjO0dBQUU7RUFBRCxBQUFBLGNBQWMsQ0FBQTtJQUFDLGlCQUFpQixFQUFDLGNBQWM7SUFBQyxTQUFTLEVBQUMsY0FBYztHQUFFO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxPQUFPLEVBQUMsQ0FBQztHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxPQUFPLEVBQUMsTUFBTTtHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxPQUFPLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxPQUFPLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxPQUFPLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxPQUFPLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxPQUFPLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxPQUFPLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxZQUFZLEVBQUMsQ0FBQztHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxZQUFZLEVBQUMsTUFBTTtHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxZQUFZLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxZQUFZLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxZQUFZLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxZQUFZLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxZQUFZLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxZQUFZLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxhQUFhLEVBQUMsQ0FBQztHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxhQUFhLEVBQUMsTUFBTTtHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxhQUFhLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxhQUFhLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxhQUFhLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxhQUFhLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxhQUFhLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxhQUFhLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxjQUFjLEVBQUMsQ0FBQztHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxjQUFjLEVBQUMsTUFBTTtHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxjQUFjLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxjQUFjLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxjQUFjLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxjQUFjLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxjQUFjLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxjQUFjLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxXQUFXLEVBQUMsQ0FBQztHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxXQUFXLEVBQUMsTUFBTTtHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxXQUFXLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxXQUFXLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxXQUFXLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxXQUFXLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxXQUFXLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxXQUFXLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxXQUFXLEVBQUMsQ0FBQztJQUFFLGNBQWMsRUFBQyxDQUFDO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLFdBQVcsRUFBQyxNQUFNO0lBQUUsY0FBYyxFQUFDLE1BQU07R0FBRztFQUFELEFBQUEsT0FBTyxDQUFBO0lBQUMsV0FBVyxFQUFDLEtBQUs7SUFBRSxjQUFjLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxXQUFXLEVBQUMsSUFBSTtJQUFFLGNBQWMsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLFdBQVcsRUFBQyxJQUFJO0lBQUUsY0FBYyxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsT0FBTyxDQUFBO0lBQUMsV0FBVyxFQUFDLElBQUk7SUFBRSxjQUFjLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxXQUFXLEVBQUMsSUFBSTtJQUFFLGNBQWMsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLFdBQVcsRUFBQyxLQUFLO0lBQUUsY0FBYyxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsT0FBTyxDQUFBO0lBQUMsWUFBWSxFQUFDLENBQUM7SUFBRSxhQUFhLEVBQUMsQ0FBQztHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxZQUFZLEVBQUMsTUFBTTtJQUFFLGFBQWEsRUFBQyxNQUFNO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLFlBQVksRUFBQyxLQUFLO0lBQUUsYUFBYSxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsT0FBTyxDQUFBO0lBQUMsWUFBWSxFQUFDLElBQUk7SUFBRSxhQUFhLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxZQUFZLEVBQUMsSUFBSTtJQUFFLGFBQWEsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLFlBQVksRUFBQyxJQUFJO0lBQUUsYUFBYSxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsT0FBTyxDQUFBO0lBQUMsWUFBWSxFQUFDLElBQUk7SUFBRSxhQUFhLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxZQUFZLEVBQUMsS0FBSztJQUFFLGFBQWEsRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLE1BQU0sRUFBQyxDQUFDO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLE1BQU0sRUFBQyxNQUFNO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLE1BQU0sRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLE1BQU0sRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLE1BQU0sRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLE1BQU0sRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLE1BQU0sRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLE1BQU0sRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLFdBQVcsRUFBQyxDQUFDO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLFdBQVcsRUFBQyxNQUFNO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLFdBQVcsRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLFdBQVcsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLFdBQVcsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLFdBQVcsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLFdBQVcsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLFdBQVcsRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLFlBQVksRUFBQyxDQUFDO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLFlBQVksRUFBQyxNQUFNO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLFlBQVksRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLFlBQVksRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLFlBQVksRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLFlBQVksRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLFlBQVksRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLFlBQVksRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLGFBQWEsRUFBQyxDQUFDO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLGFBQWEsRUFBQyxNQUFNO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLGFBQWEsRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLGFBQWEsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLGFBQWEsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLGFBQWEsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLGFBQWEsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLGFBQWEsRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLFVBQVUsRUFBQyxDQUFDO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLFVBQVUsRUFBQyxNQUFNO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLFVBQVUsRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLFVBQVUsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLFVBQVUsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLFVBQVUsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLFVBQVUsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLFVBQVUsRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLFVBQVUsRUFBQyxDQUFDO0lBQUUsYUFBYSxFQUFDLENBQUM7R0FBRztFQUFELEFBQUEsT0FBTyxDQUFBO0lBQUMsVUFBVSxFQUFDLE1BQU07SUFBRSxhQUFhLEVBQUMsTUFBTTtHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxVQUFVLEVBQUMsS0FBSztJQUFFLGFBQWEsRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLFVBQVUsRUFBQyxJQUFJO0lBQUUsYUFBYSxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsT0FBTyxDQUFBO0lBQUMsVUFBVSxFQUFDLElBQUk7SUFBRSxhQUFhLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxVQUFVLEVBQUMsSUFBSTtJQUFFLGFBQWEsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLFVBQVUsRUFBQyxJQUFJO0lBQUUsYUFBYSxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsT0FBTyxDQUFBO0lBQUMsVUFBVSxFQUFDLEtBQUs7SUFBRSxhQUFhLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxXQUFXLEVBQUMsQ0FBQztJQUFFLFlBQVksRUFBQyxDQUFDO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLFdBQVcsRUFBQyxNQUFNO0lBQUUsWUFBWSxFQUFDLE1BQU07R0FBRztFQUFELEFBQUEsT0FBTyxDQUFBO0lBQUMsV0FBVyxFQUFDLEtBQUs7SUFBRSxZQUFZLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxXQUFXLEVBQUMsSUFBSTtJQUFFLFlBQVksRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLFdBQVcsRUFBQyxJQUFJO0lBQUUsWUFBWSxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsT0FBTyxDQUFBO0lBQUMsV0FBVyxFQUFDLElBQUk7SUFBRSxZQUFZLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxXQUFXLEVBQUMsSUFBSTtJQUFFLFlBQVksRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLFdBQVcsRUFBQyxLQUFLO0lBQUUsWUFBWSxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsT0FBTyxDQUFBO0lBQUMsTUFBTSxFQUFDLE9BQU87R0FBRztFQUFELEFBQUEsT0FBTyxDQUFBO0lBQUMsTUFBTSxFQUFDLE1BQU07R0FBRztFQUFELEFBQUEsT0FBTyxDQUFBO0lBQUMsTUFBTSxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsT0FBTyxDQUFBO0lBQUMsTUFBTSxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsT0FBTyxDQUFBO0lBQUMsTUFBTSxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsT0FBTyxDQUFBO0lBQUMsTUFBTSxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsT0FBTyxDQUFBO0lBQUMsTUFBTSxFQUFDLE1BQU07R0FBRztFQUFELEFBQUEsT0FBTyxDQUFBO0lBQUMsV0FBVyxFQUFDLE9BQU87R0FBRztFQUFELEFBQUEsT0FBTyxDQUFBO0lBQUMsV0FBVyxFQUFDLE1BQU07R0FBRztFQUFELEFBQUEsT0FBTyxDQUFBO0lBQUMsV0FBVyxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsT0FBTyxDQUFBO0lBQUMsV0FBVyxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsT0FBTyxDQUFBO0lBQUMsV0FBVyxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsT0FBTyxDQUFBO0lBQUMsV0FBVyxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsT0FBTyxDQUFBO0lBQUMsV0FBVyxFQUFDLE1BQU07R0FBRztFQUFELEFBQUEsT0FBTyxDQUFBO0lBQUMsWUFBWSxFQUFDLE9BQU87R0FBRztFQUFELEFBQUEsT0FBTyxDQUFBO0lBQUMsWUFBWSxFQUFDLE1BQU07R0FBRztFQUFELEFBQUEsT0FBTyxDQUFBO0lBQUMsWUFBWSxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsT0FBTyxDQUFBO0lBQUMsWUFBWSxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsT0FBTyxDQUFBO0lBQUMsWUFBWSxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsT0FBTyxDQUFBO0lBQUMsWUFBWSxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsT0FBTyxDQUFBO0lBQUMsWUFBWSxFQUFDLE1BQU07R0FBRztFQUFELEFBQUEsT0FBTyxDQUFBO0lBQUMsYUFBYSxFQUFDLE9BQU87R0FBRztFQUFELEFBQUEsT0FBTyxDQUFBO0lBQUMsYUFBYSxFQUFDLE1BQU07R0FBRztFQUFELEFBQUEsT0FBTyxDQUFBO0lBQUMsYUFBYSxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsT0FBTyxDQUFBO0lBQUMsYUFBYSxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsT0FBTyxDQUFBO0lBQUMsYUFBYSxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsT0FBTyxDQUFBO0lBQUMsYUFBYSxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsT0FBTyxDQUFBO0lBQUMsYUFBYSxFQUFDLE1BQU07R0FBRztFQUFELEFBQUEsT0FBTyxDQUFBO0lBQUMsVUFBVSxFQUFDLE9BQU87R0FBRztFQUFELEFBQUEsT0FBTyxDQUFBO0lBQUMsVUFBVSxFQUFDLE1BQU07R0FBRztFQUFELEFBQUEsT0FBTyxDQUFBO0lBQUMsVUFBVSxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsT0FBTyxDQUFBO0lBQUMsVUFBVSxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsT0FBTyxDQUFBO0lBQUMsVUFBVSxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsT0FBTyxDQUFBO0lBQUMsVUFBVSxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsT0FBTyxDQUFBO0lBQUMsVUFBVSxFQUFDLE1BQU07R0FBRztFQUFELEFBQUEsVUFBVSxDQUFBO0lBQUMsZUFBZSxFQUFDLFlBQVk7R0FBRztFQUFELEFBQUEsYUFBYSxDQUFBO0lBQUMsZUFBZSxFQUFDLFNBQVM7R0FBRztFQUFELEFBQUEsZ0JBQWdCLENBQUE7SUFBQyxlQUFlLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxVQUFVLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxVQUFVLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxVQUFVLEVBQUMsTUFBTTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxVQUFVLEVBQUMsT0FBTztHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxjQUFjLEVBQUMsVUFBVTtHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxjQUFjLEVBQUMsU0FBUztHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxjQUFjLEVBQUMsU0FBUztHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxjQUFjLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxPQUFPLEVBQUMsQUFBQSxjQUFjLENBQUE7SUFBQyxTQUFTLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxPQUFPLEVBQUMsQUFBQSxpQkFBaUIsQ0FBQTtJQUFDLFNBQVMsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFNBQVMsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFNBQVMsRUFBQyxPQUFPO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFNBQVMsRUFBQyxNQUFNO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFNBQVMsRUFBQyxPQUFPO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFNBQVMsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFNBQVMsRUFBQyxPQUFPO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFNBQVMsRUFBQyxNQUFNO0dBQUc7RUFBRCxBQUFBLFdBQVcsQ0FBQTtJQUFDLFNBQVMsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLGdCQUFnQixDQUFBO0lBQUMsU0FBUyxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsa0JBQWtCLENBQUE7SUFBQyxTQUFTLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxVQUFVLENBQUE7SUFBQyxXQUFXLEVBQUMsR0FBRztJQUFFLFVBQVUsRUFBQyxDQUFDO0lBQUUsYUFBYSxFQUFDLENBQUM7R0FBRztFQUFELEFBQUEsY0FBYyxDQUFBO0lBQUMsWUFBWSxFQUFDLFVBQVU7R0FBRztFQUFELEFBQUEsWUFBWSxDQUFBO0lBQUMsV0FBVyxFQUFDLE1BQU07SUFBRSxRQUFRLEVBQUMsTUFBTTtJQUFFLGFBQWEsRUFBQyxRQUFRO0dBQUc7RUFBRCxBQUFBLFVBQVUsQ0FBQTtJQUFDLFdBQVcsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLFVBQVUsRUFBQyxBQUFBLFdBQVcsQ0FBQTtJQUFDLFlBQVksRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLFdBQVcsQ0FBQTtJQUFDLFdBQVcsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLFFBQVEsQ0FBQTtJQUFDLFFBQVEsRUFBQyxLQUFLLENBQUEsVUFBVTtJQUFDLFFBQVEsRUFBQyxRQUFRLENBQUEsVUFBVTtJQUFDLElBQUksRUFBQyxxQkFBcUI7SUFBQyxJQUFJLEVBQUMsd0JBQXFCO0dBQUU7RUFBRCxBQUFBLGFBQWEsQ0FBQTtJQUFDLFdBQVcsRUFBQyxNQUFNO0dBQUc7RUFBRCxBQUFBLFVBQVUsQ0FBQTtJQUFDLFdBQVcsRUFBQyxNQUFNO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLFdBQVcsRUFBQyxHQUFHO0dBQUc7RUFBRCxBQUFBLFVBQVUsQ0FBQTtJQUFDLGNBQWMsRUFBQyxRQUFRO0dBQUc7RUFBRCxBQUFBLFNBQVMsQ0FBQTtJQUFDLGNBQWMsRUFBQyxNQUFNO0dBQUc7RUFBRCxBQUFBLFNBQVMsQ0FBQTtJQUFDLGNBQWMsRUFBQyxHQUFHO0dBQUc7RUFBRCxBQUFBLFNBQVMsQ0FBQTtJQUFDLGNBQWMsRUFBQyxNQUFNO0dBQUc7OztBQUFBLE1BQU0sQ0FBQyxNQUFNLE1BQU0sU0FBUyxFQUFFLElBQUksT0FBTyxTQUFTLEVBQUUsSUFBSTtFQUFBLEFBQUEsZUFBZSxDQUFBO0lBQUMsTUFBTSxFQUFDLENBQUM7SUFBRSxRQUFRLEVBQUMsUUFBUTtHQUFHO0VBQUQsQUFBQSxxQkFBcUIsQ0FBQTtJQUFDLGNBQWMsRUFBQyxNQUFNO0dBQUc7RUFBRCxBQUFBLHFCQUFxQixDQUFBO0lBQUMsY0FBYyxFQUFDLE9BQU87R0FBRztFQUFELEFBQUEsb0JBQW9CLENBQUE7SUFBQyxjQUFjLEVBQUMsR0FBRztHQUFHO0VBQUQsQUFBQSxvQkFBb0IsQ0FBQTtJQUFDLGNBQWMsRUFBQyxPQUFPO0dBQUc7RUFBRCxBQUFBLG9CQUFvQixDQUFBO0lBQUMsY0FBYyxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsb0JBQW9CLENBQUE7SUFBQyxjQUFjLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxvQkFBb0IsQ0FBQTtJQUFDLGNBQWMsRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLG9CQUFvQixDQUFBO0lBQUMsY0FBYyxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsb0JBQW9CLENBQUE7SUFBQyxjQUFjLEVBQUMsTUFBTTtHQUFHO0VBQUQsQUFBQSxvQkFBb0IsQ0FBQTtJQUFDLGNBQWMsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLG9CQUFvQixDQUFBO0lBQUMsY0FBYyxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsdUJBQXVCLENBQUE7SUFBQyxRQUFRLEVBQUMsUUFBUTtJQUFFLEdBQUcsRUFBQyxDQUFDO0lBQUUsS0FBSyxFQUFDLENBQUM7SUFBRSxNQUFNLEVBQUMsQ0FBQztJQUFFLElBQUksRUFBQyxDQUFDO0lBQUUsS0FBSyxFQUFDLElBQUk7SUFBRSxNQUFNLEVBQUMsSUFBSTtJQUFFLE9BQU8sRUFBQyxHQUFHO0dBQUc7RUFBRCxBQUFBLFFBQVEsQ0FBQTtJQUFDLGVBQWUsRUFBQyxLQUFLLENBQUEsVUFBVTtHQUFFO0VBQUQsQUFBQSxVQUFVLENBQUE7SUFBQyxlQUFlLEVBQUMsT0FBTyxDQUFBLFVBQVU7R0FBRTtFQUFELEFBQUEsWUFBWSxDQUFBO0lBQUMsbUJBQW1CLEVBQUMsR0FBRztHQUFHO0VBQUQsQUFBQSxZQUFZLEVBQUMsQUFBQSxTQUFTLENBQUE7SUFBQyxpQkFBaUIsRUFBQyxTQUFTO0dBQUc7RUFBRCxBQUFBLFNBQVMsQ0FBQTtJQUFDLG1CQUFtQixFQUFDLEdBQUc7R0FBRztFQUFELEFBQUEsV0FBVyxDQUFBO0lBQUMsbUJBQW1CLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxZQUFZLEVBQUMsQUFBQSxXQUFXLENBQUE7SUFBQyxpQkFBaUIsRUFBQyxTQUFTO0dBQUc7RUFBRCxBQUFBLFlBQVksQ0FBQTtJQUFDLG1CQUFtQixFQUFDLE1BQU07R0FBRztFQUFELEFBQUEsVUFBVSxDQUFBO0lBQUMsaUJBQWlCLEVBQUMsU0FBUztJQUFFLG1CQUFtQixFQUFDLENBQUM7R0FBRztFQUFELEFBQUEsVUFBVSxDQUFBO0lBQUMsT0FBTyxFQUFDLFNBQVM7R0FBRztFQUFELEFBQUEsc0JBQXNCLENBQUE7SUFBQyxPQUFPLEVBQUMscUJBQXFCO0dBQUc7RUFBRCxBQUFBLFlBQVksQ0FBQTtJQUFDLE9BQU8sRUFBQyxDQUFDO0dBQUc7RUFBRCxBQUFBLEtBQUssQ0FBQTtJQUFDLFlBQVksRUFBQyxLQUFLO0lBQUUsWUFBWSxFQUFDLEdBQUc7R0FBRztFQUFELEFBQUEsS0FBSyxDQUFBO0lBQUMsZ0JBQWdCLEVBQUMsS0FBSztJQUFFLGdCQUFnQixFQUFDLEdBQUc7R0FBRztFQUFELEFBQUEsS0FBSyxDQUFBO0lBQUMsa0JBQWtCLEVBQUMsS0FBSztJQUFFLGtCQUFrQixFQUFDLEdBQUc7R0FBRztFQUFELEFBQUEsS0FBSyxDQUFBO0lBQUMsbUJBQW1CLEVBQUMsS0FBSztJQUFFLG1CQUFtQixFQUFDLEdBQUc7R0FBRztFQUFELEFBQUEsS0FBSyxDQUFBO0lBQUMsaUJBQWlCLEVBQUMsS0FBSztJQUFFLGlCQUFpQixFQUFDLEdBQUc7R0FBRztFQUFELEFBQUEsS0FBSyxDQUFBO0lBQUMsWUFBWSxFQUFDLElBQUk7SUFBRSxZQUFZLEVBQUMsQ0FBQztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxhQUFhLEVBQUMsQ0FBQztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxhQUFhLEVBQUMsT0FBTztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxhQUFhLEVBQUMsTUFBTTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxhQUFhLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxhQUFhLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxTQUFTLENBQUE7SUFBQyxhQUFhLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxVQUFVLENBQUE7SUFBQyxhQUFhLEVBQUMsTUFBTTtHQUFHO0VBQUQsQUFBQSxhQUFhLENBQUE7SUFBQyxzQkFBc0IsRUFBQyxDQUFDO0lBQUUsdUJBQXVCLEVBQUMsQ0FBQztHQUFHO0VBQUQsQUFBQSxVQUFVLENBQUE7SUFBQywwQkFBMEIsRUFBQyxDQUFDO0dBQUc7RUFBRCxBQUFBLFlBQVksRUFBQyxBQUFBLFVBQVUsQ0FBQTtJQUFDLHlCQUF5QixFQUFDLENBQUM7R0FBRztFQUFELEFBQUEsWUFBWSxDQUFBO0lBQUMsc0JBQXNCLEVBQUMsQ0FBQztHQUFHO0VBQUQsQUFBQSxXQUFXLENBQUE7SUFBQyx1QkFBdUIsRUFBQyxDQUFDO0lBQUUsMEJBQTBCLEVBQUMsQ0FBQztHQUFHO0VBQUQsQUFBQSxZQUFZLENBQUE7SUFBQyxZQUFZLEVBQUMsTUFBTTtHQUFHO0VBQUQsQUFBQSxZQUFZLENBQUE7SUFBQyxZQUFZLEVBQUMsTUFBTTtHQUFHO0VBQUQsQUFBQSxXQUFXLENBQUE7SUFBQyxZQUFZLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxVQUFVLENBQUE7SUFBQyxZQUFZLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxZQUFZLEVBQUMsQ0FBQztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxZQUFZLEVBQUMsT0FBTztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxZQUFZLEVBQUMsTUFBTTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxZQUFZLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxZQUFZLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxZQUFZLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxnQkFBZ0IsRUFBQyxDQUFDO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLGtCQUFrQixFQUFDLENBQUM7R0FBRztFQUFELEFBQUEsT0FBTyxDQUFBO0lBQUMsbUJBQW1CLEVBQUMsQ0FBQztHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxpQkFBaUIsRUFBQyxDQUFDO0dBQUc7RUFBRCxBQUFBLFdBQVcsQ0FBQTtJQUFDLFVBQVUsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsa0JBQWM7R0FBRTtFQUFELEFBQUEsV0FBVyxDQUFBO0lBQUMsVUFBVSxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxrQkFBYztHQUFFO0VBQUQsQUFBQSxXQUFXLENBQUE7SUFBQyxVQUFVLEVBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLGtCQUFjO0dBQUU7RUFBRCxBQUFBLFdBQVcsQ0FBQTtJQUFDLFVBQVUsRUFBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsa0JBQWM7R0FBRTtFQUFELEFBQUEsV0FBVyxDQUFBO0lBQUMsVUFBVSxFQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxrQkFBYztHQUFFO0VBQUQsQUFBQSxRQUFRLENBQUE7SUFBQyxHQUFHLEVBQUMsQ0FBQztHQUFHO0VBQUQsQUFBQSxTQUFTLENBQUE7SUFBQyxJQUFJLEVBQUMsQ0FBQztHQUFHO0VBQUQsQUFBQSxVQUFVLENBQUE7SUFBQyxLQUFLLEVBQUMsQ0FBQztHQUFHO0VBQUQsQUFBQSxXQUFXLENBQUE7SUFBQyxNQUFNLEVBQUMsQ0FBQztHQUFHO0VBQUQsQUFBQSxRQUFRLENBQUE7SUFBQyxHQUFHLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxTQUFTLENBQUE7SUFBQyxJQUFJLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxVQUFVLENBQUE7SUFBQyxLQUFLLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxXQUFXLENBQUE7SUFBQyxNQUFNLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxRQUFRLENBQUE7SUFBQyxHQUFHLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxTQUFTLENBQUE7SUFBQyxJQUFJLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxVQUFVLENBQUE7SUFBQyxLQUFLLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxXQUFXLENBQUE7SUFBQyxNQUFNLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxTQUFTLENBQUE7SUFBQyxHQUFHLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxXQUFXLENBQUE7SUFBQyxLQUFLLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxZQUFZLENBQUE7SUFBQyxNQUFNLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxVQUFVLENBQUE7SUFBQyxJQUFJLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxTQUFTLENBQUE7SUFBQyxHQUFHLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxXQUFXLENBQUE7SUFBQyxLQUFLLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxZQUFZLENBQUE7SUFBQyxNQUFNLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxVQUFVLENBQUE7SUFBQyxJQUFJLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxpQkFBaUIsQ0FBQTtJQUFDLEdBQUcsRUFBQyxDQUFDO0lBQUUsS0FBSyxFQUFDLENBQUM7SUFBRSxNQUFNLEVBQUMsQ0FBQztJQUFFLElBQUksRUFBQyxDQUFDO0dBQUc7RUFBRCxBQUFBLEtBQUssQ0FBQTtJQUFDLEtBQUssRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLEtBQUssQ0FBQTtJQUFDLEtBQUssRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLEtBQUssQ0FBQTtJQUFDLEtBQUssRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLEtBQUssQ0FBQTtJQUFDLEtBQUssRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLEtBQUssQ0FBQTtJQUFDLE9BQU8sRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLEtBQUssQ0FBQTtJQUFDLE9BQU8sRUFBQyxNQUFNO0dBQUc7RUFBRCxBQUFBLEtBQUssQ0FBQTtJQUFDLE9BQU8sRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLE9BQU8sRUFBQyxZQUFZO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLE9BQU8sRUFBQyxZQUFZO0dBQUc7RUFBRCxBQUFBLEtBQUssQ0FBQTtJQUFDLE9BQU8sRUFBQyxLQUFLO0dBQUc7RUFB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LEdBQUc7R0FBRztFQUFELEFBQUEsSUFBSSxDQUFBO0lBQUMsV0FBVyxFQUFDLEdBQUc7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsV0FBVyxFQUFDLEdBQUc7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsV0FBVyxFQUFDLEdBQUc7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsV0FBVyxFQUFDLEdBQUc7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsV0FBVyxFQUFDLEdBQUc7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsV0FBVyxFQUFDLEdBQUc7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsV0FBVyxFQUFDLEdBQUc7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsV0FBVyxFQUFDLEdBQUc7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsV0FBVyxFQUFDLEdBQUc7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsV0FBVyxFQUFDLEdBQUc7R0FBRztFQUFELEFBQUEsS0FBSyxDQUFBO0lBQUMsTUFBTSxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsS0FBSyxDQUFBO0lBQUMsTUFBTSxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsS0FBSyxDQUFBO0lBQUMsTUFBTSxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsS0FBSyxDQUFBO0lBQUMsTUFBTSxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsS0FBSyxDQUFBO0lBQUMsTUFBTSxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsT0FBTyxDQUFBO0lBQUMsTUFBTSxFQUFDLEdBQUc7R0FBRztFQUFELEFBQUEsT0FBTyxDQUFBO0lBQUMsTUFBTSxFQUFDLEdBQUc7R0FBRztFQUFELEFBQUEsT0FBTyxDQUFBO0lBQUMsTUFBTSxFQUFDLEdBQUc7R0FBRztFQUFELEFBQUEsUUFBUSxDQUFBO0lBQUMsTUFBTSxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsWUFBWSxDQUFBO0lBQUMsVUFBVSxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsUUFBUSxDQUFBO0lBQUMsTUFBTSxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsUUFBUSxDQUFBO0lBQUMsTUFBTSxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsUUFBUSxDQUFBO0lBQUMsTUFBTSxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsU0FBUyxDQUFBO0lBQUMsTUFBTSxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsYUFBYSxDQUFBO0lBQUMsVUFBVSxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsU0FBUyxDQUFBO0lBQUMsTUFBTSxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsWUFBWSxDQUFBO0lBQUMsTUFBTSxFQUFDLE9BQU87R0FBRztFQUFELEFBQUEsVUFBVSxDQUFBO0lBQUMsY0FBYyxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsZ0JBQWdCLENBQUE7SUFBQyxjQUFjLEVBQUMsTUFBTTtHQUFHO0VBQUQsQUFBQSxlQUFlLENBQUE7SUFBQyxjQUFjLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxXQUFXLENBQUE7SUFBQyxXQUFXLEVBQUMsQ0FBQztHQUFHO0VBQUQsQUFBQSxXQUFXLENBQUE7SUFBQyxXQUFXLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxVQUFVLENBQUE7SUFBQyxXQUFXLEVBQUMsR0FBRztHQUFHO0VBQUQsQUFBQSxTQUFTLENBQUE7SUFBQyxTQUFTLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxTQUFTLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxTQUFTLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxTQUFTLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxTQUFTLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxTQUFTLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxTQUFTLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxTQUFTLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxTQUFTLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxTQUFTLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxVQUFVLENBQUE7SUFBQyxTQUFTLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxLQUFLLENBQUE7SUFBQyxLQUFLLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxLQUFLLENBQUE7SUFBQyxLQUFLLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxLQUFLLENBQUE7SUFBQyxLQUFLLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxLQUFLLENBQUE7SUFBQyxLQUFLLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxLQUFLLENBQUE7SUFBQyxLQUFLLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxLQUFLLEVBQUMsR0FBRztHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxLQUFLLEVBQUMsR0FBRztHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxLQUFLLEVBQUMsR0FBRztHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxLQUFLLEVBQUMsR0FBRztHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxLQUFLLEVBQUMsR0FBRztHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxLQUFLLEVBQUMsR0FBRztHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxLQUFLLEVBQUMsR0FBRztHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxLQUFLLEVBQUMsR0FBRztHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxLQUFLLEVBQUMsR0FBRztHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxLQUFLLEVBQUMsR0FBRztHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxLQUFLLEVBQUMsR0FBRztHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxLQUFLLEVBQUMsR0FBRztHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxLQUFLLEVBQUMsR0FBRztHQUFHO0VBQUQsQUFBQSxRQUFRLENBQUE7SUFBQyxLQUFLLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxVQUFVLENBQUE7SUFBQyxLQUFLLEVBQUMsU0FBUztHQUFHO0VBQUQsQUFBQSxlQUFlLENBQUE7SUFBQyxLQUFLLEVBQUMsU0FBUztHQUFHO0VBQUQsQUFBQSxTQUFTLENBQUE7SUFBQyxLQUFLLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxtQkFBbUIsQ0FBQTtJQUFDLFFBQVEsRUFBQyxPQUFPO0dBQUc7RUFBRCxBQUFBLGtCQUFrQixDQUFBO0lBQUMsUUFBUSxFQUFDLE1BQU07R0FBRztFQUFELEFBQUEsa0JBQWtCLENBQUE7SUFBQyxRQUFRLEVBQUMsTUFBTTtHQUFHO0VBQUQsQUFBQSxnQkFBZ0IsQ0FBQTtJQUFDLFFBQVEsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLHFCQUFxQixDQUFBO0lBQUMsVUFBVSxFQUFDLE9BQU87R0FBRztFQUFELEFBQUEsb0JBQW9CLENBQUE7SUFBQyxVQUFVLEVBQUMsTUFBTTtHQUFHO0VBQUQsQUFBQSxvQkFBb0IsQ0FBQTtJQUFDLFVBQVUsRUFBQyxNQUFNO0dBQUc7RUFBRCxBQUFBLGtCQUFrQixDQUFBO0lBQUMsVUFBVSxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEscUJBQXFCLENBQUE7SUFBQyxVQUFVLEVBQUMsT0FBTztHQUFHO0VBQUQsQUFBQSxvQkFBb0IsQ0FBQTtJQUFDLFVBQVUsRUFBQyxNQUFNO0dBQUc7RUFBRCxBQUFBLG9CQUFvQixDQUFBO0lBQUMsVUFBVSxFQUFDLE1BQU07R0FBRztFQUFELEFBQUEsa0JBQWtCLENBQUE7SUFBQyxVQUFVLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxTQUFTLENBQUE7SUFBQyxRQUFRLEVBQUMsTUFBTTtHQUFHO0VBQUQsQUFBQSxXQUFXLENBQUE7SUFBQyxRQUFRLEVBQUMsUUFBUTtHQUFHO0VBQUQsQUFBQSxXQUFXLENBQUE7SUFBQyxRQUFRLEVBQUMsUUFBUTtHQUFHO0VBQUQsQUFBQSxRQUFRLENBQUE7SUFBQyxRQUFRLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxZQUFZLENBQUE7SUFBQyxpQkFBaUIsRUFBQyxhQUFhO0lBQUMsU0FBUyxFQUFDLGFBQWE7R0FBRTtFQUFELEFBQUEsWUFBWSxDQUFBO0lBQUMsaUJBQWlCLEVBQUMsYUFBYTtJQUFDLFNBQVMsRUFBQyxhQUFhO0dBQUU7RUFBRCxBQUFBLGFBQWEsQ0FBQTtJQUFDLGlCQUFpQixFQUFDLGNBQWM7SUFBQyxTQUFTLEVBQUMsY0FBYztHQUFFO0VBQUQsQUFBQSxhQUFhLENBQUE7SUFBQyxpQkFBaUIsRUFBQyxjQUFjO0lBQUMsU0FBUyxFQUFDLGNBQWM7R0FBRTtFQUFELEFBQUEsYUFBYSxDQUFBO0lBQUMsaUJBQWlCLEVBQUMsY0FBYztJQUFDLFNBQVMsRUFBQyxjQUFjO0dBQUU7RUFBRCxBQUFBLGFBQWEsQ0FBQTtJQUFDLGlCQUFpQixFQUFDLGNBQWM7SUFBQyxTQUFTLEVBQUMsY0FBYztHQUFFO0VBQUQsQUFBQSxhQUFhLENBQUE7SUFBQyxpQkFBaUIsRUFBQyxjQUFjO0lBQUMsU0FBUyxFQUFDLGNBQWM7R0FBRTtFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsT0FBTyxFQUFDLENBQUM7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsT0FBTyxFQUFDLE1BQU07R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsT0FBTyxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsT0FBTyxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsT0FBTyxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsT0FBTyxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsT0FBTyxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsT0FBTyxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsWUFBWSxFQUFDLENBQUM7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsWUFBWSxFQUFDLE1BQU07R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsWUFBWSxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsWUFBWSxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsWUFBWSxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsWUFBWSxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsWUFBWSxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsWUFBWSxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsYUFBYSxFQUFDLENBQUM7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsYUFBYSxFQUFDLE1BQU07R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsYUFBYSxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsYUFBYSxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsYUFBYSxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsYUFBYSxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsYUFBYSxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsYUFBYSxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsY0FBYyxFQUFDLENBQUM7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsY0FBYyxFQUFDLE1BQU07R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsY0FBYyxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsY0FBYyxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsY0FBYyxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsY0FBYyxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsY0FBYyxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsY0FBYyxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsV0FBVyxFQUFDLENBQUM7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsV0FBVyxFQUFDLE1BQU07R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsV0FBVyxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsV0FBVyxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsV0FBVyxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsV0FBVyxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsV0FBVyxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsV0FBVyxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsV0FBVyxFQUFDLENBQUM7SUFBRSxjQUFjLEVBQUMsQ0FBQztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxXQUFXLEVBQUMsTUFBTTtJQUFFLGNBQWMsRUFBQyxNQUFNO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFdBQVcsRUFBQyxLQUFLO0lBQUUsY0FBYyxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsV0FBVyxFQUFDLElBQUk7SUFBRSxjQUFjLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxXQUFXLEVBQUMsSUFBSTtJQUFFLGNBQWMsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFdBQVcsRUFBQyxJQUFJO0lBQUUsY0FBYyxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsV0FBVyxFQUFDLElBQUk7SUFBRSxjQUFjLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxXQUFXLEVBQUMsS0FBSztJQUFFLGNBQWMsRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFlBQVksRUFBQyxDQUFDO0lBQUUsYUFBYSxFQUFDLENBQUM7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsWUFBWSxFQUFDLE1BQU07SUFBRSxhQUFhLEVBQUMsTUFBTTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxZQUFZLEVBQUMsS0FBSztJQUFFLGFBQWEsRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFlBQVksRUFBQyxJQUFJO0lBQUUsYUFBYSxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsWUFBWSxFQUFDLElBQUk7SUFBRSxhQUFhLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxZQUFZLEVBQUMsSUFBSTtJQUFFLGFBQWEsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFlBQVksRUFBQyxJQUFJO0lBQUUsYUFBYSxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsWUFBWSxFQUFDLEtBQUs7SUFBRSxhQUFhLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxNQUFNLEVBQUMsQ0FBQztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxNQUFNLEVBQUMsTUFBTTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxNQUFNLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxNQUFNLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxNQUFNLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxNQUFNLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxNQUFNLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxNQUFNLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxXQUFXLEVBQUMsQ0FBQztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxXQUFXLEVBQUMsTUFBTTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxXQUFXLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxXQUFXLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxXQUFXLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxXQUFXLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxXQUFXLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxXQUFXLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxZQUFZLEVBQUMsQ0FBQztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxZQUFZLEVBQUMsTUFBTTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxZQUFZLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxZQUFZLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxZQUFZLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxZQUFZLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxZQUFZLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxZQUFZLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxhQUFhLEVBQUMsQ0FBQztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxhQUFhLEVBQUMsTUFBTTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxhQUFhLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxhQUFhLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxhQUFhLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxhQUFhLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxhQUFhLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxhQUFhLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxVQUFVLEVBQUMsQ0FBQztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxVQUFVLEVBQUMsTUFBTTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxVQUFVLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxVQUFVLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxVQUFVLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxVQUFVLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxVQUFVLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxVQUFVLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxVQUFVLEVBQUMsQ0FBQztJQUFFLGFBQWEsRUFBQyxDQUFDO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFVBQVUsRUFBQyxNQUFNO0lBQUUsYUFBYSxFQUFDLE1BQU07R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsVUFBVSxFQUFDLEtBQUs7SUFBRSxhQUFhLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxVQUFVLEVBQUMsSUFBSTtJQUFFLGFBQWEsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFVBQVUsRUFBQyxJQUFJO0lBQUUsYUFBYSxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsVUFBVSxFQUFDLElBQUk7SUFBRSxhQUFhLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxVQUFVLEVBQUMsSUFBSTtJQUFFLGFBQWEsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFVBQVUsRUFBQyxLQUFLO0lBQUUsYUFBYSxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsV0FBVyxFQUFDLENBQUM7SUFBRSxZQUFZLEVBQUMsQ0FBQztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxXQUFXLEVBQUMsTUFBTTtJQUFFLFlBQVksRUFBQyxNQUFNO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFdBQVcsRUFBQyxLQUFLO0lBQUUsWUFBWSxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsV0FBVyxFQUFDLElBQUk7SUFBRSxZQUFZLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxXQUFXLEVBQUMsSUFBSTtJQUFFLFlBQVksRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFdBQVcsRUFBQyxJQUFJO0lBQUUsWUFBWSxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsV0FBVyxFQUFDLElBQUk7SUFBRSxZQUFZLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxXQUFXLEVBQUMsS0FBSztJQUFFLFlBQVksRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLE1BQU0sRUFBQyxPQUFPO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLE1BQU0sRUFBQyxNQUFNO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLE1BQU0sRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLE1BQU0sRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLE1BQU0sRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLE1BQU0sRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLE1BQU0sRUFBQyxNQUFNO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFdBQVcsRUFBQyxPQUFPO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFdBQVcsRUFBQyxNQUFNO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFdBQVcsRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFdBQVcsRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFdBQVcsRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFdBQVcsRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFdBQVcsRUFBQyxNQUFNO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFlBQVksRUFBQyxPQUFPO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFlBQVksRUFBQyxNQUFNO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFlBQVksRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFlBQVksRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFlBQVksRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFlBQVksRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFlBQVksRUFBQyxNQUFNO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLGFBQWEsRUFBQyxPQUFPO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLGFBQWEsRUFBQyxNQUFNO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLGFBQWEsRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLGFBQWEsRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLGFBQWEsRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLGFBQWEsRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLGFBQWEsRUFBQyxNQUFNO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFVBQVUsRUFBQyxPQUFPO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFVBQVUsRUFBQyxNQUFNO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFVBQVUsRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFVBQVUsRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFVBQVUsRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFVBQVUsRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFVBQVUsRUFBQyxNQUFNO0dBQUc7RUFBRCxBQUFBLFNBQVMsQ0FBQTtJQUFDLGVBQWUsRUFBQyxZQUFZO0dBQUc7RUFBRCxBQUFBLFlBQVksQ0FBQTtJQUFDLGVBQWUsRUFBQyxTQUFTO0dBQUc7RUFBRCxBQUFBLGVBQWUsQ0FBQTtJQUFDLGVBQWUsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLEtBQUssQ0FBQTtJQUFDLFVBQVUsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLEtBQUssQ0FBQTtJQUFDLFVBQVUsRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLEtBQUssQ0FBQTtJQUFDLFVBQVUsRUFBQyxNQUFNO0dBQUc7RUFBRCxBQUFBLEtBQUssQ0FBQTtJQUFDLFVBQVUsRUFBQyxPQUFPO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLGNBQWMsRUFBQyxVQUFVO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLGNBQWMsRUFBQyxTQUFTO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLGNBQWMsRUFBQyxTQUFTO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLGNBQWMsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE1BQU0sRUFBQyxBQUFBLGFBQWEsQ0FBQTtJQUFDLFNBQVMsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE1BQU0sRUFBQyxBQUFBLGdCQUFnQixDQUFBO0lBQUMsU0FBUyxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsS0FBSyxDQUFBO0lBQUMsU0FBUyxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsS0FBSyxDQUFBO0lBQUMsU0FBUyxFQUFDLE9BQU87R0FBRztFQUFELEFBQUEsS0FBSyxDQUFBO0lBQUMsU0FBUyxFQUFDLE1BQU07R0FBRztFQUFELEFBQUEsS0FBSyxDQUFBO0lBQUMsU0FBUyxFQUFDLE9BQU87R0FBRztFQUFELEFBQUEsS0FBSyxDQUFBO0lBQUMsU0FBUyxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsS0FBSyxDQUFBO0lBQUMsU0FBUyxFQUFDLE9BQU87R0FBRztFQUFELEFBQUEsS0FBSyxDQUFBO0lBQUMsU0FBUyxFQUFDLE1BQU07R0FBRztFQUFELEFBQUEsVUFBVSxDQUFBO0lBQUMsU0FBUyxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsZUFBZSxDQUFBO0lBQUMsU0FBUyxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsaUJBQWlCLENBQUE7SUFBQyxTQUFTLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxTQUFTLENBQUE7SUFBQyxXQUFXLEVBQUMsR0FBRztJQUFFLFVBQVUsRUFBQyxDQUFDO0lBQUUsYUFBYSxFQUFDLENBQUM7R0FBRztFQUFELEFBQUEsYUFBYSxDQUFBO0lBQUMsWUFBWSxFQUFDLFVBQVU7R0FBRztFQUFELEFBQUEsV0FBVyxDQUFBO0lBQUMsV0FBVyxFQUFDLE1BQU07SUFBRSxRQUFRLEVBQUMsTUFBTTtJQUFFLGFBQWEsRUFBQyxRQUFRO0dBQUc7RUFBRCxBQUFBLFNBQVMsQ0FBQTtJQUFDLFdBQVcsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLFNBQVMsRUFBQyxBQUFBLFVBQVUsQ0FBQTtJQUFDLFlBQVksRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLFVBQVUsQ0FBQTtJQUFDLFdBQVcsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLFFBQVEsRUFBQyxLQUFLLENBQUEsVUFBVTtJQUFDLFFBQVEsRUFBQyxRQUFRLENBQUEsVUFBVTtJQUFDLElBQUksRUFBQyxxQkFBcUI7SUFBQyxJQUFJLEVBQUMsd0JBQXFCO0dBQUU7RUFBRCxBQUFBLFlBQVksQ0FBQTtJQUFDLFdBQVcsRUFBQyxNQUFNO0dBQUc7RUFBRCxBQUFBLFNBQVMsQ0FBQTtJQUFDLFdBQVcsRUFBQyxNQUFNO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFdBQVcsRUFBQyxHQUFHO0dBQUc7RUFBRCxBQUFBLFNBQVMsQ0FBQTtJQUFDLGNBQWMsRUFBQyxRQUFRO0dBQUc7RUFBRCxBQUFBLFFBQVEsQ0FBQTtJQUFDLGNBQWMsRUFBQyxNQUFNO0dBQUc7RUFBRCxBQUFBLFFBQVEsQ0FBQTtJQUFDLGNBQWMsRUFBQyxHQUFHO0dBQUc7RUFBRCxBQUFBLFFBQVEsQ0FBQTtJQUFDLGNBQWMsRUFBQyxNQUFNO0dBQUc7OztBQUFBLE1BQU0sQ0FBQyxNQUFNLE1BQU0sU0FBUyxFQUFFLElBQUk7RUFBQyxBQUFBLGVBQWUsQ0FBQTtJQUFDLE1BQU0sRUFBQyxDQUFDO0lBQUUsUUFBUSxFQUFDLFFBQVE7R0FBRztFQUFELEFBQUEscUJBQXFCLENBQUE7SUFBQyxjQUFjLEVBQUMsTUFBTTtHQUFHO0VBQUQsQUFBQSxxQkFBcUIs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QUMsSUFBSSxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsVUFBVSxDQUFBO0lBQUMsS0FBSyxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsV0FBVyxDQUFBO0lBQUMsTUFBTSxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsUUFBUSxDQUFBO0lBQUMsR0FBRyxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsU0FBUyxDQUFBO0lBQUMsSUFBSSxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsVUFBVSxDQUFBO0lBQUMsS0FBSyxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsV0FBVyxDQUFBO0lBQUMsTUFBTSxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsU0FBUyxDQUFBO0lBQUMsR0FBRyxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsV0FBVyxDQUFBO0lBQUMsS0FBSyxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsWUFBWSxDQUFBO0lBQUMsTUFBTSxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsVUFBVSxDQUFBO0lBQUMsSUFBSSxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsU0FBUyxDQUFBO0lBQUMsR0FBRyxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsV0FBVyxDQUFBO0lBQUMsS0FBSyxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsWUFBWSxDQUFBO0lBQUMsTUFBTSxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsVUFBVSxDQUFBO0lBQUMsSUFBSSxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsaUJBQWlCLENBQUE7SUFBQyxHQUFHLEVBQUMsQ0FBQztJQUFFLEtBQUssRUFBQyxDQUFDO0lBQUUsTUFBTSxFQUFDLENBQUM7SUFBRSxJQUFJLEVBQUMsQ0FBQztHQUFHO0VBQUQsQUFBQSxLQUFLLENBQUE7SUFBQyxLQUFLLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxLQUFLLENBQUE7SUFBQyxLQUFLLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxLQUFLLENBQUE7SUFBQyxLQUFLLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxLQUFLLENBQUE7SUFBQyxLQUFLLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxLQUFLLENBQUE7SUFBQyxPQUFPLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxLQUFLLENBQUE7SUFBQyxPQUFPLEVBQUMsTUFBTTtHQUFHO0VBQUQsQUFBQSxLQUFLLENBQUE7SUFBQyxPQUFPLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxPQUFPLEVBQUMsWUFBWTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxPQUFPLEVBQUMsWUFBWTtHQUFHO0VBQUQsQUFBQSxLQUFLLENBQUE7SUFBQyxPQUFPLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxPQUFPLEVBQUMsVUFBVTtHQUFHO0VBQUQsQUFBQSxTQUFTLENBQUE7SUFBQyxPQUFPLEVBQUMsU0FBUztHQUFHO0VBQUQsQUFBQSxlQUFlLENBQUE7SUFBQyxPQUFPLEVBQUMsZUFBZTtHQUFHO0VBQUQsQUFBQSxZQUFZLENBQUE7SUFBQyxPQUFPLEVBQUMsWUFBWTtHQUFHO0VBQUQsQUFBQSxrQkFBa0IsQ0FBQTtJQUFDLE9BQU8sRUFBQyxrQkFBa0I7R0FBRztFQUFELEFBQUEsWUFBWSxDQUFBO0lBQUMsWUFBWSxFQUFDLEtBQUs7SUFBRSxLQUFLLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxPQUFPLEVBQUMsV0FBVztJQUFFLE9BQU8sRUFBQyxXQUFXO0lBQUUsT0FBTyxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsY0FBYyxDQUFBO0lBQUMsT0FBTyxFQUFDLGtCQUFrQjtJQUFFLE9BQU8sRUFBQyxrQkFBa0I7SUFBRSxPQUFPLEVBQUMsV0FBVztHQUFHO0VBQUQsQUFBQSxZQUFZLENBQUE7SUFBQyxnQkFBZ0IsRUFBQyxDQUFDO0lBQUUsUUFBUSxFQUFDLFFBQVE7SUFBRSxJQUFJLEVBQUMsUUFBUTtJQUFFLFNBQVMsRUFBQyxDQUFDO0lBQUUsVUFBVSxFQUFDLENBQUM7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QUFBLEtBQUssQ0FBQTtJQUFDLEtBQUssRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLEtBQUssRUFBQyxBQUFBLEtBQUssQ0FBQTtJQUFDLE9BQU8sRUFBQyxNQUFNO0dBQUc7RUFBRCxBQUFBLEtBQUssQ0FBQTtJQUFDLEtBQUssRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLEtBQUssQ0FBQTtJQUFDLEtBQUssRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLElBQUksQ0FBQTtJQUFDLFVBQVUsRUFBQyxNQUFNO0dBQUc7RUFBRCxBQUFBLFlBQVksQ0FBQTtJQUFDLFVBQVUsRUFBQyxNQUFNO0dBQUc7RUFBRCxBQUFBLFNBQVMsQ0FBQTtJQUFDLFdBQVcsRUFBQyxHQUFHO0dBQUc7RUFBRCxBQUFBLElBQUksQ0FBQTtJQUFDLFdBQVcsRUFBQyxHQUFHO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFdBQVcsRUFBQyxHQUFHO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFdBQVcsRUFBQyxHQUFHO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFdBQVcsRUFBQyxHQUFHO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFdBQVcsRUFBQyxHQUFHO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFdBQVcsRUFBQyxHQUFHO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFdBQVcsRUFBQyxHQUFHO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFdBQVcsRUFBQyxHQUFHO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFdBQVcsRUFBQyxHQUFHO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFdBQVcsRUFBQyxHQUFHO0dBQUc7RUFBRCxBQUFBLEtBQUssQ0FBQTtJQUFDLE1BQU0sRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLEtBQUssQ0FBQTtJQUFDLE1BQU0sRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLEtBQUssQ0FBQTtJQUFDLE1BQU0sRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLEtBQUssQ0FBQTtJQUFDLE1BQU0sRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLEtBQUssQ0FBQTtJQUFDLE1BQU0sRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLE1BQU0sRUFBQyxHQUFHO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLE1BQU0sRUFBQyxHQUFHO0dBQUc7RUFBRCxBQUFBLE9BQU8sQ0FBQTtJQUFDLE1BQU0sRUFBQyxHQUFHO0dBQUc7RUFBRCxBQUFBLFFBQVEsQ0FBQTtJQUFDLE1BQU0sRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLFlBQVksQ0FBQTtJQUFDLFVBQVUsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLFFBQVEsQ0FBQTtJQUFDLE1BQU0sRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLFFBQVEsQ0FBQTtJQUFDLE1BQU0sRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLFFBQVEsQ0FBQTtJQUFDLE1BQU0sRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLFNBQVMsQ0FBQTtJQUFDLE1BQU0sRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLGFBQWEsQ0FBQTtJQUFDLFVBQVUsRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLFNBQVMsQ0FBQTtJQUFDLE1BQU0sRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLFlBQVksQ0FBQTtJQUFDLE1BQU0sRUFBQyxPQUFPO0dBQUc7RUFBRCxBQUFBLFVBQVUsQ0FBQTtJQUFDLGNBQWMsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLGdCQUFnQixDQUFBO0lBQUMsY0FBYyxFQUFDLE1BQU07R0FBRztFQUFELEFBQUEsZUFBZSxDQUFBO0lBQUMsY0FBYyxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsV0FBVyxDQUFBO0lBQUMsV0FBVyxFQUFDLENBQUM7R0FBRztFQUFELEFBQUEsV0FBVyxDQUFBO0lBQUMsV0FBVyxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsVUFBVSxDQUFBO0lBQUMsV0FBVyxFQUFDLEdBQUc7R0FBRztFQUFELEFBQUEsU0FBUyxDQUFBO0lBQUMsU0FBUyxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsU0FBUyxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsU0FBUyxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsU0FBUyxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsU0FBUyxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsU0FBUyxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsU0FBUyxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsU0FBUyxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsU0FBUyxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsU0FBUyxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsVUFBVSxDQUFBO0lBQUMsU0FBUyxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsS0FBSyxDQUFBO0lBQUMsS0FBSyxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsS0FBSyxDQUFBO0lBQUMsS0FBSyxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsS0FBSyxDQUFBO0lBQUMsS0FBSyxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsS0FBSyxDQUFBO0lBQUMsS0FBSyxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsS0FBSyxDQUFBO0lBQUMsS0FBSyxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsT0FBTyxDQUFBO0lBQUMsS0FBSyxFQUFDLEdBQUc7R0FBRztFQUFELEFBQUEsT0FBTyxDQUFBO0lBQUMsS0FBSyxFQUFDLEdBQUc7R0FBRztFQUFELEFBQUEsT0FBTyxDQUFBO0lBQUMsS0FBSyxFQUFDLEdBQUc7R0FBRztFQUFELEFBQUEsT0FBTyxDQUFBO0lBQUMsS0FBSyxFQUFD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QUFjO0dBQUU7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLE9BQU8sRUFBQyxDQUFDO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLE9BQU8sRUFBQyxNQUFNO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLE9BQU8sRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLE9BQU8sRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLE9BQU8sRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLE9BQU8sRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLE9BQU8sRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLE9BQU8sRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFlBQVksRUFBQyxDQUFDO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFlBQVksRUFBQyxNQUFNO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFlBQVksRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFlBQVksRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFlBQVksRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFlBQVksRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFlBQVksRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFlBQVksRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLGFBQWEsRUFBQyxDQUFDO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLGFBQWEsRUFBQyxNQUFNO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLGFBQWEsRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLGFBQWEsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLGFBQWEsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLGFBQWEsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLGFBQWEsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLGFBQWEsRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLGNBQWMsRUFBQyxDQUFDO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLGNBQWMsRUFBQyxNQUFNO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLGNBQWMsRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLGNBQWMsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLGNBQWMsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLGNBQWMsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLGNBQWMsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLGNBQWMsRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFdBQVcsRUFBQyxDQUFDO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFdBQVcsRUFBQyxNQUFNO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFdBQVcsRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFdBQVcsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFdBQVcsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFdBQVcsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFdBQVcsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFdBQVcsRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFdBQVcsRUFBQyxDQUFDO0lBQUUsY0FBYyxFQUFDLENBQUM7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsV0FBVyxFQUFDLE1BQU07SUFBRSxjQUFjLEVBQUMsTUFBTTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxXQUFXLEVBQUMsS0FBSztJQUFFLGNBQWMsRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFdBQVcsRUFBQyxJQUFJO0lBQUUsY0FBYyxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsV0FBVyxFQUFDLElBQUk7SUFBRSxjQUFjLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxXQUFXLEVBQUMsSUFBSTtJQUFFLGNBQWMsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFdBQVcsRUFBQyxJQUFJO0lBQUUsY0FBYyxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsV0FBVyxFQUFDLEtBQUs7SUFBRSxjQUFjLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxZQUFZLEVBQUMsQ0FBQztJQUFFLGFBQWEsRUFBQyxDQUFDO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFlBQVksRUFBQyxNQUFNO0lBQUUsYUFBYSxFQUFDLE1BQU07R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsWUFBWSxFQUFDLEtBQUs7SUFBRSxhQUFhLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxZQUFZLEVBQUMsSUFBSTtJQUFFLGFBQWEsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFlBQVksRUFBQyxJQUFJO0lBQUUsYUFBYSxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsWUFBWSxFQUFDLElBQUk7SUFBRSxhQUFhLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxZQUFZLEVBQUMsSUFBSTtJQUFFLGFBQWEsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFlBQVksRUFBQyxLQUFLO0lBQUUsYUFBYSxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsTUFBTSxFQUFDLENBQUM7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsTUFBTSxFQUFDLE1BQU07R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsTUFBTSxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsTUFBTSxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsTUFBTSxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsTUFBTSxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsTUFBTSxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsTUFBTSxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsV0FBVyxFQUFDLENBQUM7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsV0FBVyxFQUFDLE1BQU07R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsV0FBVyxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsV0FBVyxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsV0FBVyxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsV0FBVyxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsV0FBVyxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsV0FBVyxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsWUFBWSxFQUFDLENBQUM7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsWUFBWSxFQUFDLE1BQU07R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsWUFBWSxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsWUFBWSxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsWUFBWSxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsWUFBWSxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsWUFBWSxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsWUFBWSxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsYUFBYSxFQUFDLENBQUM7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsYUFBYSxFQUFDLE1BQU07R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsYUFBYSxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsYUFBYSxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsYUFBYSxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsYUFBYSxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsYUFBYSxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsYUFBYSxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsVUFBVSxFQUFDLENBQUM7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsVUFBVSxFQUFDLE1BQU07R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsVUFBVSxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsVUFBVSxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsVUFBVSxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsVUFBVSxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsVUFBVSxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsVUFBVSxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsVUFBVSxFQUFDLENBQUM7SUFBRSxhQUFhLEVBQUMsQ0FBQztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxVQUFVLEVBQUMsTUFBTTtJQUFFLGFBQWEsRUFBQyxNQUFNO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFVBQVUsRUFBQyxLQUFLO0lBQUUsYUFBYSxFQUFDLEtBQUs7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsVUFBVSxFQUFDLElBQUk7SUFBRSxhQUFhLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxVQUFVLEVBQUMsSUFBSTtJQUFFLGFBQWEsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFVBQVUsRUFBQyxJQUFJO0lBQUUsYUFBYSxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsVUFBVSxFQUFDLElBQUk7SUFBRSxhQUFhLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxVQUFVLEVBQUMsS0FBSztJQUFFLGFBQWEsRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFdBQVcsRUFBQyxDQUFDO0lBQUUsWUFBWSxFQUFDLENBQUM7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsV0FBVyxFQUFDLE1BQU07SUFBRSxZQUFZLEVBQUMsTUFBTTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxXQUFXLEVBQUMsS0FBSztJQUFFLFlBQVksRUFBQyxLQUFLO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFdBQVcsRUFBQyxJQUFJO0lBQUUsWUFBWSxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsV0FBVyxFQUFDLElBQUk7SUFBRSxZQUFZLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxXQUFXLEVBQUMsSUFBSTtJQUFFLFlBQVksRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLE1BQU0sQ0FBQTtJQUFDLFdBQVcsRUFBQyxJQUFJO0lBQUUsWUFBWSxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsTUFBTSxDQUFBO0lBQUMsV0FBVyxFQUFDLEtBQUs7SUFBRSxZQUFZLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxNQUFNLEVBQUMsT0FBTztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxNQUFNLEVBQUMsTUFBTTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxNQUFNLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxNQUFNLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxNQUFNLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxNQUFNLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxNQUFNLEVBQUMsTUFBTTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxXQUFXLEVBQUMsT0FBTztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxXQUFXLEVBQUMsTUFBTTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxXQUFXLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxXQUFXLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxXQUFXLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxXQUFXLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxXQUFXLEVBQUMsTUFBTTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxZQUFZLEVBQUMsT0FBTztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxZQUFZLEVBQUMsTUFBTTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxZQUFZLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxZQUFZLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxZQUFZLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxZQUFZLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxZQUFZLEVBQUMsTUFBTTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxhQUFhLEVBQUMsT0FBTztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxhQUFhLEVBQUMsTUFBTTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxhQUFhLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxhQUFhLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxhQUFhLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxhQUFhLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxhQUFhLEVBQUMsTUFBTTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxVQUFVLEVBQUMsT0FBTztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxVQUFVLEVBQUMsTUFBTTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxVQUFVLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxVQUFVLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxVQUFVLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxVQUFVLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxVQUFVLEVBQUMsTUFBTTtHQUFHO0VBQUQsQUFBQSxTQUFTLENBQUE7SUFBQyxlQUFlLEVBQUMsWUFBWTtHQUFHO0VBQUQsQUFBQSxZQUFZLENBQUE7SUFBQyxlQUFlLEVBQUMsU0FBUztHQUFHO0VBQUQsQUFBQSxlQUFlLENBQUE7SUFBQyxlQUFlLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxLQUFLLENBQUE7SUFBQyxVQUFVLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxLQUFLLENBQUE7SUFBQyxVQUFVLEVBQUMsS0FBSztHQUFHO0VBQUQsQUFBQSxLQUFLLENBQUE7SUFBQyxVQUFVLEVBQUMsTUFBTTtHQUFHO0VBQUQsQUFBQSxLQUFLLENBQUE7SUFBQyxVQUFVLEVBQUMsT0FBTztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxjQUFjLEVBQUMsVUFBVTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxjQUFjLEVBQUMsU0FBUztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxjQUFjLEVBQUMsU0FBUztHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxjQUFjLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxNQUFNLEVBQUMsQUFBQSxhQUFhLENBQUE7SUFBQyxTQUFTLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxNQUFNLEVBQUMsQUFBQSxnQkFBZ0IsQ0FBQTtJQUFDLFNBQVMsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLEtBQUssQ0FBQTtJQUFDLFNBQVMsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLEtBQUssQ0FBQTtJQUFDLFNBQVMsRUFBQyxPQUFPO0dBQUc7RUFBRCxBQUFBLEtBQUssQ0FBQTtJQUFDLFNBQVMsRUFBQyxNQUFNO0dBQUc7RUFBRCxBQUFBLEtBQUssQ0FBQTtJQUFDLFNBQVMsRUFBQyxPQUFPO0dBQUc7RUFBRCxBQUFBLEtBQUssQ0FBQTtJQUFDLFNBQVMsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLEtBQUssQ0FBQTtJQUFDLFNBQVMsRUFBQyxPQUFPO0dBQUc7RUFBRCxBQUFBLEtBQUssQ0FBQTtJQUFDLFNBQVMsRUFBQyxNQUFNO0dBQUc7RUFBRCxBQUFBLFVBQVUsQ0FBQTtJQUFDLFNBQVMsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLGVBQWUsQ0FBQTtJQUFDLFNBQVMsRUFBQyxJQUFJO0dBQUc7RUFBRCxBQUFBLGlCQUFpQixDQUFBO0lBQUMsU0FBUyxFQUFDLElBQUk7R0FBRztFQUFELEFBQUEsU0FBUyxDQUFBO0lBQUMsV0FBVyxFQUFDLEdBQUc7SUFBRSxVQUFVLEVBQUMsQ0FBQztJQUFFLGFBQWEsRUFBQyxDQUFDO0dBQUc7RUFBRCxBQUFBLGFBQWEsQ0FBQTtJQUFDLFlBQVksRUFBQyxVQUFVO0dBQUc7RUFBRCxBQUFBLFdBQVcsQ0FBQTtJQUFDLFdBQVcsRUFBQyxNQUFNO0lBQUUsUUFBUSxFQUFDLE1BQU07SUFBRSxhQUFhLEVBQUMsUUFBUTtHQUFHO0VBQUQsQUFBQSxTQUFTLENBQUE7SUFBQyxXQUFXLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxTQUFTLEVBQUMsQUFBQSxVQUFVLENBQUE7SUFBQyxZQUFZLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxVQUFVLENBQUE7SUFBQyxXQUFXLEVBQUMsSUFBSTtHQUFHO0VBQUQsQUFBQSxPQUFPLENBQUE7SUFBQyxRQUFRLEVBQUMsS0FBSyxDQUFBLFVBQVU7SUFBQyxRQUFRLEVBQUMsUUFBUSxDQUFBLFVBQVU7SUFBQyxJQUFJLEVBQUMscUJBQXFCO0lBQUMsSUFBSSxFQUFDLHdCQUFxQjtHQUFFO0VBQUQsQUFBQSxZQUFZLENBQUE7SUFBQyxXQUFXLEVBQUMsTUFBTTtHQUFHO0VBQUQsQUFBQSxTQUFTLENBQUE7SUFBQyxXQUFXLEVBQUMsTUFBTTtHQUFHO0VBQUQsQUFBQSxNQUFNLENBQUE7SUFBQyxXQUFXLEVBQUMsR0FBRztHQUFHO0VBQUQsQUFBQSxTQUFTLENBQUE7SUFBQyxjQUFjLEVBQUMsUUFB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 */\n\n\n// WEBPACK FOOTER //\n// ./resources/assets/sass/app.scss","// Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css\n\n// ==========================================================================\n// Print styles.\n// Inlined to avoid the additional HTTP request: h5bp.com/r\n// ==========================================================================\n\n@media print {\n *,\n *::before,\n *::after {\n text-shadow: none !important;\n box-shadow: none !important;\n }\n\n a,\n a:visited {\n text-decoration: underline;\n }\n\n abbr[title]::after {\n content: \" (\" attr(title) \")\";\n }\n\n pre,\n blockquote {\n border: $border-width solid #999;\n page-break-inside: avoid;\n }\n\n thead {\n display: table-header-group; // h5bp.com/t\n }\n\n tr,\n img {\n page-break-inside: avoid;\n }\n\n img {\n max-width: 100% !important;\n }\n\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n\n h2,\n h3 {\n page-break-after: avoid;\n }\n\n // Bootstrap specific changes start\n\n // Bootstrap components\n .navbar {\n display: none;\n }\n .btn,\n .dropup > .btn {\n > .caret {\n border-top-color: #000 !important;\n }\n }\n .label {\n border: $border-width solid #000;\n }\n\n .table {\n border-collapse: collapse !important;\n\n td,\n th {\n background-color: #fff !important;\n }\n }\n .table-bordered {\n th,\n td {\n border: 1px solid #ddd !important;\n }\n }\n\n // Bootstrap specific changes end\n}\n\n\n\n// WEBPACK FOOTER //\n// ./resources/assets/sass/node_modules/bootstrap/scss/_print.scss","// Reboot\n//\n// Global resets to common HTML elements and more for easier usage by Bootstrap.\n// Adds additional rules on top of Normalize.css, including several overrides.\n\n\n// Reset the box-sizing\n//\n// Change from `box-sizing: content-box` to `border-box` so that when you add\n// `padding` or `border`s to an element, the overall declared `width` does not\n// change. For example, `width: 100px;` will always be `100px` despite the\n// `border: 10px solid red;` and `padding: 20px;`.\n//\n// Heads up! This reset may cause conflicts with some third-party widgets. For\n// recommendations on resolving such conflicts, see\n// http://getbootstrap.com/getting-started/#third-box-sizing.\n//\n// Credit: https://css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice/\n\nhtml {\n box-sizing: border-box;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: inherit;\n}\n\n\n// Make viewport responsive\n//\n// @viewport is needed because IE 10+ doesn't honor in\n// some cases. See http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/.\n// Eventually @viewport will replace . It's been manually\n// prefixed for forward-compatibility.\n//\n// However, `device-width` is broken on IE 10 on Windows (Phone) 8,\n// (see http://timkadlec.com/2013/01/windows-phone-8-and-device-width/ and https://github.com/twbs/bootstrap/issues/10497)\n// and the fix for that involves a snippet of JavaScript to sniff the user agent\n// and apply some conditional CSS.\n//\n// See http://getbootstrap.com/getting-started/#support-ie10-width for the relevant hack.\n//\n// Wrap `@viewport` with `@at-root` for when folks do a nested import (e.g.,\n// `.class-name { @import \"bootstrap\"; }`).\n//\n// Includes future-proofed vendor prefixes as well.\n@at-root {\n @-moz-viewport { width: device-width; }\n @-ms-viewport { width: device-width; }\n @-o-viewport { width: device-width; }\n @-webkit-viewport { width: device-width; }\n @viewport { width: device-width; }\n}\n\n\n//\n// Reset HTML, body, and more\n//\n\nhtml {\n // Sets a specific default `font-size` for user with `rem` type scales.\n font-size: $font-size-root;\n // Changes the default tap highlight to be completely transparent in iOS.\n -webkit-tap-highlight-color: rgba(0,0,0,0);\n}\n\nbody {\n // Make the `body` use the `font-size-root`\n font-family: $font-family-base;\n font-size: $font-size-base;\n line-height: $line-height;\n // Go easy on the eyes and use something other than `#000` for text\n color: $body-color;\n // By default, `` has no `background-color` so we set one as a best practice.\n background-color: $body-bg;\n}\n\n// Suppress the focus outline on elements that cannot be accessed via keyboard.\n// This prevents an unwanted focus outline from appearing around elements that\n// might still respond to pointer events.\n//\n// Credit: https://github.com/suitcss/base\n[tabindex=\"-1\"]:focus {\n outline: none !important;\n}\n\n\n//\n// Typography\n//\n\n// Remove top margins from headings\n//\n// By default, `

`-`

` all receive top and bottom margins. We nuke the top\n// margin for easier control within type scales as it avoids margin collapsing.\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: .5rem;\n}\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `

`s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\n// Abbreviations and acronyms\nabbr[title],\n// Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257\nabbr[data-original-title] {\n cursor: help;\n border-bottom: 1px dotted $abbr-border-color;\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // Undo browser default\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\n\n//\n// Links\n//\n\na {\n color: $link-color;\n text-decoration: $link-decoration;\n\n @include hover-focus {\n color: $link-hover-color;\n text-decoration: $link-hover-decoration;\n }\n\n &:focus {\n @include tab-focus();\n }\n}\n\n\n//\n// Code\n//\n\npre {\n // Remove browser default top margin\n margin-top: 0;\n // Reset browser default of `1em` to use `rem`s\n margin-bottom: 1rem;\n}\n\n\n//\n// Figures\n//\n\nfigure {\n // Normalize adds `margin` to `figure`s as browsers apply it inconsistently.\n // We reset that to create a better flow in-page.\n margin: 0 0 1rem;\n}\n\n\n//\n// Images\n//\n\nimg {\n // By default, ``s are `inline-block`. This assumes that, and vertically\n // centers them. This won't apply should you reset them to `block` level.\n vertical-align: middle;\n // Note: ``s are deliberately not made responsive by default.\n // For the rationale behind this, see the comments on the `.img-fluid` class.\n}\n\n\n// iOS \"clickable elements\" fix for role=\"button\"\n//\n// Fixes \"clickability\" issue (and more generally, the firing of events such as focus as well)\n// for traditionally non-focusable elements with role=\"button\"\n// see https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n\n[role=\"button\"] {\n cursor: pointer;\n}\n\n\n// Avoid 300ms click delay on touch devices that support the `touch-action` CSS property.\n//\n// In particular, unlike most other browsers, IE11+Edge on Windows 10 on touch devices and IE Mobile 10-11\n// DON'T remove the click delay when `` is present.\n// However, they DO support removing the click delay via `touch-action: manipulation`.\n// See:\n// * http://v4-alpha.getbootstrap.com/content/reboot/#click-delay-optimization-for-touch\n// * http://caniuse.com/#feat=css-touch-action\n// * http://patrickhlauke.github.io/touch/tests/results/#suppressing-300ms-delay\n\na,\narea,\nbutton,\n[role=\"button\"],\ninput,\nlabel,\nselect,\nsummary,\ntextarea {\n touch-action: manipulation;\n}\n\n\n//\n// Tables\n//\n\ntable {\n // Reset for nesting within parents with `background-color`.\n background-color: $table-bg;\n}\n\ncaption {\n padding-top: $table-cell-padding;\n padding-bottom: $table-cell-padding;\n color: $text-muted;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n // Centered by default, but left-align-ed to match the `td`s below.\n text-align: left;\n}\n\n\n//\n// Forms\n//\n\nlabel {\n // Allow labels to use `margin` for spacing.\n display: inline-block;\n margin-bottom: .5rem;\n}\n\n// Work around a Firefox/IE bug where the transparent `button` background\n// results in a loss of the default `button` focus styles.\n//\n// Credit: https://github.com/suitcss/base/\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\ntextarea {\n // Remove all `margin`s so our classes don't have to do it themselves.\n margin: 0;\n // Normalize includes `font: inherit;`, so `font-family`. `font-size`, etc are\n // properly inherited. However, `line-height` isn't addressed there. Using this\n // ensures we don't need to unnecessarily redeclare the global font stack.\n line-height: inherit;\n // iOS adds rounded borders by default\n border-radius: 0;\n}\n\ntextarea {\n // Textareas should really only resize vertically so they don't break their (horizontal) containers.\n resize: vertical;\n}\n\nfieldset {\n // Chrome and Firefox set a `min-width: min-content;` on fieldsets,\n // so we reset that to ensure it behaves more like a standard block element.\n // See https://github.com/twbs/bootstrap/issues/12359.\n min-width: 0;\n // Reset the default outline behavior of fieldsets so they don't affect page layout.\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n // Reset the entire legend element to match the `fieldset`\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: .5rem;\n font-size: 1.5rem;\n line-height: inherit;\n// border: 0;\n}\n\ninput[type=\"search\"] {\n // Undo Normalize's default here to match our global overrides.\n box-sizing: inherit;\n // This overrides the extra rounded corners on search inputs in iOS so that our\n // `.form-control` class can properly style them. Note that this cannot simply\n // be added to `.form-control` as it's not specific enough. For details, see\n // https://github.com/twbs/bootstrap/issues/11586.\n -webkit-appearance: none;\n}\n\n// todo: needed?\noutput {\n display: inline-block;\n// font-size: $font-size-base;\n// line-height: $line-height;\n// color: $input-color;\n}\n\n// Always hide an element with the `hidden` HTML attribute (from PureCSS).\n[hidden] {\n display: none !important;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./resources/assets/sass/node_modules/bootstrap/scss/_reboot.scss","@mixin hover {\n @if $enable-hover-media-query {\n // See Media Queries Level 4: http://drafts.csswg.org/mediaqueries/#hover\n // Currently shimmed by https://github.com/twbs/mq4-hover-shim\n @media (hover: hover) {\n &:hover { @content }\n }\n }\n @else {\n &:hover { @content }\n }\n}\n\n@mixin hover-focus {\n @if $enable-hover-media-query {\n &:focus { @content }\n @include hover { @content }\n }\n @else {\n &:focus,\n &:hover {\n @content\n }\n }\n}\n\n@mixin plain-hover-focus {\n @if $enable-hover-media-query {\n &,\n &:focus {\n @content\n }\n @include hover { @content }\n }\n @else {\n &,\n &:focus,\n &:hover {\n @content\n }\n }\n}\n\n@mixin hover-focus-active {\n @if $enable-hover-media-query {\n &:focus,\n &:active {\n @content\n }\n @include hover { @content }\n }\n @else {\n &:focus,\n &:active,\n &:hover {\n @content\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./resources/assets/sass/node_modules/bootstrap/scss/mixins/_hover.scss","// WebKit-style focus\n\n@mixin tab-focus() {\n // Default\n outline: thin dotted;\n // WebKit\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./resources/assets/sass/node_modules/bootstrap/scss/mixins/_tab-focus.scss","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n.container {\n @include make-container();\n @include make-container-max-widths();\n\n}\n\n\n// Fluid container\n//\n// Utilizes the mixin meant for fixed width containers, but without any defined\n// width for fluid, full width layouts.\n\n.container-fluid {\n @include make-container();\n}\n\n\n// Row\n//\n// Rows contain and clear the floats of your columns.\n\n@if $enable-grid-classes {\n .row {\n @include make-row();\n }\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n @include make-grid-columns();\n}\n\n\n// Flex variation\n//\n// Custom styles for additional flex alignment options.\n\n@if $enable-flex and $enable-grid-classes {\n\n // Flex column reordering\n\n @each $breakpoint in map-keys($grid-breakpoints) {\n @include media-breakpoint-up($breakpoint) {\n .col-#{$breakpoint}-first { order: -1; }\n .col-#{$breakpoint}-last { order: 1; }\n }\n }\n\n // Alignment for every column in row\n\n @each $breakpoint in map-keys($grid-breakpoints) {\n @include media-breakpoint-up($breakpoint) {\n .row-#{$breakpoint}-top { align-items: flex-start; }\n .row-#{$breakpoint}-center { align-items: center; }\n .row-#{$breakpoint}-bottom { align-items: flex-end; }\n }\n }\n\n // Alignment per column\n\n @each $breakpoint in map-keys($grid-breakpoints) {\n @include media-breakpoint-up($breakpoint) {\n .col-#{$breakpoint}-top { align-self: flex-start; }\n .col-#{$breakpoint}-center { align-self: center; }\n .col-#{$breakpoint}-bottom { align-self: flex-end; }\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./resources/assets/sass/node_modules/bootstrap/scss/_grid.scss","/// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-container($gutter: $grid-gutter-width) {\n margin-left: auto;\n margin-right: auto;\n padding-left: ($gutter / 2);\n padding-right: ($gutter / 2);\n @if not $enable-flex {\n @include clearfix();\n }\n}\n\n\n// For each breakpoint, define the maximum width of the container in a media query\n@mixin make-container-max-widths($max-widths: $container-max-widths) {\n @each $breakpoint, $container-max-width in $max-widths {\n @include media-breakpoint-up($breakpoint) {\n max-width: $container-max-width;\n }\n }\n}\n\n@mixin make-row($gutter: $grid-gutter-width) {\n @if $enable-flex {\n display: flex;\n flex-wrap: wrap;\n } @else {\n @include clearfix();\n }\n margin-left: ($gutter / -2);\n margin-right: ($gutter / -2);\n}\n\n@mixin make-col($gutter: $grid-gutter-width) {\n position: relative;\n @if not $enable-flex {\n float: left;\n }\n min-height: 1px;\n padding-left: ($gutter / 2);\n padding-right: ($gutter / 2);\n}\n\n@mixin make-col-span($size, $columns: $grid-columns) {\n @if $enable-flex {\n flex: 0 0 percentage($size / $columns);\n } @else {\n width: percentage($size / $columns);\n }\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n margin-left: percentage($size / $columns);\n}\n\n@mixin make-col-push($size, $columns: $grid-columns) {\n left: if($size > 0, percentage($size / $columns), auto);\n}\n\n@mixin make-col-pull($size, $columns: $grid-columns) {\n right: if($size > 0, percentage($size / $columns), auto);\n}\n\n@mixin make-col-modifier($type, $size, $columns) {\n // Work around the lack of dynamic mixin @include support (https://github.com/sass/sass/issues/626)\n @if $type == push {\n @include make-col-push($size, $columns);\n } @else if $type == pull {\n @include make-col-pull($size, $columns);\n } @else if $type == offset {\n @include make-col-offset($size, $columns);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./resources/assets/sass/node_modules/bootstrap/scss/mixins/_grid.scss","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 544px, md: 768px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 544px, md: 768px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 544px, md: 768px))\n// 544px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width. Null for the largest (last) breakpoint.\n// The maximum value is calculated as the minimum of the next one less 0.1.\n//\n// >> breakpoint-max(sm, (xs: 0, sm: 544px, md: 768px))\n// 767px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $next: breakpoint-next($name, $breakpoints);\n @return if($next, breakpoint-min($next, $breakpoints) - 1px, null);\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n @include media-breakpoint-up($name, $breakpoints) {\n @include media-breakpoint-down($name, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n @include media-breakpoint-up($lower, $breakpoints) {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./resources/assets/sass/node_modules/bootstrap/scss/mixins/_breakpoints.scss","// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n // Common properties for all breakpoints\n %grid-column {\n position: relative;\n // Prevent columns from collapsing when empty\n min-height: 1px;\n // Inner gutter via padding\n padding-left: ($gutter / 2);\n padding-right: ($gutter / 2);\n }\n @each $breakpoint in map-keys($breakpoints) {\n @for $i from 1 through $columns {\n .col-#{$breakpoint}-#{$i} {\n @extend %grid-column;\n }\n }\n @include media-breakpoint-up($breakpoint) {\n // Work around cross-media @extend (https://github.com/sass/sass/issues/1050)\n %grid-column-float-#{$breakpoint} {\n float: left;\n }\n @for $i from 1 through $columns {\n .col-#{$breakpoint}-#{$i} {\n @if not $enable-flex {\n @extend %grid-column-float-#{$breakpoint};\n }\n @include make-col-span($i, $columns);\n }\n }\n @each $modifier in (pull, push, offset) {\n @for $i from 0 through $columns {\n .col-#{$breakpoint}-#{$modifier}-#{$i} {\n @include make-col-modifier($modifier, $i, $columns)\n }\n }\n }\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./resources/assets/sass/node_modules/bootstrap/scss/mixins/_grid-framework.scss","//\n// Basic Bootstrap table\n//\n\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: $spacer;\n\n th,\n td {\n padding: $table-cell-padding;\n line-height: $line-height;\n vertical-align: top;\n border-top: $table-border-width solid $table-border-color;\n }\n\n thead th {\n vertical-align: bottom;\n border-bottom: (2 * $table-border-width) solid $table-border-color;\n }\n\n tbody + tbody {\n border-top: (2 * $table-border-width) solid $table-border-color;\n }\n\n .table {\n background-color: $body-bg;\n }\n}\n\n\n//\n// Condensed table w/ half padding\n//\n\n.table-sm {\n th,\n td {\n padding: $table-sm-cell-padding;\n }\n}\n\n\n// Bordered version\n//\n// Add borders all around the table and between all the columns.\n\n.table-bordered {\n border: $table-border-width solid $table-border-color;\n\n th,\n td {\n border: $table-border-width solid $table-border-color;\n }\n\n thead {\n th,\n td {\n border-bottom-width: (2 * $table-border-width);\n }\n }\n}\n\n\n// Zebra-striping\n//\n// Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n.table-striped {\n tbody tr:nth-of-type(odd) {\n background-color: $table-bg-accent;\n }\n}\n\n\n// Hover effect\n//\n// Placed here since it has to come after the potential zebra striping\n\n.table-hover {\n tbody tr {\n @include hover {\n background-color: $table-bg-hover;\n }\n }\n}\n\n\n// Table backgrounds\n//\n// Exact selectors below required to override `.table-striped` and prevent\n// inheritance to nested tables.\n\n// Generate the contextual variants\n@include table-row-variant(active, $table-bg-active);\n@include table-row-variant(success, $state-success-bg);\n@include table-row-variant(info, $state-info-bg);\n@include table-row-variant(warning, $state-warning-bg);\n@include table-row-variant(danger, $state-danger-bg);\n\n\n// Responsive tables\n//\n// Wrap your tables in `.table-responsive` and we'll make them mobile friendly\n// by enabling horizontal scrolling. Only applies <768px. Everything above that\n// will display normally.\n\n.table-responsive {\n display: block;\n width: 100%;\n min-height: 0.01%; // Workaround for IE9 bug (see https://github.com/twbs/bootstrap/issues/14837)\n overflow-x: auto;\n\n // TODO: find out if we need this still.\n //\n // border: $table-border-width solid $table-border-color;\n // -ms-overflow-style: -ms-autohiding-scrollbar; // See https://github.com/twbs/bootstrap/pull/10057\n}\n\n\n.thead-inverse {\n th {\n color: #fff;\n background-color: $gray-dark;\n }\n}\n.thead-default {\n th {\n color: $gray;\n background-color: $gray-lighter;\n }\n}\n\n.table-inverse {\n color: $gray-lighter;\n background-color: $gray-dark;\n\n &.table-bordered {\n border: 0;\n }\n\n th,\n td,\n thead th {\n border-color: $gray;\n }\n}\n\n\n.table-reflow {\n thead {\n float: left;\n }\n\n tbody {\n display: block;\n white-space: nowrap;\n }\n\n th,\n td {\n border-top: $table-border-width solid $table-border-color;\n border-left: $table-border-width solid $table-border-color;\n\n &:last-child {\n border-right: $table-border-width solid $table-border-color;\n }\n }\n\n thead,\n tbody,\n tfoot {\n &:last-child {\n tr:last-child {\n th,\n td {\n border-bottom: $table-border-width solid $table-border-color;\n }\n }\n }\n }\n\n tr {\n float: left;\n\n th,\n td {\n display: block !important;\n border: $table-border-width solid $table-border-color;\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./resources/assets/sass/node_modules/bootstrap/scss/_tables.scss","// Tables\n\n@mixin table-row-variant($state, $background) {\n // Exact selectors below required to override `.table-striped` and prevent\n // inheritance to nested tables.\n .table-#{$state} {\n &,\n > th,\n > td {\n background-color: $background;\n }\n }\n\n // Hover states for `.table-hover`\n // Note: this is not available for cells or rows within `thead` or `tfoot`.\n .table-hover {\n $hover-background: darken($background, 5%);\n\n .table-#{$state} {\n @include hover {\n background-color: $hover-background;\n\n > td,\n > th {\n background-color: $hover-background;\n }\n }\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./resources/assets/sass/node_modules/bootstrap/scss/mixins/_table-row.scss","//\n// Textual form controls\n//\n\n.form-control {\n display: block;\n width: 100%;\n // // Make inputs at least the height of their button counterpart (base line-height + padding + border)\n // height: $input-height;\n padding: $input-padding-y $input-padding-x;\n font-size: $font-size-base;\n line-height: $line-height;\n color: $input-color;\n background-color: $input-bg;\n // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214.\n background-image: none;\n border: $input-btn-border-width solid $input-border-color;\n // Note: This has no effect on `s in CSS.\n @include border-radius($input-border-radius);\n @include box-shadow($input-box-shadow);\n @include transition(border-color ease-in-out .15s, box-shadow ease-in-out .15s);\n\n // Make inputs at least the height of their button counterpart (base line-height + padding + border).\n // Only apply the height to textual inputs and some selects.\n // &:not(textarea),\n // &:not(select[size]),\n // &:not(select[multiple]) {\n // height: $input-height;\n // }\n\n // Unstyle the caret on ``\n// element gets special love because it's special, and that's a fact!\n\n@mixin input-size($parent, $input-height, $padding-vertical, $padding-horizontal, $font-size, $line-height, $border-radius) {\n #{$parent} {\n height: $input-height;\n padding: $padding-vertical $padding-horizontal;\n font-size: $font-size;\n line-height: $line-height;\n @include border-radius($border-radius);\n }\n\n select#{$parent} {\n height: $input-height;\n line-height: $input-height;\n }\n\n textarea#{$parent},\n select[multiple]#{$parent} {\n height: auto;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./resources/assets/sass/node_modules/bootstrap/scss/mixins/_forms.scss","// The dropdown wrapper (`

`)\n.dropup,\n.dropdown {\n position: relative;\n}\n\n.dropdown-toggle {\n // Generate the caret automatically\n &::after {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: .25rem;\n margin-left: .25rem;\n vertical-align: middle;\n content: \"\";\n border-top: $caret-width solid;\n border-right: $caret-width solid transparent;\n border-left: $caret-width solid transparent;\n }\n\n // Prevent the focus on the dropdown toggle when closing dropdowns\n &:focus {\n outline: 0;\n }\n}\n\n.dropup {\n .dropdown-toggle {\n &::after {\n border-top: 0;\n border-bottom: $caret-width solid;\n }\n }\n}\n\n// The dropdown menu\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: $zindex-dropdown;\n display: none; // none by default, but block on \"open\" of the menu\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0; // override default ul\n font-size: $font-size-base;\n color: $body-color;\n text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)\n list-style: none;\n background-color: $dropdown-bg;\n background-clip: padding-box;\n border: $dropdown-border-width solid $dropdown-border-color;\n @include border-radius($border-radius);\n @include box-shadow(0 6px 12px rgba(0,0,0,.175));\n}\n\n// Dividers (basically an `
`) within the dropdown\n.dropdown-divider {\n @include nav-divider($dropdown-divider-bg);\n}\n\n// Links, buttons, and more within the dropdown menu\n//\n// `